zq-erp/src/main/java/com/matrix/biz/bean/BizUser.java
@@ -43,7 +43,7 @@ /** *推广员等级 */ private Double salesmanGrade; private Long salesmanGrade; /** @@ -265,11 +265,11 @@ this.withdrawalCash = withdrawalCash; } public Double getSalesmanGrade() { public Long getSalesmanGrade() { return salesmanGrade; } public void setSalesmanGrade(Double salesmanGrade) { public void setSalesmanGrade(Long salesmanGrade) { this.salesmanGrade = salesmanGrade; } zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderItemDao.java
New file @@ -0,0 +1,13 @@ package com.matrix.system.fenxiao.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.matrix.system.fenxiao.entity.ShopSalesmanOrderItem; /** * @description 分销单明细 * @author yourName * @date 2021-03-12 13:17 */ public interface ShopSalesmanOrderItemDao extends BaseMapper<ShopSalesmanOrderItem> { } zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrder.java
@@ -13,6 +13,25 @@ @Data @TableName("shop_salesman_order") public class ShopSalesmanOrder extends BaseEntity { /** * 推广收益类型1推广收益 */ public static final Integer REVENUE_TYPE_SALES = 1; /** * 推广收益类型2邀请收益 */ public static final Integer REVENUE_TYPE_INVITATION = 2; /** * 分销单状态1待结算 */ public static final Integer STATUS_DJS = 1; /** * 分销单状态2已结算 */ public static final Integer STATUS_YJS = 2; @Extend private static final long serialVersionUID = 1L; zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrderItem.java
New file @@ -0,0 +1,54 @@ package com.matrix.system.fenxiao.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.matrix.core.anotations.Extend; import com.matrix.system.score.entity.BaseEntity; import lombok.Data; /** * @description 分销单明细 * @author yourName * @date 2021-03-12 13:17 */ @Data @TableName("shop_salesman_order_item") public class ShopSalesmanOrderItem extends BaseEntity { @Extend private static final long serialVersionUID = 1L; /** * 订单id */ private Long orderId ; /** * 分销订单id */ private Long salesmanOrderId; /** * 订单明细id */ private Long orderItemId; /** * 收益金额 */ private Double amount; } zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanOrderItemService.java
New file @@ -0,0 +1,20 @@ package com.matrix.system.fenxiao.service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.matrix.system.fenxiao.dao.ShopSalesmanOrderItemDao; import com.matrix.system.fenxiao.entity.ShopSalesmanOrderItem; import org.springframework.stereotype.Service; /** * @description 分销单明细 * @author yourName * @date 2021-03-12 13:17 */ @Service public class ShopSalesmanOrderItemService extends ServiceImpl<ShopSalesmanOrderItemDao, ShopSalesmanOrderItem>{ } zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java
@@ -3,11 +3,15 @@ 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.constance.AppConstance; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.constance.Dictionary; import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao; import com.matrix.system.fenxiao.dao.ShopSalesmanOrderDao; import com.matrix.system.fenxiao.entity.ShopSalesmanOrder; import com.matrix.system.hive.bean.*; import com.matrix.system.hive.dao.*; import com.matrix.system.hive.service.CodeService; @@ -78,8 +82,14 @@ @Autowired private ShoppingGoodsDao shoppingGoodsDao; @Autowired private ShopSalesmanOrderDao shopSalesmanOrderDao; @Autowired private ShopSalesmanGradeDao shopSalesmanGradeDao; @Transactional(rollbackFor = Exception.class) public void createOrder(ShopOrder orderDto) { public void synchronizationOrderToErp(ShopOrder orderDto) { //判断是否存在需要同步的产品,只有绑定了erp中产品的才同步 boolean needTb=false; @@ -237,7 +247,61 @@ //获取订单详情 List<ShopOrderDetails> orderDetails = shopOrderDetailsDao.selectByOrderId(Integer.valueOf(orderId)); order.setDetails(orderDetails); createOrder(order); //同步订单到erp synchronizationOrderToErp(order); //处理分销订单 handleExtensionOrder(order); } /** * 处理分销订单 * @param order */ @Transactional void handleExtensionOrder(ShopOrder order) { //判读客户是否存在上级,存在则产生上级的收益 BizUser bizUser = bizUserService.findByOpenId(order.getUserId()); if(StringUtils.isNotBlank(bizUser.getParentOpenId())){ LogUtil.debug("处理分销订单userOpid={}",bizUser.getOpenId()); //存在上级 ShopSalesmanOrder shopSalesmanOrder=new ShopSalesmanOrder(); shopSalesmanOrder.setCompanyId(order.getCompanyId()); shopSalesmanOrder.setCreateBy(MatrixConstance.SYSTEM_USER); shopSalesmanOrder.setUpdateBy(MatrixConstance.SYSTEM_USER); shopSalesmanOrder.setCreateTime(new Date()); shopSalesmanOrder.setUpdateTime(new Date()); shopSalesmanOrder.setOrderId(Long.parseLong(order.getId()+"")); shopSalesmanOrder.setUserId(order.getUserId()); shopSalesmanOrder.setSalesUserId(bizUser.getParentOpenId()); shopSalesmanOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_SALES); shopSalesmanOrder.setOrderStatus(ShopSalesmanOrder.STATUS_DJS); Double amount=0D; 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){ //按分销等级计算 BizUser salesMan=bizUserService.findByOpenId(bizUser.getParentOpenId()); shopSalesmanGradeDao.selectById(salesMan.getSalesmanGrade()) }else{ //按产品设置的金额计算 amount+=item.getShopSku().getSealesPrice().doubleValue(); } } } }else{ LogUtil.debug("不存在父级userOpid={}",bizUser.getOpenId()); } } } zq-erp/src/main/resources/config/db/increment/推广员.sql
@@ -11,6 +11,29 @@ /** * 分销单明细 * @author yourName * @date 2021-03-12 13:17 */ CREATE TABLE shop_salesman_order_item( create_by varchar(100) NOT NULL COMMENT '创建人', create_time datetime NOT NULL COMMENT '创建时间', update_by varchar(100) NOT NULL COMMENT '更新人', update_time datetime NOT NULL COMMENT '更新时间', id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', order_id bigint(20) COMMENT '订单id', salesman_order_id bigint(20) COMMENT '分销订单id', order_item_id bigint(20) COMMENT '订单明细id', amount double(20,2) COMMENT '收益金额', PRIMARY KEY(id) )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='分销单明细'; /** * 收益流水 * @author yourName * @date 2021-03-10 17:34 zq-erp/src/main/resources/config/test/application.properties
@@ -65,7 +65,7 @@ #定时任务 scheduling.enabled=false swagger.enable=false swagger.enable=true swagger.security.username=admin swagger.security.password=admin zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanOrderItemDao.xml
New file @@ -0,0 +1,33 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.matrix.system.fenxiao.dao.ShopSalesmanOrderItemDao"> <!-- 定义ShopSalesmanOrderItem 的复杂关联map --> <resultMap type="com.matrix.system.fenxiao.entity.ShopSalesmanOrderItem" id="ShopSalesmanOrderItemMap"> <id property="id" column="id" /> <result property="createBy" column="create_by" /> <result property="createTime" column="create_time" /> <result property="updateBy" column="update_by" /> <result property="updateTime" column="update_time" /> <result property="orderId " column="order_id " /> <result property="salesmanOrderId" column="salesman_order_id" /> <result property="orderItemId" column="order_item_id" /> <result property="amount" column="amount" /> </resultMap> <!-- 定义ShopSalesmanOrderItem 的简单map ,本map不添加其他的关联属性 --> <resultMap type="com.matrix.system.fenxiao.entity.ShopSalesmanOrderItem" id="ShopSalesmanOrderItemSimpleMap"> <id property="id" column="id" /> <result property="createBy" column="create_by" /> <result property="createTime" column="create_time" /> <result property="updateBy" column="update_by" /> <result property="updateTime" column="update_time" /> <result property="orderId " column="order_id " /> <result property="salesmanOrderId" column="salesman_order_id" /> <result property="orderItemId" column="order_item_id" /> <result property="amount" column="amount" /> </resultMap> </mapper> zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html
@@ -229,6 +229,8 @@ <th>积分</th> <th>关联ERP产品</th> <th>排序</th> <th>推广提成</th> <th>邀请提成</th> <th>操作</th> </tr> </table> @@ -357,6 +359,8 @@ <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><i class="fa fa-trash form-control-static" onclick="delThis('trId')"></i></td> </tr> </script> @@ -526,6 +530,16 @@ goodsName = ""; } var sealesPrice = shopSkus[c].sealesPrice; if (sealesPrice == null || typeof sealesPrice == 'undefined') { sealesPrice = ""; } var invitationPrice = shopSkus[c].invitationPrice; if (invitationPrice == null || typeof invitationPrice == 'undefined') { invitationPrice = ""; } var html= '<tr id="'+trId+'">' +'<td style="display:none;"><input autocomplete="off" type="hidden" class="form-control" value="'+shopSkus[c].id+'" ></td>' @@ -538,6 +552,8 @@ +'<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="'+sealesPrice+'" name=""></td>' +'<td><input autocomplete="off" type="text" class="form-control" value="'+invitationPrice+'" name=""></td>' +'<td><i class="fa fa-trash form-control-static" onclick="delThis(\''+trId+'\')"></i></td>' +'</tr>'; $("#skutable").find("tbody").append(html); @@ -617,7 +633,7 @@ //初始化属性下拉选 function initAttrSeclect(seler, def) { $.AjaxProxy().invoke(basePath + "/admin/shopProductAttribute/showSonAttribute?attrCode=service", $.AjaxProxy().invoke(basePath + "/admin/shopProductAttribute/showSonAttribute?attrCode=productColumn", function (loj) { $(seler).createSelectTree( loj.attr("result").rows, @@ -708,61 +724,68 @@ if (i != 0) { var tds = $(this).find("td"); var length = tds.length - 1; var id = tds.eq(length - 8).find("input").val(); var id = tds.eq(length - 10).find("input").val(); if(id == null){ id =""; } sku.id = id; //规格名称 var name = tds.eq(length - 7).find("input").val(); var name = tds.eq(length - 9).find("input").val(); if(name == null){ name = ""; } sku.name = name; //图片地址 var path = tds.eq(length - 6).find("img").attr("src"); var path = tds.eq(length - 8).find("img").attr("src"); if(path == null){ path = ""; } sku.imgPath = path; //库存 var stock = tds.eq(length - 5).find("input").val(); var stock = tds.eq(length - 7).find("input").val(); if(stock == ""){ stock = 0; } sku.stock = stock; //价格 var price = tds.eq(length - 4).find("input").val(); var price = tds.eq(length -6).find("input").val(); if(price == ""){ price =0; } sku.price = price; //积分 var score = tds.eq(length - 3).find("input").val(); var score = tds.eq(length - 5).find("input").val(); if(score == ""){ score = 0; } sku.score = score; //品种编码 var stockCode = tds.eq(length - 2).find("input").val(); var stockCode = tds.eq(length - 4).find("input").val(); if(stockCode == null || typeof stockCode == 'undefined'){ stockCode = ''; } sku.stockCode = stockCode; //排序 var sort = tds.eq(length - 1).find("input").val(); var sort = tds.eq(length - 3).find("input").val(); if(sort == ""){ sort = 0; } sku.sort = sort; //推广提成 var sealesPrice = tds.eq(length - 2).find("input").val(); sku.sealesPrice = sealesPrice; //邀请提成 var invitationPrice = tds.eq(length - 1).find("input").val(); sku.invitationPrice = invitationPrice; skus.push(sku); } @@ -780,7 +803,7 @@ if (i != 0) { var tds = $(this).find("td"); var length = tds.length - 1; var name = tds.eq(length - 7).find("input").val(); var name = tds.eq(length - 9).find("input").val(); if(name == ""){ layer.msg("请填写规格名称",{ icon : 2, @@ -798,7 +821,7 @@ return false; } var stock = tds.eq(length - 5).find("input").val(); var stock = tds.eq(length -7).find("input").val(); if(stock == ""){ layer.msg("请填写库存",{ icon : 2, @@ -807,7 +830,7 @@ flag = true; return false; } var price = tds.eq(length - 4).find("input").val(); var price = tds.eq(length - 6).find("input").val(); if(price == ""){ layer.msg("请填写价格",{ icon : 2,