he2802 2 年 前
コミット
096a0e18c3
41 ファイル変更1149 行追加74 行削除
  1. 10 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityController.java
  2. 87 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionAdminCashWithdrawalController.java
  3. 11 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionCashWithdrawalController.java
  4. 0 8
      zhongzheng-api/src/main/java/com/zhongzheng/controller/wx/WxPayController.java
  5. 33 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/bo/DistributionCheckHandleBo.java
  6. 50 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/bo/DistributionCheckQueryBo.java
  7. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/domain/DistributionCashLog.java
  8. 56 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/domain/DistributionCheck.java
  9. 57 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/domain/DistributionRebate.java
  10. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/mapper/DistributionActivityMapper.java
  11. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/mapper/DistributionCashWithdrawalMapper.java
  12. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/mapper/DistributionCheckMapper.java
  13. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/mapper/DistributionRebateMapper.java
  14. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionActivityService.java
  15. 16 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionCashWithdrawalService.java
  16. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionCheckService.java
  17. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionRebateService.java
  18. 57 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/impl/DistributionActivityServiceImpl.java
  19. 142 5
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/impl/DistributionCashWithdrawalServiceImpl.java
  20. 15 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/impl/DistributionCheckServiceImpl.java
  21. 20 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/impl/DistributionRebateServiceImpl.java
  22. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionActivityPosterVo.java
  23. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionActivityVo.java
  24. 59 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionCheckDetailVo.java
  25. 41 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionCheckVo.java
  26. 49 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionGoodsListVo.java
  27. 4 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsAddBo.java
  28. 9 6
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java
  29. 65 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsRefundServiceImpl.java
  30. 50 6
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  31. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/mapper/SysUserMapper.java
  32. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/ISysUserService.java
  33. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/impl/SysUserServiceImpl.java
  34. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/service/impl/DistributionActivityTemplateServiceImpl.java
  35. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/vo/DistributionActivityTenantVo.java
  36. 150 39
      zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java
  37. 23 0
      zhongzheng-system/src/main/resources/mapper/modules/distribution/DistributionActivityMapper.xml
  38. 31 0
      zhongzheng-system/src/main/resources/mapper/modules/distribution/DistributionCashWithdrawalMapper.xml
  39. 8 0
      zhongzheng-system/src/main/resources/mapper/modules/distribution/DistributionCheckMapper.xml
  40. 7 0
      zhongzheng-system/src/main/resources/mapper/modules/distribution/DistributionRebateMapper.xml
  41. 11 0
      zhongzheng-system/src/main/resources/mapper/modules/system/SysUserMapper.xml

+ 10 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityController.java

@@ -10,6 +10,7 @@ import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsSer
 import com.zhongzheng.modules.distribution.service.IDistributionActivityService;
 import com.zhongzheng.modules.distribution.vo.DistributionActivityGoodsVo;
 import com.zhongzheng.modules.distribution.vo.DistributionActivityVo;
+import com.zhongzheng.modules.distribution.vo.DistributionGoodsListVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -103,6 +104,7 @@ public class DistributionActivityController extends BaseController {
     }
 
     /**
+<<<<<<< HEAD
      * 查询【请填写功能名称】列表
      */
     @ApiOperation("查询活动详情商品列表")
@@ -113,5 +115,13 @@ public class DistributionActivityController extends BaseController {
         List<DistributionActivityGoodsVo> list = iDistributionActivityGoodsService.getDetailGoodsList(bo);
         return getDataTable(list);
     }
+     /* 获取活动商品信息
+     */
+    @ApiOperation("获取活动商品信息")
+    @GetMapping("/goods/list/{distributionId}")
+    public AjaxResult<List<DistributionGoodsListVo>> getGoodsList(@PathVariable("distributionId") Long distributionId) {
+        return AjaxResult.success(iDistributionActivityService.getGoodsList(distributionId));
+    }
+
 
 }

+ 87 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionAdminCashWithdrawalController.java

@@ -0,0 +1,87 @@
+package com.zhongzheng.controller.distribution;
+
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.domain.model.LoginUser;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.SecurityUtils;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.TokenService;
+import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalAddBo;
+import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalQueryBo;
+import com.zhongzheng.modules.distribution.bo.DistributionCheckHandleBo;
+import com.zhongzheng.modules.distribution.bo.DistributionCheckQueryBo;
+import com.zhongzheng.modules.distribution.service.IDistributionCashWithdrawalService;
+import com.zhongzheng.modules.distribution.vo.DistributionCashWithdrawalVo;
+import com.zhongzheng.modules.distribution.vo.DistributionCheckDetailVo;
+import com.zhongzheng.modules.distribution.vo.DistributionCheckVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 分销业务员提现申请Controller
+ *
+ * @author ruoyi
+ * @date 2023-03-25
+ */
+
+@Api(value = "分销业务员提现申请控制器", tags = {"分销业务员提现申请管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/distribution/check")
+
+public class DistributionAdminCashWithdrawalController extends BaseController {
+
+    private final IDistributionCashWithdrawalService iDistributionCashWithdrawalService;
+
+    private final TokenService tokenService;
+
+    /**
+     * 查询分销业务员提现申请列表
+     */
+    @ApiOperation("查询分销业务员提现申请列表")
+    @PreAuthorize("@ss.hasPermi('system:withdrawal:list')")
+    @GetMapping("/list")
+    public TableDataInfo<DistributionCashWithdrawalVo> list(DistributionCashWithdrawalQueryBo bo) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setSellerId(loginUser.getUser().getSellerId());
+        startPage();
+        List<DistributionCashWithdrawalVo> list = iDistributionCashWithdrawalService.queryList(bo);
+        return getDataTable(list);
+    }
+
+
+    /**
+     * 获取分销业务员提现申请详细信息
+     */
+    @ApiOperation("获取分销业务员提现申请详细信息")
+    @PreAuthorize("@ss.hasPermi('system:withdrawal:query')")
+    @GetMapping("/{id}")
+    public AjaxResult<DistributionCashWithdrawalVo> getInfo(@PathVariable("id" ) Long id) {
+        return AjaxResult.success(iDistributionCashWithdrawalService.queryById(id));
+    }
+
+    /**
+     * 新增分销业务员提现申请
+     */
+    @ApiOperation("新增分销业务员提现申请")
+    @PreAuthorize("@ss.hasPermi('system:withdrawal:add')")
+    @Log(title = "分销业务员提现申请", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody DistributionCashWithdrawalAddBo bo) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setSellerId(loginUser.getUser().getSellerId());
+        return toAjax(iDistributionCashWithdrawalService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+
+
+}

+ 11 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionCashWithdrawalController.java

@@ -14,6 +14,14 @@ import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalQueryBo;
 import com.zhongzheng.modules.distribution.service.IDistributionCashWithdrawalService;
 import com.zhongzheng.modules.distribution.vo.DistributionCashWithdrawalVo;
 import com.zhongzheng.modules.user.entity.ClientLoginSeller;
+import com.zhongzheng.common.utils.SecurityUtils;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.TokenService;
+import com.zhongzheng.modules.distribution.bo.DistributionCheckHandleBo;
+import com.zhongzheng.modules.distribution.bo.DistributionCheckQueryBo;
+import com.zhongzheng.modules.distribution.service.IDistributionCashWithdrawalService;
+import com.zhongzheng.modules.distribution.vo.DistributionCheckDetailVo;
+import com.zhongzheng.modules.distribution.vo.DistributionCheckVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -29,10 +37,12 @@ import java.util.List;
  * @author ruoyi
  * @date 2023-03-25
  */
+
 @Api(value = "分销业务员提现申请控制器", tags = {"分销业务员提现申请管理"})
 @RequiredArgsConstructor(onConstructor_ = @Autowired)
 @RestController
 @RequestMapping("/distribution/withdrawal")
+
 public class DistributionCashWithdrawalController extends BaseController {
 
     private final IDistributionCashWithdrawalService iDistributionCashWithdrawalService;
@@ -78,4 +88,5 @@ public class DistributionCashWithdrawalController extends BaseController {
     }
 
 
+
 }

+ 0 - 8
zhongzheng-api/src/main/java/com/zhongzheng/controller/wx/WxPayController.java

@@ -1,15 +1,10 @@
 package com.zhongzheng.controller.wx;
 
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
-import com.zhongzheng.common.constant.Constants;
 import com.zhongzheng.common.core.domain.AjaxResult;
-import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.framework.web.service.WxLoginService;
 import com.zhongzheng.framework.web.service.WxTokenService;
-import com.zhongzheng.modules.user.entity.ClientLoginUser;
 import com.zhongzheng.modules.user.service.IUserService;
-import com.zhongzheng.modules.user.vo.UserVo;
-import com.zhongzheng.modules.wx.bo.WxLoginBody;
 import com.zhongzheng.modules.wx.bo.WxPayBody;
 import com.zhongzheng.modules.wx.service.IWxPayService;
 import io.swagger.annotations.Api;
@@ -17,9 +12,6 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.HashMap;
-import java.util.Map;
-
 @Api(tags ="微信支付操作管理")
 @ApiSupport(order = 2)
 @RestController

+ 33 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/bo/DistributionCheckHandleBo.java

@@ -0,0 +1,33 @@
+package com.zhongzheng.modules.distribution.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 分销业务员提现申请审核对象 distribution_cash_withdrawal
+ *
+ * @author ruoyi
+ * @date 2023-03-25
+ */
+@Data
+@ApiModel("分销业务员提现申请审核对象")
+public class DistributionCheckHandleBo implements Serializable {
+
+	@ApiModelProperty("提现ID")
+	private Integer cwId;
+	@ApiModelProperty("审核状态 1初审 2二审 3三审")
+	private Integer checkStatus;
+	@ApiModelProperty("审核结果:1同意,2拒绝")
+	private Integer checkResult;
+	@ApiModelProperty("审核金额")
+	private Integer checkCash;
+	@ApiModelProperty("审核意见")
+	private String checkReason;
+	@ApiModelProperty("审核人ID")
+	private Long auditorId;
+	@ApiModelProperty("审核人")
+	private String auditor;
+}

+ 50 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/bo/DistributionCheckQueryBo.java

@@ -0,0 +1,50 @@
+package com.zhongzheng.modules.distribution.bo;
+
+import com.zhongzheng.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * 分销业务员提现申请分页查询对象 distribution_cash_withdrawal
+ *
+ * @author ruoyi
+ * @date 2023-03-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("分销业务员提现申请分页查询对象")
+public class DistributionCheckQueryBo extends BaseEntity {
+
+	/** 分页大小 */
+	@ApiModelProperty("分页大小")
+	private Integer pageSize;
+	/** 当前页数 */
+	@ApiModelProperty("当前页数")
+	private Integer pageNum;
+	/** 排序列 */
+	@ApiModelProperty("排序列")
+	private String orderByColumn;
+	/** 排序的方向desc或者asc */
+	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
+	private String isAsc;
+
+	/** 申请开始时间 */
+	@ApiModelProperty("申请开始时间")
+	private Long applyStartTime;
+	/** 申请结束时间 */
+	@ApiModelProperty("申请结束时间")
+	private Long applyEndTime;
+	/** 提现单号 */
+	@ApiModelProperty("提现单号")
+	private String cwSn;
+	/** 姓名 */
+	@ApiModelProperty("姓名")
+	private String sellerName;
+	/** 提现状态 0未审核 1初审通过 2二审通过 3三审通过 4已打款 -1已拒绝 */
+	@ApiModelProperty("提现状态 0未审核 1初审通过 2二审通过 3三审通过 4已打款 -1已拒绝")
+	private List<Integer> cwStatus;
+}

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/domain/DistributionCashLog.java

@@ -33,7 +33,7 @@ private static final long serialVersionUID=1L;
     /** 现金额 */
     private BigDecimal newNum;
     /** 1冻结金额  2可提现金额 3已提现金额 */
-    private Long type;
+    private Integer type;
     /** 变化金额 */
     private BigDecimal diffNum;
     /** 关联订单编号,提现编号 */

+ 56 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/domain/DistributionCheck.java

@@ -0,0 +1,56 @@
+package com.zhongzheng.modules.distribution.domain;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 【请填写功能名称】对象 distribution_activity_goods
+ *
+ * @author ruoyi
+ * @date 2023-03-06
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("distribution_check")
+public class DistributionCheck implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** 主键 */
+    @TableId(value = "id")
+    private Long id;
+    /** 提现ID */
+    private Integer cwId;
+    /** 审核意见 */
+    private String checkReason;
+    /** 审核状态 1初审 2二审 3三审 */
+    private Integer checkStatus;
+    /** 审核结果:1同意,2拒绝 */
+    private Integer checkResult;
+    /** 审核人 */
+    private String auditor;
+    /** 审核人ID */
+    private Long auditorId;
+    /** 下一个审核状态:1初审 2二审 3三审 */
+    private Integer nextStatus;
+    /** 下一个审核人 */
+    private String nextAuditor;
+    /** 状态:1有效,0无效 */
+    private Integer status;
+    /** 添加时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+    /** 机构ID */
+    private Long tenantId;
+}

+ 57 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/domain/DistributionRebate.java

@@ -0,0 +1,57 @@
+package com.zhongzheng.modules.distribution.domain;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 【请填写功能名称】对象 distribution_activity_goods
+ *
+ * @author ruoyi
+ * @date 2023-03-06
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("distribution_rebate")
+public class DistributionRebate implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** 主键 */
+    @TableId(value = "id")
+    private Long id;
+    /** 分销活动编码 */
+    private String distributionCode;
+    /** 业务员ID */
+    private Long sellerId;
+    /** 业务员等级 */
+    private Integer sellerLevel;
+    /** 佣金 */
+    private BigDecimal cash;
+    /** 订单商品ID */
+    private Long orderGoodsId;
+    /** 佣金类型 */
+    private Integer profitType;
+    /** 佣金比例 */
+    private BigDecimal profit;
+    /** 状态:1有效,0无效 */
+    private Integer status;
+    /** 添加时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+    /** 机构ID */
+    private Long tenantId;
+    /** 备注 */
+    private String remark;
+}

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/mapper/DistributionActivityMapper.java

@@ -2,6 +2,10 @@ package com.zhongzheng.modules.distribution.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.distribution.domain.DistributionActivity;
+import com.zhongzheng.modules.distribution.vo.DistributionGoodsListVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 【请填写功能名称】Mapper接口
@@ -11,4 +15,5 @@ import com.zhongzheng.modules.distribution.domain.DistributionActivity;
  */
 public interface DistributionActivityMapper extends BaseMapper<DistributionActivity> {
 
+    List<DistributionGoodsListVo> getGoodsList(@Param("distributionId") Long distributionId);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/mapper/DistributionCashWithdrawalMapper.java

@@ -1,7 +1,11 @@
 package com.zhongzheng.modules.distribution.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.distribution.bo.DistributionCheckQueryBo;
 import com.zhongzheng.modules.distribution.domain.DistributionCashWithdrawal;
+import com.zhongzheng.modules.distribution.vo.DistributionCheckVo;
+
+import java.util.List;
 
 /**
  * 分销业务员提现申请Mapper接口
@@ -11,4 +15,5 @@ import com.zhongzheng.modules.distribution.domain.DistributionCashWithdrawal;
  */
 public interface DistributionCashWithdrawalMapper extends BaseMapper<DistributionCashWithdrawal> {
 
+    List<DistributionCheckVo> queryCheckList(DistributionCheckQueryBo bo);
 }

+ 13 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/mapper/DistributionCheckMapper.java

@@ -0,0 +1,13 @@
+package com.zhongzheng.modules.distribution.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.distribution.domain.DistributionCheck;
+
+/**
+ *
+ *
+ * @author ruoyi
+ * @date 2023-03-25
+ */
+public interface DistributionCheckMapper extends BaseMapper<DistributionCheck> {
+}

+ 13 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/mapper/DistributionRebateMapper.java

@@ -0,0 +1,13 @@
+package com.zhongzheng.modules.distribution.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.distribution.domain.DistributionRebate;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author ruoyi
+ * @date 2023-03-06
+ */
+public interface DistributionRebateMapper extends BaseMapper<DistributionRebate> {
+}

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionActivityService.java

@@ -7,6 +7,7 @@ import com.zhongzheng.modules.distribution.bo.DistributionActivityQueryBo;
 import com.zhongzheng.modules.distribution.bo.DistributionStatusEditBo;
 import com.zhongzheng.modules.distribution.domain.DistributionActivity;
 import com.zhongzheng.modules.distribution.vo.DistributionActivityVo;
+import com.zhongzheng.modules.distribution.vo.DistributionGoodsListVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -56,4 +57,6 @@ public interface IDistributionActivityService extends IService<DistributionActiv
 	boolean pullGoods(Long distributionId);
 
     void saveEntity(DistributionActivity dailyActivity);
+
+    List<DistributionGoodsListVo> getGoodsList(Long distributionId);
 }

+ 16 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionCashWithdrawalService.java

@@ -1,11 +1,11 @@
 package com.zhongzheng.modules.distribution.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalAddBo;
-import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalEditBo;
-import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalQueryBo;
+import com.zhongzheng.modules.distribution.bo.*;
 import com.zhongzheng.modules.distribution.domain.DistributionCashWithdrawal;
 import com.zhongzheng.modules.distribution.vo.DistributionCashWithdrawalVo;
+import com.zhongzheng.modules.distribution.vo.DistributionCheckDetailVo;
+import com.zhongzheng.modules.distribution.vo.DistributionCheckVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -49,4 +49,17 @@ public interface IDistributionCashWithdrawalService extends IService<Distributio
 	 * @return
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+	/**
+	 * 审核列表
+	 * @author change
+	 * @date 2023/3/27 10:15
+	 * @param bo
+	 * @return java.util.List<com.zhongzheng.modules.distribution.vo.DistributionCheckVo>
+	 */
+    List<DistributionCheckVo> queryCheckList(DistributionCheckQueryBo bo);
+
+    boolean checkHandle(DistributionCheckHandleBo bo);
+
+    List<DistributionCheckDetailVo> checkDetail(Long id);
 }

+ 13 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionCheckService.java

@@ -0,0 +1,13 @@
+package com.zhongzheng.modules.distribution.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.distribution.domain.DistributionCheck;
+
+/**
+ *
+ *
+ * @author ruoyi
+ * @date 2023-03-25
+ */
+public interface IDistributionCheckService extends IService<DistributionCheck> {
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionRebateService.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.distribution.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.distribution.domain.DistributionRebate;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author ruoyi
+ * @date 2023-03-06
+ */
+public interface IDistributionRebateService extends IService<DistributionRebate> {
+
+}

+ 57 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/impl/DistributionActivityServiceImpl.java

@@ -28,10 +28,13 @@ import com.zhongzheng.modules.distribution.service.IDistributionActivityPosterSe
 import com.zhongzheng.modules.distribution.service.IDistributionActivityService;
 import com.zhongzheng.modules.distribution.vo.DistributionActivityGoodsVo;
 import com.zhongzheng.modules.distribution.vo.DistributionActivityVo;
+import com.zhongzheng.modules.distribution.vo.DistributionGoodsListVo;
 import com.zhongzheng.modules.goods.bo.GoodsPullResultBo;
 import com.zhongzheng.modules.goods.bo.GoodsPullTenantBo;
 import com.zhongzheng.modules.goods.domain.Goods;
+import com.zhongzheng.modules.goods.domain.GoodsSpecAttributeRelation;
 import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.goods.service.IGoodsSpecAttributeRelationService;
 import com.zhongzheng.modules.top.distribution.domain.DistributionActivityTemplate;
 import com.zhongzheng.modules.top.distribution.domain.DistributionActivityTemplateGoods;
 import com.zhongzheng.modules.top.distribution.service.IDistributionActivityTemplateGoodsService;
@@ -48,6 +51,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -77,6 +81,8 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
     private ITopActivityGoodsPriceService iTopActivityGoodsPriceService;
     @Autowired
     private IDistributionActivityTemplateService iDistributionActivityTemplateService;
+    @Autowired
+    private IGoodsSpecAttributeRelationService goodsSpecAttributeRelationService;
 
     @Override
     public DistributionActivityVo queryById(Long distributionId){
@@ -134,6 +140,7 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
         voList.forEach(item -> {
             DistributionActivityPoster poster = iDistributionActivityPosterService.getById(item.getPosterId());
             item.setPosterTempName(poster.getName());
+            item.setPosterUrl(poster.getUrl());
         });
         return voList;
     }
@@ -172,6 +179,13 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
             List<DistributionActivityGoods> collect = bo.getGoodsList().stream().map(item -> {
                 DistributionActivityGoods entity = BeanUtil.toBean(item, DistributionActivityGoods.class);
                 entity.setDistributionId(add.getDistributionId());
+                if (ObjectUtils.isNotNull(item.getProfitType()) && item.getProfitType() == 1){
+                    //佣金是百分比
+                    entity.setProfitMax(item.getProfitMax().divide(new BigDecimal(100)));
+                    entity.setProfitOne(item.getProfitOne().divide(new BigDecimal(100)));
+                    entity.setProfitTwo(item.getProfitTwo().divide(new BigDecimal(100)));
+                    entity.setProfitThree(item.getProfitThree().divide(new BigDecimal(100)));
+                }
                 entity.setCreateTime(DateUtils.getNowTime());
                 entity.setUpdateTime(DateUtils.getNowTime());
                 return entity;
@@ -225,6 +239,13 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
             List<DistributionActivityGoods> collect = bo.getGoodsList().stream().map(item -> {
                 DistributionActivityGoods entity = BeanUtil.toBean(item, DistributionActivityGoods.class);
                 entity.setDistributionId(update.getDistributionId());
+                if (ObjectUtils.isNotNull(item.getProfitType()) && item.getProfitType() == 1){
+                    //佣金是百分比
+                    entity.setProfitMax(item.getProfitMax().divide(new BigDecimal(100)));
+                    entity.setProfitOne(item.getProfitOne().divide(new BigDecimal(100)));
+                    entity.setProfitTwo(item.getProfitTwo().divide(new BigDecimal(100)));
+                    entity.setProfitThree(item.getProfitThree().divide(new BigDecimal(100)));
+                }
                 entity.setCreateTime(DateUtils.getNowTime());
                 entity.setUpdateTime(DateUtils.getNowTime());
                 return entity;
@@ -401,4 +422,40 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
     public void saveEntity(DistributionActivity dailyActivity) {
         save(dailyActivity);
     }
+
+    @Override
+    public List<DistributionGoodsListVo> getGoodsList(Long distributionId) {
+        List<DistributionGoodsListVo> list = baseMapper.getGoodsList(distributionId);
+        if (CollectionUtils.isEmpty(list)){
+            return new ArrayList<>();
+        }
+        list.forEach(item -> {
+            //商品活动价格
+            ActivityGoodsPrice goodsPrice = iActivityGoodsPriceService
+                    .getOne(new LambdaQueryWrapper<ActivityGoodsPrice>()
+                    .eq(ActivityGoodsPrice::getActivityCode, item.getCode())
+                    .eq(ActivityGoodsPrice::getGoodsId, item.getGoodsId())
+                    .eq(ActivityGoodsPrice::getStatus, 1)
+                    .last("limit 1"));
+            if (ObjectUtils.isNotNull(goodsPrice)){
+                item.setStandPrice(goodsPrice.getGoodsPrice());
+            }
+
+            //多规格下的价格区间
+            if (ObjectUtils.isNotNull(item.getSpecTemplateId())){
+                List<GoodsSpecAttributeRelation> specAttributeRelations = goodsSpecAttributeRelationService
+                        .list(new LambdaQueryWrapper<GoodsSpecAttributeRelation>()
+                                .eq(GoodsSpecAttributeRelation::getSpecTemplateId, item.getSpecTemplateId()));
+                if (CollectionUtils.isNotEmpty(specAttributeRelations)){
+                    List<Long> goodsIds = specAttributeRelations.stream().filter(x -> ObjectUtils.isNotNull(x.getGoodsId())).map(GoodsSpecAttributeRelation::getGoodsId).collect(Collectors.toList());
+                    List<Goods> goodsList = iGoodsService.listByIds(goodsIds);
+                    //从小到大排序
+                    List<Goods> collect = goodsList.stream().filter(x -> ObjectUtils.isNotNull(x.getStandPrice())).sorted(Comparator.comparing(Goods::getStandPrice)).collect(Collectors.toList());
+                    item.setMinPrice(collect.get(0).getStandPrice());
+                    item.setMaxPrice(collect.get(collect.size() - 1).getStandPrice());
+                }
+            }
+        });
+        return list;
+    }
 }

+ 142 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/impl/DistributionCashWithdrawalServiceImpl.java

@@ -12,6 +12,19 @@ import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalEditBo;
 import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalQueryBo;
 import com.zhongzheng.modules.distribution.domain.DistributionCashWithdrawal;
 import com.zhongzheng.modules.distribution.domain.DistributionSeller;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.Page;
+import com.zhongzheng.common.core.domain.entity.SysRole;
+import com.zhongzheng.common.core.domain.entity.SysUser;
+import com.zhongzheng.common.exception.CustomException;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.distribution.bo.*;
+import com.zhongzheng.modules.distribution.domain.DistributionCashWithdrawal;
+import com.zhongzheng.modules.distribution.domain.DistributionCheck;
 import com.zhongzheng.modules.distribution.mapper.DistributionCashWithdrawalMapper;
 import com.zhongzheng.modules.distribution.service.IDistributionCashLogService;
 import com.zhongzheng.modules.distribution.service.IDistributionCashWithdrawalService;
@@ -19,16 +32,20 @@ import com.zhongzheng.modules.distribution.service.IDistributionSellerService;
 import com.zhongzheng.modules.distribution.vo.DistributionCashWithdrawalVo;
 import com.zhongzheng.modules.distribution.vo.DistributionSellerVo;
 import com.zhongzheng.modules.user.domain.User;
+import com.zhongzheng.modules.distribution.service.IDistributionCheckService;
+import com.zhongzheng.modules.distribution.vo.DistributionCashWithdrawalVo;
+import com.zhongzheng.modules.distribution.vo.DistributionCheckDetailVo;
+import com.zhongzheng.modules.distribution.vo.DistributionCheckVo;
+import com.zhongzheng.modules.system.domain.SysUserRole;
+import com.zhongzheng.modules.system.service.ISysRoleService;
+import com.zhongzheng.modules.system.service.ISysUserRoleService;
+import com.zhongzheng.modules.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.pagehelper.Page;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -46,6 +63,13 @@ public class DistributionCashWithdrawalServiceImpl extends ServiceImpl<Distribut
 
     @Autowired
     private IDistributionCashLogService iDistributionCashLogService;
+    private ISysRoleService iSysRoleService;
+    @Autowired
+    public ISysUserService iSysUserService;
+    @Autowired
+    public ISysUserRoleService iSysUserRoleService;
+    @Autowired
+    public IDistributionCheckService iDistributionCheckService;
 
     @Override
     public DistributionCashWithdrawalVo queryById(Long id){
@@ -164,4 +188,117 @@ public class DistributionCashWithdrawalServiceImpl extends ServiceImpl<Distribut
         }
         return this.removeByIds(ids);
     }
+
+    @Override
+    public List<DistributionCheckVo> queryCheckList(DistributionCheckQueryBo bo) {
+        List<DistributionCheckVo> checkVos = baseMapper.queryCheckList(bo);
+        return checkVos;
+    }
+
+    @Override
+    public boolean checkHandle(DistributionCheckHandleBo bo) {
+        DistributionCashWithdrawal warning = getById(bo.getCwId());
+        if (ObjectUtils.isNotNull(warning)){
+            throw new CustomException("提现记录获取失败!");
+        }
+//        validStatus(bo,warning);
+        DistributionCheck check = BeanUtil.toBean(bo, DistributionCheck.class);
+        check.setStatus(1);
+        check.setCreateTime(DateUtils.getNowTime());
+        check.setUpdateTime(DateUtils.getNowTime());
+        String roleKey1 = "edu";
+        String roleKey2 = "accounting";
+        String roleKey3 = "boss";
+        Integer checkStatus = 0;
+        if (bo.getCheckStatus() == 1){
+            //一审教务
+            validPermission(bo,roleKey1);
+            if (bo.getCheckResult() == 1){
+                //通过
+                addNextAuditor(check,2,roleKey2);
+                checkStatus = 1;
+            }else {
+                //拒绝 打回上一层
+                addNextAuditor(check,1,roleKey1);
+                checkStatus = 0;
+            }
+        }
+        if (bo.getCheckStatus() == 2){
+            //二审财务
+            validPermission(bo,roleKey2);
+            if (bo.getCheckResult() == 1){
+                //通过
+                addNextAuditor(check,3,roleKey3);
+                checkStatus = 2;
+            }else {
+                //拒绝 打回上一层
+                addNextAuditor(check,1,roleKey1);
+                checkStatus = 1;
+            }
+        }
+        if (bo.getCheckStatus() == 3){
+            //三审老板
+            validPermission(bo,roleKey3);
+            if (bo.getCheckResult() == 1){
+                //通过
+                checkStatus = 3;
+            }else {
+                //拒绝 打回上一层
+                addNextAuditor(check,2,roleKey2);
+                checkStatus = 2;
+            }
+        }
+        //保存审核记录
+        iDistributionCheckService.save(check);
+        //修改提现状态
+        warning.setCwStatus(checkStatus);
+        return updateById(warning);
+    }
+
+    @Override
+    public List<DistributionCheckDetailVo> checkDetail(Long id) {
+        List<DistributionCheck> list = iDistributionCheckService.list(new LambdaQueryWrapper<DistributionCheck>()
+                .eq(DistributionCheck::getCwId, id)
+                .eq(DistributionCheck::getStatus, 1));
+        if (CollectionUtils.isEmpty(list)){
+            return new ArrayList<>();
+        }
+        return list.stream().map(item -> BeanUtil.toBean(item,DistributionCheckDetailVo.class)).collect(Collectors.toList());
+    }
+
+    private void addNextAuditor(DistributionCheck check,Integer nextStatus,String nextKey){
+        check.setNextStatus(nextStatus);//初审
+        List<String> userNames = iSysUserService.getUserNameByRoleKey(nextKey);
+        if (CollectionUtils.isNotEmpty(userNames)){
+            check.setNextAuditor(userNames.stream().collect(Collectors.joining()));
+        }
+
+    }
+
+    private void validPermission(DistributionCheckHandleBo bo,String roleKey) {
+
+        SysRole edu = iSysRoleService.getOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleKey, roleKey));
+        if (ObjectUtils.isNull(edu)){
+            throw new CustomException("没有当前审核角色");
+        }
+        List<SysUserRole> list = iSysUserRoleService
+                .list(new LambdaQueryWrapper<SysUserRole>()
+                        .eq(SysUserRole::getRoleId, edu.getRoleId()));
+        if (CollectionUtils.isEmpty(list)){
+            throw new CustomException("没有当前审核账号");
+        }
+
+        List<SysUser> sysUsers = iSysUserService.listByIds(list.stream().map(SysUserRole::getUserId).collect(Collectors.toList()));
+        if (sysUsers.stream().noneMatch(item -> item.getUserId().equals(bo.getAuditorId()))){
+            throw new CustomException("该账号没有审核权限");
+        }
+    }
+
+    private void validStatus(DistributionCheckHandleBo bo,DistributionCashWithdrawal warning ) {
+        //校验审核状态
+        Integer checkStatus = bo.getCheckStatus();//当前状态
+//        if(checkStatus == 1 && warning.getStatus() ){
+//
+//        }
+    }
 }

+ 15 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/impl/DistributionCheckServiceImpl.java

@@ -0,0 +1,15 @@
+package com.zhongzheng.modules.distribution.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhongzheng.modules.distribution.domain.DistributionCheck;
+import com.zhongzheng.modules.distribution.mapper.DistributionCheckMapper;
+import com.zhongzheng.modules.distribution.service.IDistributionCheckService;
+
+/**
+ *
+ *
+ * @author ruoyi
+ * @date 2023-03-25
+ */
+public class DistributionCheckServiceImpl extends ServiceImpl<DistributionCheckMapper, DistributionCheck> implements IDistributionCheckService {
+}

+ 20 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/impl/DistributionRebateServiceImpl.java

@@ -0,0 +1,20 @@
+package com.zhongzheng.modules.distribution.service.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhongzheng.modules.distribution.domain.DistributionRebate;
+import com.zhongzheng.modules.distribution.mapper.DistributionRebateMapper;
+import com.zhongzheng.modules.distribution.service.IDistributionRebateService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-03-06
+ */
+@Service
+@DS("slave")
+public class DistributionRebateServiceImpl extends ServiceImpl<DistributionRebateMapper, DistributionRebate> implements IDistributionRebateService {
+
+}

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionActivityPosterVo.java

@@ -38,6 +38,8 @@ public class DistributionActivityPosterVo {
 	/** 备注 */
 	@ApiModelProperty("备注")
 	private String remark;
+	@ApiModelProperty("创建时间")
+	private Long createTime;
 
 	@ApiModelProperty("业务员海报base64")
 	private String posterImg;

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionActivityVo.java

@@ -67,7 +67,14 @@ public class DistributionActivityVo {
 	/** 创建人 */
 	@ApiModelProperty("创建人")
 	private String createBy;
+
+	@ApiModelProperty("创建时间")
+	private Long createTime;
+
 	@ApiModelProperty("活动商品集合")
 	private List<DistributionActivityGoodsVo> goodsList;
 
+	@ApiModelProperty("海报地址")
+	private String posterUrl;
+
 }

+ 59 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionCheckDetailVo.java

@@ -0,0 +1,59 @@
+package com.zhongzheng.modules.distribution.vo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 分销业务员提现申请分页查询对象 distribution_cash_withdrawal
+ *
+ * @author ruoyi
+ * @date 2023-03-25
+ */
+@Data
+@ApiModel("分销审核")
+public class DistributionCheckDetailVo implements Serializable {
+
+	/** 主键 */
+	@ApiModelProperty("主键")
+	private Long id;
+	/** 提现ID */
+	@ApiModelProperty("提现ID")
+	private Integer cwId;
+	/** 审核意见 */
+	@ApiModelProperty("审核意见")
+	private String checkReason;
+	/** 审核状态 1初审 2二审 3三审 */
+	@ApiModelProperty("审核状态 1初审 2二审 3三审 ")
+	private Integer checkStatus;
+	/** 审核结果:1同意,2拒绝 */
+	@ApiModelProperty("审核结果:1同意,2拒绝")
+	private Integer checkResult;
+	/** 审核人 */
+	@ApiModelProperty("审核人")
+	private String auditor;
+	/** 审核人ID */
+	@ApiModelProperty("审核人ID")
+	private Long auditorId;
+	/** 下一个审核状态:1初审 2二审 3三审 */
+	@ApiModelProperty("下一个审核状态:1初审 2二审 3三审")
+	private Integer nextStatus;
+	/** 下一个审核人 */
+	@ApiModelProperty("下一个审核人")
+	private String nextAuditor;
+	/** 状态:1有效,0无效 */
+	@ApiModelProperty("状态:1有效,0无效")
+	private Integer status;
+	/** 添加时间 */
+	@ApiModelProperty("添加时间")
+	private Long createTime;
+	/** 修改时间 */
+	@ApiModelProperty("修改时间")
+	private Long updateTime;
+
+}

+ 41 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionCheckVo.java

@@ -0,0 +1,41 @@
+package com.zhongzheng.modules.distribution.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 分销业务员提现申请分页查询对象 distribution_cash_withdrawal
+ *
+ * @author ruoyi
+ * @date 2023-03-25
+ */
+@Data
+@ApiModel("分销审核")
+public class DistributionCheckVo implements Serializable {
+
+	/** 提现单号 */
+	@ApiModelProperty("提现单号")
+	private String cwSn;
+	/** 申请时间 */
+	@ApiModelProperty("申请时间")
+	private Long applyTime;
+	/** 姓名 */
+	@ApiModelProperty("姓名")
+	private String sellerName;
+	/** 所属机构 */
+	@ApiModelProperty("所属机构")
+	private String tenantName;
+	/** 手机号 */
+	@ApiModelProperty("手机号")
+	private String telphone;
+	/** 金额 */
+	@ApiModelProperty("金额")
+	private BigDecimal cash;
+	/** 提现状态 0未审核 1初审通过 2二审通过 3三审通过 4已打款 -1已拒绝 */
+	@ApiModelProperty("提现状态 0未审核 1初审通过 2二审通过 3三审通过 4已打款 -1已拒绝")
+	private Integer cwStatus;
+}

+ 49 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionGoodsListVo.java

@@ -0,0 +1,49 @@
+package com.zhongzheng.modules.distribution.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+
+/**
+ * 【请填写功能名称】编辑对象 distribution_activity_goods
+ *
+ * @author ruoyi
+ * @date 2023-03-06
+ */
+@Data
+@ApiModel("分销商品列表对象")
+public class DistributionGoodsListVo {
+
+    @ApiModelProperty("分销活动ID")
+    private Long distributionId;
+    @ApiModelProperty("分销活动编码")
+    private String distributionCode;
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+    @ApiModelProperty("商品名")
+    private String goodsName;
+    @ApiModelProperty("商品类型")
+    private Integer goodsType;
+    @Excel(name = "标准价格")
+    @ApiModelProperty("标准价格")
+    private BigDecimal standPrice;
+    @ApiModelProperty("划线价格")
+    private BigDecimal LinePrice;
+    @ApiModelProperty("商品编码")
+    private String code;
+    @ApiModelProperty("年份")
+    private Long year;
+    @ApiModelProperty("封面地址")
+    private String coverUrl;
+    @ApiModelProperty("规格模板ID")
+    private Long specTemplateId;
+    @ApiModelProperty("最小价格")
+    private BigDecimal minPrice;
+    @ApiModelProperty("最大价格")
+    private BigDecimal maxPrice;
+
+}

+ 4 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsAddBo.java

@@ -2,10 +2,7 @@ package com.zhongzheng.modules.order.bo;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
-import java.util.Date;
-
 
 import java.math.BigDecimal;
 
@@ -86,4 +83,8 @@ public class OrderGoodsAddBo {
     /** 关闭原因 */
     @ApiModelProperty("关闭原因")
     private String closeReason;
+    @ApiModelProperty("分销码")
+    private String distributionCode;
+    @ApiModelProperty("分销链编码")
+    private String distributionLinkCode;
 }

+ 9 - 6
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java

@@ -1,16 +1,15 @@
 package com.zhongzheng.modules.order.domain;
 
-import com.baomidou.mybatisplus.annotation.*;
-import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
+
 import java.io.Serializable;
-import java.util.Date;
 import java.math.BigDecimal;
-import java.util.List;
-
-import com.zhongzheng.common.annotation.Excel;
 
 /**
  * 订单商品对象 order_goods
@@ -84,4 +83,8 @@ private static final long serialVersionUID=1L;
     private Long serviceEndTime;
     /** 关闭原因 */
     private String closeReason;
+    /** 分销编码 */
+    private String distributionCode;
+    /** 分销链编码 */
+    private String distributionLinkCode;
 }

+ 65 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsRefundServiceImpl.java

@@ -24,6 +24,14 @@ import com.zhongzheng.modules.activity.domain.ActivityOrder;
 import com.zhongzheng.modules.activity.service.IActivityOrderService;
 import com.zhongzheng.modules.course.domain.CourseBusiness;
 import com.zhongzheng.modules.course.service.ICourseBusinessService;
+import com.zhongzheng.modules.distribution.domain.DistributionActivity;
+import com.zhongzheng.modules.distribution.domain.DistributionCashLog;
+import com.zhongzheng.modules.distribution.domain.DistributionRebate;
+import com.zhongzheng.modules.distribution.domain.DistributionSeller;
+import com.zhongzheng.modules.distribution.service.IDistributionActivityService;
+import com.zhongzheng.modules.distribution.service.IDistributionCashLogService;
+import com.zhongzheng.modules.distribution.service.IDistributionRebateService;
+import com.zhongzheng.modules.distribution.service.IDistributionSellerService;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
@@ -109,6 +117,14 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
     private ISysUserService iSysUserService;
     @Autowired
     private IClassGradeService iClassGradeService;
+    @Autowired
+    private IDistributionActivityService iDistributionActivityService;
+    @Autowired
+    private IDistributionCashLogService iDistributionCashLogService;
+    @Autowired
+    private IDistributionSellerService iDistributionSellerService;
+    @Autowired
+    private IDistributionRebateService iDistributionRebateService;
     @Value("${oldStudySys.shareCanclePath}")
     private String SHARE_CANCLE_PATH;
 
@@ -193,6 +209,18 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
         if(order.getOrderFrom()!=2&&order.getOrderFrom()!=3){
             throw new CustomException("不支持非客户端订单退款");
         }
+        //是否分销订单退款
+        if (StringUtils.isNotBlank(orderGoods.getDistributionCode())){
+            DistributionActivity dailyActivity = iDistributionActivityService
+                    .getOne(new LambdaQueryWrapper<DistributionActivity>()
+                            .eq(DistributionActivity::getCode, orderGoods.getDistributionCode()));
+            //佣金冻结天数
+            Integer freezingPeriod = dailyActivity.getFreezingPeriod();
+            Long time = freezingPeriod * 86400L + orderGoods.getCreateTime();
+            if (DateUtils.getNowTime() > time){
+                throw new CustomException(String.format("活动商品已超过退款期限【%s天】,无法退款",freezingPeriod));
+            }
+        }
         //订单商品
         Goods goods = iGoodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getGoodsId,bo.getGoodsId()));
         if(goods.getGoodsType()==1){
@@ -631,6 +659,10 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
                     if("OK".equals(payResult.get("return_msg"))&&Validator.isNotEmpty(payResult.get("refund_id"))){
                         OrderGoods orderGoods = iOrderGoodsService.getById(bo.getOrderGoodsId());
                         Goods goods = iGoodsService.getById(bo.getGoodsId());
+                        if (StringUtils.isNotBlank(orderGoods.getDistributionCode())){
+                            //处理分销订单
+                            distributionRefund(orderGoods);
+                        }
                         refundCall(payResult.get("refund_id"),bo.getRefundId(),orderGoods.getOrderGoodsId(),order,goods.getGoodsType(),orderGoods.getGradeId(),bo.getUserId(),goods.getGoodsId());
                         //关闭C端用户的分销返利
                         shareClientCancelOldSys(order,orderGoods,bo.getRealRefundFee());
@@ -658,6 +690,39 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
         return true;
     }
 
+    private void distributionRefund(OrderGoods orderGoods) {
+        List<DistributionCashLog> cashLogList = iDistributionCashLogService
+                .list(new LambdaQueryWrapper<DistributionCashLog>()
+                .eq(DistributionCashLog::getRelatedSn, orderGoods.getOrderSn())
+                .eq(DistributionCashLog::getStatus, 1));
+        if (CollectionUtils.isEmpty(cashLogList)){
+            return;
+        }
+        cashLogList.forEach(item -> {
+            DistributionRebate rebate = iDistributionRebateService
+                    .getOne(new LambdaQueryWrapper<DistributionRebate>()
+                    .eq(DistributionRebate::getSellerId, item.getSellerId())
+                    .eq(DistributionRebate::getStatus, 1)
+                    .eq(DistributionRebate::getOrderGoodsId, orderGoods.getOrderGoodsId())
+                    .last("limit 1"));
+            if (ObjectUtils.isNull(rebate)){
+                return;
+            }
+            BigDecimal cash = rebate.getCash().setScale(2,BigDecimal.ROUND_HALF_UP);
+            DistributionSeller seller = iDistributionSellerService.getById(item.getSellerId());
+            BigDecimal freezeCash = seller.getFreezeCash().subtract(cash).setScale(2,BigDecimal.ROUND_HALF_UP);
+            item.setOldNum(seller.getFreezeCash());
+            item.setNewNum(freezeCash);
+            item.setDiffNum(new BigDecimal(String.format("-%s",cash)));
+            item.setRemark(item.getRemark()+","+String.format("退款商品【】退款利润【】",orderGoods.getGoodsId(),cash));
+            item.setUpdateTime(DateUtils.getNowTime());
+            seller.setFreezeCash(freezeCash);
+            seller.setUpdateTime(DateUtils.getNowTime());
+            iDistributionSellerService.updateById(seller);
+        });
+        iDistributionCashLogService.updateBatchById(cashLogList);
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean firstPeriod(List<OrderGoodsRefundEditBo> bos) {

+ 50 - 6
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -18,7 +18,9 @@ import com.zhongzheng.common.type.EncryptHandler;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.ToolsUtils;
+import com.zhongzheng.modules.activity.domain.ActivityGoodsPrice;
 import com.zhongzheng.modules.activity.domain.ActivityOrder;
+import com.zhongzheng.modules.activity.service.IActivityGoodsPriceService;
 import com.zhongzheng.modules.activity.service.IActivityOrderService;
 import com.zhongzheng.modules.base.bo.ConsoleQueryBo;
 import com.zhongzheng.modules.base.service.IProfileTpService;
@@ -32,6 +34,9 @@ import com.zhongzheng.modules.course.service.ICourseMenuService;
 import com.zhongzheng.modules.course.service.ICourseSubjectService;
 import com.zhongzheng.modules.course.vo.CourseBusinessVo;
 import com.zhongzheng.modules.course.vo.CourseModuleFreeExamVo;
+import com.zhongzheng.modules.distribution.domain.DistributionActivity;
+import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsService;
+import com.zhongzheng.modules.distribution.service.IDistributionActivityService;
 import com.zhongzheng.modules.goods.bo.GoodsAttachedAddBo;
 import com.zhongzheng.modules.goods.bo.GoodsBankAddBo;
 import com.zhongzheng.modules.goods.bo.GoodsFreeBankAddBo;
@@ -155,6 +160,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Autowired
     private IActivityOrderService iActivityOrderService;
 
+    @Autowired
+    private IDistributionActivityService iDistributionActivityService;
+
+    @Autowired
+    private IDistributionActivityGoodsService iDistributionActivityGoodsService;
+
+    @Autowired
+    private IActivityGoodsPriceService iActivityGoodsPriceService;
+
 
     @Override
     public OrderVo queryById(Long orderId) {
@@ -786,14 +800,44 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             orderGoods.setCompany(bo.getOrderStudent().getCompany());*/
             //成交价
             orderGoods.setStatus(1);
-            orderGoods.setGoodsRealPrice(goods.getStandPrice());
-            orderGoods.setGoodsPrice(goods.getStandPrice());
             orderGoods.setCreateTime(DateUtils.getNowTime());
             orderGoods.setUpdateTime(DateUtils.getNowTime());
-            //订单价格不计算优惠
-            totalPrice = totalPrice.add(goods.getStandPrice());
-            //暂不计算优惠券
-            payPrice = payPrice.add(goods.getStandPrice());
+            if (StringUtils.isNotBlank(g.getDistributionCode())){
+                //分销订单
+                DistributionActivity activity = iDistributionActivityService
+                        .getOne(new LambdaQueryWrapper<DistributionActivity>()
+                        .eq(DistributionActivity::getCode, g.getDistributionCode())
+                        .eq(DistributionActivity::getStatus, 1));
+                if (ObjectUtils.isNull(activity)){
+                    throw new CustomException(String.format("分销订单创建失败【%s】",g.getDistributionCode()));
+                }
+                if (DateUtils.getNowTime() < activity.getStartTime() || DateUtils.getNowTime() > activity.getEndTime()){
+                    throw new CustomException(String.format("分销活动已结束【%s】",g.getDistributionCode()));
+                }
+                //活动价格
+                ActivityGoodsPrice goodsPrice = iActivityGoodsPriceService
+                        .getOne(new LambdaQueryWrapper<ActivityGoodsPrice>()
+                        .eq(ActivityGoodsPrice::getGoodsId, g.getGoodsId())
+                        .eq(ActivityGoodsPrice::getActivityCode, activity.getCode()));
+                if (ObjectUtils.isNull(goodsPrice)){
+                    throw new CustomException(String.format("分销活动价格拉取失败【%s】",g.getDistributionCode()));
+                }
+                orderGoods.setDistributionCode(activity.getCode());
+                orderGoods.setDistributionLinkCode(g.getDistributionLinkCode());
+                orderGoods.setGoodsRealPrice(goodsPrice.getGoodsPrice());
+                orderGoods.setGoodsPrice(goodsPrice.getGoodsPrice());
+                //订单价格不计算优惠
+                totalPrice = totalPrice.add(goodsPrice.getGoodsPrice());
+                //暂不计算优惠券
+                payPrice = payPrice.add(goodsPrice.getGoodsPrice());
+            }else {
+                orderGoods.setGoodsRealPrice(goods.getStandPrice());
+                orderGoods.setGoodsPrice(goods.getStandPrice());
+                //订单价格不计算优惠
+                totalPrice = totalPrice.add(goods.getStandPrice());
+                //暂不计算优惠券
+                payPrice = payPrice.add(goods.getStandPrice());
+            }
             boolean orderGoodsRs = iOrderGoodsService.save(orderGoods);
 
             boolean canRepeatBuy = false;

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/mapper/SysUserMapper.java

@@ -45,4 +45,6 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 
     @InterceptorIgnore(tenantLine = "true")
     Integer saveSysUser(SysUser admin);
+
+    List<String> getUserNameByRoleKey(@Param("roleKey") String roleKey);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/ISysUserService.java

@@ -172,4 +172,6 @@ public interface ISysUserService extends IService<SysUser> {
     public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
 
     SysUser updateLoginTimeIp(Long userId);
+
+    List<String> getUserNameByRoleKey(String roleKey2);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/impl/SysUserServiceImpl.java

@@ -498,4 +498,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return user;
     }
 
+    @Override
+    public List<String> getUserNameByRoleKey(String roleKey2) {
+        return baseMapper.getUserNameByRoleKey(roleKey2);
+    }
+
 }

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/service/impl/DistributionActivityTemplateServiceImpl.java

@@ -131,7 +131,7 @@ public class DistributionActivityTemplateServiceImpl extends ServiceImpl<Distrib
                 List<DistributionActivityTenantVo> activityTenantVos = relationList.stream().map(item -> {
                     SysTenant tenant = iSysTenantService.getById(item.getTenantId());
                     DistributionActivityTenantVo tenantVo = new DistributionActivityTenantVo();
-                    tenantVo.setTenantId(tenant.getTenantId());
+                    tenantVo.setTenantId(tenant.getTenantId().toString());
                     tenantVo.setTenantName(tenant.getTenantName());
                     tenantVo.setAddress(tenant.getAddress());
                     tenantVo.setStatus(tenant.getStatus());
@@ -251,7 +251,7 @@ public class DistributionActivityTemplateServiceImpl extends ServiceImpl<Distrib
             List<DistributionActivityTemplateRelation> entitys = bo.getTenantList().stream().map(tenant -> {
                 DistributionActivityTemplateRelation entity = new DistributionActivityTemplateRelation();
                 entity.setDistributionTempId(tempId);
-                entity.setTenantId(tenant.getTenantId());
+                entity.setTenantId(Long.valueOf(tenant.getTenantId()));
                 entity.setCreateTime(DateUtils.getNowTime());
                 entity.setUpdateTime(DateUtils.getNowTime());
                 return entity;

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/vo/DistributionActivityTenantVo.java

@@ -13,7 +13,7 @@ import java.io.Serializable;
 public class DistributionActivityTenantVo implements Serializable {
 
     @ApiModelProperty("机构ID")
-    private Long tenantId;
+    private String tenantId;
 
     @ApiModelProperty("机构名称")
     private String tenantName;

+ 150 - 39
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java

@@ -1,21 +1,12 @@
 package com.zhongzheng.modules.wx.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.Validator;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.http.HttpStatus;
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.github.pagehelper.Page;
 import com.google.zxing.BarcodeFormat;
 import com.google.zxing.client.j2se.MatrixToImageWriter;
 import com.google.zxing.common.BitMatrix;
@@ -23,15 +14,19 @@ import com.google.zxing.qrcode.QRCodeWriter;
 import com.zhongzheng.common.config.WxSmallConfig;
 import com.zhongzheng.common.core.redis.RedisCache;
 import com.zhongzheng.common.exception.CustomException;
-import com.zhongzheng.common.utils.*;
+import com.zhongzheng.common.utils.AES;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.common.utils.http.HttpUtils;
 import com.zhongzheng.common.utils.ip.IpUtils;
-import com.zhongzheng.common.utils.polyv.PolyvUtils;
-import com.zhongzheng.common.utils.wxpay.*;
+import com.zhongzheng.common.utils.wxpay.WXPay;
+import com.zhongzheng.common.utils.wxpay.WXPayConstants;
+import com.zhongzheng.common.utils.wxpay.WXPayRequest;
+import com.zhongzheng.common.utils.wxpay.WXPayUtil;
 import com.zhongzheng.modules.activity.domain.ActivityOrder;
+import com.zhongzheng.modules.activity.service.IActivityGoodsPriceService;
 import com.zhongzheng.modules.activity.service.IActivityOrderService;
-import com.zhongzheng.modules.base.service.IShoppingCartService;
-import com.zhongzheng.modules.course.domain.Course;
 import com.zhongzheng.modules.course.domain.CourseBusiness;
 import com.zhongzheng.modules.course.domain.CourseEducationType;
 import com.zhongzheng.modules.course.domain.CourseProjectType;
@@ -39,18 +34,15 @@ import com.zhongzheng.modules.course.service.ICourseBusinessService;
 import com.zhongzheng.modules.course.service.ICourseEducationTypeService;
 import com.zhongzheng.modules.course.service.ICourseProjectTypeService;
 import com.zhongzheng.modules.course.service.ICourseService;
-import com.zhongzheng.modules.exam.domain.ExamNumber;
-import com.zhongzheng.modules.exam.service.IExamNoteService;
-
+import com.zhongzheng.modules.distribution.domain.*;
+import com.zhongzheng.modules.distribution.service.*;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
-import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.domain.ClassGradeUserTemp;
 import com.zhongzheng.modules.grade.domain.StudyCountLog;
 import com.zhongzheng.modules.grade.service.IClassGradeUserService;
 import com.zhongzheng.modules.grade.service.IClassGradeUserTempService;
 import com.zhongzheng.modules.grade.service.IStudyCountLogService;
-import com.zhongzheng.modules.order.bo.OrderGoodsQueryBo;
 import com.zhongzheng.modules.order.bo.OrderShareMoneyAddBo;
 import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.domain.OrderGoods;
@@ -59,31 +51,16 @@ import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.order.service.IOrderPayService;
 import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.order.service.IOrderShareMoneyService;
-import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderShareGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderShareToOldVo;
-import com.zhongzheng.modules.polyv.bo.PolyvVideoAddBo;
-import com.zhongzheng.modules.polyv.bo.PolyvVideoEditBo;
-import com.zhongzheng.modules.polyv.bo.PolyvVideoQueryBo;
-import com.zhongzheng.modules.polyv.domain.PolyvVideDo;
-import com.zhongzheng.modules.polyv.domain.PolyvVideo;
-import com.zhongzheng.modules.polyv.domain.TokenResponse;
-import com.zhongzheng.modules.polyv.mapper.PolyvVideoMapper;
-import com.zhongzheng.modules.polyv.service.IPolyvVideoService;
-import com.zhongzheng.modules.polyv.vo.PolyvVideoQuerVo;
-import com.zhongzheng.modules.polyv.vo.PolyvVideoVo;
 import com.zhongzheng.modules.system.service.ISysConfigService;
-import com.zhongzheng.modules.user.bo.OrderPossessUserAddBo;
-import com.zhongzheng.modules.user.bo.UserExamGoodsAddBo;
 import com.zhongzheng.modules.user.bo.UserExamGoodsQueryBo;
 import com.zhongzheng.modules.user.bo.UserExamGoodsSupplementAddBo;
-import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.domain.UserExamGoods;
 import com.zhongzheng.modules.user.service.*;
 import com.zhongzheng.modules.user.vo.UserExamGoodsVo;
 import com.zhongzheng.modules.user.vo.UserVo;
 import com.zhongzheng.modules.wx.service.IWxPayService;
-import com.zhongzheng.modules.wx.vo.WxPayVo;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -92,16 +69,11 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.PostConstruct;
-import java.awt.image.BufferedImage;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
-
-import static com.squareup.okhttp.internal.Util.md5Hex;
 
 /**
  * 保利威视频信息Service业务层处理
@@ -207,6 +179,27 @@ public class WxPayServiceImpl implements IWxPayService {
     @Autowired
     private IActivityOrderService iActivityOrderService;
 
+    @Autowired
+    private IDistributionActivityService iDistributionActivityService;
+
+    @Autowired
+    private IDistributionActivityGoodsService iDistributionActivityGoodsService;
+
+    @Autowired
+    private IActivityGoodsPriceService iActivityGoodsPriceService;
+
+    @Autowired
+    private IDistributionLinkService iDistributionLinkService;
+
+    @Autowired
+    private IDistributionRebateService iDistributionRebateService;
+
+    @Autowired
+    private IDistributionCashLogService iDistributionCashLogService;
+
+    @Autowired
+    private IDistributionSellerService iDistributionSellerService;
+
     private String gzh_tokenUrl = "https://api.weixin.qq.com/cgi-bin/token";
 
     private String gzh_tokenParam = "grant_type=client_credential&appid=%s&secret=%s";
@@ -481,6 +474,10 @@ public class WxPayServiceImpl implements IWxPayService {
                     updateUserExamGoods(g, order);
                     //商品是否绑定活动模考
 //                    iUserMockSubscribeService.addActivityMock(g.getGoodsId(),order.getUserId());
+                    if (ObjectUtils.isNotNull(g.getDistributionCode())){
+                        //分销返利
+                        distributionRebate(g);
+                    }
                 }
                 shareToOldSys(order,goodsList);
             }
@@ -496,6 +493,120 @@ public class WxPayServiceImpl implements IWxPayService {
         return true;
     }
 
+    private void distributionRebate(OrderGoods g) {
+        //分销订单处理
+        DistributionActivity activity = iDistributionActivityService
+                .getOne(new LambdaQueryWrapper<DistributionActivity>()
+        .eq(DistributionActivity::getCode,g.getDistributionCode())
+        .eq(DistributionActivity::getStatus,1));
+        if (ObjectUtils.isNull(activity)){
+            log.error(String.format("分销返佣失败:活动信息获取失败【%s】",g.getDistributionCode()));
+            return;
+        }
+        DistributionActivityGoods activityGoods = iDistributionActivityGoodsService
+                .getOne(new LambdaQueryWrapper<DistributionActivityGoods>()
+                .eq(DistributionActivityGoods::getDistributionId, activity.getDistributionId())
+                .eq(DistributionActivityGoods::getGoodsId, g.getGoodsId())
+                .eq(DistributionActivityGoods::getStatus, 1)
+                .last("limit 1"));
+        if (ObjectUtils.isNull(activityGoods)){
+            log.error(String.format("分销返佣失败:活动商品信息获取失败【%s】【goodsId:%s】",g.getDistributionCode(),g.getGoodsId()));
+            return;
+        }
+        //获取业务员
+        List<DistributionLink> linkList = iDistributionLinkService
+                .list(new LambdaQueryWrapper<DistributionLink>()
+                .eq(DistributionLink::getLinkCode, g.getDistributionLinkCode())
+                .eq(DistributionLink::getDistributionId, activity.getDistributionId())
+                .orderByAsc(DistributionLink::getCreateTime)
+                .last("limit 3"));
+        if (CollectionUtils.isEmpty(linkList)){
+            log.error(String.format("分销返佣失败:活动链条获取失败【%s】【linkCode:%s】",g.getDistributionCode(),g.getDistributionCode()));
+            return;
+        }
+        //佣金
+        List<BigDecimal> priceList = new ArrayList<>();
+        //比例
+        List<BigDecimal> profitList = new ArrayList<>();
+        switch (activityGoods.getProfitType()){
+            case 1://百分比
+                BigDecimal profitMax = g.getGoodsRealPrice().multiply(activityGoods.getProfitMax());
+                priceList.add(profitMax.multiply(activityGoods.getProfitOne()).setScale(2,BigDecimal.ROUND_HALF_UP));
+                priceList.add(profitMax.multiply(activityGoods.getProfitTwo()).setScale(2,BigDecimal.ROUND_HALF_UP));
+                priceList.add(profitMax.multiply(activityGoods.getProfitThree()).setScale(2,BigDecimal.ROUND_HALF_UP));
+                profitList.add(activityGoods.getProfitOne());
+                profitList.add(activityGoods.getProfitTwo());
+                profitList.add(activityGoods.getProfitThree());
+                break;
+            case 2://固定金额
+                priceList.add(activityGoods.getProfitOne());
+                priceList.add(activityGoods.getProfitTwo());
+                priceList.add(activityGoods.getProfitThree());
+                profitList.add(activityGoods.getProfitOne());
+                profitList.add(activityGoods.getProfitTwo());
+                profitList.add(activityGoods.getProfitThree());
+                break;
+            default :
+                break;
+        }
+        //佣金冻结期是否大于0天
+        Boolean flag = activity.getFreezingPeriod() > 0;
+        for (int i = 0; i < linkList.size(); i++) {
+            DistributionLink linkLink = linkList.get(i);
+            BigDecimal cash = priceList.get(i);
+            //订单
+            DistributionRebate distributionRebate = new DistributionRebate();
+            distributionRebate.setDistributionCode(g.getDistributionCode());
+            distributionRebate.setOrderGoodsId(g.getOrderGoodsId());
+            distributionRebate.setCash(cash);
+            distributionRebate.setSellerId(linkLink.getSellerId());
+            distributionRebate.setSellerLevel(i + 1);
+            distributionRebate.setProfitType(activityGoods.getProfitType());
+            distributionRebate.setProfit(profitList.get(i));
+            distributionRebate.setCreateTime(DateUtils.getNowTime());
+            distributionRebate.setUpdateTime(DateUtils.getNowTime());
+            iDistributionRebateService.save(distributionRebate);
+            //业务员
+            DistributionCashLog cashLog = iDistributionCashLogService
+                    .getOne(new LambdaQueryWrapper<DistributionCashLog>()
+                    .eq(DistributionCashLog::getSellerId, linkLink.getSellerId())
+                    .eq(DistributionCashLog::getRelatedSn, g.getOrderSn())
+                    .last("limit 1"));
+            DistributionCashLog log = new DistributionCashLog();
+            if (ObjectUtils.isNotNull(cashLog)){
+                log.setId(cashLog.getId());
+                log.setDiffNum(cashLog.getDiffNum().add(cash));
+                log.setRemark(cashLog.getRemark()+","+String.format("商品【%s】利润【%s】",g.getGoodsId(),cash));
+            }else {
+                log.setDiffNum(cash);
+                log.setRemark(String.format("商品【%s】利润【%s】",g.getGoodsId(),cash));
+            }
+            log.setSellerId(linkLink.getSellerId());
+            //业务员老金额
+            DistributionSeller seller = iDistributionSellerService.getById(linkLink.getSellerId());
+
+            log.setRelatedSn(g.getOrderSn());
+            if (flag){
+                log.setOldNum(ObjectUtils.isNotNull(cashLog) && ObjectUtils.isNotNull(cashLog.getOldNum())?cashLog.getOldNum():seller.getFreezeCash());
+                log.setType(1);
+                log.setNewNum(seller.getFreezeCash().add(cash));
+                seller.setFreezeCash(seller.getFreezeCash().add(cash));
+            }else {
+                log.setOldNum(ObjectUtils.isNotNull(cashLog) && ObjectUtils.isNotNull(cashLog.getOldNum())?cashLog.getOldNum():seller.getCash());
+                log.setType(2);
+                log.setNewNum(seller.getCash().add(cash));
+                seller.setCash(seller.getCash().add(cash));
+            }
+            log.setCreateTime(DateUtils.getNowTime());
+            log.setUpdateTime(DateUtils.getNowTime());
+
+            iDistributionCashLogService.saveOrUpdate(log);
+            //修改业务员金额
+            iDistributionSellerService.updateById(seller);
+        }
+
+    }
+
     //设置服务期
     @Override
     public OrderGoods setServiceTime(OrderGoods g) {

+ 23 - 0
zhongzheng-system/src/main/resources/mapper/modules/distribution/DistributionActivityMapper.xml

@@ -4,5 +4,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhongzheng.modules.distribution.mapper.DistributionActivityMapper">
 
+    <select id="getGoodsList" parameterType="java.lang.Long" resultType="com.zhongzheng.modules.distribution.vo.DistributionGoodsListVo">
+        SELECT
+        da.distribution_id,
+        da.`code` as distributionCode,
+        g.goods_id,
+        g.goods_name,
+        g.goods_type,
+        g.line_price,
+        g.CODE,
+        g.YEAR,
+        g.cover_url,
+        g.spec_template_id
+        FROM
+        distribution_activity da
+        LEFT JOIN distribution_activity_goods dag ON da.distribution_id = dag.distribution_id
+        LEFT JOIN goods g ON dag.goods_id = g.goods_id
+        WHERE
+        da.`status` = 1
+        AND g.`status` = 1
+        <if test = "distributionId != null and distributionId != ''" >
+            AND da.distribution_id = #{distributionId}
+        </if >
+    </select>
 
 </mapper>

+ 31 - 0
zhongzheng-system/src/main/resources/mapper/modules/distribution/DistributionCashWithdrawalMapper.xml

@@ -20,5 +20,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="applyTime" column="apply_time"/>
     </resultMap>
 
+    <select id="queryCheckList" parameterType="com.zhongzheng.modules.distribution.bo.DistributionCheckQueryBo" resultType="com.zhongzheng.modules.distribution.vo.DistributionCheckVo">
+        SELECT
+            dcw.apply_time,
+            dcw.cw_sn,
+            dcw.cash,
+            dcw.cw_status,
+            ds.realname as sellerName,
+            ds.telphone
+        FROM distribution_cash_withdrawal dcw LEFT JOIN distribution_seller ds ON dcm.seller_id = ds.seller_id
+        WHERE dcw.`status` = 1
+        <if test="cwStatus != null and cwStatus.size()!=0 ">
+            AND dcw.cw_status in
+            <foreach collection="status" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="applyStartTime != null and applyStartTime != ''">
+            AND dcw.apply_time <![CDATA[  >=  ]]> #{applyStartTime}
+        </if>
+        <if test="applyEndTime != null and applyEndTime != ''">
+            AND dcw.apply_time <![CDATA[  <=  ]]> #{applyEndTime}
+        </if>
+        <if test="cwSn != null and cwSn != ''">
+            AND dcw.cw_sn like concat('%', #{cwSn}, '%')
+        </if>
+        <if test="sellerName != null and sellerName != ''">
+            AND ds.realname like concat('%', #{sellerName}, '%')
+        </if>
+        ORDER BY dcw.apply_time ASC
+    </select>
+
 
 </mapper>

+ 8 - 0
zhongzheng-system/src/main/resources/mapper/modules/distribution/DistributionCheckMapper.xml

@@ -0,0 +1,8 @@
+<?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.zhongzheng.modules.distribution.mapper.DistributionCheckMapper">
+
+
+</mapper>

+ 7 - 0
zhongzheng-system/src/main/resources/mapper/modules/distribution/DistributionRebateMapper.xml

@@ -0,0 +1,7 @@
+<?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.zhongzheng.modules.distribution.mapper.DistributionRebateMapper">
+
+</mapper>

+ 11 - 0
zhongzheng-system/src/main/resources/mapper/modules/system/SysUserMapper.xml

@@ -168,4 +168,15 @@
         where u.`status` = 1
 
     </select>
+
+    <select id="getUserNameByRoleKey" parameterType="java.lang.String" resultType="java.lang.String">
+        SELECT
+            u.user_name
+        FROM
+            sys_user u
+                LEFT JOIN sys_user_role sur ON u.user_id = sur.user_id
+                LEFT JOIN sys_role r ON sur.role_id = r.role_id
+        WHERE u.`status` = 1 AND r.role_key = #{roleKey}
+    </select>
+
 </mapper>