From d08ec8845a4c2663b3502cd83872964b07d7d589 Mon Sep 17 00:00:00 2001 From: jyy <935090232@qq.com> Date: Mon, 22 Mar 2021 11:14:52 +0800 Subject: [PATCH] 积分商城11 --- zq-erp/src/main/java/com/matrix/system/score/dao/ScoreVipDetailDao.java | 5 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java | 5 - zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/ScoreOrderTask.java | 77 +++++++++++++++++++ zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java | 18 ++++ zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java | 1 zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java | 6 + zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java | 53 ++++++++++-- zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html | 36 +++++++++ 8 files changed, 184 insertions(+), 17 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 11f480b..0993a3f 100644 --- a/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java +++ b/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java @@ -39,6 +39,11 @@ public static final String MQ_EXCHANGE_TOPIC = "hive_exchange_fanout"; @Bean + ScoreOrderTask ScoreOrderTask() { + return new ScoreOrderTask(); + } + + @Bean VipCreateTask VipCreateTask() { return new VipCreateTask(); } @@ -96,6 +101,7 @@ //不同任务在不同的队列,但是routingKey一样则可以收到生产者消息 taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.CREATE_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,SalesOrderTask())); taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.SALES_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,OrderrCreateTask())); + taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.SCORE_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,ScoreOrderTask())); rabiitMqTemplate.binding(taskList); diff --git a/zq-erp/src/main/java/com/matrix/system/score/dao/ScoreVipDetailDao.java b/zq-erp/src/main/java/com/matrix/system/score/dao/ScoreVipDetailDao.java index ec22abe..1f0ed56 100644 --- a/zq-erp/src/main/java/com/matrix/system/score/dao/ScoreVipDetailDao.java +++ b/zq-erp/src/main/java/com/matrix/system/score/dao/ScoreVipDetailDao.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.matrix.system.score.entity.ScoreVipDetail; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,12 +19,12 @@ * @param vipId * @return */ - int selectUserTotalScore(String openId, Long vipId); + int selectUserTotalScore(@Param("openId") String openId, @Param("openId")Long vipId); /** * 查询用户有效的积分,按时间顺序排 * @param * @return */ - List<ScoreVipDetail> selectEffectiveScore(String openId, Long vipId); + List<ScoreVipDetail> selectEffectiveScore(@Param("openId") String openId, @Param("openId")Long vipId); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java b/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java index 3faa9fb..0c44570 100644 --- a/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java +++ b/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java @@ -1,6 +1,7 @@ package com.matrix.system.score.service; import cn.hutool.core.date.DateTime; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.matrix.biz.dao.BizUserDao; import com.matrix.core.constance.MatrixConstance; @@ -51,11 +52,6 @@ /** * 扣除用户积分 - * - * @param openId - * @param score - * @param businessId - * @param type */ @Transactional(rollbackFor = Exception.class) public void deductionScore(String openId, Long vipId,Long shopId, Integer score, Long businessId, int type) { @@ -120,12 +116,6 @@ /** * 新增用户积分 - * @param openId - * @param vipId - * @param oprationUserId - * @param score - * @param businessId - * @param type */ @Transactional(rollbackFor = Exception.class) public void addScore(String openId, Long vipId, Long oprationUserId,Long shopId, Integer score, Long businessId, int type) { @@ -193,5 +183,46 @@ } + /** + * 退积分 + */ + public void refundScore(String openId, Long vipId, Integer score, Long oldBusinessId, int type){ + Long companyId=null; + if(openId!=null){ + companyId= bizUserDao.findByOpenId(openId).getCompanyId(); + }else if(vipId!=null){ + companyId= vipInfoDao.selectById(vipId).getCompanyId(); + }else{ + throw new IllegalArgumentException("vipId,openId必须有一个"); + } + if(score<0){ + throw new IllegalArgumentException("score必须有为大于零的数"); + } + + //查询原始使用记录 + QueryWrapper queryWrapper=new QueryWrapper(); + queryWrapper.eq("business_id",oldBusinessId); + queryWrapper.eq("company_id",companyId); + queryWrapper.eq("type",type); + List<ScoreUseRecord> scoreUseRecordList = scoreUseRecordDao.selectList(queryWrapper); + scoreUseRecordList.forEach(scoreUseRecord -> { + ScoreVipDetail scoreVipDetail = scoreVipDetailDao.selectById(scoreUseRecord.getScoreVipDetailId()); + if(scoreVipDetail!=null){ + if(DateTime.now().isAfter(scoreVipDetail.getValiditeTime())){ + //积分还有效 + scoreVipDetail.setRemainScore( scoreVipDetail.getRemainScore()+score); + scoreVipDetail.setUsedScore(scoreVipDetail.getUsedScore()-score); + scoreVipDetail.setState(ScoreVipDetail.SCORE_STATUS_YX); + scoreVipDetailDao.updateById(scoreVipDetail); + scoreUseRecordDao.deleteById(scoreUseRecord.getId()); + } + } + + }); + } + + public static void main(String[] args) { + System.out.println(DateTime.now().isAfter(DateTime.of("2020-11-11 23:22","yyyy-MM-dd HH:mm"))); + } } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java index 88c4948..d5423a3 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java @@ -200,10 +200,7 @@ // 根据订单类型创建不同的处理任务 rabiitMqTemplate.sendTopicMsg(RabbitMqConfig.MQ_EXCHANGE_TOPIC +evn, MQTaskRouting.CREATE_ORDER+evn, orderId); - //扣除积分 - if(order.getScorePay()!=null){ - scoreVipDetailService.deductionScore(order.getUserId(),null,Long.parseLong(order.getStoreId()+""),order.getScorePay(),Long.parseLong(order.getId()+""), ScoreVipDetail.SCORE_VIP_TYPE_CASH); - } + threadResult.putInMap("status", "success"); resXml = AppConstance.RESULT_XML_SUCCESS; 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 2b548ed..8bd67c4 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 @@ -9,6 +9,7 @@ String CREATE_ORDER = "CREATE_ORDER"; String SALES_ORDER = "SALES_ORDER"; + String SCORE_ORDER = "SCORE_ORDER"; /** * 发送微信消息 */ 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 index 2b56f6b..3077d78 100644 --- 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 @@ -5,6 +5,10 @@ import com.matrix.core.tools.LogUtil; import com.matrix.system.fenxiao.dao.ShopSalesmanOrderDao; import com.matrix.system.fenxiao.entity.ShopSalesmanOrder; +import com.matrix.system.score.entity.ScoreVipDetail; +import com.matrix.system.score.service.ScoreVipDetailService; +import com.matrix.system.shopXcx.bean.ShopOrder; +import com.matrix.system.shopXcx.dao.ShopOrderDao; import com.rabbitmq.client.DeliverCallback; import com.rabbitmq.client.Delivery; import org.springframework.beans.factory.annotation.Autowired; @@ -22,6 +26,12 @@ @Autowired private ShopSalesmanOrderDao shopSalesmanOrderDao; + @Autowired + private ShopOrderDao shopOrderDao; + + @Autowired + private ScoreVipDetailService scoreVipDetailService; + @Override @@ -38,6 +48,14 @@ }else{ LogUtil.debug("改订单为生成分销订单={}", orderId); } + ShopOrder order=shopOrderDao.selectById(Integer.parseInt(orderId)); + + if(order.getScorePay()!=null && order.getScorePay()>0){ + LogUtil.debug("处理积分退款={}", orderId); + scoreVipDetailService.refundScore(order.getUserId(),null,order.getScorePay(),Long.parseLong(order.getId()+""), ScoreVipDetail.SCORE_VIP_TYPE_CASH); + } + + } } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/ScoreOrderTask.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/ScoreOrderTask.java new file mode 100644 index 0000000..439b741 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/ScoreOrderTask.java @@ -0,0 +1,77 @@ +package com.matrix.system.shopXcx.mqTask; + + +import com.matrix.biz.service.BizUserService; +import com.matrix.core.tools.LogUtil; +import com.matrix.system.score.entity.ScoreVipDetail; +import com.matrix.system.score.service.ScoreVipDetailService; +import com.matrix.system.shopXcx.bean.ShopOrder; +import com.matrix.system.shopXcx.bean.ShopOrderDetails; +import com.matrix.system.shopXcx.dao.ShopOrderDao; +import com.matrix.system.shopXcx.dao.ShopOrderDetailsDao; +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; +import java.util.List; + +/** + * 订单创建积分事件处理 + */ +@Component +public class ScoreOrderTask implements DeliverCallback { + + + @Autowired + ShopOrderDao shopOrderDao; + @Autowired + ShopOrderDetailsDao shopOrderDetailsDao; + + @Autowired + BizUserService bizUserService; + + @Autowired + ScoreVipDetailService scoreVipDetailService; + + + + @Override + public void handle(String consumerTag, Delivery message) throws IOException { + + String orderId = new String(message.getBody(), "UTF-8"); + LogUtil.debug("收到订单积分任务orderId={}", orderId); + //获取订单信息 + ShopOrder order = shopOrderDao.selectById(Integer.valueOf(orderId)); + //获取订单详情 + List<ShopOrderDetails> orderDetails = shopOrderDetailsDao.selectByOrderId(Integer.valueOf(orderId)); + order.setDetails(orderDetails); + //扣除积分 + if(order.getScorePay()!=null){ + scoreVipDetailService.deductionScore(order.getUserId(),null,Long.parseLong(order.getStoreId()+""),order.getScorePay(),Long.parseLong(order.getId()+""), ScoreVipDetail.SCORE_VIP_TYPE_CASH); + } + //消费获得积分 + orderDetails.forEach(shopOrderDetail -> { + int addScore=0; + if(shopOrderDetail.getPayType()==ShopOrderDetails.PAYTYPE_MICRO){ + Integer xfkdScore= shopOrderDetail.getShopSku().getScore(); + if(xfkdScore!=null && xfkdScore>0){ + addScore+=xfkdScore; + } + } + if(addScore>0){ + //插入新的积分 + scoreVipDetailService.addScore( + order.getUserId(),null, + null, + Long.parseLong(order.getStoreId()+""), + addScore, + Long.parseLong(orderId+""), + ScoreVipDetail.SCORE_VIP_TYPE_CASH); + } + }); + + } + +} diff --git a/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html b/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html index 8c49a16..fe12dac 100644 --- a/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html +++ b/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html @@ -825,6 +825,11 @@ /*验证sku表格中的参数*/ function getSkusValues() { + + var ableScorePay=$("#ableScorePay").val(); + var ableSales=$("#ableSales").val(); + + var flag = false; var reg = new RegExp("(^[1-9]([0-9]+)?(\\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\\.[0-9]([0-9])?$)"); $("#skutable tbody").find("tr").each(function(i) { @@ -832,6 +837,37 @@ if (i != 0) { var tds = $(this).find("td"); var length = tds.length - 1; + + if(ableSales==1){ + //推广提成 + var sealesPrice = tds.eq(length - 4).find("input").val(); + //邀请提成 + var invitationPrice = tds.eq(length - 3).find("input").val(); + if(sealesPrice == ""||invitationPrice==""){ + layer.msg("请填写推广提成和邀请提成",{ + icon : 2, + time : 2000 + }); + flag = true; + return false; + } + } + + if(ableScorePay==1){ + //兑换所需金额 + var scorePrice = tds.eq(length - 2).find("input").val(); + //兑换所需积分 + var scoreCount = tds.eq(length - 1).find("input").val(); + if(scorePrice == ""||scoreCount==""){ + layer.msg("请填写兑换所需金额和积分",{ + icon : 2, + time : 2000 + }); + flag = true; + return false; + } + } + var name = tds.eq(length - 11).find("input").val(); if(name == ""){ layer.msg("请填写规格名称",{ -- Gitblit v1.9.1