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())); 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(); 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(); 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"; /** * 订单出库 zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java
New file @@ -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); } } } 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());