From 4e35547a189a77525b270f7a5ae6d425e71765ee Mon Sep 17 00:00:00 2001
From: jyy <935090232@qq.com>
Date: Wed, 17 Mar 2021 16:41:00 +0800
Subject: [PATCH] 退款处理分销订单

---
 zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java                    |   41 ++++++++++
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java |   22 ++++-
 zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java                           |    4 +
 zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopRefundRecordAction.java                  |   21 +++-
 zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderTask.java                          |  143 ++++++++++++++++++-----------------
 zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java                                         |    5 +
 6 files changed, 156 insertions(+), 80 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java b/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java
index ce1ff16..11f480b 100644
--- a/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java
+++ b/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java
@@ -51,6 +51,10 @@
     SalesOrderTask SalesOrderTask() {
         return new SalesOrderTask();
     }
+    @Bean
+    SalesOrderRefundTask SalesOrderRefundTask() {
+        return new SalesOrderRefundTask();
+    }
 
     @Bean
     TemplateMsgTask TemplateMsgTask(){
@@ -87,6 +91,7 @@
         taskList.add(new MqTask(MQ_EXCHANGE_A + evn, MQTaskRouting.SEND_TEMPLATE_MSG + evn,MQTaskRouting.SEND_TEMPLATE_MSG + evn, TemplateMsgTask()));
         taskList.add(new MqTask(MQ_EXCHANGE_A + evn, MQTaskRouting.ORDER_OUT_SOTORE + evn,MQTaskRouting.ORDER_OUT_SOTORE + evn, OrderOutSotoreTask()));
         taskList.add(new MqTask(MQ_EXCHANGE_A + evn, MQTaskRouting.SEND_UNIFORM_TEMPLATE_MSG + evn,MQTaskRouting.SEND_UNIFORM_TEMPLATE_MSG + evn, UniformMsgSentTask()));
+        taskList.add(new MqTask(MQ_EXCHANGE_A + evn, MQTaskRouting.SHOP_ORDER_REFUND + evn,MQTaskRouting.SHOP_ORDER_REFUND + evn, SalesOrderRefundTask()));
 
         //不同任务在不同的队列,但是routingKey一样则可以收到生产者消息
         taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.CREATE_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,SalesOrderTask()));
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopRefundRecordAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopRefundRecordAction.java
index c790239..05511cb 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopRefundRecordAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopRefundRecordAction.java
@@ -1,6 +1,9 @@
 package com.matrix.system.shopXcx.action;
 
-import com.matrix.component.wechat.externalInterface.common.WechatConfigure;
+import com.matrix.component.rabbitmq.RabiitMqTemplate;
+import com.matrix.component.redis.RedisUserLoginUtils;
+import com.matrix.component.tools.WxTempLateMsgUtil;
+import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil;
 import com.matrix.core.anotations.RemoveRequestToken;
 import com.matrix.core.anotations.SaveRequestToken;
 import com.matrix.core.constance.MatrixConstance;
@@ -10,20 +13,17 @@
 import com.matrix.core.pojo.AjaxResult;
 import com.matrix.core.pojo.PaginationVO;
 import com.matrix.core.tools.*;
-import com.matrix.component.redis.RedisUserLoginUtils;
 import com.matrix.system.common.bean.SysUsers;
 import com.matrix.system.common.constance.AppConstance;
-
-import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil;
 import com.matrix.system.hive.action.util.QueryUtil;
+import com.matrix.system.shopXcx.api.service.WXShopOrderService;
 import com.matrix.system.shopXcx.api.service.WxShopRefundRecordService;
 import com.matrix.system.shopXcx.bean.*;
 import com.matrix.system.shopXcx.dao.ShopCouponRecordDao;
 import com.matrix.system.shopXcx.dao.ShopDeliveryInfoDao;
 import com.matrix.system.shopXcx.dao.ShopOrderDao;
 import com.matrix.system.shopXcx.dao.ShopRefundRecordDao;
-import com.matrix.component.tools.WxTempLateMsgUtil;
-import com.matrix.system.shopXcx.api.service.WXShopOrderService;
+import com.matrix.system.shopXcx.mqTask.MQTaskRouting;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -73,6 +73,12 @@
 
 	@Value("${wx_pay_debug_onoff}")
 	private boolean isDebug;
+	@Value("${evn}")
+	private  String evn;
+
+	@Autowired
+	private RabiitMqTemplate rabiitMqTemplate;
+
 
 	/**
 	 * 列表显示
@@ -522,6 +528,9 @@
 				modifyMap.put("orderStatus", ShopOrder.ORDER_STATUS_MONEYBACK_SUCCESS);
 				modifyMap.put("refundCharge", shopRefundRecord.getRefundMoney());
 				shopOrderDao.updateByMap(modifyMap);
+
+				rabiitMqTemplate.sendMsg(MQTaskRouting.SEND_UNIFORM_TEMPLATE_MSG+evn,shopOrder.getId()+"");
+
 			}catch (Exception e){
 				LogUtil.debug("退款成功,修改退款表和订单表状态出错。。。", id);
 				e.printStackTrace();
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java
index 6030d3e..694e650 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java
@@ -1,16 +1,17 @@
 package com.matrix.system.shopXcx.api.service.impl;
 
-import com.matrix.component.wechat.externalInterface.common.WechatConfigure;
+import com.matrix.component.rabbitmq.RabiitMqTemplate;
+import com.matrix.component.tools.WxTempLateMsgUtil;
+import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil;
 import com.matrix.core.exception.GlobleException;
 import com.matrix.core.tools.DateUtil;
 import com.matrix.core.tools.LogUtil;
 import com.matrix.system.common.constance.AppConstance;
-import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil;
-import com.matrix.system.shopXcx.bean.*;
-import com.matrix.system.shopXcx.dao.*;
-import com.matrix.component.tools.WxTempLateMsgUtil;
 import com.matrix.system.shopXcx.api.service.WXShopOrderService;
 import com.matrix.system.shopXcx.api.service.WxShopRefundRecordService;
+import com.matrix.system.shopXcx.bean.*;
+import com.matrix.system.shopXcx.dao.*;
+import com.matrix.system.shopXcx.mqTask.MQTaskRouting;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -49,6 +50,13 @@
 
     @Value("${wx_pay_debug_onoff}")
     private boolean isDebug;
+    @Value("${evn}")
+    private  String evn;
+
+    @Autowired
+    private RabiitMqTemplate rabiitMqTemplate;
+
+
     @Override
     public Boolean refundToUser(String id, ShopRefundRecord shopRefundRecord) {
         LogUtil.debug("进入退款接口进行退款。。。", id);
@@ -134,6 +142,10 @@
                 modifyMap.put("orderStatus", ShopOrder.ORDER_STATUS_MONEYBACK_SUCCESS);
                 modifyMap.put("refundCharge", shopRefundRecord.getRefundMoney());
                 shopOrderDao.updateByMap(modifyMap);
+
+                rabiitMqTemplate.sendMsg(MQTaskRouting.SEND_UNIFORM_TEMPLATE_MSG+evn,shopOrder.getId()+"");
+
+
             }catch (Exception e){
                 LogUtil.debug("退款成功,修改退款表和订单表状态出错。。。", id);
                 e.printStackTrace();
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java
index c80101b..2b548ed 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java
@@ -18,6 +18,10 @@
      * 发送小程序统一模板消息
      */
     String SEND_UNIFORM_TEMPLATE_MSG = "SEND_UNIFORM_TEMPLATE_MSG";
+    /**
+     * 订单退款
+     */
+    String SHOP_ORDER_REFUND = "SHOP_ORDER_REFUND";
 
     /**
      * 订单出库
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java
new file mode 100644
index 0000000..f0a4ed8
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java
@@ -0,0 +1,41 @@
+package com.matrix.system.shopXcx.mqTask;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.matrix.core.tools.LogUtil;
+import com.matrix.system.fenxiao.dao.ShopSalesmanOrderDao;
+import com.matrix.system.fenxiao.entity.ShopSalesmanOrder;
+import com.rabbitmq.client.DeliverCallback;
+import com.rabbitmq.client.Delivery;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+
+/**
+ * 分销订单退款
+ */
+@Component
+public class SalesOrderRefundTask implements DeliverCallback {
+
+
+    @Autowired
+    private ShopSalesmanOrderDao shopSalesmanOrderDao;
+
+
+
+    @Override
+    public void handle(String consumerTag, Delivery message) throws IOException {
+
+        String orderId = new String(message.getBody(), "UTF-8");
+        LogUtil.debug("收到分销订单退款任务orderId={}", orderId);
+        QueryWrapper queryWrapper=new QueryWrapper();
+        queryWrapper.eq("order_id",orderId);
+        ShopSalesmanOrder shopSalesmanOrder = shopSalesmanOrderDao.selectOne(queryWrapper);
+        if(shopSalesmanOrder!=null){
+            shopSalesmanOrder.setOrderStatus(ShopSalesmanOrder.STATUS_YTK);
+            shopSalesmanOrderDao.updateById(shopSalesmanOrder);
+        }
+    }
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderTask.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderTask.java
index ea4bcd3..86c6c9a 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderTask.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderTask.java
@@ -1,13 +1,13 @@
 package com.matrix.system.shopXcx.mqTask;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.matrix.biz.bean.BizUser;
 import com.matrix.biz.service.BizUserService;
 import com.matrix.core.constance.MatrixConstance;
 import com.matrix.core.tools.LogUtil;
 import com.matrix.core.tools.StringUtils;
 import com.matrix.system.common.dao.BusParameterSettingsDao;
-import com.matrix.system.fenxiao.dao.ShopRevenueFlowDao;
 import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao;
 import com.matrix.system.fenxiao.dao.ShopSalesmanOrderDao;
 import com.matrix.system.fenxiao.entity.ShopSalesmanGrade;
@@ -35,7 +35,7 @@
 import java.util.List;
 
 /**
- * 微商城订单同步到erp系统
+ * 分销订单创建
  */
 @Component
 public class SalesOrderTask implements DeliverCallback {
@@ -109,78 +109,83 @@
     void handleExtensionOrder(ShopOrder order) {
         //判读客户是否存在上级,存在则产生上级的收益
         BizUser bizUser = bizUserService.findByOpenId(order.getUserId());
-        if(StringUtils.isNotBlank(bizUser.getParentOpenId())){
+        if(StringUtils.isNotBlank(bizUser.getParentOpenId())){//存在上级
+
             LogUtil.debug("处理分销订单userOpid={}",bizUser.getOpenId());
-            //存在上级
-            ShopSalesmanOrder salesmanOrder=new ShopSalesmanOrder();
-            salesmanOrder.setCompanyId(order.getCompanyId());
-            salesmanOrder.setCreateBy(MatrixConstance.SYSTEM_USER);
-            salesmanOrder.setUpdateBy(MatrixConstance.SYSTEM_USER);
-            salesmanOrder.setCreateTime(new Date());
-            salesmanOrder.setUpdateTime(new Date());
-            salesmanOrder.setOrderId(Long.parseLong(order.getId()+""));
-            salesmanOrder.setUserId(order.getUserId());
-            salesmanOrder.setSalesUserId(bizUser.getParentOpenId());
-            salesmanOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_SALES);
-            salesmanOrder.setOrderStatus(ShopSalesmanOrder.STATUS_DJS);
-            Double salesAmount=0D;
-            Double invitationAmount=0D;
-            Double orderTotal=0D;
-            Double zk=1D;
+            //判断是否重复生成
+            QueryWrapper queryWrapper=new QueryWrapper();
+            queryWrapper.eq("order_id",order.getId());
+            Integer orderCount = shopSalesmanOrderDao.selectCount(queryWrapper);
+            if(orderCount==0){
+                ShopSalesmanOrder salesmanOrder=new ShopSalesmanOrder();
+                salesmanOrder.setCompanyId(order.getCompanyId());
+                salesmanOrder.setCreateBy(MatrixConstance.SYSTEM_USER);
+                salesmanOrder.setUpdateBy(MatrixConstance.SYSTEM_USER);
+                salesmanOrder.setCreateTime(new Date());
+                salesmanOrder.setUpdateTime(new Date());
+                salesmanOrder.setOrderId(Long.parseLong(order.getId()+""));
+                salesmanOrder.setUserId(order.getUserId());
+                salesmanOrder.setSalesUserId(bizUser.getParentOpenId());
+                salesmanOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_SALES);
+                salesmanOrder.setOrderStatus(ShopSalesmanOrder.STATUS_DJS);
+                Double salesAmount=0D;
+                Double invitationAmount=0D;
+                Double orderTotal=0D;
+                Double zk=1D;
 
-            BizUser salesMan=bizUserService.findByOpenId(bizUser.getParentOpenId());
-            BizUser invitationMan=null;
-            ShopSalesmanOrder invitationOrder=null;
-            boolean hasInvitationMan=StringUtils.isNotBlank(salesMan.getParentOpenId());
+                BizUser salesMan=bizUserService.findByOpenId(bizUser.getParentOpenId());
+                BizUser invitationMan=null;
+                ShopSalesmanOrder invitationOrder=null;
+                boolean hasInvitationMan=StringUtils.isNotBlank(salesMan.getParentOpenId());
 
-            //判断推广员是否还存在上级,存在则计算邀请收益
-            if(hasInvitationMan){
-                invitationMan=bizUserService.findByOpenId(salesMan.getParentOpenId());
-                 invitationOrder=new ShopSalesmanOrder();
-                BeanUtils.copyProperties(salesmanOrder,invitationOrder);
-                invitationOrder.setSalesUserId(invitationMan.getOpenId());
-                invitationOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_INVITATION);
-            }
-
-            //收益计算
-            for (ShopOrderDetails item:order.getDetails() ){
-                if(StringUtils.isNotBlank(item.getShopProduct().getAttrValues())
-                && item.getShopProduct().getAttrValues().contains("分销商城")){
-                    if(item.getShopSku().getSealesPrice()==null
-                    ||item.getShopSku().getSealesPrice().doubleValue()==0){
-                        //按分销等级计算
-                        ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(salesMan.getSalesmanGrade());
-                        salesAmount+=item.getTotalPrice().doubleValue()*(shopSalesmanGrade.getSealesCommission()/100);
-
-                        if(hasInvitationMan){
-                            ShopSalesmanGrade invitationManGrade = shopSalesmanGradeDao.selectById(invitationMan.getSalesmanGrade());
-                            invitationAmount+=item.getTotalPrice().doubleValue()*(invitationManGrade.getInvitationCommission()/100);
-                        }
-
-                    }else{
-                        //按产品设置的推广金额计算
-                        salesAmount+=item.getShopSku().getSealesPrice().doubleValue()*item.getCount();
-                        if(hasInvitationMan){
-                            invitationAmount+=item.getShopSku().getInvitationPrice().doubleValue()*item.getCount();
-                        }
-                    }
-                    orderTotal+=item.getTotalPrice().doubleValue();
-                }
-            }
-            if(salesAmount>0){
-                //整体的优惠金额折算成折扣,* 佣金
-                zk=order.getOrderMoney().doubleValue()/orderTotal;
-                salesAmount=salesAmount*zk;
-                salesmanOrder.setAmount(salesAmount);
-                shopSalesmanOrderDao.insert(salesmanOrder);
-
+                //判断推广员是否还存在上级,存在则计算邀请收益
                 if(hasInvitationMan){
-                    invitationAmount=invitationAmount*zk;
-                    invitationOrder.setAmount(invitationAmount);
-                    shopSalesmanOrderDao.insert(invitationOrder);
-
-
+                    invitationMan=bizUserService.findByOpenId(salesMan.getParentOpenId());
+                    invitationOrder=new ShopSalesmanOrder();
+                    BeanUtils.copyProperties(salesmanOrder,invitationOrder);
+                    invitationOrder.setSalesUserId(invitationMan.getOpenId());
+                    invitationOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_INVITATION);
                 }
+
+                //收益计算
+                for (ShopOrderDetails item:order.getDetails() ){
+                    if(StringUtils.isNotBlank(item.getShopProduct().getAttrValues())
+                            && item.getShopProduct().getAttrValues().contains("分销商城")){
+                        if(item.getShopSku().getSealesPrice()==null
+                                ||item.getShopSku().getSealesPrice().doubleValue()==0){
+                            //按分销等级计算
+                            ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(salesMan.getSalesmanGrade());
+                            salesAmount+=item.getTotalPrice().doubleValue()*(shopSalesmanGrade.getSealesCommission()/100);
+
+                            if(hasInvitationMan){
+                                ShopSalesmanGrade invitationManGrade = shopSalesmanGradeDao.selectById(invitationMan.getSalesmanGrade());
+                                invitationAmount+=item.getTotalPrice().doubleValue()*(invitationManGrade.getInvitationCommission()/100);
+                            }
+
+                        }else{
+                            //按产品设置的推广金额计算
+                            salesAmount+=item.getShopSku().getSealesPrice().doubleValue()*item.getCount();
+                            if(hasInvitationMan){
+                                invitationAmount+=item.getShopSku().getInvitationPrice().doubleValue()*item.getCount();
+                            }
+                        }
+                        orderTotal+=item.getTotalPrice().doubleValue();
+                    }
+                }
+                if(salesAmount>0){
+                    //整体的优惠金额折算成折扣,* 佣金
+                    zk=order.getOrderMoney().doubleValue()/orderTotal;
+                    salesAmount=salesAmount*zk;
+                    salesmanOrder.setAmount(salesAmount);
+                    shopSalesmanOrderDao.insert(salesmanOrder);
+                    if(hasInvitationMan){
+                        invitationAmount=invitationAmount*zk;
+                        invitationOrder.setAmount(invitationAmount);
+                        shopSalesmanOrderDao.insert(invitationOrder);
+                    }
+                }
+            }else{
+                LogUtil.debug("重复订单id={}",order.getId());
             }
         }else{
             LogUtil.debug("不存在父级userOpid={}",bizUser.getOpenId());

--
Gitblit v1.9.1