From fd563c2a20613325efcc37cbc8aa754eeeba5e45 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 29 Mar 2021 14:19:03 +0800
Subject: [PATCH] Merge branch 'score_shop' of http://120.27.238.55:7000/r/beauty-erp into score_shop
---
zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-setting.html | 33 +++
zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanGrade.java | 7
zq-erp/src/main/resources/templates/views/admin/shop/shopAdvertisType-list.html | 2
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopSkuDao.xml | 12 +
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java | 4
zq-erp/src/main/resources/config/db/increment/推广员.sql | 12 +
zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoSettingAction.java | 6
zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderTask.java | 178 ++++++++++------
zq-erp/src/main/java/com/matrix/system/common/service/impl/InitBusParameterSettingService.java | 3
zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopSku.java | 13 +
zq-erp/src/main/java/com/matrix/system/fenxiao/constant/FenxiaoSettingConstant.java | 7
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UpdateFyfaDto.java | 3
zq-erp/src/main/java/com/matrix/system/fenxiao/vo/FyfaManageVo.java | 3
zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanGradeDao.xml | 1
zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html | 9
zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java | 16 +
zq-erp/src/main/java/com/matrix/biz/service/impl/BizUserServiceImpl.java | 4
zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopAdvertisDao.xml | 20 +
zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopAdvertis.java | 13 +
zq-erp/src/test/java/com/matrix/SalesOrderTaskTest.java | 247 ++++++++++++++++++++++
zq-erp/src/main/java/com/matrix/biz/service/BizUserService.java | 2
zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml | 4
zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html | 48 +--
23 files changed, 542 insertions(+), 105 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/biz/service/BizUserService.java b/zq-erp/src/main/java/com/matrix/biz/service/BizUserService.java
index 7aa2b0f..be36239 100644
--- a/zq-erp/src/main/java/com/matrix/biz/service/BizUserService.java
+++ b/zq-erp/src/main/java/com/matrix/biz/service/BizUserService.java
@@ -78,5 +78,5 @@
* 设置为推广员
* @param invitationId
*/
- public int setToBeAnSalesman(String openId,String invitationId);
+ public int setToBeAnSalesman(String openId,String invitationId,long gradeId);
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/biz/service/impl/BizUserServiceImpl.java b/zq-erp/src/main/java/com/matrix/biz/service/impl/BizUserServiceImpl.java
index f2d62d6..7e24950 100644
--- a/zq-erp/src/main/java/com/matrix/biz/service/impl/BizUserServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/biz/service/impl/BizUserServiceImpl.java
@@ -8,7 +8,6 @@
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.core.tools.ModelUtils;
-import com.matrix.core.tools.UUIDUtil;
import com.matrix.system.common.constance.AppConstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -158,11 +157,12 @@
* @param invitationId
*/
@Override
- public int setToBeAnSalesman(String openId,String invitationId) {
+ public int setToBeAnSalesman(String openId,String invitationId,long gradeId) {
BizUser bizUser=bizUserDao.findByOpenId(openId);
bizUser.setIsSales(BizUser.IS_SALES);
bizUser.setParentOpenId(invitationId);
bizUser.setBindingParentTime(new Date());
+ bizUser.setSalesmanGrade(gradeId);
return bizUserDao.updateByModel(bizUser);
}
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/common/service/impl/InitBusParameterSettingService.java b/zq-erp/src/main/java/com/matrix/system/common/service/impl/InitBusParameterSettingService.java
index 2e93055..0c35449 100644
--- a/zq-erp/src/main/java/com/matrix/system/common/service/impl/InitBusParameterSettingService.java
+++ b/zq-erp/src/main/java/com/matrix/system/common/service/impl/InitBusParameterSettingService.java
@@ -43,7 +43,7 @@
}
/**
- * 初始化默认积分规则设置
+ * 初始化默认分销规则设置
*/
public void initBusParameterFenxiaoSetting(SysCompany sysCompany) {
long companyId = sysCompany.getComId();
@@ -55,6 +55,7 @@
ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_APPLY_CONDITION, companyId));
ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_TG_PLAN, companyId));
ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_TG_POSTER, companyId));
+ ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_ZGFY, companyId));
busParameterSettingsDao.batchInsert(ruleSettings);
}
diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoSettingAction.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoSettingAction.java
index 2795142..1252651 100644
--- a/zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoSettingAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoSettingAction.java
@@ -60,6 +60,12 @@
String[] FXKGName={"分销开关"};
List<FenXiaoSettingVo> fxkgRuleSettingsVo = getRuleSettingsVo(FXKGCode,FXKGName,companyId);
result.putInMap("fxkg", fxkgRuleSettingsVo);
+ //自购返佣
+ String[] ZGFYCode={FenxiaoSettingConstant.FX_ZGFY};
+ String[] ZGFYName={"自购返佣"};
+ List<FenXiaoSettingVo> zgfyRuleSettingsVo = getRuleSettingsVo(ZGFYCode,ZGFYName,companyId);
+ result.putInMap("zgfy", zgfyRuleSettingsVo);
+
//分销模式
String[] FXMSCode={FenxiaoSettingConstant.FX_MODEL};
String[] FXMSName={"分销模式"};
diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/constant/FenxiaoSettingConstant.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/constant/FenxiaoSettingConstant.java
index de2bc10..3153b35 100644
--- a/zq-erp/src/main/java/com/matrix/system/fenxiao/constant/FenxiaoSettingConstant.java
+++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/constant/FenxiaoSettingConstant.java
@@ -10,6 +10,13 @@
*/
public final static String FX_MODEL = "FX_MODEL";
/**
+ * 自购返佣 1:是 2:否
+ */
+ public final static String FX_ZGFY = "FX_ZGFY";
+
+ public final static String FX_ZGFY_YES = "1";
+ public final static String FX_ZGFY_NO = "2";
+ /**
* 申请方式
*/
public final static String FX_APPLY_WAY = "FX_APPLY_WAY";
diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UpdateFyfaDto.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UpdateFyfaDto.java
index ea89977..31dcf80 100644
--- a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UpdateFyfaDto.java
+++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UpdateFyfaDto.java
@@ -14,6 +14,9 @@
@ApiModelProperty(value = "方案名称")
private String name;
+ @ApiModelProperty(value = "自购返佣%")
+ private Double selfCommission;
+
@ApiModelProperty(value = "推广提成%")
private Double sealesCommission;
diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanGrade.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanGrade.java
index a29b2c3..999b02c 100644
--- a/zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanGrade.java
+++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanGrade.java
@@ -33,6 +33,13 @@
private Double sealesCommission;
+
+ /**
+ * 自购返佣比例%
+ */
+
+ private Double selfCommission;
+
/**
* 邀请提成 %
diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java
index 37e9b50..cd840dc 100644
--- a/zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java
+++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java
@@ -54,7 +54,7 @@
ShopSalesmanGradeDao shopSalesmanGradeDao;
@Autowired
- private BizUserDao bizUserDao;
+ BizUserDao bizUserDao;
@Autowired
BizUserService bizUserService;
@@ -116,8 +116,13 @@
if(busParameterSettings!=null
&&busParameterSettings.getParamValue().equals("1")){
//自动审核
+ //初始等级ID(公司id,是否为初始等级)
+ QueryWrapper<ShopSalesmanGrade> queryWrapperOrepool = new QueryWrapper<>();
+ queryWrapperOrepool.eq("company_id", loginUser.getCompanyId());
+ queryWrapperOrepool.eq("is_default", 1);
+ ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectOne(queryWrapperOrepool);
shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_TG);
- bizUserService.setToBeAnSalesman(loginUser.getOpenId(),invitationId);
+ bizUserService.setToBeAnSalesman(loginUser.getOpenId(),invitationId,shopSalesmanGrade.getId());
}else{
shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_DSH);
@@ -225,6 +230,7 @@
//修改USER的状态
bizUser.setParentOpenId(parentUserId);
bizUser.setBindingParentTime(new Date());
+ bizUser.setSalesmanGrade(shopSalesmanApply.getGradeId());
bizUserDao.updateByModel(bizUser);
}
@@ -371,6 +377,10 @@
if(StrUtil.isEmpty(name)) {
return AjaxResult.buildFailInstance("请输入方案名称");
}
+ Double selfCommission = updateFyfaDto.getSelfCommission();
+ if(ObjectUtil.isEmpty(selfCommission)) {
+ return AjaxResult.buildFailInstance("请输入正确的自购返佣");
+ }
Double sealesCommission = updateFyfaDto.getSealesCommission();
if(ObjectUtil.isEmpty(sealesCommission)) {
return AjaxResult.buildFailInstance("请输入正确的推广提成");
@@ -384,6 +394,7 @@
ShopSalesmanGrade shopSalesmanGrade = new ShopSalesmanGrade();
shopSalesmanGrade.setCompanyId(updateFyfaDto.getCompanyId());
shopSalesmanGrade.setName(updateFyfaDto.getName());
+ shopSalesmanGrade.setSelfCommission(selfCommission);
shopSalesmanGrade.setSealesCommission(sealesCommission);
shopSalesmanGrade.setInvitationCommission(invitationCommission);
shopSalesmanGrade.setGradeCondition(updateFyfaDto.getGradeCondition());
@@ -398,6 +409,7 @@
}
selectById.setCompanyId(updateFyfaDto.getCompanyId());
selectById.setName(updateFyfaDto.getName());
+ selectById.setSelfCommission(selfCommission);
selectById.setSealesCommission(sealesCommission);
selectById.setInvitationCommission(invitationCommission);
selectById.setGradeCondition(updateFyfaDto.getGradeCondition());
diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/FyfaManageVo.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/FyfaManageVo.java
index 97dc22d..6ce68e6 100644
--- a/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/FyfaManageVo.java
+++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/FyfaManageVo.java
@@ -14,6 +14,9 @@
@ApiModelProperty(value = "方案名称")
private String name;
+ @ApiModelProperty(value = "自购返佣%")
+ private Double selfCommission;
+
@ApiModelProperty(value = "推广提成%")
private Double sealesCommission;
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 7e81a21..4f0b0d9 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,6 +168,8 @@
loginUser = bizUserDao.selectById(loginUser.getUserId());
if(loginUser.getIsSales()==1){
return AjaxResult.buildSuccessInstance("只有非分销员才能被绑定成客户");
+ }if (StringUtils.isNotBlank(loginUser.getParentOpenId())){
+ return AjaxResult.buildSuccessInstance("已经被绑定");
}else{
if (StringUtils.isBlank(loginUser.getParentOpenId())) {
Map<String, Object> updateParam = new HashMap<>();
@@ -203,7 +205,7 @@
String urlPath = baseSaveUrl + "/" + "wxacode" + "/" + targetImg;
- String qrcodeSavePath = WxacodeUtil.getWxacode(loginUser.getOpenId() + "", "pages/distributorCenter/applyFor/applyFor", MD5Util.strToMD5(loginUser.getOpenId())+"qrcode"
+ String qrcodeSavePath = WxacodeUtil.getWxacode(loginUser.getUserId() + "", "pages/distributorCenter/applyFor/applyFor", MD5Util.strToMD5(loginUser.getOpenId())+"qrcode"
,weChatApiTools.getAppid(loginUser.getCompanyId()),weChatApiTools.getSecret(loginUser.getCompanyId()));
BufferedImage qrcordImgBuf = ImageIO.read(new File(qrcodeSavePath));
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopAdvertis.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopAdvertis.java
index 7e42075..daec16c 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopAdvertis.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopAdvertis.java
@@ -63,12 +63,25 @@
*/
private String linkUrl;
+ /**连接的页面id */
+ private Long pageId;
+
/**
* 所属分类
*/
@Extend
private String adtName;
+
private Long companyId;
+
+ public Long getPageId() {
+ return pageId;
+ }
+
+ public void setPageId(Long pageId) {
+ this.pageId = pageId;
+ }
+
public Long getCompanyId() {
return companyId;
}
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopSku.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopSku.java
index e33cd09..5597740 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopSku.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopSku.java
@@ -49,6 +49,11 @@
* 价格
*/
private BigDecimal price;
+
+ /**
+ *自购提成
+ */
+ private BigDecimal selfPrice;
/**
*推广提成
*/
@@ -282,4 +287,12 @@
return id.equals(((ShopSku) obj).getId());
}
+ public BigDecimal getSelfPrice() {
+ return selfPrice;
+ }
+
+ public void setSelfPrice(BigDecimal selfPrice) {
+ this.selfPrice = selfPrice;
+ }
+
}
\ No newline at end of file
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 86c6c9a..43ec960 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,17 @@
package com.matrix.system.shopXcx.mqTask;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
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.bean.BusParameterSettings;
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;
@@ -20,6 +24,7 @@
import com.matrix.system.hive.service.SysOrderService;
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.ShopSkuDao;
@@ -109,88 +114,129 @@
void handleExtensionOrder(ShopOrder order) {
//判读客户是否存在上级,存在则产生上级的收益
BizUser bizUser = bizUserService.findByOpenId(order.getUserId());
- if(StringUtils.isNotBlank(bizUser.getParentOpenId())){//存在上级
-
- LogUtil.debug("处理分销订单userOpid={}",bizUser.getOpenId());
- //判断是否重复生成
- 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());
-
- //判断推广员是否还存在上级,存在则计算邀请收益
- if(hasInvitationMan){
- invitationMan=bizUserService.findByOpenId(salesMan.getParentOpenId());
- invitationOrder=new ShopSalesmanOrder();
- BeanUtils.copyProperties(salesmanOrder,invitationOrder);
- invitationOrder.setSalesUserId(invitationMan.getOpenId());
- invitationOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_INVITATION);
+ LogUtil.debug("处理分销订单userOpid={}",bizUser.getOpenId());
+ //判断是否重复生成
+ 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.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 = bizUser.getIsSales();
+ if(BizUser.IS_SALES == isSales){
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();
+ if(item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){
+ //分销规则是否开启自购返佣
+ BusParameterSettings zgfy = parameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_ZGFY, bizUser.getCompanyId());
+ //按分销等级计算
+ ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(bizUser.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();
+ }
}
}
- orderTotal+=item.getTotalPrice().doubleValue();
}
}
+ //自购返佣记录
+ if(selfAmount > 0) {
+ //整体的优惠金额折算成折扣,* 佣金
+ zk=order.getOrderMoney().doubleValue()/orderTotal;
+ selfAmount=selfAmount*zk;
+ salesmanOrder.setAmount(selfAmount);
+ salesmanOrder.setSalesUserId(order.getUserId());
+ shopSalesmanOrderDao.insert(salesmanOrder);
+ }
+ }
+
+ //存在上级
+ if(StringUtils.isNotBlank(bizUser.getParentOpenId())) {
+ BizUser salesMan=bizUserService.findByOpenId(bizUser.getParentOpenId());
+ Double salesAmount=0D;
+ Double invitationAmount=0D;
+ 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(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()/orderTotal;
salesAmount=salesAmount*zk;
salesmanOrder.setAmount(salesAmount);
+ salesmanOrder.setSalesUserId(bizUser.getParentOpenId());
shopSalesmanOrderDao.insert(salesmanOrder);
- if(hasInvitationMan){
- invitationAmount=invitationAmount*zk;
- invitationOrder.setAmount(invitationAmount);
- shopSalesmanOrderDao.insert(invitationOrder);
- }
}
+ //邀请提成记录
+ if(invitationAmount > 0) {
+ //整体的优惠金额折算成折扣,* 佣金
+ invitationAmount=invitationAmount*zk;
+ invitationOrder.setAmount(invitationAmount);
+ shopSalesmanOrderDao.insert(invitationOrder);
+ }
}else{
- LogUtil.debug("重复订单id={}",order.getId());
+ LogUtil.debug("不存在父级userOpid={}",bizUser.getOpenId());
}
}else{
- LogUtil.debug("不存在父级userOpid={}",bizUser.getOpenId());
+ LogUtil.debug("重复订单id={}",order.getId());
}
-
-
}
}
diff --git "a/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql" "b/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql"
index 54180a7..f725cae 100644
--- "a/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql"
+++ "b/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql"
@@ -209,3 +209,15 @@
ALTER TABLE `shop_order`
DROP COLUMN `score_pay`,
ADD COLUMN `score_pay` int(20) NULL COMMENT '支付积分' AFTER `company_id`;
+
+
+ALTER TABLE `shop_advertis`
+ ADD COLUMN `page_id` bigint(0) NULL COMMENT '连接页面' AFTER `company_id`;
+
+ALTER TABLE `shop_sku`
+DROP COLUMN `self_price`,
+ADD COLUMN `self_price` decimal(20,2) NULL AFTER `score_count`;
+
+ALTER TABLE `shop_salesman_grade`
+DROP COLUMN `self_commission`,
+ADD COLUMN `self_commission` double(20,2) NULL COMMENT '自购返佣比例%' AFTER `company_id`;
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml b/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml
index 9e7fba3..a4123a9 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml
@@ -72,9 +72,9 @@
( SELECT COUNT(*) FROM biz_user
WHERE parent_open_id = a.user_id AND is_sales = 1 ) invitedNum,
( SELECT IFNULL(sum(IFNULL(amount, 0)), 0) FROM shop_salesman_order
- WHERE user_id = a.user_id AND order_status = 2 AND sales_user_id = a.user_id ) totalRevenue,
+ WHERE order_status = 2 AND sales_user_id = a.user_id ) totalRevenue,
( SELECT IFNULL(sum(IFNULL(amount, 0)), 0) FROM shop_salesman_order
- WHERE user_id = a.user_id AND order_status = 1 AND sales_user_id = a.user_id ) balance,
+ WHERE order_status = 1 AND sales_user_id = a.user_id ) balance,
g.NAME grade,
a.create_time createTime,
a.apply_status applyStatus,
diff --git a/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanGradeDao.xml b/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanGradeDao.xml
index 00dd2d4..3b3a30a 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanGradeDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanGradeDao.xml
@@ -49,6 +49,7 @@
SELECT
a.id id,
a.name name,
+ a.self_commission selfCommission,
a.seales_commission sealesCommission,
a.invitation_commission invitationCommission,
a.grade_condition gradeCondition,
diff --git a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopAdvertisDao.xml b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopAdvertisDao.xml
index e8b87b0..b0a7931 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopAdvertisDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopAdvertisDao.xml
@@ -20,6 +20,7 @@
<result property="linkType" column="link_type"/>
<result property="linkUrl" column="link_url"/>
<result property="companyId" column="company_id" />
+ <result property="pageId" column="page_id" />
</resultMap>
@@ -38,6 +39,7 @@
<result property="remarks" column="remarks" />
<result property="linkType" column="link_type"/>
<result property="linkUrl" column="link_url"/>
+ <result property="pageId" column="page_id" />
<result property="companyId" column="company_id" />
</resultMap>
@@ -56,6 +58,7 @@
remarks,
link_type,
link_url,
+page_id,
company_id
</sql>
@@ -74,6 +77,7 @@
#{item.remarks},
#{item.linkType},
#{item.linkUrl},
+ #{item.pageId},
#{item.companyId}
</sql>
@@ -101,6 +105,9 @@
</if>
<if test="(record.remarks!=null and record.remarks!='') or (record.remarks!='' and record.remarks==0) ">
and remarks = #{record.remarks}
+ </if>
+ <if test="(record.pageId!=null and record.pageId!='') or (record.pageId!='' and record.pageId==0) ">
+ and page_id = #{record.pageId}
</if>
<if test="record.companyId != null and record.companyId !='' ">
and company_id = #{record.companyId}
@@ -167,6 +174,10 @@
link_type = #{linkType},
</if>
+ <if test="_parameter.containsKey('pageId')">
+ page_id = #{pageId},
+ </if>
+
</set>
WHERE id=#{id}
@@ -206,6 +217,10 @@
company_id = #{record.companyId}
</if>
+ <if test="record.pageId != null and record.pageId !='' ">
+ page_id = #{record.pageId}
+ </if>
+
</set>
WHERE id=#{record.id}
</update>
@@ -232,8 +247,8 @@
<include refid="where_sql" ></include>
</where>
</delete>
-
-
+
+
<!-- 分页查询 -->
<select id="selectInPage" resultType="com.matrix.system.shopXcx.bean.ShopAdvertis">
@@ -249,6 +264,7 @@
ad.type_id typeId,
ad.sort,
ad.remarks,
+ ad.page_id,
IFNULL(adType.adt_name ,'无分类') adtName
from shop_advertis ad
left join shop_advertis_type adType
diff --git a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopSkuDao.xml b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopSkuDao.xml
index 7d6030d..13a8e2e 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopSkuDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopSkuDao.xml
@@ -22,6 +22,7 @@
<result property="sealCount" column="seal_count"/>
<result property="stockCode" column="stock_code"/>
<result property="shopId" column="shop_id"/>
+ <result property="selfPrice" column="self_price"/>
<result property="sealesPrice" column="seales_price"/>
<result property="invitationPrice" column="invitation_price"/>
<result property="scorePrice" column="score_price"/>
@@ -50,6 +51,7 @@
<result property="sealCount" column="seal_count"/>
<result property="stockCode" column="stock_code"/>
<result property="shopId" column="shop_id"/>
+ <result property="selfPrice" column="self_price"/>
<result property="sealesPrice" column="seales_price"/>
<result property="invitationPrice" column="invitation_price"/>
<result property="scorePrice" column="score_price"/>
@@ -75,6 +77,7 @@
seal_count,
stock_code,
shop_id,
+self_price,
seales_price,
invitation_price,
score_price,
@@ -102,6 +105,7 @@
#{item.sealCount},
#{item.stockCode},
#{item.shopId},
+ #{item.selfPrice},
#{item.sealesPrice},
#{item.invitationPrice},
#{item.scorePrice},
@@ -234,6 +238,10 @@
score_count = #{scoreCount},
</if>
+ <if test="_parameter.containsKey('selfPrice')">
+ self_price = #{selfPrice},
+ </if>
+
</set>
WHERE id=#{id}
@@ -293,6 +301,10 @@
score_count = #{record.scoreCount},
</if>
+ <if test="record.selfPrice != null ">
+ self_price = #{record.selfPrice},
+ </if>
+
</set>
WHERE id=#{record.id}
diff --git a/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-setting.html b/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-setting.html
index a23b23d..888cad5 100644
--- a/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-setting.html
+++ b/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-setting.html
@@ -39,6 +39,22 @@
<el-row style="margin-top: 20px;">
<el-col>
+ <template v-for="paramSettingzgfy in zgfy">
+ <el-form-item>
+ <span slot="label">{{paramSettingzgfy.paramName}}</span>
+ <el-col>
+ <el-radio-group v-model="paramSettingzgfy.paramValue">
+ <el-radio :label="'1'">是</el-radio>
+ <el-radio :label="'2'">否</el-radio>
+ </el-radio-group>
+ </el-col>
+ </el-form-item >
+ </template>
+ </el-col>
+ </el-row>
+
+ <el-row style="margin-top: 20px;">
+ <el-col>
<template v-for="paramSettingTwo in fxms">
<el-form-item>
<span slot="label">{{paramSettingTwo.paramName}}</span>
@@ -287,6 +303,7 @@
sqfs:[],
shfs:[],
sqtj:[],
+ zgfy:[],
},
created: function () {
this.loadInfo();
@@ -315,6 +332,7 @@
_this.fxkg = data.mapInfo.fxkg;
_this.fxms = data.mapInfo.fxms;
_this.sqfs = data.mapInfo.sqfs;
+ _this.zgfy = data.mapInfo.zgfy;
if(_this.sqfs.length > 0){
let paramssqfs = _this.sqfs[0].paramValue;
if(paramssqfs == 2){
@@ -444,6 +462,21 @@
}
submitDate.push(obj);
}
+ for (let i = 0; i < _this.zgfy.length; i++) {
+ let paramSetting = _this.zgfy[i];
+ let paramCode = paramSetting.paramCode;
+ let paramValue = paramSetting.paramValue;
+ let paramValue1 = paramSetting.paramValue1;
+ let paramValue2 = paramSetting.paramValue2;
+
+ let obj = {
+ paramCode: paramCode,
+ paramValue: paramValue,
+ paramValue1: paramValue1,
+ paramValue2: paramValue2,
+ }
+ submitDate.push(obj);
+ }
for (let i = 0; i < _this.fxms.length; i++) {
let paramSetting = _this.fxms[i];
let paramCode = paramSetting.paramCode;
diff --git a/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html b/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html
index f9966e4..b71fa3c 100644
--- a/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html
+++ b/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html
@@ -199,6 +199,13 @@
</el-table-column>
<el-table-column
prop="sealesCommission"
+ label="自购返佣 %">
+ <template slot-scope="scope">
+ <el-input class="edit-input" v-model="scope.row.selfCommission" oninput ="value=value.replace(/[^0-9.]/g,'')" placeholder="自购返佣"></el-input>
+ </template>
+ </el-table-column>
+ <el-table-column
+ prop="sealesCommission"
label="推广提成 %">
<template slot-scope="scope">
<el-input class="edit-input" v-model="scope.row.sealesCommission" oninput ="value=value.replace(/[^0-9.]/g,'')" placeholder="推广提成"></el-input>
@@ -474,12 +481,14 @@
let id = row.id;
let name = row.name;
let sealesCommission = row.sealesCommission;
+ let selfCommission = row.selfCommission;
let invitationCommission = row.invitationCommission;
let gradeCondition = row.gradeCondition;
let obj = {
id: id,
name: name,
sealesCommission: sealesCommission,
+ selfCommission: selfCommission,
invitationCommission: invitationCommission,
gradeCondition: gradeCondition,
}
diff --git a/zq-erp/src/main/resources/templates/views/admin/shop/shopAdvertisType-list.html b/zq-erp/src/main/resources/templates/views/admin/shop/shopAdvertisType-list.html
index ef02fde..911708e 100644
--- a/zq-erp/src/main/resources/templates/views/admin/shop/shopAdvertisType-list.html
+++ b/zq-erp/src/main/resources/templates/views/admin/shop/shopAdvertisType-list.html
@@ -244,7 +244,7 @@
<el-table
:data="currentNode.ads"
:default-sort="{prop: '', order: 'descending'}"
- style="width: 100%" max-height="250">
+ style="width: 100%" >
<el-table-column
label="排序"
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 fe12dac..d8ed383 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
@@ -221,6 +221,7 @@
<th>消费可得积分</th>
<th>关联ERP产品</th>
<th>排序</th>
+ <th>自购返佣</th>
<th>推广提成</th>
<th>邀请提成</th>
<th>兑换所需金额</th>
@@ -353,6 +354,7 @@
<input autocomplete="off" type="hidden" class="form-control" name="erpGoodsCode">
</div></td>
<td><input autocomplete="off" type="text" class="form-control" name=""></td>
+ <td><input autocomplete="off" type="text" class="form-control" name=""></td>
<td><input autocomplete="off" type="text" class="form-control" name=""></td>
<td><input autocomplete="off" type="text" class="form-control" name=""></td>
<td><input autocomplete="off" type="text" class="form-control" name=""></td>
@@ -528,7 +530,10 @@
if (goodsName == null || typeof stockCode == 'undefined') {
goodsName = "";
}
-
+ var selfPrice = shopSkus[c].selfPrice;
+ if (selfPrice == null || typeof selfPrice == 'undefined') {
+ selfPrice = "";
+ }
var sealesPrice = shopSkus[c].sealesPrice;
if (sealesPrice == null || typeof sealesPrice == 'undefined') {
sealesPrice = "";
@@ -559,6 +564,7 @@
+'<td><div id="erpNoDiv"><button class="btn btn-info" onclick="selectProduct(\'shopIdValue\',\''+trId+'\')"><i class="fa fa-plus"></i></button>'
+'<p class="form-control-static erpGoodsName">'+ goodsName +'</p><input autocomplete="off" class="form-control" type="hidden" value="'+stockCode+'" name="erpGoodsCode"></div></td>'
+'<td><input autocomplete="off" type="text" class="form-control" value="'+sort+'" name=""></td>'
+ +'<td><input autocomplete="off" type="text" class="form-control" value="'+selfPrice+'" name=""></td>'
+'<td><input autocomplete="off" type="text" class="form-control" value="'+sealesPrice+'" name=""></td>'
+'<td><input autocomplete="off" type="text" class="form-control" value="'+invitationPrice+'" name=""></td>'
+'<td><input autocomplete="off" type="text" class="form-control" value="'+scorePrice+'" name=""></td>'
@@ -745,61 +751,63 @@
if (i != 0) {
var tds = $(this).find("td");
var length = tds.length - 1;
- var id = tds.eq(length - 12).find("input").val();
+ var id = tds.eq(length - 13).find("input").val();
if(id == null){
id ="";
}
sku.id = id;
//规格名称
- var name = tds.eq(length - 11).find("input").val();
+ var name = tds.eq(length - 12).find("input").val();
if(name == null){
name = "";
}
sku.name = name;
//图片地址
- var path = tds.eq(length - 10).find("img").attr("src");
+ var path = tds.eq(length - 11).find("img").attr("src");
if(path == null){
path = "";
}
sku.imgPath = path;
//库存
- var stock = tds.eq(length - 9).find("input").val();
+ var stock = tds.eq(length - 10).find("input").val();
if(stock == ""){
stock = 0;
}
sku.stock = stock;
//价格
- var price = tds.eq(length -8).find("input").val();
+ var price = tds.eq(length -9).find("input").val();
if(price == ""){
price =0;
}
sku.price = price;
//积分
- var score = tds.eq(length - 7).find("input").val();
+ var score = tds.eq(length - 8).find("input").val();
if(score == ""){
score = 0;
}
sku.score = score;
//品种编码
- var stockCode = tds.eq(length - 6).find("input").val();
+ var stockCode = tds.eq(length - 7).find("input").val();
if(stockCode == null || typeof stockCode == 'undefined'){
stockCode = '';
}
sku.stockCode = stockCode;
//排序
- var sort = tds.eq(length - 5).find("input").val();
+ var sort = tds.eq(length - 6).find("input").val();
if(sort == ""){
sort = 0;
}
sku.sort = sort;
-
+ //推广提成
+ var selfPrice = tds.eq(length - 5).find("input").val();
+ sku.selfPrice = selfPrice;
//推广提成
var sealesPrice = tds.eq(length - 4).find("input").val();
sku.sealesPrice = sealesPrice;
@@ -838,20 +846,6 @@
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){
//兑换所需金额
@@ -868,7 +862,7 @@
}
}
- var name = tds.eq(length - 11).find("input").val();
+ var name = tds.eq(length - 12).find("input").val();
if(name == ""){
layer.msg("请填写规格名称",{
icon : 2,
@@ -886,7 +880,7 @@
return false;
}
- var stock = tds.eq(length -9).find("input").val();
+ var stock = tds.eq(length -10).find("input").val();
if(stock == ""){
layer.msg("请填写库存",{
icon : 2,
@@ -895,7 +889,7 @@
flag = true;
return false;
}
- var price = tds.eq(length - 8 ).find("input").val();
+ var price = tds.eq(length - 9 ).find("input").val();
if(price == ""){
layer.msg("请填写价格",{
icon : 2,
diff --git a/zq-erp/src/test/java/com/matrix/SalesOrderTaskTest.java b/zq-erp/src/test/java/com/matrix/SalesOrderTaskTest.java
new file mode 100644
index 0000000..1469566
--- /dev/null
+++ b/zq-erp/src/test/java/com/matrix/SalesOrderTaskTest.java
@@ -0,0 +1,247 @@
+package com.matrix;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+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.bean.BusParameterSettings;
+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.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.shopXcx.bean.ShopOrder;
+import com.matrix.system.shopXcx.bean.ShopOrderDetails;
+import com.matrix.system.shopXcx.bean.ShopProduct;
+import com.matrix.system.shopXcx.bean.ShopSku;
+import com.matrix.system.shopXcx.dao.ShopOrderDao;
+import com.matrix.system.shopXcx.dao.ShopOrderDetailsDao;
+import com.matrix.system.shopXcx.dao.ShopSkuDao;
+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.context.junit4.SpringRunner;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = {ZqErpApplication.class},webEnvironment =SpringBootTest.WebEnvironment.RANDOM_PORT)
+public class SalesOrderTaskTest {
+
+
+
+
+ @Autowired
+ ShopOrderDao shopOrderDao;
+ @Autowired
+ ShopOrderDetailsDao shopOrderDetailsDao;
+
+ @Autowired
+ BizUserService bizUserService;
+
+
+ @Autowired
+ 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;
+
+ /**
+ * 处理分销订单
+ * @param order
+ */
+ @Test
+ public void handleExtensionOrder() {
+ ShopOrder order = new ShopOrder();
+ order.setUserId("oJkRK4_pWN2kjp75B_G6oGSWawj0");
+ order.setId(1190);
+ order.setCompanyId(36L);
+
+ List<ShopOrderDetails> details = new ArrayList<ShopOrderDetails>();
+ ShopOrderDetails shopOrderDetails = new ShopOrderDetails();
+ shopOrderDetails.setTotalPrice(new BigDecimal(0.01));
+
+ ShopProduct shopProduct = new ShopProduct();
+ shopProduct.setAttrValues("测试");
+ shopProduct.setAbleSales(1);
+
+ ShopSku shopSku = new ShopSku();
+ shopOrderDetails.setShopSku(shopSku);
+ shopOrderDetails.setShopProduct(shopProduct);
+ shopOrderDetails.setCount(1);
+ details.add(shopOrderDetails);
+
+ order.setDetails(details);
+ order.setOrderMoney(new BigDecimal(0.01));
+ //判读客户是否存在上级,存在则产生上级的收益
+ BizUser bizUser = bizUserService.findByOpenId(order.getUserId());
+ LogUtil.debug("处理分销订单userOpid={}",bizUser.getOpenId());
+ //判断是否重复生成
+ 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.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(StringUtils.isNotBlank(item.getShopProduct().getAttrValues())
+ && item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){
+ orderTotal+=item.getTotalPrice().doubleValue();
+ }
+ }
+ //自购返佣
+ for (ShopOrderDetails item:order.getDetails() ){
+ if(StringUtils.isNotBlank(item.getShopProduct().getAttrValues())
+ && item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){
+ //分销规则是否开启自购返佣
+ BusParameterSettings zgfy = parameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_ZGFY, bizUser.getCompanyId());
+ //按分销等级计算
+ ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(bizUser.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()/orderTotal;
+ selfAmount=selfAmount*zk;
+ salesmanOrder.setAmount(selfAmount);
+ salesmanOrder.setSalesUserId(order.getUserId());
+ shopSalesmanOrderDao.insert(salesmanOrder);
+ }
+ //存在上级
+ if(StringUtils.isNotBlank(bizUser.getParentOpenId())) {
+ BizUser salesMan=bizUserService.findByOpenId(bizUser.getParentOpenId());
+ Double salesAmount=0D;
+ Double invitationAmount=0D;
+ 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().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()/orderTotal;
+ salesAmount=salesAmount*zk;
+ salesmanOrder.setAmount(salesAmount);
+ salesmanOrder.setSalesUserId(bizUser.getParentOpenId());
+ shopSalesmanOrderDao.insert(salesmanOrder);
+ }
+ //邀请提成记录
+ if(invitationAmount > 0) {
+ //整体的优惠金额折算成折扣,* 佣金
+ invitationAmount=invitationAmount*zk;
+ invitationOrder.setAmount(invitationAmount);
+ shopSalesmanOrderDao.insert(invitationOrder);
+ }
+ }else{
+ LogUtil.debug("不存在父级userOpid={}",bizUser.getOpenId());
+ }
+ }else{
+ LogUtil.debug("重复订单id={}",order.getId());
+ }
+ }
+
+}
--
Gitblit v1.9.1