diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/annotation/LimitSubmit.java b/src/main/java/com/chaozhanggui/system/cashierservice/annotation/LimitSubmit.java index e9f0e8e..e961d3c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/annotation/LimitSubmit.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/annotation/LimitSubmit.java @@ -11,7 +11,7 @@ public @interface LimitSubmit { /** * 默认 10s */ - int limit() default 7200; + int limit() default 10; /** * 请求完成后 是否一直等待 @@ -19,4 +19,4 @@ public @interface LimitSubmit { * @return */ boolean needAllWait() default true; -} \ No newline at end of file +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/CloudPrinterController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/CloudPrinterController.java index 16bb2c3..6614cdc 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/CloudPrinterController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/CloudPrinterController.java @@ -55,4 +55,17 @@ public class CloudPrinterController { ){ return cloudPrinterService.handoverprintData(token,id,loginName); } + + + @GetMapping("printInvoice") + public Result printInvoice(@RequestHeader("token") String token, + @RequestHeader("loginName") String loginName, + @RequestHeader("clientType") String clientType, + @RequestParam("content") String content, + @RequestParam("remark") String remark, + @RequestParam("amount") String amount, + @RequestParam("shopId") String shopId + ){ + return cloudPrinterService.printInvoice(shopId, content, remark, amount); + } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java index f0f5e96..5b26a4c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java @@ -154,4 +154,11 @@ public class OrderController { @RequestParam("pageSize") int pageSize){ return orderService.getOutNumber(shopId,page,pageSize); } + + + + @GetMapping("getOrderById") + public Result getOrderById(@RequestParam("orderId") Integer orderId){ + return orderService.getOrder(orderId); + } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java index f689f67..caf6d42 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java @@ -211,15 +211,17 @@ public class PayController { @RequestMapping("returnOrder") - @LimitSubmit(key = "returnOrder:%s") + @LimitSubmit(key = "returnOrder:%s", limit = 10) public Result returnOrder(@RequestHeader("token") String token, @RequestHeader("loginName") String loginName, @RequestHeader("clientType") String clientType, - @RequestBody List list + @RequestBody List list, + @RequestParam("pwd") String pwd, + @RequestParam(defaultValue = "true") boolean isOnline ){ - return payService.returnOrder(list,token,null); + return payService.returnOrder(list,token,null, isOnline); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbOrderInfoMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbOrderInfoMapper.java index caab1dd..eeb986a 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbOrderInfoMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbOrderInfoMapper.java @@ -47,4 +47,7 @@ public interface TbOrderInfoMapper { Map selectByOrderId(String orderId); List selectSkuByOrderId(String orderId); + + + TbOrderInfo selectById(Integer id); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java index a11cb85..b23f44f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java @@ -29,10 +29,12 @@ public interface TbProductMapper { List selectByShopId(@Param("shopId") String shopId,@Param("commdityName") String commdityName); + List selectByShopIdAndCheckGrounding(@Param("shopId") String shopId,@Param("commdityName") String commdityName); List selectByShopIdAndShopType(@Param("shopId") String shopId, @Param("categoryId") String categoryId,@Param("commdityName") String commdityName); + List selectByShopIdAndShopTypeCheckGrounding(@Param("shopId") String shopId, @Param("categoryId") String categoryId,@Param("commdityName") String commdityName); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductSkuMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductSkuMapper.java index 61fe9f1..c1cbaca 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductSkuMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductSkuMapper.java @@ -5,6 +5,7 @@ import com.chaozhanggui.system.cashierservice.entity.TbProductSkuWithBLOBs; import com.chaozhanggui.system.cashierservice.entity.po.ProductSkuPo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import org.springframework.stereotype.Component; @@ -49,4 +50,7 @@ public interface TbProductSkuMapper { @Update("update tb_product_sku set stock_number=stock_number-#{num} WHERE id=#{id} ") int decrStockUnCheck(String id, int num); + + @Select("select * from tb_product_sku where is_grounding=1 and product_id=#{id}") + List selectByProductCheckGrounding(@Param("id") Integer id); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbConsInfoFlow.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbConsInfoFlow.java index 0e22495..784a13a 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbConsInfoFlow.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbConsInfoFlow.java @@ -25,6 +25,12 @@ public class TbConsInfoFlow implements Serializable { private String bizType; + + + private Integer orderId; + + private String orderNo; + private Date createTime; private Date updateTime; @@ -126,4 +132,20 @@ public class TbConsInfoFlow implements Serializable { public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } + + public Integer getOrderId() { + return orderId; + } + + public void setOrderId(Integer orderId) { + this.orderId = orderId; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } } \ No newline at end of file diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProductWithBLOBs.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProductWithBLOBs.java index 7e7b701..4933c00 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProductWithBLOBs.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProductWithBLOBs.java @@ -1,6 +1,7 @@ package com.chaozhanggui.system.cashierservice.entity; import java.io.Serializable; +import java.util.List; public class TbProductWithBLOBs extends TbProduct implements Serializable { private String images; @@ -15,8 +16,18 @@ public class TbProductWithBLOBs extends TbProduct implements Serializable { private String selectSpec; + private List skuList; + private static final long serialVersionUID = 1L; + public List getSkuList() { + return skuList; + } + + public void setSkuList(List skuList) { + this.skuList = skuList; + } + public String getImages() { return images; } @@ -64,4 +75,4 @@ public class TbProductWithBLOBs extends TbProduct implements Serializable { public void setSelectSpec(String selectSpec) { this.selectSpec = selectSpec == null ? null : selectSpec.trim(); } -} \ No newline at end of file +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/interceptor/WebAppConfigurer.java b/src/main/java/com/chaozhanggui/system/cashierservice/interceptor/WebAppConfigurer.java index b1406c0..907bebe 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/interceptor/WebAppConfigurer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/interceptor/WebAppConfigurer.java @@ -1,7 +1,6 @@ package com.chaozhanggui.system.cashierservice.interceptor; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -24,6 +23,7 @@ public class WebAppConfigurer implements WebMvcConfigurer { .excludePathPatterns("/order/scanSendMessage") .excludePathPatterns("/order/getsendMessage") .excludePathPatterns("/qrcode/getscanCode") - .excludePathPatterns("/order/sendMessage"); + .excludePathPatterns("/order/sendMessage") + .excludePathPatterns("/order/getOrderById"); } } 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 b64fe73..ad8aa85 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java @@ -45,4 +45,6 @@ public interface RabbitConstants { public static final String CONS_MSG_COLLECT_ROUTINGKEY_PUT = "cons_msg_collect_routingkey_put"; + String EXCHANGE_STOCK_RECORD = "exchange.stock.record"; + String ROUTING_STOCK_RECORD_SALE = "routing.stock.record.sale"; } 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 e5c2536..187b9ef 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitProducer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitProducer.java @@ -1,5 +1,6 @@ package com.chaozhanggui.system.cashierservice.rabbit; +import com.alibaba.fastjson.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.amqp.rabbit.connection.CorrelationData; @@ -12,7 +13,7 @@ import java.util.UUID; @Component public class RabbitProducer implements RabbitTemplate.ConfirmCallback { - + private final Logger logger = LoggerFactory.getLogger(this.getClass()); private RabbitTemplate rabbitTemplate; @@ -22,7 +23,7 @@ public class RabbitProducer implements RabbitTemplate.ConfirmCallback { this.rabbitTemplate = rabbitTemplate; rabbitTemplate.setConfirmCallback(this); //rabbitTemplate如果为单例的话,那回调就是最后设置的内容 } - + public void putOrderCollect(String content) { CorrelationData correlationId = new CorrelationData(UUID.randomUUID().toString()); rabbitTemplate.convertAndSend(RabbitConstants.CART_ORDER_COLLECT_PUT, RabbitConstants.CART_ORDER_COLLECT_ROUTINGKEY_PUT, content, correlationId); @@ -61,4 +62,13 @@ public class RabbitProducer implements RabbitTemplate.ConfirmCallback { } } -} \ No newline at end of file + private void sendMsg(String exchange, String routingKey, T data, String note) { + CorrelationData correlationId = new CorrelationData(UUID.randomUUID().toString()); + logger.info("开始发送{}mq消息, msgId: {}, exchange: {}, routingKey: {}, data: {}", correlationId.getId(), note, exchange, routingKey, data); + rabbitTemplate.convertAndSend(exchange, routingKey, JSONObject.toJSONString(data), correlationId); + } + + public void sendStockSaleMsg(T data) { + sendMsg(RabbitConstants.EXCHANGE_STOCK_RECORD, RabbitConstants.ROUTING_STOCK_RECORD_SALE, data, "商品售出增加库存记录"); + } +} 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 86776ba..ba4a37a 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -666,4 +666,40 @@ public class CloudPrinterService { + + + + public Result printInvoice(String shopId,String content,String remark,String amount){ + + List bloBsList = tbPrintMachineMapper.selectByShopId(shopId); + + if (ObjectUtil.isEmpty(bloBsList) || bloBsList.size() <= 0) { + log.error("此店铺没有对应的打印机设备"); + return Result.fail(CodeEnum.printmachinenoexsit); + } + + bloBsList.parallelStream().forEach(it->{ + if (!"network".equals(it.getConnectionType())) { + log.error("非网络打印机"); + return; + } + + if (!"1".equals(it.getStatus().toString())) { + log.error("打印机状态异常"); + return; + } + + if(!it.getSubType().equals("cash")){ + log.error("非小票打印机"); + return; + } + String voiceJson = "{\"bizType\":\"1\",\"content\":\"您有一笔新的订单,请及时处理\"}"; + PrinterUtils.printTickets(voiceJson,1,1,it.getAddress(),PrinterUtils.printInvoice(content, remark, amount)); + }); + return Result.success(CodeEnum.SUCCESS); + + } + + + } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/ConsService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/ConsService.java index 75bb673..99c2e34 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/ConsService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/ConsService.java @@ -35,6 +35,9 @@ public class ConsService { @Autowired TbOrderDetailMapper tbOrderDetailMapper; + @Autowired + TbOrderInfoMapper tbOrderInfoMapper; + @Transactional(rollbackFor = Exception.class) public void exect(String message) throws Exception { log.info("耗材信息更新开始:{}",message); @@ -47,7 +50,11 @@ public class ConsService { Thread.sleep(1000L); - + TbOrderInfo tbOrderInfo=tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId)); + if(Objects.isNull(tbOrderInfo)){ + log.info("订单信息不存在"); + return; + } List orderDetails= tbOrderDetailMapper.selectAllByOrderId(Integer.valueOf(orderId)); if(Objects.isNull(orderDetails)||orderDetails.size()<=0){ @@ -102,10 +109,18 @@ public class ConsService { // ConsInfoPO consInfoPO=new ConsInfoPO(tbConsInfo.getId(),amount); // consInfoPOS.add(consInfoPO); + flow.setOrderId(tbOrderInfo.getId()); + flow.setOrderNo(tbOrderInfo.getOrderNo()); + flow.setCreateTime(new Date()); // flow.setUpdateTime(new Date()); // consInfoFlows.add(flow); + if(amount.equals(BigDecimal.ZERO)){ + log.info("变动金额为 0:{}",amount); + continue; + } + tbConsInfoMapper.updateByPrimaryKey(tbConsInfo); tbConsInfoFlowMapper.insert(flow); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java index 3abaf0e..d72b603 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -1064,6 +1064,13 @@ public class OrderService { } + + + public Result getOrder(Integer orderId){ + return Result.success(CodeEnum.SUCCESS, tbOrderInfoMapper.selectById(orderId)) ; + } + + @Autowired TbUserInfoMapper tbUserInfoMapper; @@ -1154,6 +1161,9 @@ public class OrderService { + + + @Autowired TbOrderOutNumberMapper tbOrderOutNumberMapper; public Result scanSendMessage(String outNumber,String shopId){ 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 12f6e38..d7fb66d 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -17,11 +17,9 @@ import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.thirdpay.resp.*; import com.chaozhanggui.system.cashierservice.thirdpay.service.ThirdPayService; import com.chaozhanggui.system.cashierservice.util.*; -import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; @@ -538,6 +536,12 @@ public class PayService { producer.printMechine(orderId); + // 发送库存记录mq消息 + JSONObject mqData = new JSONObject(); + mqData.put("orderId", orderId); + mqData.put("type", "pc"); + producer.sendStockSaleMsg(mqData); + return Result.success(CodeEnum.SUCCESS); } @@ -623,6 +627,12 @@ public class PayService { producer.printMechine(orderId); + // 发送库存记录mq消息 + JSONObject mqData = new JSONObject(); + mqData.put("orderId", orderId); + mqData.put("type", "pc"); + producer.sendStockSaleMsg(mqData); + return Result.success(CodeEnum.SUCCESS); } @@ -671,6 +681,12 @@ public class PayService { producer.printMechine(orderId); + // 发送库存记录mq消息 + JSONObject mqData = new JSONObject(); + mqData.put("orderId", orderId); + mqData.put("type", "pc"); + producer.sendStockSaleMsg(mqData); + return Result.success(CodeEnum.SUCCESS); } @@ -718,11 +734,17 @@ public class PayService { producer.printMechine(orderId); + // 发送库存记录mq消息 + JSONObject mqData = new JSONObject(); + mqData.put("orderId", orderId); + mqData.put("type", "pc"); + producer.sendStockSaleMsg(mqData); + return Result.success(CodeEnum.SUCCESS); } @Transactional(rollbackFor = Exception.class) - public Result returnOrder(List list, String token,String pwd) { + public Result returnOrder(List list, String token, String pwd, boolean isOnline) { if (ObjectUtil.isEmpty(list) || list.size() <= 0) { return Result.fail(CodeEnum.PARAM); } @@ -762,6 +784,9 @@ public class PayService { String masterId = orderInfo.getMasterId(); String payType = orderInfo.getPayType(); String orderNo = generateReturnOrderNumber(); + if (!isOnline) { + orderNo = "XX" + orderNo; + } BigDecimal orderAmount = orderInfo.getPayAmount(); @@ -808,7 +833,8 @@ public class PayService { // totalAmount = totalAmount.add(it.getPriceAmount()); totalAmount = totalAmount.add(it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN).multiply(new BigDecimal(map1.get(it.getId())))); saleAmount = saleAmount.add(it.getPrice()); - payAmount = payAmount.add(it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN).multiply(new BigDecimal(map1.get(it.getId())))); + payAmount = payAmount.add(it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN) + .multiply(new BigDecimal(map1.get(it.getId())))); // payAmount=payAmount.add(it.getPriceAmount()); packAMount = packAMount.add(it.getPackAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN).multiply(new BigDecimal(map1.get(it.getId())))); @@ -839,86 +865,88 @@ public class PayService { "table", "return", merchantId, shopId, "", (byte) 1, day, masterId, "refund", payAmount, orderInfo.getPayType(), orderInfo.getTableName()); - if ("scanCode".equals(payType) || "wx_lite".equals(payType)) { - TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(merchantId)); - MsgException.checkNull(thirdApply, "支付参数配置错误"); + // 线上退款 + if (isOnline) { + if ("scanCode".equals(payType) || "wx_lite".equals(payType)) { + TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(merchantId)); + MsgException.checkNull(thirdApply, "支付参数配置错误"); - if ("ysk".equals(thirdPayType)) { - ReturnOrderReq req = new ReturnOrderReq(); - req.setAppId(thirdApply.getAppId()); - req.setTimestamp(System.currentTimeMillis()); - req.setOrderNumber(orderInfo.getPayOrderNo()); - req.setAmount(String.format("%.2f", newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN))); - req.setMercRefundNo(orderInfo.getOrderNo()); - req.setRefundReason("退货"); - req.setPayPassword(thirdApply.getPayPassword()); - Map map = BeanUtil.transBean2Map(req); - req.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); - log.info("merchantOrderReturn req:{}", JSONUtil.toJsonStr(req)); - ResponseEntity response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/returnOrder"), req, String.class); - log.info("merchantOrderReturn:{}", response.getBody()); - if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { - JSONObject object = JSONObject.parseObject(response.getBody()); - if (!object.get("code").equals("0")) { - MsgException.check(true, "退款渠道调用失败"); - } -// newOrderInfo.setPayOrderNo(object.getJSONObject("data").getString("refundOrderNumber")); - } - } else { - - TbOrderPayment payment= tbOrderPaymentMapper.selectByOrderId(orderId+""); - PublicResp publicResp = thirdPayService.returnOrder(url, thirdApply.getAppId(), newOrderInfo.getOrderNo(), payment.getTradeNumber(), null, "订单退款", newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN).multiply(new BigDecimal(100)).longValue(), callBack, null, thirdApply.getAppToken()); - - if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) { - if ("000000".equals(publicResp.getCode())) { - if (!"SUCCESS".equals(publicResp.getObjData().getState())&&!publicResp.getObjData().getState().equals("ING")) { + if ("ysk".equals(thirdPayType)) { + ReturnOrderReq req = new ReturnOrderReq(); + req.setAppId(thirdApply.getAppId()); + req.setTimestamp(System.currentTimeMillis()); + req.setOrderNumber(orderInfo.getPayOrderNo()); + req.setAmount(String.format("%.2f", newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN))); + req.setMercRefundNo(orderInfo.getOrderNo()); + req.setRefundReason("退货"); + req.setPayPassword(thirdApply.getPayPassword()); + Map map = BeanUtil.transBean2Map(req); + req.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); + log.info("merchantOrderReturn req:{}", JSONUtil.toJsonStr(req)); + ResponseEntity response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/returnOrder"), req, String.class); + log.info("merchantOrderReturn:{}", response.getBody()); + if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { + JSONObject object = JSONObject.parseObject(response.getBody()); + if (!object.get("code").equals("0")) { MsgException.check(true, "退款渠道调用失败"); } - } else { - MsgException.check(true, "退款渠道调用失败"); +// newOrderInfo.setPayOrderNo(object.getJSONObject("data").getString("refundOrderNumber")); } + } else { + + TbOrderPayment payment= tbOrderPaymentMapper.selectByOrderId(orderId+""); + PublicResp publicResp = thirdPayService.returnOrder(url, thirdApply.getAppId(), newOrderInfo.getOrderNo(), payment.getTradeNumber(), null, "订单退款", newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN).multiply(new BigDecimal(100)).longValue(), callBack, null, thirdApply.getAppToken()); + + if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) { + if ("000000".equals(publicResp.getCode())) { + if (!"SUCCESS".equals(publicResp.getObjData().getState())&&!publicResp.getObjData().getState().equals("ING")) { + MsgException.check(true, "退款渠道调用失败"); + } + } else { + MsgException.check(true, "退款渠道调用失败"); + } + } + } + }else if("deposit".equals(payType)){ + TbShopUser user= tbShopUserMapper.selectByUserIdAndShopId(orderInfo.getUserId(),orderInfo.getShopId()); + if(ObjectUtil.isNull(user)||ObjectUtil.isEmpty(user)){ + user=tbShopUserMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMemberId())); + } + + + if(ObjectUtil.isNull(user)||ObjectUtil.isEmpty(user)){ + return Result.fail(ACCOUNTEIXST); + } + + if(!user.getShopId().equals(orderInfo.getShopId())){ + return Result.fail(ACCOUNTEIXST); + } + + + newOrderInfo.setMemberId(orderInfo.getMemberId()); + newOrderInfo.setUserId(orderInfo.getUserId()); + + user.setAmount(user.getAmount().add( newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN))); + user.setConsumeAmount(user.getConsumeAmount().subtract( newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN))); + user.setUpdatedAt(System.currentTimeMillis()); + tbShopUserMapper.updateByPrimaryKeySelective(user); + + + TbShopUserFlow flow = new TbShopUserFlow(); + flow.setShopUserId(user.getId()); + flow.setBizCode("accountReturnPay"); + flow.setBizName("会员储值卡退款"); + flow.setType("+"); + flow.setAmount(newOrderInfo.getOrderAmount()); + flow.setBalance(user.getAmount()); + flow.setCreateTime(new Date()); + tbShopUserFlowMapper.insert(flow); + } - - }else if("deposit".equals(payType)){ - TbShopUser user= tbShopUserMapper.selectByUserIdAndShopId(orderInfo.getUserId(),orderInfo.getShopId()); - if(ObjectUtil.isNull(user)||ObjectUtil.isEmpty(user)){ - user=tbShopUserMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMemberId())); - } - - - if(ObjectUtil.isNull(user)||ObjectUtil.isEmpty(user)){ - return Result.fail(ACCOUNTEIXST); - } - - if(!user.getShopId().equals(orderInfo.getShopId())){ - return Result.fail(ACCOUNTEIXST); - } - - - newOrderInfo.setMemberId(orderInfo.getMemberId()); - newOrderInfo.setUserId(orderInfo.getUserId()); - - user.setAmount(user.getAmount().add( newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN))); - user.setConsumeAmount(user.getConsumeAmount().subtract( newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN))); - user.setUpdatedAt(System.currentTimeMillis()); - tbShopUserMapper.updateByPrimaryKeySelective(user); - - - TbShopUserFlow flow = new TbShopUserFlow(); - flow.setShopUserId(user.getId()); - flow.setBizCode("accountReturnPay"); - flow.setBizName("会员储值卡退款"); - flow.setType("+"); - flow.setAmount(newOrderInfo.getOrderAmount()); - flow.setBalance(user.getAmount()); - flow.setCreateTime(new Date()); - tbShopUserFlowMapper.insert(flow); - } - //判断是否修改主单状态 BigDecimal returnAmount = tbOrderDetailMapper.selectByOrderId(orderId.toString()); if (N.egt(returnAmount.add(payAmount), orderAmount)) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java index ca6c907..7b20bb4 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java @@ -1,6 +1,10 @@ package com.chaozhanggui.system.cashierservice.service; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.chaozhanggui.system.cashierservice.dao.*; import com.chaozhanggui.system.cashierservice.entity.*; import com.chaozhanggui.system.cashierservice.entity.vo.ShopCategoryVo; @@ -14,6 +18,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; @Service @@ -97,9 +102,9 @@ public class ProductService { List tbProductWithBLOBs=null; PageHelperUtil.startPage(page,pageSize); if(ObjectUtil.isEmpty(categoryId)){ - tbProductWithBLOBs=tbProductMapper.selectByShopId(shopId,commdityName); + tbProductWithBLOBs=tbProductMapper.selectByShopIdAndCheckGrounding(shopId,commdityName); }else { - tbProductWithBLOBs=tbProductMapper.selectByShopIdAndShopType(shopId,categoryId,commdityName); + tbProductWithBLOBs=tbProductMapper.selectByShopIdAndShopTypeCheckGrounding(shopId,categoryId,commdityName); } String day = DateUtils.getDay(); @@ -118,6 +123,11 @@ public class ProductService { skuResult=new TbProductSkuResult(); } it.setProductSkuResult(skuResult); + + + // 查询sku信息 + List skuWithBLOBs = tbProductSkuMapper.selectByProductCheckGrounding(it.getId()); + it.setSkuList(skuWithBLOBs); }); } PageInfo pageInfo=new PageInfo(tbProductWithBLOBs); 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 5797563..2eb4617 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java @@ -222,6 +222,15 @@ public class PrinterUtils { + public static String printInvoice(String content,String remark,String amount){ + StringBuilder sb=new StringBuilder(); + sb.append("".concat(content.concat("
"))); + sb.append("".concat(remark).concat("
")); + sb.append("【开票金额:".concat(amount).concat("】")); + sb.append(""); + sb.append(""); + return sb.toString(); + } @@ -306,20 +315,24 @@ public class PrinterUtils { // // printTickets(3,1,"ZF544PG03W00002",handoverprintData(handoverInfo)); +// +// List detailList= new ArrayList<>(); +// OrderDetailPO.Detail detail=new OrderDetailPO.Detail("花香水牛拿铁","1","19000.90","不甜,麻辣"); +// +// OrderDetailPO.Detail detail3=new OrderDetailPO.Detail("单位iiii","4","40000.00",null); +// OrderDetailPO.Detail detail4=new OrderDetailPO.Detail("喔喔奶茶","1","19000.90","微甜,微辣"); +// detailList.add(detail); +// detailList.add(detail3); +// detailList.add(detail4); +// OrderDetailPO detailPO=new OrderDetailPO("牛叉闪闪","普通打印","#365","DD20240306134718468","2024-03-06 15:00:00","【POS-1】001","79000.80","5049758.96","deposit","0",detailList,"变态辣"); +// +// String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; +// printTickets(voiceJson,1,1,"ZF544PG03W00002",getCashPrintData(detailPO,"结算单",""));\\ - List detailList= new ArrayList<>(); - OrderDetailPO.Detail detail=new OrderDetailPO.Detail("花香水牛拿铁","1","19000.90","不甜,麻辣"); - OrderDetailPO.Detail detail3=new OrderDetailPO.Detail("单位iiii","4","40000.00",null); - OrderDetailPO.Detail detail4=new OrderDetailPO.Detail("喔喔奶茶","1","19000.90","微甜,微辣"); - detailList.add(detail); - detailList.add(detail3); - detailList.add(detail4); - OrderDetailPO detailPO=new OrderDetailPO("牛叉闪闪","普通打印","#365","DD20240306134718468","2024-03-06 15:00:00","【POS-1】001","79000.80","5049758.96","deposit","0",detailList,"变态辣"); - - String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; - printTickets(voiceJson,1,1,"ZF544PG03W00002",getCashPrintData(detailPO,"结算单","")); + String voiceJson = "{\"bizType\":\"1\",\"content\":\"您有一笔新的订单,请及时处理\"}"; + printTickets(voiceJson,1,1,"ZF544PG03W00002", printInvoice("http://weixin.qq.com/q/020fVS8lcLeiG1ID3SxCcH","【30天内开票有效】","1000000")); } } diff --git a/src/main/resources/mapper/TbConsInfoFlowMapper.xml b/src/main/resources/mapper/TbConsInfoFlowMapper.xml index 229c085..c7c5ad8 100644 --- a/src/main/resources/mapper/TbConsInfoFlowMapper.xml +++ b/src/main/resources/mapper/TbConsInfoFlowMapper.xml @@ -14,10 +14,12 @@ + + id, shop_id, cons_id, con_name, amount, balance, biz_code, biz_name, biz_type, create_time, - update_time + update_time,order_id,order_no + + diff --git a/src/main/resources/mapper/TbProductMapper.xml b/src/main/resources/mapper/TbProductMapper.xml index 2fef204..7371e79 100644 --- a/src/main/resources/mapper/TbProductMapper.xml +++ b/src/main/resources/mapper/TbProductMapper.xml @@ -902,6 +902,17 @@ order by `sort` asc + + + +