From 23f5815a2327bde2a5259be3e83909c1aee94105 Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Wed, 19 May 2021 21:04:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/score_shop' into score_shop
---
zq-erp/src/test/java/com/matrix/JyyTests2.java | 241 ++++++++++++++++++++++++++++++++++++++++
zq-erp/src/test/java/com/matrix/JyyTests.java | 41 ++++++
zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml | 7
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java | 6
zq-erp/pom.xml | 4
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesProductAction.java | 32 +++++
zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java | 2
7 files changed, 316 insertions(+), 17 deletions(-)
diff --git a/zq-erp/pom.xml b/zq-erp/pom.xml
index 016a56c..ed1dc1f 100644
--- a/zq-erp/pom.xml
+++ b/zq-erp/pom.xml
@@ -401,11 +401,11 @@
<exclude>config/xcx/*</exclude>
<exclude>config/xcshop/*</exclude>
- <!--
+ <!---->
<exclude>config/config.json</exclude>
<exclude>config/application.properties</exclude>
<exclude>config/system.properties</exclude>
- -->
+
<exclude>**/*.woff</exclude>
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java
index 1295c04..747dc87 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysVipInfoDao.java
@@ -212,4 +212,6 @@
public SysVipInfo findByOpenId(String openId);
int unbundlingSaleMan(Long userId);
+
+ int bindingRecommend(@Param("recommendId") Long recommendId,@Param("userId") Long userId);
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesProductAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesProductAction.java
index 611820b..faf6fc3 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesProductAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesProductAction.java
@@ -1,10 +1,15 @@
package com.matrix.system.shopXcx.api.action;
+import com.matrix.component.redis.RedisUserLoginUtils;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.interceptor.HostInterceptor;
+import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao;
+import com.matrix.system.fenxiao.entity.ShopSalesmanGrade;
+import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.shopXcx.api.dto.SaleProductDto;
import com.matrix.system.shopXcx.bean.ShopProduct;
+import com.matrix.system.shopXcx.bean.ShopSku;
import com.matrix.system.shopXcx.dao.ShopProductAttributeDao;
import com.matrix.system.shopXcx.dao.ShopProductDao;
import com.matrix.system.shopXcx.dao.ShopSkuDao;
@@ -19,7 +24,9 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import java.math.BigDecimal;
import java.util.List;
+import java.util.Objects;
/**
* @author jyy
@@ -35,9 +42,12 @@
@Autowired
private ShopProductAttributeDao shopProductAttributeDao;
-
+ @Autowired
+ private ShopSalesmanGradeDao shopSalesmanGradeDao;
@Autowired
private ShopSkuDao shopSkuDao;
+ @Autowired
+ private RedisUserLoginUtils redisUserLoginUtils;
@ApiOperation(value = "查询推广商品", notes = "")
@PostMapping(value = "/getSalesProductList")
@@ -54,7 +64,25 @@
shopProduct.setAbleSales(ShopProduct.ABLE_SALES);
shopProduct.setCompanyId(HostInterceptor.getCompanyId());
List<ShopProduct> shopProducts = shopProductDao.selectByModelWx(shopProduct);
- shopProducts.forEach(item->item.setSkus(shopSkuDao.selectByPid(item.getId())));
+ SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
+ ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(sysVipInfo.getSalesmanGrade());
+ shopProducts.forEach(item->{
+ List<ShopSku> shopSkus = shopSkuDao.selectByPid(item.getId());
+ //计算产品佣金
+ shopSkus.forEach(shopSku -> {
+ if(Objects.isNull(shopSku.getInvitationPrice())){
+ shopSku.setInvitationPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getInvitationCommission())).divide(BigDecimal.valueOf(100)));
+ }
+ if(Objects.isNull(shopSku.getSealesPrice())){
+ shopSku.setSealesPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSealesCommission())).divide(BigDecimal.valueOf(100)));
+ }
+ if(Objects.isNull(shopSku.getSelfPrice())){
+ shopSku.setSelfPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSelfCommission())).divide(BigDecimal.valueOf(100)));
+ }
+ });
+ item.setSkus(shopSkus);
+
+ });
AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, shopProducts);
return result;
}
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java
index 7e39d58..ee96c85 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java
@@ -168,11 +168,7 @@
return AjaxResult.buildSuccessInstance("已经被绑定");
} else {
if (loginUser.getRecommendId()==null) {
- Map<String, Object> updateParam = new HashMap<>();
- updateParam.put("id", loginUser.getId());
- loginUser.setRecommendId(invitationUser.getId());
- loginUser.setBindingParentTime(new Date());
- sysVipInfoDao.update(loginUser);
+ sysVipInfoDao.bindingRecommend(invitationUser.getId(),loginUser.getId());
return AjaxResult.buildSuccessInstance("绑定成功");
} else {
return AjaxResult.buildSuccessInstance("已经存在上级");
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml
index 9724622..68afb0d 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysVipInfoDao.xml
@@ -499,9 +499,7 @@
<if test="isDeal != null ">
is_deal = #{isDeal},
</if>
- <if test="recommendId != null ">
- recommend_id = #{recommendId},
- </if>
+
<if test="province != null and province !='' ">
province = #{province},
</if>
@@ -552,6 +550,9 @@
<update id="unbundlingSaleMan">
UPDATE sys_vip_info set recommend_id = NULL where id=#{userId};
</update>
+ <update id="bindingRecommend">
+ UPDATE sys_vip_info set recommend_id = #{recommendId} where id=#{userId};
+ </update>
<!-- 批量删除 -->
<delete id="deleteByIds" parameterType="java.util.List">
diff --git a/zq-erp/src/test/java/com/matrix/JyyTests.java b/zq-erp/src/test/java/com/matrix/JyyTests.java
index 9297740..b955d11 100644
--- a/zq-erp/src/test/java/com/matrix/JyyTests.java
+++ b/zq-erp/src/test/java/com/matrix/JyyTests.java
@@ -1,27 +1,53 @@
package com.matrix;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.matrix.component.redis.RedisClient;
+import com.matrix.core.constance.MatrixConstance;
+import com.matrix.core.tools.LogUtil;
+import com.matrix.system.common.bean.BusParameterSettings;
import com.matrix.system.common.bean.SysFunction;
+import com.matrix.system.common.dao.BusParameterSettingsDao;
+import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant;
+import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao;
+import com.matrix.system.fenxiao.dao.ShopSalesmanOrderDao;
+import com.matrix.system.fenxiao.entity.ShopSalesmanGrade;
+import com.matrix.system.fenxiao.entity.ShopSalesmanOrder;
+import com.matrix.system.hive.bean.SysVipInfo;
+import com.matrix.system.hive.dao.SysOrderDao;
+import com.matrix.system.hive.dao.SysOrderItemDao;
+import com.matrix.system.hive.dao.SysVipInfoDao;
+import com.matrix.system.hive.service.CodeService;
+import com.matrix.system.hive.service.ShoppingGoodsService;
+import com.matrix.system.hive.service.SysOrderService;
+import com.matrix.system.hive.service.SysVipInfoService;
import com.matrix.system.hive.service.imp.SysVipInfoServiceImpl;
import com.matrix.system.score.dao.ScoreVipDetailDao;
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.bean.ShopProduct;
+import com.matrix.system.shopXcx.dao.ShopOrderDao;
+import com.matrix.system.shopXcx.dao.ShopOrderDetailsDao;
import com.matrix.system.shopXcx.dao.ShopOrderV2Dao;
+import com.matrix.system.shopXcx.dao.ShopSkuDao;
import com.matrix.system.shopXcx.mqTask.OrderDingDingNoticeTask;
import com.rabbitmq.client.Delivery;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* 测试类示例
@@ -56,8 +82,13 @@
OrderDingDingNoticeTask orderDingDingNoticeTask;
@Test
+ @Rollback
public void testNoticeTask() throws IOException {
- orderDingDingNoticeTask.handle("",new Delivery(null,null,"1295".getBytes()));
+ // orderDingDingNoticeTask.handle("",new Delivery(null,null,"1295".getBytes()));
+
+
+
+
}
diff --git a/zq-erp/src/test/java/com/matrix/JyyTests2.java b/zq-erp/src/test/java/com/matrix/JyyTests2.java
new file mode 100644
index 0000000..0304fff
--- /dev/null
+++ b/zq-erp/src/test/java/com/matrix/JyyTests2.java
@@ -0,0 +1,241 @@
+package com.matrix;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.matrix.component.redis.RedisClient;
+import com.matrix.core.constance.MatrixConstance;
+import com.matrix.core.tools.LogUtil;
+import com.matrix.system.common.bean.BusParameterSettings;
+import com.matrix.system.common.bean.SysFunction;
+import com.matrix.system.common.dao.BusParameterSettingsDao;
+import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant;
+import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao;
+import com.matrix.system.fenxiao.dao.ShopSalesmanOrderDao;
+import com.matrix.system.fenxiao.entity.ShopSalesmanGrade;
+import com.matrix.system.fenxiao.entity.ShopSalesmanOrder;
+import com.matrix.system.hive.bean.SysVipInfo;
+import com.matrix.system.hive.dao.SysOrderDao;
+import com.matrix.system.hive.dao.SysOrderItemDao;
+import com.matrix.system.hive.dao.SysVipInfoDao;
+import com.matrix.system.hive.service.CodeService;
+import com.matrix.system.hive.service.ShoppingGoodsService;
+import com.matrix.system.hive.service.SysOrderService;
+import com.matrix.system.hive.service.SysVipInfoService;
+import com.matrix.system.hive.service.imp.SysVipInfoServiceImpl;
+import com.matrix.system.score.dao.ScoreVipDetailDao;
+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.bean.ShopProduct;
+import com.matrix.system.shopXcx.dao.ShopOrderDao;
+import com.matrix.system.shopXcx.dao.ShopOrderDetailsDao;
+import com.matrix.system.shopXcx.dao.ShopOrderV2Dao;
+import com.matrix.system.shopXcx.dao.ShopSkuDao;
+import com.matrix.system.shopXcx.mqTask.OrderDingDingNoticeTask;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.Rollback;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * 测试类示例
+ *
+ * @author jiangyouyao
+ * @email 512061637@qq.com
+ * @date 2019年2月25日
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = {ZqErpApplication.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+public class JyyTests2 {
+
+ @Autowired
+ ShopOrderDao shopOrderDao;
+ @Autowired
+ ShopOrderDetailsDao shopOrderDetailsDao;
+
+ @Autowired
+ SysVipInfoService sysVipInfoService;
+
+
+ @Autowired
+ private SysVipInfoDao vipDap;
+
+ @Autowired
+ SysVipInfoDao vipDao;
+
+ @Autowired
+ CodeService codeService;
+
+ @Autowired
+ SysOrderDao sysOrderDao;
+
+ @Autowired
+ ShoppingGoodsService shoppingGoodsService;
+
+ @Autowired
+ SysOrderItemDao orderItemDao;
+
+ @Autowired
+ SysOrderService orderService;
+
+ @Autowired
+ ShopSkuDao shopSkuDao;
+
+ @Autowired
+ BusParameterSettingsDao parameterSettingsDao;
+
+
+ @Autowired
+ private ShopSalesmanOrderDao shopSalesmanOrderDao;
+
+ @Autowired
+ private ShopSalesmanGradeDao shopSalesmanGradeDao;
+
+
+ @Test
+ @Rollback
+ public void testNoticeTask() throws IOException {
+ // orderDingDingNoticeTask.handle("",new Delivery(null,null,"1295".getBytes()));
+
+ ShopOrder order=shopOrderDao.selectById(1353);
+ //判读客户是否存在上级,存在则产生上级的收益
+ SysVipInfo sysVipInfo = sysVipInfoService.findById(order.getUserId());
+ LogUtil.debug("处理分销订单userOpid={}",sysVipInfo.getOpenId());
+ //判断是否重复生成
+ QueryWrapper queryWrapper=new QueryWrapper();
+ queryWrapper.eq("order_id",order.getId());
+ Integer orderCount = shopSalesmanOrderDao.selectCount(queryWrapper);
+ 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.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_SALES);
+ salesmanOrder.setOrderStatus(ShopSalesmanOrder.STATUS_DJS);
+ Double selfAmount=0D;
+ Double zk=1D;
+ //分销订单总额
+ Double orderTotal=0D;
+ for (ShopOrderDetails item:order.getDetails() ){
+ if(item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){
+ orderTotal+=item.getTotalPrice().doubleValue();
+ }
+ }
+ //自购返佣
+ Integer isSales = sysVipInfo.getIsSales();
+ if(SysVipInfo.IS_SALES == isSales){
+ for (ShopOrderDetails item:order.getDetails() ){
+ if(item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){
+ //分销规则是否开启自购返佣
+ BusParameterSettings zgfy = parameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_ZGFY, sysVipInfo.getCompanyId());
+ //按分销等级计算
+ ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(sysVipInfo.getSalesmanGrade());
+ if(ObjectUtil.isNotEmpty(zgfy)) {
+ //获取商品的自购返佣价格,如果没有设置,在去获取当前推广人的等级的自购返佣比例
+ if(StrUtil.isNotEmpty(zgfy.getParamValue()) &&
+ FenxiaoSettingConstant.FX_ZGFY_YES.equals(zgfy.getParamValue())) {
+ if(item.getShopSku().getSelfPrice() == null
+ ||item.getShopSku().getSealesPrice().doubleValue() == 0){
+ selfAmount+=item.getTotalPrice().doubleValue()*(shopSalesmanGrade.getSelfCommission()/100);
+ }else {
+ //按产品设置的自购返佣金额计算
+ selfAmount+=item.getShopSku().getSelfPrice().doubleValue()*item.getCount();
+ }
+ }
+ }
+ }
+ }
+ //自购返佣记录
+ if(selfAmount > 0) {
+ //整体的优惠金额折算成折扣,* 佣金
+ zk=(order.getOrderMoney().doubleValue()-order.getPostage().doubleValue())/orderTotal;
+ selfAmount=selfAmount*zk;
+ salesmanOrder.setAmount(selfAmount);
+ salesmanOrder.setSalesUserId(order.getUserId());
+ shopSalesmanOrderDao.insert(salesmanOrder);
+ }
+ }
+
+ //存在上级
+ if(sysVipInfo.getRecommendId()!=null) {
+ SysVipInfo salesMan=sysVipInfoService.findById(sysVipInfo.getRecommendId());
+ Double salesAmount=0D;
+ Double invitationAmount=0D;
+ SysVipInfo invitationMan=null;
+ ShopSalesmanOrder invitationOrder=null;
+ boolean hasInvitationMan=salesMan.getRecommendId()!=null;
+ //判断推广员是否还存在上级,存在则计算邀请收益
+ if(hasInvitationMan){
+ invitationMan=sysVipInfoService.findById(salesMan.getRecommendId());
+ invitationOrder=new ShopSalesmanOrder();
+ BeanUtils.copyProperties(salesmanOrder,invitationOrder);
+ invitationOrder.setSalesUserId(invitationMan.getId());
+ invitationOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_INVITATION);
+ }
+ //收益计算
+ for (ShopOrderDetails item:order.getDetails() ){
+ if(item.getShopProduct().getAbleSales()== ShopProduct.ABLE_SALES){
+ //按分销等级计算
+ ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(salesMan.getSalesmanGrade());
+ //推广提成,按分销等级计算或者按产品设置的推广金额计算
+ if(item.getShopSku().getSealesPrice()==null
+ ||item.getShopSku().getSealesPrice().doubleValue()==0){
+ salesAmount+=item.getTotalPrice().doubleValue()*(shopSalesmanGrade.getSealesCommission()/100);
+ }else{
+ salesAmount+=item.getShopSku().getSealesPrice().doubleValue()*item.getCount();
+ }
+ //邀请提成,获取商品的邀请提成价格和是否有上级推广人,如果没有设置,在去获取当前推广人的等级的自购返佣比例
+ if(hasInvitationMan) {
+ if(item.getShopSku().getInvitationPrice() == null
+ ||item.getShopSku().getInvitationPrice().doubleValue() == 0){
+ //获取上级的推广等级设置
+ ShopSalesmanGrade invitationManGrade = shopSalesmanGradeDao.selectById(invitationMan.getSalesmanGrade());
+ invitationAmount+=item.getTotalPrice().doubleValue()*(invitationManGrade.getInvitationCommission()/100);
+ }else {
+ //按产品设置的邀请提成价格计算
+ invitationAmount+=item.getShopSku().getInvitationPrice().doubleValue()*item.getCount();
+ }
+ }
+ }
+ }
+ //推广提成记录
+ if(salesAmount>0){
+ //整体的优惠金额折算成折扣,* 佣金
+ zk=(order.getOrderMoney().doubleValue()-order.getPostage().doubleValue())/orderTotal;
+ salesAmount=salesAmount*zk;
+ salesmanOrder.setAmount(salesAmount);
+ salesmanOrder.setSalesUserId(sysVipInfo.getRecommendId());
+ shopSalesmanOrderDao.insert(salesmanOrder);
+ }
+ //邀请提成记录
+ if(invitationAmount > 0) {
+ //整体的优惠金额折算成折扣,* 佣金
+ invitationAmount=invitationAmount*zk;
+ invitationOrder.setAmount(invitationAmount);
+ shopSalesmanOrderDao.insert(invitationOrder);
+ }
+ }else{
+ LogUtil.debug("不存在父级userOpid={}",sysVipInfo.getOpenId());
+ }
+
+
+
+
+ }
+
+
+
+}
--
Gitblit v1.9.1