diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/model/OrderDetailPO.java b/src/main/java/com/chaozhanggui/system/cashierservice/model/OrderDetailPO.java index 767b145..dda62d8 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/model/OrderDetailPO.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/model/OrderDetailPO.java @@ -35,6 +35,10 @@ public class OrderDetailPO implements Serializable { private String outNumber; + private String discountAmount; + + private String discountAdio; + @Data public static class Detail implements Serializable{ @@ -55,7 +59,9 @@ public class OrderDetailPO implements Serializable { } - public OrderDetailPO(String merchantName, String printType, String masterId, String orderNo, String tradeDate, String operator, String receiptsAmount, String balance, String payType, String integral, List detailList, String remark) { + public OrderDetailPO(String merchantName, String printType, String masterId, String orderNo, String tradeDate, String operator, String receiptsAmount, String balance, String payType, String integral, List detailList, String remark, + String discountAmount,String discountAdio + ) { this.merchantName = merchantName; this.printType = printType; this.masterId = masterId; @@ -68,5 +74,7 @@ public class OrderDetailPO implements Serializable { this.integral = integral; this.detailList = detailList; this.remark = remark; + this.discountAmount=discountAmount; + this.discountAdio=discountAdio; } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/BalanceConsumer.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/BalanceConsumer.java new file mode 100644 index 0000000..9e39801 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/BalanceConsumer.java @@ -0,0 +1,166 @@ +package com.chaozhanggui.system.cashierservice.rabbit; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import com.chaozhanggui.system.cashierservice.dao.TbShopInfoMapper; +import com.chaozhanggui.system.cashierservice.dao.TbUserInfoMapper; +import com.chaozhanggui.system.cashierservice.entity.TbShopInfo; +import com.chaozhanggui.system.cashierservice.entity.TbUserInfo; +import com.chaozhanggui.system.cashierservice.exception.MsgException; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.rabbit.annotation.RabbitHandler; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; + +@Slf4j +@Component +@RabbitListener(queues = {RabbitConstants.BALANCE_QUEUE_PUT}) +@Service +public class BalanceConsumer { + + + + + @Value("${wx.balance.appId}") + private static String appId ; + @Value("${wx.balance.secrete}") + private static String secrete ; + @Value("${wx.balance.warnMsgTmpId}") + private static String msgTmpId = "AV-KybUHaK3KtFVLqpy6PHccHBS7XeX_mOM4RbufnQ"; + + static LinkedHashMap linkedHashMap=new LinkedHashMap<>(); + + static { + + linkedHashMap.put("40001","获取 access_token 时 AppSecret 错误,或者 access_token 无效。请开发者认真比对 AppSecret 的正确性,或查看是否正在为恰当的公众号调用接口"); + linkedHashMap.put("40003","不合法的 OpenID ,请开发者确认 OpenID (该用户)是否已关注公众号,或是否是其他公众号的 OpenID"); + linkedHashMap.put("40014","不合法的 access_token ,请开发者认真比对 access_token 的有效性(如是否过期),或查看是否正在为恰当的公众号调用接口"); + linkedHashMap.put("40037","不合法的 template_id"); + linkedHashMap.put("43101","用户未订阅消息"); + linkedHashMap.put("43107","订阅消息能力封禁"); + linkedHashMap.put("43108","并发下发消息给同一个粉丝"); + linkedHashMap.put("45168","命中敏感词"); + linkedHashMap.put("47003","参数错误"); + + } + + + + + @Autowired + TbUserInfoMapper tbUserInfoMapper; + + @Autowired + TbShopInfoMapper tbShopInfoMapper; + + + + + public static String getAccessToken() { + String resp = HttpUtil.get(StrUtil.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={}&secret={}", appId, secrete)); + JSONObject respInfo = JSONObject.parseObject(resp); + if (!respInfo.containsKey("access_token")) { + log.warn("公众号获取token失败, 响应内容: {}", resp); + throw new MsgException(resp); + } + return respInfo.getString("access_token"); + } + + public static JSONObject sendTemplateMsg(String templateId, String toUserOpenId, Map data) { + log.info("开始发送微信模板消息, 接收用户openId: {}, 消息数据: {}", toUserOpenId, data); + String accessToken = getAccessToken(); + + JSONObject object1=new JSONObject(); + + object1.put("template_id", templateId); + object1.put("touser", toUserOpenId); + object1.put("data",data); + + String response= HttpRequest.post("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".concat(accessToken)).body(object1.toString()).execute().body(); + log.info("微信模板消息发送成功,响应内容:{}",response); + JSONObject resObj=JSONObject.parseObject(response); + if(ObjectUtil.isNotEmpty(resObj)&&ObjectUtil.isNotNull(resObj)&&"0".equals(resObj.get("errcode")+"")){ + return resObj; + } + + throw new RuntimeException(linkedHashMap.getOrDefault(resObj.get("errcode") + "", "未知错误")); + } + + @RabbitHandler + public void listener(String message) { + try { + + JSONObject object=JSONObject.parseObject(message); + + String shopId=object.getString("shopId"); + BigDecimal amount=object.getBigDecimal("amount"); + BigDecimal balance=object.getBigDecimal("balance"); + String type=object.getString("type"); + Date time=object.getDate("time"); + String userId=object.getString("userId"); + + TbShopInfo shopInfo= tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(shopId)); + if(ObjectUtil.isNull(shopInfo)){ + log.info("没有对应的店铺信息"); + return; + } + + + TbUserInfo userInfo= tbUserInfoMapper.selectByPrimaryKey(Integer.valueOf(userId)); + if(ObjectUtil.isNull(userInfo)||ObjectUtil.isNull(userInfo.getMiniAppOpenId())){ + log.info("没有对应的openId"); + return; + } + + String toUserOpenId=userInfo.getMiniAppOpenId(); + + + Map data = new HashMap() {{ + put("thing3", new HashMap(){{ + put("value", shopInfo.getShopName()); + }}); + put("amount1", new HashMap(){{ + put("value", amount); + }}); + put("amount2", new HashMap(){{ + put("value", balance); + }}); + + put("thing4",new HashMap(){{ + put("value",type); + }}); + + put("time5",new HashMap(){{ + put("value",time); + }}); + + }}; + log.info("开始发送会员余额变动消息, 接收用户openId: {}, 消息数据: {}", toUserOpenId, data); + try { + JSONObject resObj=sendTemplateMsg(msgTmpId, toUserOpenId, data); + log.info("会员变动消息发送返回:{}",resObj.toString()); + }catch (Exception e) { + log.error("发送失败, openId:{}, msg: {}", toUserOpenId, e.getMessage()); + } + + + + + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java index 8f7098b..490ac89 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -175,7 +175,7 @@ public class PrintMechineConsumer { if(ObjectUtil.isNotEmpty(detailList)&&detailList.size()>0){ - OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId())||ObjectUtil.isNull(orderInfo.getMasterId())?orderInfo.getTableName():orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList,orderInfo.getRemark()); + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId())||ObjectUtil.isNull(orderInfo.getMasterId())?orderInfo.getTableName():orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList,orderInfo.getRemark(),null,null); String printType="退款单"; @@ -224,7 +224,7 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { - OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark()); + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(),orderInfo.getDiscountAmount().toPlainString(),orderInfo.getDiscountRatio().toPlainString()); // OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList); detailPO.setOutNumber(orderInfo.getOutNumber()); String printType = "结算单"; @@ -402,7 +402,7 @@ public class PrintMechineConsumer { if(ObjectUtil.isNotEmpty(detailList)&&detailList.size()>0){ // OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList); - OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId())||ObjectUtil.isNull(orderInfo.getMasterId())?orderInfo.getTableName():orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList,orderInfo.getRemark()); + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId())||ObjectUtil.isNull(orderInfo.getMasterId())?orderInfo.getTableName():orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList,orderInfo.getRemark(),orderInfo.getDiscountAmount().toPlainString(),orderInfo.getDiscountRatio().toPlainString()); String printType="退款单"; @@ -452,7 +452,7 @@ public class PrintMechineConsumer { } } if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { - OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark()); + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(),null,null); String printType = "结算单"; if ("return".equals(orderInfo.getOrderType())) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConfig.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConfig.java index 8ede030..b5e93f3 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConfig.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConfig.java @@ -126,5 +126,23 @@ public class RabbitConfig { + @Bean + public DirectExchange balance_msg_Exchange_Register() { + return new DirectExchange(RabbitConstants.BALANCE_PUT); + } + + @Bean + public Queue queuebalance_msg_Register() { + return new Queue(RabbitConstants.BALANCE_QUEUE_PUT, true); //队列持久 + } + + @Bean + public Binding bindingbalance_msg_Register() { + return BindingBuilder.bind(queuebalance_msg_Register()).to(balance_msg_Exchange_Register()).with(RabbitConstants.BALANCE_ROUTINGKEY_PUT); + } + + + + } \ No newline at end of file diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java index 4fd096a..e0e1a0f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java @@ -51,4 +51,11 @@ public interface RabbitConstants { // 库存记录 public static final String QUEUE_STOCK_RECORD = "queue.stock.record"; public static final String ROUTING_STOCK_RECORD= "routing.stock.record"; + + + + public static final String BALANCE_PUT="balance_put"; + public static final String BALANCE_QUEUE_PUT="balance_queue_put"; + + public static final String BALANCE_ROUTINGKEY_PUT="balance_routingkey_put"; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitProducer.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitProducer.java index 9a32799..ceec6b6 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitProducer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitProducer.java @@ -50,6 +50,14 @@ public class RabbitProducer implements RabbitTemplate.ConfirmCallback { } + + public void balance(String content){ + CorrelationData correlationId = new CorrelationData(UUID.randomUUID().toString()); + rabbitTemplate.convertAndSend(RabbitConstants.BALANCE_PUT, RabbitConstants.BALANCE_ROUTINGKEY_PUT, content, correlationId); + } + + + @Override public void confirm(CorrelationData correlationData, boolean ack, String cause) { logger.info(" 回调id:" + correlationData); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java index c06b904..95b3aed 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -189,7 +189,7 @@ public class CloudPrinterService { if(ObjectUtil.isNotEmpty(detailList)&&detailList.size()>0){ // OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList); - OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId())||ObjectUtil.isNull(orderInfo.getMasterId())?orderInfo.getTableName():orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList,orderInfo.getRemark()); + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId())||ObjectUtil.isNull(orderInfo.getMasterId())?orderInfo.getTableName():orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getPayAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList,orderInfo.getRemark(),null,null); detailPO.setOutNumber(orderInfo.getOutNumber()); String printType="退款单"; @@ -251,7 +251,7 @@ public class CloudPrinterService { } if(ObjectUtil.isNotEmpty(detailList)&&detailList.size()>0){ - OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp")?orderInfo.getTableName():orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance,(ObjectUtil.isEmpty(orderInfo.getPayType())||ObjectUtil.isNull(orderInfo.getPayType())?"":orderInfo.getPayType() ), "0", detailList,orderInfo.getRemark()); + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp")?orderInfo.getTableName():orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getPayAmount().toPlainString(), balance,(ObjectUtil.isEmpty(orderInfo.getPayType())||ObjectUtil.isNull(orderInfo.getPayType())?"":orderInfo.getPayType() ), "0", detailList,orderInfo.getRemark(),orderInfo.getDiscountAmount().toPlainString(),orderInfo.getDiscountRatio().toPlainString()); String printType="结算单"; detailPO.setOutNumber(orderInfo.getOutNumber()); @@ -439,7 +439,7 @@ public class CloudPrinterService { if(ObjectUtil.isNotEmpty(detailList)&&detailList.size()>0){ // OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList); - OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId())||ObjectUtil.isNull(orderInfo.getMasterId())?orderInfo.getTableName():orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList,orderInfo.getRemark()); + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId())||ObjectUtil.isNull(orderInfo.getMasterId())?orderInfo.getTableName():orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList,orderInfo.getRemark(),null,null); String printType="退款单"; @@ -495,7 +495,7 @@ public class CloudPrinterService { } } if(ObjectUtil.isNotEmpty(detailList)&&detailList.size()>0){ - OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp")?orderInfo.getTableName():orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance,(ObjectUtil.isEmpty(orderInfo.getPayType())||ObjectUtil.isNull(orderInfo.getPayType())?"":orderInfo.getPayType() ), "0", detailList,orderInfo.getRemark()); + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp")?orderInfo.getTableName():orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getPayAmount().toPlainString(), balance,(ObjectUtil.isEmpty(orderInfo.getPayType())||ObjectUtil.isNull(orderInfo.getPayType())?"":orderInfo.getPayType() ), "0", detailList,orderInfo.getRemark(),null,null); String printType="结算单"; if(ispre){ printType="预结算单"; diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java index 92c1f85..347c123 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java @@ -391,6 +391,20 @@ public class MemberService { jsonObject.put("amount", memberIn.getAmount()); producer.putOrderCollect(jsonObject.toJSONString()); + + + JSONObject baObj=new JSONObject(); + baObj.put("userId",shopUser.getUserId()); + baObj.put("shopId",shopInfo.getId()); + baObj.put("amount",amount); + baObj.put("balance",shopUser.getAmount()); + baObj.put("type","扫码充值"); + baObj.put("time",flow.getCreateTime()); + producer.balance(baObj.toString()); + + + + return Result.success(CodeEnum.SUCCESS, memberIn); } else if ("TRADE_AWAIT".equals(mainScanResp.getState())) { @@ -531,6 +545,16 @@ public class MemberService { producer.putOrderCollect(jsonObject.toJSONString()); + + JSONObject baObj=new JSONObject(); + baObj.put("userId",shopUser.getUserId()); + baObj.put("shopId",shopUser.getShopId()); + baObj.put("amount",memberIn.getAmount()); + baObj.put("balance",shopUser.getAmount()); + baObj.put("type","充值"); + baObj.put("time",flow.getCreateTime()); + producer.balance(baObj.toString()); + tbShopUserFlowMapper.insert(flow); } return Result.success(CodeEnum.SUCCESS, memberIn); @@ -671,6 +695,17 @@ public class MemberService { + JSONObject baObj=new JSONObject(); + baObj.put("userId",shopUser.getUserId()); + baObj.put("shopId",shopInfo.getId()); + baObj.put("amount",amount); + baObj.put("balance",shopUser.getAmount()); + baObj.put("type","充值"); + baObj.put("time",flow.getCreateTime()); + producer.balance(baObj.toString()); + + + return Result.success(CodeEnum.SUCCESS); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java index 9ca6099..14b6367 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -626,6 +626,17 @@ public class PayService { mqData.put("type", "pc"); producer.sendStockSaleMsg(mqData); + + + JSONObject baObj=new JSONObject(); + baObj.put("userId",user.getUserId()); + baObj.put("shopId",user.getShopId()); + baObj.put("amount",orderInfo.getPayAmount()); + baObj.put("balance",user.getAmount()); + baObj.put("type","消费"); + baObj.put("time",flow.getCreateTime()); + producer.balance(baObj.toString()); + return Result.success(CodeEnum.SUCCESS); } @@ -738,6 +749,17 @@ public class PayService { mqData.put("type", "pc"); producer.sendStockSaleMsg(mqData); + + + JSONObject baObj=new JSONObject(); + baObj.put("userId",user.getUserId()); + baObj.put("shopId",user.getShopId()); + baObj.put("amount",orderInfo.getPayAmount()); + baObj.put("balance",user.getAmount()); + baObj.put("type","消费"); + baObj.put("time",flow.getCreateTime()); + producer.balance(baObj.toString()); + return Result.success(CodeEnum.SUCCESS); } @@ -912,6 +934,16 @@ public class PayService { .eq(TbShopTable::getQrcode, orderInfo.getTableId()) .set(TbShopTable::getStatus, TableStateEnum.IDLE.getState())); + + JSONObject baObj=new JSONObject(); + baObj.put("userId",shopUser.getUserId()); + baObj.put("shopId",shopUser.getShopId()); + baObj.put("amount",orderInfo.getPayAmount()); + baObj.put("balance",shopUser.getAmount()); + baObj.put("type","消费"); + baObj.put("time",userFlow.getCreateTime()); + producer.balance(baObj.toString()); + return Result.success(CodeEnum.SUCCESS); } @@ -1205,6 +1237,16 @@ public class PayService { flow.setCreateTime(new Date()); tbShopUserFlowMapper.insert(flow); + + JSONObject baObj=new JSONObject(); + baObj.put("userId",user.getUserId()); + baObj.put("shopId",user.getShopId()); + baObj.put("amount",newOrderInfo.getPayAmount()); + baObj.put("balance",user.getAmount()); + baObj.put("type","退款"); + baObj.put("time",flow.getCreateTime()); + producer.balance(baObj.toString()); + } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java index afdd8fc..645d955 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java @@ -361,8 +361,8 @@ public class FeieyunPrintUtil { public static void main(String[] args){ - OrderDetailPO detailPO=new OrderDetailPO("牛叉闪闪",null,null,"DD20240312142156962",null,null,null,null,null,null,null,null); - getCashPrintData(detailPO,"922690786","结算单",null); +// OrderDetailPO detailPO=new OrderDetailPO("牛叉闪闪",null,null,"DD20240312142156962",null,null,null,null,null,null,null,null); +// getCashPrintData(detailPO,"922690786","结算单",null); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java index 8e93980..c2668e5 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java @@ -138,13 +138,24 @@ public class PrinterUtils { } } + sb.append("------------------------
"); - String t = "¥" + detailPO.getReceiptsAmount(); + + if(ObjectUtil.isNotNull(detailPO.getDiscountAmount())&&ObjectUtil.isNotNull(detailPO.getDiscountAdio())){ + sb.append("原价:".concat(String.format("%11s", detailPO.getReceiptsAmount()).replace(' ', paddingCharacter)).concat("
")); + sb.append("折扣: -".concat(String.format("%11s", new BigDecimal(detailPO.getReceiptsAmount()).subtract(new BigDecimal(detailPO.getDiscountAmount())).toPlainString()).replace(' ', paddingCharacter)).concat("
")); + } + + + + sb.append("------------------------
"); + String t = "¥" + (ObjectUtil.isEmpty(detailPO.getDiscountAmount())||ObjectUtil.isNull(detailPO.getDiscountAmount())?detailPO.getReceiptsAmount():detailPO.getDiscountAmount()); t = String.format("%11s", t).replace(' ', paddingCharacter); if (orderType.equals("return")) { sb.append("应退" + t + "
"); } else { - sb.append("应收" + t + "
"); + sb.append("实付" + t + "
"); + } if (ObjectUtil.isNotEmpty(detailPO.getPayType()) && ObjectUtil.isNotNull(detailPO.getPayType()) && detailPO.getPayType().equals("deposit")) { sb.append("储值¥" + detailPO.getReceiptsAmount() + "
"); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2a57baa..d5b95b5 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -55,6 +55,10 @@ wx: appId: wx212769170d2c6b2a secrete: 8492a7e8d55bbb1b57f5c8276ea1add0 warnMsgTmpId: C08OUr80x6wGmUN1zpFhSQ3Sv7VF5vksdZigiEx2pD0 + balance: + appId: wxd88fffa983758a30 + secrete: a34a61adc0602118b49400baa8812454 + warnMsgTmpId: IZ-l9p9yBgcvhRR0uN6cBQPkWJ5i05zyWMkfeCPaAmY mybatis-plus: