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/common/actions/ProjExceptionAction.java
@@ -1,22 +1,16 @@ package com.matrix.system.common.actions; import com.matrix.core.constance.MatrixConstance; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.pojo.PaginationVO; import com.matrix.core.tools.WebUtil; import com.matrix.system.common.bean.ProjException; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.ProjExceptionDao; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import java.util.Arrays; import java.util.List; /** * @author 姜友瑶 @@ -31,12 +25,19 @@ ProjExceptionDao projExceptionDao; @RequestMapping(value = "/showException") public @ResponseBody AjaxResult showException(Long id) { public ModelAndView showException(Long id) { ProjException projException = projExceptionDao.selectById(id); return AjaxResult.buildSuccessInstance(Arrays.asList(projException)); ModelAndView mv = new ModelAndView("common/showprojException"); mv.addObject("obj", projException); return mv; } @RequestMapping(value = "/projException/del") public @ResponseBody AjaxResult del(@RequestBody ProjException projException) { 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.SHOP_ORDER_REFUND+evn,shopOrder.getId()+""); }catch (Exception e){ LogUtil.debug("退款成功,修改退款表和订单表状态出错。。。", id); e.printStackTrace(); zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java
@@ -152,7 +152,14 @@ return AjaxResult.buildFailInstance("请求参数错误"); } BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class); if(invitationId.equals(loginUser.getOpenId())){ return AjaxResult.buildFailInstance("不能绑定自己"); } if(loginUser.getIsSales()==null || loginUser.getIsSales()==2){ return AjaxResult.buildFailInstance("只有分销员才能绑定客户"); } loginUser = bizUserDao.selectById(loginUser.getUserId()); if (loginUser.getIsSales() == null || loginUser.getIsSales() == BizUser.NOT_SALES) { if (StringUtils.isBlank(loginUser.getParentOpenId())) { 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.SHOP_ORDER_REFUND+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,43 @@ 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); }else{ LogUtil.debug("改订单为生成分销订单={}", orderId); } } } 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()); zq-erp/src/main/resources/config/system.properties
@@ -100,9 +100,9 @@ #是否启用异常上报 is_open_exception_report=false showExcptionUrl=http://erp.hive.jyymatrix.cc/showException showExcptionUrl=http://test.hive.jyymatrix.cc/showException #异常信息查询接口 showExcptionUrl=http://erp.hive.jyymatrix.cc/showException showExcptionUrl=http://test.hive.jyymatrix.cc/showException zq-erp/src/main/resources/config/test/system.properties
@@ -93,9 +93,9 @@ #是否启用异常上报 is_open_exception_report=true showExcptionUrl=http://erp.hive.jyymatrix.cc/showException showExcptionUrl=http://test.hive.jyymatrix.cc/showException #异常信息查询接口 showExcptionUrl=http://erp.hive.jyymatrix.cc/showException showExcptionUrl=http://test.hive.jyymatrix.cc/showException zq-erp/src/main/resources/templates/views/common/showprojException.html
New file @@ -0,0 +1,51 @@ <!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8"> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <meta name="renderer" content="webkit|ie-comp|ie-stand"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> <meta http-equiv="Cache-Control" content="no-siteapp"/> <LINK rel="Bookmark" href="../images/favicon.ico"> <!-- 本框架基本脚本和样式 --> <link rel="stylesheet" th:href="@{/plugin/bootstrap-3.3.5/css/bootstrap.min.css}"> <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> </head> <body> <div class="ibox-content" id="app"> <table class="table table-striped table-bordered" style="width: 800px;"> <tr> <td>ID</td> <td th:text="${obj.id}" ></td> <td >姓名</td> <td th:text="${obj.owner}" ></td> </tr> <tr> <td >异常类型</td> <td th:text="${obj.simpleMsg}" ></td> <td >发生时间</td> <td th:text="${#dates.format(obj.createTime, 'yyyy-MM-dd HH:mm:sss')}" > </tr> <tr> <td >访问地址</td> <td th:text="${obj.cause}" ></td> <td >mdc</td> <td th:text="${obj.mdc}" ></td> </tr> </table> <pre th:text="${obj.errorMsg}" ></pre> </div> <script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> <script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> <script type="text/javascript" th:src="@{/plugin/bootstrap-3.3.5/js/bootstrap.min.js}"></script> <script type="text/javascript"> </script> </body> </html>