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