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