jyy
2021-03-12 f42432621c9259f9914f8fec56a73419e7ff239f
新增申请成为分销员接口7
4 files added
6 files modified
285 ■■■■■ changed files
zq-erp/src/main/java/com/matrix/biz/bean/BizUser.java 6 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderItemDao.java 13 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrder.java 19 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrderItem.java 54 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanOrderItemService.java 20 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java 68 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/db/increment/推广员.sql 23 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/test/application.properties 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanOrderItemDao.xml 33 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html 47 ●●●● patch | view | raw | blame | history
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,