xiaoyong931011
2021-03-15 caf36dec5de803c5ce8912c08beaccb29598e2f6
分销员后台0315
9 files added
7 files modified
966 ■■■■■ changed files
zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoOrderAction.java 94 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoSettingAction.java 1 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderDao.java 13 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/FyfaManageDto.java 6 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadFenxiaoOrderBasicDto.java 14 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadFenxiaoOrderListDto.java 19 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadSetOrderListDtoDto.java 19 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UpdateSetOrderDoneDto.java 17 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java 8 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanOrderService.java 104 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadFenxiaoOrderBasicVo.java 20 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadFenxiaoOrderListVo.java 41 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadSetOrderListDtoVo.java 36 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanOrderDao.xml 74 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-order.html 495 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html 5 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoOrderAction.java
New file
@@ -0,0 +1,94 @@
package com.matrix.system.fenxiao.action;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.system.fenxiao.dto.ChangeSaleManGradeDto;
import com.matrix.system.fenxiao.dto.LoadFenxiaoOrderBasicDto;
import com.matrix.system.fenxiao.dto.LoadFenxiaoOrderListDto;
import com.matrix.system.fenxiao.dto.LoadSetOrderListDtoDto;
import com.matrix.system.fenxiao.dto.UpdateSetOrderDoneDto;
import com.matrix.system.fenxiao.service.ShopSalesmanOrderService;
import com.matrix.system.fenxiao.vo.LoadFenxiaoOrderBasicVo;
import com.matrix.system.fenxiao.vo.LoadFenxiaoOrderListVo;
import com.matrix.system.fenxiao.vo.LoadSetOrderListDtoVo;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = "/fenXiao/fenXiaoOrder")
public class FenXiaoOrderAction {
    @Autowired
    private ShopSalesmanOrderService shopSalesmanOrderService;
    /**
     * 分销订单基本信息
     */
    @ApiOperation(value = "分销订单基本信息")
    @ApiResponses({
            @ApiResponse(code = 200, message = "OK",  response = LoadFenxiaoOrderBasicVo.class)
    })
    @PostMapping(value = "/loadFenxiaoOrderBasic")
    public @ResponseBody
    AjaxResult loadFenxiaoOrderBasic(@RequestBody LoadFenxiaoOrderBasicDto loadFenxiaoOrderBasicDto) {
        return shopSalesmanOrderService.loadFenxiaoOrderBasic(loadFenxiaoOrderBasicDto);
    }
    /**
     * 分销订单
     */
    @ApiOperation(value = "分销订单")
    @ApiResponses({
            @ApiResponse(code = 200, message = "OK",  response = LoadFenxiaoOrderListVo.class)
    })
    @PostMapping(value = "/loadFenxiaoOrderList")
    public @ResponseBody
    AjaxResult loadFenxiaoOrderList(@RequestBody LoadFenxiaoOrderListDto loadFenxiaoOrderListDto) {
        return shopSalesmanOrderService.loadFenxiaoOrderList(loadFenxiaoOrderListDto);
    }
    /**
     *批量结算分销订单
     */
    @ApiOperation(value = "批量结算分销订单")
    @PostMapping(value = "/updateSetOrderDone")
    public @ResponseBody
    AjaxResult updateSetOrderDone(@RequestBody UpdateSetOrderDoneDto updateSetOrderDoneDto) {
        return shopSalesmanOrderService.updateSetOrderDone(updateSetOrderDoneDto);
    }
    /**
     * 结算记录
     */
    @ApiOperation(value = "分销订单")
    @ApiResponses({
        @ApiResponse(code = 200, message = "OK",  response = LoadSetOrderListDtoVo.class)
    })
    @PostMapping(value = "/loadSetOrderList")
    public @ResponseBody
    AjaxResult loadSetOrderList(@RequestBody LoadSetOrderListDtoDto loadSetOrderListDto) {
        return shopSalesmanOrderService.loadSetOrderList(loadSetOrderListDto);
    }
}
zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoSettingAction.java
@@ -83,6 +83,7 @@
       result.putInMap("sqtj", sqtjRuleSettingsVo);
       if(CollUtil.isNotEmpty(sqtjRuleSettingsVo)){
           for(FenXiaoSettingVo fenXiaoSettingVo : sqtjRuleSettingsVo) {
               //选择申请条件条件3时,获得选中产品集合
               if("3".equals(fenXiaoSettingVo.getParamValue())) {
                   String paramValue1 = fenXiaoSettingVo.getParamValue1();
                   if(StrUtil.isNotEmpty(paramValue1)) {
zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderDao.java
@@ -3,7 +3,12 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.matrix.system.fenxiao.dto.LoadFenxiaoOrderListDto;
import com.matrix.system.fenxiao.dto.LoadSetOrderListDtoDto;
import com.matrix.system.fenxiao.entity.ShopSalesmanOrder;
import com.matrix.system.fenxiao.vo.LoadFenxiaoOrderBasicVo;
import com.matrix.system.fenxiao.vo.LoadFenxiaoOrderListVo;
import com.matrix.system.fenxiao.vo.LoadSetOrderListDtoVo;
import com.matrix.system.shopXcx.api.dto.SaleOrderDto;
import com.matrix.system.shopXcx.vo.SalesOrderVo;
import org.apache.ibatis.annotations.Param;
@@ -23,4 +28,12 @@
     */
    IPage<SalesOrderVo> selectSalesManOrder(Page<SalesOrderVo> page,  @Param("record")SaleOrderDto saleOrderDto);
    LoadFenxiaoOrderBasicVo selectFenxiaoOrderBasicByCompanyId(@Param("companyId")Long companyId);
    IPage<LoadFenxiaoOrderListVo> findFenxiaoOrderList(Page<LoadFenxiaoOrderListVo> page,
            @Param("record")LoadFenxiaoOrderListDto loadFenxiaoOrderListDto);
    IPage<LoadSetOrderListDtoVo> findSetOrderList(Page<LoadSetOrderListDtoVo> page,
            @Param("record")LoadSetOrderListDtoDto loadSetOrderListDto);
}
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/FyfaManageDto.java
@@ -12,5 +12,11 @@
    
    @ApiModelProperty(hidden = true)
    private Long companyId;
    @ApiModelProperty(value ="会员OPENID")
    private String userId;
    @ApiModelProperty(value ="申请记录ID")
     private Long applyId;
}
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadFenxiaoOrderBasicDto.java
New file
@@ -0,0 +1,14 @@
package com.matrix.system.fenxiao.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "LoadFenxiaoOrderBasicDto", description = "查询参数")
public class LoadFenxiaoOrderBasicDto {
    @ApiModelProperty(hidden = true)
    private Long companyId;
}
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadFenxiaoOrderListDto.java
New file
@@ -0,0 +1,19 @@
package com.matrix.system.fenxiao.dto;
import com.matrix.core.pojo.BasePageQueryDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "LoadFenxiaoOrderListDto", description = "查询参数")
public class LoadFenxiaoOrderListDto extends BasePageQueryDto {
    @ApiModelProperty(hidden = true)
    private Long companyId;
    @ApiModelProperty(value ="会员姓名")
    private String userName;
}
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadSetOrderListDtoDto.java
New file
@@ -0,0 +1,19 @@
package com.matrix.system.fenxiao.dto;
import com.matrix.core.pojo.BasePageQueryDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "LoadSetOrderListDtoDto", description = "查询参数")
public class LoadSetOrderListDtoDto extends BasePageQueryDto {
    @ApiModelProperty(hidden = true)
    private Long companyId;
    @ApiModelProperty(value ="会员姓名")
    private String userName;
}
zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UpdateSetOrderDoneDto.java
New file
@@ -0,0 +1,17 @@
package com.matrix.system.fenxiao.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "UpdateSetOrderDoneDto", description = "查询参数")
public class UpdateSetOrderDoneDto {
    @ApiModelProperty(hidden = true)
    private Long companyId;
    @ApiModelProperty(value ="需要处理的IDs(字符串逗号隔开)")
    private String orderIds;
}
zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java
@@ -329,19 +329,19 @@
            return AjaxResult.buildFailInstance("请输入方案名称");
        }
        Double sealesCommission = updateFyfaDto.getSealesCommission();
        if(StrUtil.isEmpty(sealesCommission.toString())) {
        if(ObjectUtil.isEmpty(sealesCommission)) {
            return AjaxResult.buildFailInstance("请输入正确的推广提成");
        }
        Double invitationCommission = updateFyfaDto.getInvitationCommission();
        if(StrUtil.isEmpty(invitationCommission.toString())) {
        if(ObjectUtil.isEmpty(invitationCommission)) {
            return AjaxResult.buildFailInstance("请输入正确的邀请提成");
        }
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(updateFyfaDto);
        selectById.setCompanyId(updateFyfaDto.getCompanyId());
        selectById.setName(updateFyfaDto.getName());
        selectById.setSealesCommission(updateFyfaDto.getSealesCommission());
        selectById.setInvitationCommission(updateFyfaDto.getInvitationCommission());
        selectById.setSealesCommission(sealesCommission);
        selectById.setInvitationCommission(invitationCommission);
        selectById.setGradeCondition(updateFyfaDto.getGradeCondition());
        shopSalesmanGradeDao.updateById(selectById);
        return AjaxResult.buildFailInstance("操作成功");
zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanOrderService.java
@@ -1,9 +1,33 @@
package com.matrix.system.fenxiao.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.StringUtils;
import com.matrix.system.fenxiao.dao.ShopSalesmanOrderDao;
import com.matrix.system.fenxiao.dto.LoadFenxiaoOrderBasicDto;
import com.matrix.system.fenxiao.dto.LoadFenxiaoOrderListDto;
import com.matrix.system.fenxiao.dto.LoadSetOrderListDtoDto;
import com.matrix.system.fenxiao.dto.UpdateSetOrderDoneDto;
import com.matrix.system.fenxiao.entity.ShopSalesmanOrder;
import com.matrix.system.fenxiao.vo.FenXiaoSettingVo;
import com.matrix.system.fenxiao.vo.LoadFenxiaoOrderBasicVo;
import com.matrix.system.fenxiao.vo.LoadFenxiaoOrderListVo;
import com.matrix.system.fenxiao.vo.LoadSetOrderListDtoVo;
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.hive.bean.ShoppingGoods;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
 * @description 分销订单
@@ -12,6 +36,86 @@
 */
@Service
public class ShopSalesmanOrderService  extends ServiceImpl<ShopSalesmanOrderDao, ShopSalesmanOrder>{
    @Autowired
    ShopSalesmanOrderDao shopSalesmanOrderDao;
    public AjaxResult loadFenxiaoOrderBasic(LoadFenxiaoOrderBasicDto loadFenxiaoOrderBasicDto) {
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(loadFenxiaoOrderBasicDto);
        AjaxResult result= AjaxResult.buildSuccessInstance("查询成功");
        //根据OPENID查询基础信息
        Long companyId = loadFenxiaoOrderBasicDto.getCompanyId();
        LoadFenxiaoOrderBasicVo loadFenxiaoOrderBasicVo = shopSalesmanOrderDao.selectFenxiaoOrderBasicByCompanyId(companyId);
        result.putInMap("basicdetail", loadFenxiaoOrderBasicVo);
        return result;
    }
    public AjaxResult loadFenxiaoOrderList(LoadFenxiaoOrderListDto loadFenxiaoOrderListDto) {
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(loadFenxiaoOrderListDto);
        //排序
        if(StringUtils.isBlank(loadFenxiaoOrderListDto.getSort())){
            loadFenxiaoOrderListDto.setSort("create_time");
            loadFenxiaoOrderListDto.setOrder("desc");
        }
        Page<LoadFenxiaoOrderListVo> page = new Page(loadFenxiaoOrderListDto.getPageNum(), loadFenxiaoOrderListDto.getPageSize());
        IPage<LoadFenxiaoOrderListVo> loadFenxiaoOrderListVos = shopSalesmanOrderDao.findFenxiaoOrderList(page,loadFenxiaoOrderListDto);
        return AjaxResult.buildSuccessInstance(loadFenxiaoOrderListVos.getRecords(),loadFenxiaoOrderListVos.getTotal());
    }
    public AjaxResult loadSetOrderList(LoadSetOrderListDtoDto loadSetOrderListDto) {
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(loadSetOrderListDto);
        //排序
        if(StringUtils.isBlank(loadSetOrderListDto.getSort())){
            loadSetOrderListDto.setSort("create_time");
            loadSetOrderListDto.setOrder("desc");
        }
        Page<LoadSetOrderListDtoVo> page = new Page(loadSetOrderListDto.getPageNum(), loadSetOrderListDto.getPageSize());
        IPage<LoadSetOrderListDtoVo> loadFenxiaoOrderListVos = shopSalesmanOrderDao.findSetOrderList(page,loadSetOrderListDto);
        return AjaxResult.buildSuccessInstance(loadFenxiaoOrderListVos.getRecords(),loadFenxiaoOrderListVos.getTotal());
    }
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult updateSetOrderDone(UpdateSetOrderDoneDto updateSetOrderDoneDto) {
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(updateSetOrderDoneDto);
//        String orderIds = updateSetOrderDoneDto.getOrderIds();
//        if(StrUtil.isNotEmpty(orderIds)){
//            List<Integer> idsList = new ArrayList<>();
//            List<String> idsStringList = Arrays.asList(orderIds.split(","));
            //产生订单结算记录
            //记录收益流水
//            ShopRevenueFlow salesRevenueFlow=new ShopRevenueFlow();
//            salesRevenueFlow.setCompanyId(order.getCompanyId());
//            salesRevenueFlow.setCreateBy(MatrixConstance.SYSTEM_USER);
//            salesRevenueFlow.setUpdateBy(MatrixConstance.SYSTEM_USER);
//            salesRevenueFlow.setCreateTime(new Date());
//            salesRevenueFlow.setUpdateTime(new Date());
//            salesRevenueFlow.setAmount(salesAmount);
//            salesRevenueFlow.setUserId(salesmanOrder.getSalesUserId());
//            salesRevenueFlow.setRevenueContent("推广收益");
//            salesRevenueFlow.setBusinessId(salesmanOrder.getOrderId());
//            shopRevenueFlowDao.insert(salesRevenueFlow);
            //收益流水
//            ShopRevenueFlow invitationRevenueFlow=new ShopRevenueFlow();
//            invitationRevenueFlow.setCompanyId(order.getCompanyId());
//            invitationRevenueFlow.setCreateBy(MatrixConstance.SYSTEM_USER);
//            invitationRevenueFlow.setUpdateBy(MatrixConstance.SYSTEM_USER);
//            invitationRevenueFlow.setCreateTime(new Date());
//            invitationRevenueFlow.setUpdateTime(new Date());
//            invitationRevenueFlow.setAmount(salesAmount);
//            invitationRevenueFlow.setUserId(invitationOrder.getSalesUserId());
//            invitationRevenueFlow.setRevenueContent("邀请收益");
//            invitationRevenueFlow.setBusinessId(invitationOrder.getOrderId());
//            shopRevenueFlowDao.insert(invitationRevenueFlow);
//           }
        return AjaxResult.buildFailInstance("操作成功");
    }
zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadFenxiaoOrderBasicVo.java
New file
@@ -0,0 +1,20 @@
package com.matrix.system.fenxiao.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel(value = "LoadFenxiaoOrderBasicVo", description = "返回类")
public class LoadFenxiaoOrderBasicVo {
    @ApiModelProperty(value = "待计算金额")
    private BigDecimal balance;
    @ApiModelProperty(value = "待结算人数")
    private Integer waitNum;
    @ApiModelProperty(value = "待结算订单")
    private Integer waitOrderNum;
}
zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadFenxiaoOrderListVo.java
New file
@@ -0,0 +1,41 @@
package com.matrix.system.fenxiao.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
@ApiModel(value = "LoadFenxiaoOrderListVo", description = "返回类")
public class LoadFenxiaoOrderListVo {
    @ApiModelProperty(value = "订单ID")
    private Long id;
    @ApiModelProperty(value = "订单编号")
    private String orderNo;
    @ApiModelProperty(value = "实付金额(元)")
    private BigDecimal actualBalance;
    @ApiModelProperty(value = "下单门店")
    private String address;
    @ApiModelProperty(value = "客户")
    private String custom;
    @ApiModelProperty(value = "推广员")
    private String parentSale;
    @ApiModelProperty(value = "收益类型")
    private Integer profitType;
    @ApiModelProperty(value = "收益金额")
    private BigDecimal profitBalance;
    @ApiModelProperty(value = "结算状态")
    private Integer settleType;
    @ApiModelProperty(value = "结算编号")
    private String settleNo;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @ApiModelProperty(value = "结算时间")
    private Date settleTime;
    @ApiModelProperty(value = "结算人")
    private String settler;
}
zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadSetOrderListDtoVo.java
New file
@@ -0,0 +1,36 @@
package com.matrix.system.fenxiao.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "LoadSetOrderListDtoVo", description = "返回类")
public class LoadSetOrderListDtoVo {
    @ApiModelProperty(value = "ID")
    private Long id;
    @ApiModelProperty(value = "结算编号")
    private String orderNo;
    @ApiModelProperty(value = "结算金额")
    private BigDecimal actualBalance;
    @ApiModelProperty(value = "结算订单数")
    private String setNum;
    @ApiModelProperty(value = "结算人数")
    private String setManNum;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @ApiModelProperty(value = "结算时间")
    private Date setTime;
    @ApiModelProperty(value = "结算人")
    private Integer setMan;
    @ApiModelProperty(value = "结算方式")
    private BigDecimal settlementWay;
    @ApiModelProperty(value = "备注")
    private Integer remark;
}
zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanOrderDao.xml
@@ -64,4 +64,78 @@
    </select>
    <select id="selectFenxiaoOrderBasicByCompanyId" resultType="com.matrix.system.fenxiao.vo.LoadFenxiaoOrderBasicVo">
        SELECT
            COUNT(*) num,
            (SELECT IFNULL(sum(IFNULL(amount, 0)), 0)
                FROM shop_salesman_order
                WHERE order_status = 1 and company_id=#{companyId}) balance,
            (SELECT COUNT(*) FROM
                    (SELECT DISTINCT user_id
                        FROM shop_salesman_order
                        WHERE order_status = 1 and company_id=#{companyId} ) a) waitNum,
            (SELECT COUNT(*)
                FROM shop_salesman_order
                WHERE order_status = 1 and company_id=#{companyId}) waitOrderNum
        FROM
            shop_salesman_order
        where company_id=#{companyId}
    </select>
    <select id="findFenxiaoOrderList" resultType="com.matrix.system.fenxiao.vo.LoadFenxiaoOrderListVo">
        SELECT
        a.id id,
        (select order_no from shop_order where id = a.order_id) orderNo,
        (select order_money from shop_order where id = a.order_id) actualBalance,
        (select store_name  from shop_store where store_id = (select store_id from shop_order where id = a.order_id)) address,
        b.nick_name custom,
        (select nick_name from biz_user where open_id = b.parent_open_id) parentSale,
        a.revenue_type profitType,
        a.amount profitBalance,
        a.order_status settleType,
        c.order_no settleNo,
        c.create_time settleTime,
        (select nick_name from biz_user where c.user_id = open_id) settler
        FROM
        shop_salesman_order a
        LEFT JOIN biz_user b on a.user_id = b.open_id
        LEFT JOIN shop_saleman_settlement c on a.settlement_id = c.id
        <where>
            a.company_id = #{record.companyId}
            <if test="record.userName != null and record.userName != ''">
                and b.nick_name like concat('%',#{record.userName},'%')
            </if>
        </where>
        <if test="record.sort !=null">
            order by
            a.${record.sort} ${record.order}
        </if>
    </select>
    <select id="findSetOrderList" resultType="com.matrix.system.fenxiao.vo.LoadSetOrderListDtoVo">
        select
        a.id id,
        a.order_no orderNo,
        a.amount actualBalance,
        a.order_count setNum,
        a.man_count setManNum,
        a.create_time setTime,
        b.nick_name setMan,
        a.settlement_way settlementWay,
        a.remark remark
        from
        shop_saleman_settlement a
        left join biz_user b on a.user_id = b.open_id
        <where>
            a.company_id = #{record.companyId}
            <if test="record.userName != null and record.userName != ''">
                and b.nick_name like concat('%',#{record.userName},'%')
            </if>
        </where>
        <if test="record.sort !=null">
            order by
            a.${record.sort} ${record.order}
        </if>
    </select>
</mapper>
zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-order.html
New file
@@ -0,0 +1,495 @@
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8">
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    <meta name="renderer" content="webkit|ie-comp|ie-stand">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport"
          content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
    <meta http-equiv="Cache-Control" content="no-siteapp"/>
    <!-- 本框架基本脚本和样式 -->
    <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script>
    <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}">
    <link rel="stylesheet" th:href="@{/plugin/bootstrap-3.3.5/css/bootstrap.min.css}">
    <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/>
    <!-- 富文本编辑器 -->
    <script type="text/javascript" charset="utf-8"
            th:src="@{/plugin/beditor/ueditor.config.js}"></script>
    <script type="text/javascript" charset="utf-8"
            th:src="@{/plugin/beditor/ueditor.all.js}">
    </script>
    <script type="text/javascript" charset="utf-8"
            th:src="@{/plugin/beditor/lang/zh-cn/zh-cn.js}"></script>
    <style>
        .paginationStyle{
            background: #ffffff;
            padding: 10px 10px;
            margin: 0px 0px 10px 0px;
            text-align: right;
        }
    </style>
</head>
<body>
<div class="ibox-content" id="app" v-cloak>
    <el-row style="padding: 10px;">
        <el-row :gutter="100">
            <el-col class="line" :span="8" style="text-align: center">
                <el-card class="box-card" style="background-color: #eee;border-radius: 30px;">
                    <div>待计算金额</div>
                    <div style="padding: 5px;font-size: 18px;">¥{{basicdetail.balance}}</div>
                </el-card >
            </el-col>
            <el-col class="line" :span="8" style="text-align: center">
                <el-card class="box-card" style="background-color: #eee;border-radius: 30px;">
                    <div>待结算人数</div>
                    <div style="padding: 5px;font-size: 18px;">{{basicdetail.waitNum}}人</div>
                </el-card >
            </el-col>
            <el-col class="line" :span="8" style="text-align: center">
                <el-card class="box-card" style="background-color: #eee;border-radius: 30px;">
                    <div>待结算订单</div>
                    <div style="padding: 5px;font-size: 18px;">{{basicdetail.waitOrderNum}}笔</div>
                </el-card >
            </el-col>
        </el-row>
    </el-row>
    <el-row>
        <el-tabs v-model="activeName" >
            <el-tab-pane label="分销订单" name="first">
                <el-row justify="space-between" type="flex">
                    <el-col :span="6">
                        <el-button type="primary" @click="setOrderDone()">批量结算</el-button>
                    </el-col>
                    <el-col>
                        <el-form ref="form" :model="form" inline >
                            <el-form-item label="结算状态" prop="orderType">
                                <el-select v-model="form.orderType" placeholder="结算状态">
                                    <el-option
                                            v-for="item in orderTypeList"
                                            :key="item.value"
                                            :label="item.label"
                                            :value="item.value"
                                    >
                                    </el-option>
                                </el-select>
                            </el-form-item>
                            <el-form-item prop="userName" >
                                <el-input v-model="form.userName" placeholder="请输入推广员名称"></el-input>
                            </el-form-item>
                            <el-form-item prop="userName" >
                                <el-input v-model="form.userName" placeholder="选择订单时间范围"></el-input>
                            </el-form-item>
                            <el-form-item prop="userName" >
                                <el-input v-model="form.userName" placeholder="请输入会员姓名"></el-input>
                            </el-form-item>
                            <el-form-item prop="userName" >
                                <el-input v-model="form.userName" placeholder="请输入结算编号"></el-input>
                            </el-form-item>
                            <el-form-item prop="userName" >
                                <el-input v-model="form.userName" placeholder="请输入订单号"></el-input>
                            </el-form-item>
                            <el-form-item prop="userName" >
                                <el-input v-model="form.userName" placeholder="请输入客户名称"></el-input>
                            </el-form-item>
                            <el-button type="primary" @click="search" >搜索</el-button>
                            <el-button @click="resetForm('form')">重置</el-button>
                        </el-form>
                    </el-col>
                </el-row>
                <el-row class="table-style" >
                    <el-table ref="multipleTable"
                              :data="fxyList.rows"
                              :height="height"
                              stripe:true
                              @sort-change="sortChange"
                              @selection-change="handleSelectionChange">
                        <el-table-column
                                type="selection">
                        </el-table-column>
                        <el-table-column
                                prop="orderNo"
                                label="订单编号">
                        </el-table-column>
                        <el-table-column
                                prop="actualBalance"
                                label="实付金额(元)">
                        </el-table-column>
                        <el-table-column
                                prop="address"
                                label="下单门店">
                        </el-table-column>
                        <el-table-column
                                prop="custom"
                                label="客户">
                        </el-table-column>
                        <el-table-column
                                prop="parentSale"
                                label="推广员">
                        </el-table-column>
                        <el-table-column
                                label="收益类型">
                            <template slot-scope="scope">
                                <span v-if="scope.row.profitType == 1">推广收益</span>
                                <span v-if="scope.row.profitType == 2">邀请收益</span>
                            </template>
                        </el-table-column>
                        <el-table-column
                                prop="profitBalance"
                                label="收益金额">
                        </el-table-column>
                        <el-table-column
                                label="结算状态">
                            <template slot-scope="scope">
                                <span v-if="scope.row.settleType == 1">待结算</span>
                                <span v-if="scope.row.settleType == 2">已结算</span>
                                <span v-if="scope.row.settleType == 3">已退款</span>
                            </template>
                        </el-table-column>
                        <el-table-column
                                prop="settleNo"
                                label="结算编号">
                        </el-table-column>
                        <el-table-column
                                prop="settleTime"
                                label="结算时间">
                        </el-table-column>
                        <el-table-column
                                prop="settler"
                                label="结算人">
                        </el-table-column>
                        <el-table-column label="操作" width="240">
                            <template slot-scope="scope">
                                <el-row style="display:flex;">
                                    <el-button type="primary" size="mini" @click="openExaminesaleMan(scope.row)">查看订单</el-button>
                                </el-row>
                            </template>
                        </el-table-column>
                    </el-table>
                </el-row>
                <el-row class="paginationStyle"  >
                    <el-pagination background
                                   @size-change="changePageSize"
                                   @current-change="changeCurrentPage"
                                   :current-page="fxyList.currentPage"
                                   :page-sizes="[10, 20, 30, 50]"
                                   :page-size="fxyList.pageSize"
                                   layout="total, sizes, prev, pager, next, jumper"
                                   :total="fxyList.total">
                    </el-pagination>
                </el-row>
            </el-tab-pane>
            <el-tab-pane label="结算记录" name="second">
                <el-row style="display:flex;align-items: center;text-align: right;">
                    <el-col>
                        <el-form ref="formOrder" :model="formOrder" inline >
                            <el-form-item prop="userName">
                                <el-input v-model="formOrder.userName" placeholder="请输入结算人姓名"></el-input>
                            </el-form-item>
                            <el-button type="primary" @click="searchFormOrder" >搜索</el-button>
                            <el-button @click="resetFormOrder('formOrder')">重置</el-button>
                        </el-form>
                    </el-col>
                </el-row>
                <el-row class="table-style" >
                    <el-table :data="orderLevelList.rows"  :height="height" stripe:true  @sort-change="sortChange">
                        <el-table-column
                                prop="orderNo"
                                label="结算编号">
                        </el-table-column>
                        <el-table-column
                                prop="actualBalance"
                                label="结算金额">
                        </el-table-column>
                        <el-table-column
                                prop="setNum"
                                label="结算订单数">
                        </el-table-column>
                        <el-table-column
                                prop="setManNum"
                                label="结算人数">
                        </el-table-column>
                        <el-table-column
                                prop="setTime"
                                label="结算时间">
                        </el-table-column>
                        <el-table-column
                                prop="setMan"
                                label="结算人">
                        </el-table-column>
                        <el-table-column
                                label="结算方式">
                            <template slot-scope="scope">
                                <span v-if="scope.row.settlementWay == 1">线下结算</span>
                                <span v-if="scope.row.settlementWay == 2">微信余额结算</span>
                            </template>
                        </el-table-column>
                        <el-table-column
                                prop="remark"
                                label="备注">
                        </el-table-column>
                    </el-table>
                </el-row>
                <el-row class="paginationStyle"  >
                    <el-pagination background
                                   @size-change="changePageSizeOrder"
                                   @current-change="changeCurrentPageOrder"
                                   :current-page="orderLevelList.currentPage"
                                   :page-sizes="[10, 20, 30, 50]"
                                   :page-size="orderLevelList.pageSize"
                                   layout="total, sizes, prev, pager, next, jumper"
                                   :total="orderLevelList.total">
                    </el-pagination>
                </el-row>
            </el-tab-pane>
        </el-tabs>
    </el-row>
</div>
</body>
<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script>
<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script>
<script type="text/javascript" th:src="@{/plugin/bootstrap-3.3.5/js/bootstrap.min.js}"></script>
<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script>
<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script>
<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script>
<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
<script>
    //获取传输的USERID对象
    var userId = $.query.get("userId");
    var applyId = $.query.get("applyId");
    var app = new Vue({
        el: '#app',
        data: {
            activeName: 'first',
            height:'calc(100vh - 240px)',
            //基本数据
            basicdetail:{},
            //--分销订单
            //选中操作
            multipleSelection: [],
            orderIds:"",
            orderNums:0,
            // 条件查询结算状态
            orderTypeList:[
                {value:'',label:'全部'},
                {value:1,label:'待结算'},
                {value:2,label:'已结算'},
                {value:3,label:'已退款'}
            ],
            form:{
                userName:'',
                orderType:'',
                order:'',
                sort:''
            },
            fxyList:{
                rows:[],
                total:0,
                pageSize:10,
                currentPage:1,
            },
            //--结算记录
            formOrder:{
                userName:'',
                order:'',
                sort:''
            },
            orderLevelList:{
                rows:[],
                total:0,
                pageSize:10,
                currentPage:1,
            },
        },
        created: function () {
            this.loadInfo();
        },
        mounted: function () {
        },
        methods: {
            //加载分类
            loadInfo() {
                let _this = this;
                _this.loadFenxiaoOrderBasic();
                _this.loadFenxiaoOrderList();
            },
            //--基础数据
            loadFenxiaoOrderBasic() {
                let _this = this;
                let obj = {};
                AjaxProxy.requst({
                    app: _this,
                    data:obj,
                    url: basePath + '/fenXiao/fenXiaoOrder/loadFenxiaoOrderBasic',
                    callback: function (data) {
                        _this.basicdetail = data.mapInfo.basicdetail;
                    }
                });
            },
            //--结算记录
            loadSetOrderList() {
                let _this = this;
                let data=_this.getRequestParamOrder();
                data.pageSize=_this.orderLevelList.pageSize;
                data.pageNum=_this.orderLevelList.currentPage;
                AjaxProxy.requst({
                    app: _this,
                    data:data,
                    url: basePath + '/fenXiao/fenXiaoOrder/loadSetOrderList',
                    callback: function (data) {
                        _this.orderLevelList.rows = data.rows;
                        _this.orderLevelList.total = data.total;
                    }
                });
            },
            //查询参数
            getRequestParamOrder(){
                let _this = this;
                return   {
                    userName:_this.formOrder.userName,
                    order:_this.formOrder.order,
                    sort:_this.formOrder.sort,
                }
            },
            //查询
            searchFormOrder:function(){
                this.orderLevelList.currentPage=1;
                this.loadSetOrderList();
            },
            //重置
            resetFormOrder(formName) {
                this.$refs[formName].resetFields();
            },
            changePageSizeOrder(val) {
                this.orderLevelList.pageSize = val;
                this.loadSetOrderList();
            },
            changeCurrentPageOrder(val) {
                this.orderLevelList.currentPage = val;
                this.loadSetOrderList();
            },
            //--分销订单
            loadFenxiaoOrderList() {
                let _this = this;
                let data=_this.getRequestParam();
                data.pageSize=_this.fxyList.pageSize;
                data.pageNum=_this.fxyList.currentPage;
                AjaxProxy.requst({
                    app: _this,
                    data:data,
                    url: basePath + '/fenXiao/fenXiaoOrder/loadFenxiaoOrderList',
                    callback: function (data) {
                        _this.fxyList.rows = data.rows;
                        _this.fxyList.total = data.total;
                    }
                });
            },
            //查询参数
            getRequestParam(){
                let _this = this;
                return   {
                    userName:_this.form.userName,
                    order:_this.form.order,
                    sort:_this.form.sort,
                }
            },
            //查询
            search:function(){
                this.fxyList.currentPage=1;
                this.loadFenxiaoOrderList();
            },
            //重置
            resetForm(formName) {
                this.$refs[formName].resetFields();
            },
            changePageSize(val) {
                this.fxyList.pageSize = val;
                this.loadFenxiaoOrderList();
            },
            changeCurrentPage(val) {
                this.fxyList.currentPage = val;
                this.loadFenxiaoOrderList();
            },
            //排序
            sortChange:function (column){
                if(column.order){
                    if(column.order.indexOf("desc")){
                        this.form.order="desc";
                    }else{
                        this.form.order="asc";
                    }
                    this.form.sort=column.prop;
                    this.loadInfo();
                }
            },
            //选择
            handleSelectionChange(val) {
                let _this = this;
                _this.multipleSelection = val;
                //拼接出一个逗号隔开的字符串
                let submitDate = "";
                let orderNum = 0;
                for (let i = 0; i < _this.multipleSelection.length; i++) {
                    let order = _this.multipleSelection[i];
                    let orderId = order.id;
                    orderNum = orderNum + 1;
                    submitDate = submitDate +orderId+",";
                }
                _this.orderIds = submitDate;
                _this.orderNums = orderNum;
            },
            //批量结算
            setOrderDone() {
                if(this.orderNums > 0){
                    this.$confirm('是否结算选中的'+this.orderNums+'条数据?', '批量结算', {
                        distinguishCancelAndClose: true,//设置关闭按钮和不通过按钮的区别
                        confirmButtonText: '确认',
                        cancelButtonText: '取消',
                        type: 'info'
                    }).then(() => {
                        //通过
                        this.updateSetOrderDone();
                    }).catch(action => {
                        //不通过
                        if(action === 'cancel'){
                            console.log("cancel");
                        }else{
                            //关闭按钮
                            console.log("close");
                        }
                    });
                }else{
                    this.$message({
                        message: '至少需要选中一条数据',
                        type: 'warning'
                    });
                }
            },
            updateSetOrderDone(){
                let _this = this;
                let obj = {
                    orderIds: _this.orderIds,
                }
                AjaxProxy.requst({
                    app: _this,
                    data:obj,
                    url: basePath + '/fenXiao/fenXiaoOrder/updateSetOrderDone',
                    callback: function (data) {
                        _this.$message.success(data.info);
                        _this.loadFenxiaoOrderList();
                    }
                });
            },
        }
    })
</script>
</body>
</html>
zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html
@@ -385,6 +385,7 @@
            tgtpSubmit(){
                let _this = this;
                let imageUrl = _this.imageUrl;
                alert(imageUrl);
                let data= {
                    imageUrl:imageUrl,
                };
@@ -399,7 +400,9 @@
                });
            },
            handleAvatarSuccess(res, file) {
                this.imageUrl = URL.createObjectURL(file.raw);
                //this.imageUrl = URL.createObjectURL(file.raw);
                //alert(res.path);
                this.imageUrl = res.path;
            },
            beforeAvatarUpload(file) {
                const isJPG = file.type === 'image/jpeg';