From caf36dec5de803c5ce8912c08beaccb29598e2f6 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 15 Mar 2021 20:10:19 +0800 Subject: [PATCH] 分销员后台0315 --- zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UpdateSetOrderDoneDto.java | 17 + zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-order.html | 495 +++++++++++++++++++++++++++++ zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadFenxiaoOrderListDto.java | 19 + zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadFenxiaoOrderBasicDto.java | 14 zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanOrderDao.xml | 74 ++++ zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoSettingAction.java | 1 zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderDao.java | 13 zq-erp/src/main/java/com/matrix/system/fenxiao/dto/FyfaManageDto.java | 6 zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadSetOrderListDtoDto.java | 19 + zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoOrderAction.java | 94 +++++ zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html | 5 zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java | 8 zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanOrderService.java | 104 ++++++ zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadSetOrderListDtoVo.java | 36 ++ zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadFenxiaoOrderBasicVo.java | 20 + zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadFenxiaoOrderListVo.java | 41 ++ 16 files changed, 961 insertions(+), 5 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoOrderAction.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoOrderAction.java new file mode 100644 index 0000000..46cdaf9 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoOrderAction.java @@ -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); + } + + + + + + + + + + + + + + + + + + + +} 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 3ab2680..865f5da 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 @@ -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)) { diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderDao.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderDao.java index ac3d1f6..9d64d7a 100644 --- a/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderDao.java +++ b/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); + } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/FyfaManageDto.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/FyfaManageDto.java index 4966537..36a5df2 100644 --- a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/FyfaManageDto.java +++ b/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; } diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadFenxiaoOrderBasicDto.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadFenxiaoOrderBasicDto.java new file mode 100644 index 0000000..80a80fd --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadFenxiaoOrderBasicDto.java @@ -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; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadFenxiaoOrderListDto.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadFenxiaoOrderListDto.java new file mode 100644 index 0000000..7e287db --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadFenxiaoOrderListDto.java @@ -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; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadSetOrderListDtoDto.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadSetOrderListDtoDto.java new file mode 100644 index 0000000..b68eaff --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/LoadSetOrderListDtoDto.java @@ -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; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UpdateSetOrderDoneDto.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UpdateSetOrderDoneDto.java new file mode 100644 index 0000000..e3f1ca6 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/dto/UpdateSetOrderDoneDto.java @@ -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; + +} 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 e13c1cc..393ad09 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 @@ -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("操作成功"); diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanOrderService.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanOrderService.java index 8a6ca27..61115d1 100644 --- a/zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanOrderService.java +++ b/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("操作成功"); + } diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadFenxiaoOrderBasicVo.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadFenxiaoOrderBasicVo.java new file mode 100644 index 0000000..c2ac378 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadFenxiaoOrderBasicVo.java @@ -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; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadFenxiaoOrderListVo.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadFenxiaoOrderListVo.java new file mode 100644 index 0000000..d3c41d7 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadFenxiaoOrderListVo.java @@ -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; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadSetOrderListDtoVo.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadSetOrderListDtoVo.java new file mode 100644 index 0000000..c1d410d --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/vo/LoadSetOrderListDtoVo.java @@ -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; + +} diff --git a/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanOrderDao.xml b/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanOrderDao.xml index ead840d..be189d8 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanOrderDao.xml +++ b/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> \ No newline at end of file diff --git a/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-order.html b/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-order.html new file mode 100644 index 0000000..4f2f4e6 --- /dev/null +++ b/zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-order.html @@ -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> \ No newline at end of file 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 cc2ebb2..97bc047 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 @@ -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'; -- Gitblit v1.9.1