yangdamao 2 vuotta sitten
vanhempi
commit
6ba63895b1
38 muutettua tiedostoa jossa 1177 lisäystä ja 141 poistoa
  1. 23 3
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityTemplateController.java
  2. 0 18
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/CommonDistributionController.java
  3. 16 6
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityController.java
  4. 6 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionSellerController.java
  5. 10 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonController.java
  6. 27 2
      zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonGoodsController.java
  7. 5 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/DistributionSellerServiceImpl.java
  8. 3 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/bo/ShoppingCartAddBo.java
  9. 7 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/ShoppingCart.java
  10. 45 9
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/ShoppingCartServiceImpl.java
  11. 4 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/vo/ShoppingCartVo.java
  12. 33 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/bo/DistributionCashQueryBo.java
  13. 43 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/bo/DistributionOrderQueryBo.java
  14. 18 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/mapper/DistributionActivityMapper.java
  15. 15 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionActivityService.java
  16. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/IDistributionSellerService.java
  17. 209 76
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/impl/DistributionActivityServiceImpl.java
  18. 45 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionCashVo.java
  19. 74 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionOrderVo.java
  20. 4 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/SellerOrderVo.java
  21. 23 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/DistributionGoodsBo.java
  22. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java
  23. 6 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsSpecTemplateService.java
  24. 40 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  25. 67 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsSpecTemplateServiceImpl.java
  26. 36 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/bo/DistributionCashTopQueryBo.java
  27. 7 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/bo/TenantOrderQueryBo.java
  28. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/bo/TenantSortNoticeQueryBo.java
  29. 30 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/bo/TopSellerOrderQueryBo.java
  30. 6 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/service/IDistributionActivityTemplateService.java
  31. 10 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/service/impl/DistributionActivityTemplateServiceImpl.java
  32. 51 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/vo/DistributionCashTopVo.java
  33. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/vo/TenantOrderCashVo.java
  34. 4 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/vo/TenantOrderVo.java
  35. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/vo/TenantSortNoticeVo.java
  36. 79 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/vo/TopSellerOrderVo.java
  37. 2 0
      zhongzheng-system/src/main/resources/mapper/modules/base/ShoppingCartMapper.xml
  38. 221 2
      zhongzheng-system/src/main/resources/mapper/modules/distribution/DistributionActivityMapper.xml

+ 23 - 3
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityTemplateController.java

@@ -11,9 +11,7 @@ import com.zhongzheng.modules.distribution.bo.DistributionStatusEditBo;
 import com.zhongzheng.modules.distribution.vo.DistributionSellerVo;
 import com.zhongzheng.modules.top.distribution.bo.*;
 import com.zhongzheng.modules.top.distribution.service.IDistributionActivityTemplateService;
-import com.zhongzheng.modules.top.distribution.vo.DistributionActivityTemplateVo;
-import com.zhongzheng.modules.top.distribution.vo.TenantOrderVo;
-import com.zhongzheng.modules.top.distribution.vo.TenantSortNoticeVo;
+import com.zhongzheng.modules.top.distribution.vo.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -141,5 +139,27 @@ public class DistributionActivityTemplateController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 佣金列表
+     */
+    @ApiOperation("佣金列表")
+    @GetMapping("/cash/list")
+    public TableDataInfo<DistributionCashTopVo> getOrgCashList(DistributionCashTopQueryBo bo) {
+        startPage();
+        List<DistributionCashTopVo> list = iDistributionActivityTemplateService.getOrgCashList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 佣金详情
+     */
+    @ApiOperation("佣金详情")
+    @GetMapping("/cash/detail")
+    public TableDataInfo<TopSellerOrderVo> getOrgCashDetail(TopSellerOrderQueryBo bo) {
+        startPage();
+        List<TopSellerOrderVo> list = iDistributionActivityTemplateService.getOrgCashDetail(bo);
+        return getDataTable(list);
+    }
+
 
 }

+ 0 - 18
zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/CommonDistributionController.java

@@ -5,18 +5,15 @@ import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.modules.distribution.bo.DistributionActivityPosterQueryBo;
 import com.zhongzheng.modules.distribution.service.IDistributionActivityPosterService;
 import com.zhongzheng.modules.distribution.service.IDistributionActivityService;
-import com.zhongzheng.modules.distribution.vo.DistributionGoodsListVo;
 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.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -33,8 +30,6 @@ public class CommonDistributionController extends BaseController {
 
     private final IDistributionActivityPosterService iDistributionActivityPosterService;
 
-    private final IDistributionActivityService iDistributionActivityService;
-
     @ApiOperation("获取分享页面参数")
     @PreAuthorize("@ss.hasPermi('system:poster:query')")
     @GetMapping("/sharePoster")
@@ -43,17 +38,4 @@ public class CommonDistributionController extends BaseController {
         return AjaxResult.success("成功",iDistributionActivityPosterService.sharePoster(bo));
     }
 
-    /**
-     * 获取活动商品信息
-     * @author change
-     * @date 2023/3/28 9:41
-     * @param distributionId
-     * @return null
-     */
-    @ApiOperation("获取活动商品信息")
-    @GetMapping("/goods/list/{distributionId}")
-    public AjaxResult<List<DistributionGoodsListVo>> getGoodsList(@PathVariable("distributionId") Long distributionId) {
-        return AjaxResult.success(iDistributionActivityService.getGoodsList(distributionId));
-    }
-
 }

+ 16 - 6
zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityController.java

@@ -8,10 +8,9 @@ import com.zhongzheng.common.utils.poi.ExcelUtil;
 import com.zhongzheng.modules.distribution.bo.*;
 import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsService;
 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.SellerOrderVo;
-import com.zhongzheng.modules.distribution.vo.SellerSortNoticeVo;
+import com.zhongzheng.modules.distribution.vo.*;
+import com.zhongzheng.modules.distribution.bo.DistributionOrderQueryBo;
+import com.zhongzheng.modules.distribution.vo.DistributionOrderVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -141,9 +140,20 @@ public class DistributionActivityController extends BaseController {
      */
     @ApiOperation("佣金列表")
     @GetMapping("/cash/list")
-    public TableDataInfo<SellerOrderVo> getCashList(SellerOrderQueryBo bo) {
+    public TableDataInfo<DistributionCashVo> getCashList(DistributionCashQueryBo bo) {
         startPage();
-        List<SellerOrderVo> list = iDistributionActivityService.getSellerOrder(bo);
+        List<DistributionCashVo> list = iDistributionActivityService.getCashList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 分销订单列表
+     */
+    @ApiOperation("分销订单列表")
+    @GetMapping("/order/list")
+    public TableDataInfo<DistributionOrderVo> getOrderList(DistributionOrderQueryBo bo) {
+        startPage();
+        List<DistributionOrderVo> list = iDistributionActivityService.getOrderList(bo);
         return getDataTable(list);
     }
 

+ 6 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionSellerController.java

@@ -158,4 +158,10 @@ public class DistributionSellerController extends BaseController {
         return getDataTable(list);
     }
 
+    @ApiOperation("业务员佣金详情")
+    @GetMapping("/cash/detail/{id}")
+    public AjaxResult<SellerOrderVo> getCashDetail(@PathVariable("id") Long id) {
+        return AjaxResult.success(iDistributionSellerService.getCashDetail(id));
+    }
+
 }

+ 10 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonController.java

@@ -26,6 +26,7 @@ import com.zhongzheng.modules.distribution.bo.DistributionActivityGoodsQueryBo;
 import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsService;
 import com.zhongzheng.modules.distribution.service.IDistributionSellerService;
 import com.zhongzheng.modules.distribution.vo.DistributionSellerVo;
+import com.zhongzheng.modules.goods.bo.DistributionGoodsBo;
 import com.zhongzheng.modules.goods.service.IGoodsSpecTemplateService;
 import com.zhongzheng.modules.goods.vo.GoodsSpecTemplateVo;
 import com.zhongzheng.modules.goods.vo.GoodsUserVo;
@@ -118,6 +119,15 @@ public class CommonController extends BaseController {
         return AjaxResult.success(iGoodsSpecTemplateService.queryById(specTemplateId));
     }
 
+    /**
+     * 获取商品规格模板信息
+     */
+    @ApiOperation("获取商品规格模板信息")
+    @GetMapping("/distribution/spec")
+    public AjaxResult<GoodsSpecTemplateVo> getDistributionSpec(DistributionGoodsBo bo) {
+        return AjaxResult.success(iGoodsSpecTemplateService.getDistributionSpec(bo));
+    }
+
     /**
      * 获取规格属性值对应的商品信息
      */

+ 27 - 2
zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonGoodsController.java

@@ -4,8 +4,10 @@ import cn.hutool.core.lang.Validator;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.page.TableDataInfo;
-import com.zhongzheng.modules.bank.bo.QuestionChapterExamQueryBo;
 import com.zhongzheng.modules.course.vo.CourseModuleFreeExamVo;
+import com.zhongzheng.modules.distribution.service.IDistributionActivityService;
+import com.zhongzheng.modules.distribution.vo.DistributionGoodsListVo;
+import com.zhongzheng.modules.goods.bo.DistributionGoodsBo;
 import com.zhongzheng.modules.goods.bo.GoodsAttachedQueryBo;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.service.IGoodsAttachedService;
@@ -15,7 +17,6 @@ import com.zhongzheng.modules.goods.vo.GoodsVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
-import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -42,6 +43,8 @@ public class CommonGoodsController extends BaseController {
 
     private final IGoodsAttachedService iGoodsAttachedService;
 
+    private final IDistributionActivityService iDistributionActivityService;
+
     /**
      * 查询商品列表
      */
@@ -82,6 +85,15 @@ public class CommonGoodsController extends BaseController {
         return AjaxResult.success(iGoodsService.selectDetail(goodsId));
     }
 
+    /**
+     * 获取分销活动商品详细信息
+     */
+    @ApiOperation("获取分销活动商品详细信息")
+    @GetMapping("/distribution/goods")
+    public AjaxResult<GoodsVo> getDistributionGoods(DistributionGoodsBo bo) {
+        return AjaxResult.success(iGoodsService.getDistributionGoods(bo));
+    }
+
 
 
     @ApiOperation("查询商品题库目录列表")
@@ -102,4 +114,17 @@ public class CommonGoodsController extends BaseController {
         return AjaxResult.success(list);
     }
 
+    /**
+     * 获取活动商品信息
+     * @author change
+     * @date 2023/3/28 9:41
+     * @param distributionId
+     * @return null
+     */
+    @ApiOperation("获取活动商品信息")
+    @GetMapping("/goods/list/{distributionId}")
+    public AjaxResult<List<DistributionGoodsListVo>> getGoodsList(@PathVariable("distributionId") Long distributionId) {
+        return AjaxResult.success(iDistributionActivityService.getGoodsList(distributionId));
+    }
+
 }

+ 5 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/DistributionSellerServiceImpl.java

@@ -482,4 +482,9 @@ public class DistributionSellerServiceImpl extends ServiceImpl<DistributionSelle
         return iDistributionActivityService.getSellerOrder(bo);
     }
 
+    @Override
+    public SellerOrderVo getCashDetail(Long id) {
+        return iDistributionActivityService.getCashDetail(id);
+    }
+
 }

+ 3 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/bo/ShoppingCartAddBo.java

@@ -2,9 +2,8 @@ package com.zhongzheng.modules.base.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.util.List;
 
 
@@ -36,4 +35,6 @@ public class ShoppingCartAddBo {
     /** 1 启用 0未启用 -1删除 */
     @ApiModelProperty("1 启用 0未启用 -1删除")
     private Integer status;
+    @ApiModelProperty("分销码")
+    private String distributionCode;
 }

+ 7 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/ShoppingCart.java

@@ -1,13 +1,14 @@
 package com.zhongzheng.modules.base.domain;
 
-import com.baomidou.mybatisplus.annotation.*;
+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 com.zhongzheng.common.annotation.Excel;
 
 /**
  * 购物车对象 shopping_cart
@@ -38,4 +39,6 @@ private static final long serialVersionUID=1L;
     private Long updateTime;
     /** 1 启用 0未启用 -1删除 */
     private Integer status;
+    /** 分销码*/
+    private String distributionCode;
 }

+ 45 - 9
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/ShoppingCartServiceImpl.java

@@ -2,28 +2,31 @@ package com.zhongzheng.modules.base.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Validator;
-import cn.hutool.core.util.StrUtil;
+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.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.Page;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.activity.domain.ActivityGoodsPrice;
+import com.zhongzheng.modules.activity.service.IActivityGoodsPriceService;
 import com.zhongzheng.modules.base.bo.ShoppingCartAddBo;
 import com.zhongzheng.modules.base.bo.ShoppingCartEditBo;
 import com.zhongzheng.modules.base.bo.ShoppingCartQueryBo;
-import com.zhongzheng.modules.base.domain.ApplyAreas;
 import com.zhongzheng.modules.base.domain.ShoppingCart;
-import com.zhongzheng.modules.base.mapper.ApplyAreasMapper;
 import com.zhongzheng.modules.base.mapper.ShoppingCartMapper;
 import com.zhongzheng.modules.base.service.IShoppingCartService;
 import com.zhongzheng.modules.base.vo.ShoppingCartVo;
+import com.zhongzheng.modules.distribution.domain.DistributionActivity;
+import com.zhongzheng.modules.distribution.service.IDistributionActivityService;
 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.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -39,6 +42,12 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, Sho
     @Autowired
     private ShoppingCartMapper shoppingCartMapper;
 
+    @Autowired
+    private IDistributionActivityService iDistributionActivityService;
+
+    @Autowired
+    private IActivityGoodsPriceService iActivityGoodsPriceService;
+
     @Override
     public ShoppingCartVo queryById(Long id){
         ShoppingCart db = this.baseMapper.selectById(id);
@@ -47,7 +56,34 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, Sho
 
     @Override
     public List<ShoppingCartVo> selectList(ShoppingCartQueryBo bo) {
-        return shoppingCartMapper.selectList(bo);
+        List<ShoppingCartVo> shoppingCartVos = shoppingCartMapper.selectList(bo);
+        if (CollectionUtils.isEmpty(shoppingCartVos)){
+            return new ArrayList<>();
+        }
+        shoppingCartVos.forEach(item -> {
+            if (StringUtils.isNotBlank(item.getDistributionCode())){
+                item.setDistributionStatus(0);
+                DistributionActivity activity = iDistributionActivityService
+                        .getOne(new LambdaQueryWrapper<DistributionActivity>()
+                        .eq(DistributionActivity::getCode, item.getDistributionCode()));
+                if (ObjectUtils.isNotNull(activity)){
+                    if (DateUtils.getNowTime() > activity.getEndTime()){
+                        item.setDistributionStatus(1);
+                    }
+                    ActivityGoodsPrice goodsPrice = iActivityGoodsPriceService
+                            .getOne(new LambdaQueryWrapper<ActivityGoodsPrice>()
+                            .eq(ActivityGoodsPrice::getActivityCode, item.getDistributionCode())
+                            .eq(ActivityGoodsPrice::getGoodsId, item.getGoodsId())
+                            .last("limit 1"));
+                    if (ObjectUtils.isNotNull(goodsPrice)){
+                        item.setStandPrice(goodsPrice.getGoodsPrice());
+                    }
+                }else {
+                    item.setDistributionStatus(1);
+                }
+            }
+        });
+        return shoppingCartVos;
     }
 
     @Override

+ 4 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/vo/ShoppingCartVo.java

@@ -1,13 +1,11 @@
 package com.zhongzheng.modules.base.vo;
 
 import com.zhongzheng.common.annotation.Excel;
-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;
 
 
 
@@ -63,4 +61,8 @@ public class ShoppingCartVo {
 	@Excel(name = "学时")
 	@ApiModelProperty("学时")
 	private BigDecimal classHours;
+	@ApiModelProperty("分销码")
+	private String distributionCode;
+	@ApiModelProperty("活动状态是否已结束:1已结束,0未结束")
+	private Integer distributionStatus;
 }

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

@@ -0,0 +1,33 @@
+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;
+
+/**
+ * @author yangdamao
+ * @date 2023年03月28日 14:05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("业务员分销排行榜查询对象")
+public class DistributionCashQueryBo extends BaseEntity {
+    /** 分页大小 */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+    /** 当前页数 */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+
+    @ApiModelProperty("业务员名称")
+    private String sellerName;
+
+    @ApiModelProperty("开始时间")
+    private Long startTime;
+
+    @ApiModelProperty("结束时间")
+    private Long endTime;
+
+}

+ 43 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/bo/DistributionOrderQueryBo.java

@@ -0,0 +1,43 @@
+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;
+
+/**
+ * @author yangdamao
+ * @date 2023年03月28日 14:05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("业务员分销排行榜查询对象")
+public class DistributionOrderQueryBo extends BaseEntity {
+    /** 分页大小 */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+    /** 当前页数 */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+
+    @ApiModelProperty("机构ID")
+    private String tenantId;
+    @ApiModelProperty("开始时间")
+    private Long startTime;
+    @ApiModelProperty("结束时间")
+    private Long endTime;
+    @ApiModelProperty("订单号")
+    private String orderSn;
+    @ApiModelProperty("下单人姓名")
+    private String userName;
+    @ApiModelProperty("业务员姓名")
+    private String sellerName;
+    @ApiModelProperty("支付状态 1未收费 2部分收费 3完全收费 4免费 (退款此状态保持不变)")
+    private List<Integer> payStatus;
+    @ApiModelProperty("退款状态 0(无和学员端拒绝退款)  1退款中 2已退款 3拒绝退款")
+    private Integer refundStatus;
+
+}

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

@@ -1,14 +1,22 @@
 package com.zhongzheng.modules.distribution.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.distribution.bo.DistributionCashQueryBo;
+import com.zhongzheng.modules.distribution.bo.DistributionOrderQueryBo;
 import com.zhongzheng.modules.distribution.bo.SellerOrderQueryBo;
 import com.zhongzheng.modules.distribution.domain.DistributionActivity;
+import com.zhongzheng.modules.distribution.vo.DistributionCashVo;
 import com.zhongzheng.modules.distribution.vo.DistributionGoodsListVo;
+import com.zhongzheng.modules.distribution.vo.DistributionOrderVo;
 import com.zhongzheng.modules.distribution.vo.SellerOrderVo;
+import com.zhongzheng.modules.top.distribution.bo.DistributionCashTopQueryBo;
 import com.zhongzheng.modules.top.distribution.bo.TenantOrderQueryBo;
 import com.zhongzheng.modules.top.distribution.bo.TenantSortNoticeQueryBo;
+import com.zhongzheng.modules.top.distribution.bo.TopSellerOrderQueryBo;
+import com.zhongzheng.modules.top.distribution.vo.DistributionCashTopVo;
 import com.zhongzheng.modules.top.distribution.vo.TenantOrderVo;
 import com.zhongzheng.modules.top.distribution.vo.TenantSortNoticeVo;
+import com.zhongzheng.modules.top.distribution.vo.TopSellerOrderVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -28,4 +36,14 @@ public interface DistributionActivityMapper extends BaseMapper<DistributionActiv
     List<TenantSortNoticeVo> getTenantSortNotice(TenantSortNoticeQueryBo bo);
 
     List<TenantOrderVo> getOrgOrder(TenantOrderQueryBo bo);
+
+    SellerOrderVo getCashDetail(@Param("id") Long id);
+
+    List<DistributionCashVo> getCashList(DistributionCashQueryBo bo);
+
+    List<DistributionOrderVo> getOrderList(DistributionOrderQueryBo bo);
+
+    List<DistributionCashTopVo> getOrgCashList(DistributionCashTopQueryBo bo);
+
+    List<TopSellerOrderVo> getOrgCashDetail(TopSellerOrderQueryBo bo);
 }

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

@@ -3,13 +3,15 @@ package com.zhongzheng.modules.distribution.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.modules.distribution.bo.*;
 import com.zhongzheng.modules.distribution.domain.DistributionActivity;
-import com.zhongzheng.modules.distribution.vo.DistributionActivityVo;
-import com.zhongzheng.modules.distribution.vo.DistributionGoodsListVo;
-import com.zhongzheng.modules.distribution.vo.SellerOrderVo;
+import com.zhongzheng.modules.distribution.vo.*;
+import com.zhongzheng.modules.top.distribution.bo.DistributionCashTopQueryBo;
 import com.zhongzheng.modules.top.distribution.bo.TenantOrderQueryBo;
 import com.zhongzheng.modules.top.distribution.bo.TenantSortNoticeQueryBo;
+import com.zhongzheng.modules.top.distribution.bo.TopSellerOrderQueryBo;
+import com.zhongzheng.modules.top.distribution.vo.DistributionCashTopVo;
 import com.zhongzheng.modules.top.distribution.vo.TenantOrderVo;
 import com.zhongzheng.modules.top.distribution.vo.TenantSortNoticeVo;
+import com.zhongzheng.modules.top.distribution.vo.TopSellerOrderVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -67,4 +69,14 @@ public interface IDistributionActivityService extends IService<DistributionActiv
     List<TenantSortNoticeVo> getTenantSortNotice(TenantSortNoticeQueryBo bo);
 
     List<TenantOrderVo> getOrgOrder(TenantOrderQueryBo bo);
+
+	SellerOrderVo getCashDetail(Long id);
+
+	List<DistributionCashVo> getCashList(DistributionCashQueryBo bo);
+
+    List<DistributionOrderVo> getOrderList(DistributionOrderQueryBo bo);
+
+    List<DistributionCashTopVo> getOrgCashList(DistributionCashTopQueryBo bo);
+
+    List<TopSellerOrderVo> getOrgCashDetail(TopSellerOrderQueryBo bo);
 }

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

@@ -76,4 +76,6 @@ public interface IDistributionSellerService extends IService<DistributionSeller>
 	String refreshSellerToken(String userAccount);
 
     List<SellerOrderVo> getCashList(SellerOrderQueryBo bo);
+
+	SellerOrderVo getCashDetail(Long id);
 }

+ 209 - 76
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/service/impl/DistributionActivityServiceImpl.java

@@ -19,25 +19,22 @@ import com.zhongzheng.modules.distribution.bo.*;
 import com.zhongzheng.modules.distribution.domain.*;
 import com.zhongzheng.modules.distribution.mapper.DistributionActivityMapper;
 import com.zhongzheng.modules.distribution.service.*;
-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.distribution.vo.SellerOrderVo;
+import com.zhongzheng.modules.distribution.vo.*;
 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.bo.DistributionCashTopQueryBo;
 import com.zhongzheng.modules.top.distribution.bo.TenantOrderQueryBo;
 import com.zhongzheng.modules.top.distribution.bo.TenantSortNoticeQueryBo;
+import com.zhongzheng.modules.top.distribution.bo.TopSellerOrderQueryBo;
 import com.zhongzheng.modules.top.distribution.domain.DistributionActivityTemplate;
 import com.zhongzheng.modules.top.distribution.domain.DistributionActivityTemplateGoods;
 import com.zhongzheng.modules.top.distribution.service.IDistributionActivityTemplateGoodsService;
 import com.zhongzheng.modules.top.distribution.service.IDistributionActivityTemplateService;
-import com.zhongzheng.modules.top.distribution.vo.TenantOrderCashVo;
-import com.zhongzheng.modules.top.distribution.vo.TenantOrderVo;
-import com.zhongzheng.modules.top.distribution.vo.TenantSortNoticeVo;
+import com.zhongzheng.modules.top.distribution.vo.*;
 import com.zhongzheng.modules.top.goods.domain.TopActivityGoodsPrice;
 import com.zhongzheng.modules.top.goods.domain.TopGoods;
 import com.zhongzheng.modules.top.goods.service.ITopActivityGoodsPriceService;
@@ -90,7 +87,7 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
     private IDistributionSellerService iDistributionSellerService;
 
     @Override
-    public DistributionActivityVo queryById(Long distributionId){
+    public DistributionActivityVo queryById(Long distributionId) {
         DistributionActivity db = this.baseMapper.selectById(distributionId);
         DistributionActivityVo vo = BeanUtil.toBean(db, DistributionActivityVo.class);
         //获取商品信息
@@ -98,12 +95,12 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
                 .list(new LambdaQueryWrapper<DistributionActivityGoods>()
                         .eq(DistributionActivityGoods::getStatus, 1)
                         .eq(DistributionActivityGoods::getDistributionId, vo.getDistributionId()));
-        if (CollectionUtils.isNotEmpty(templateGoodsList)){
+        if (CollectionUtils.isNotEmpty(templateGoodsList)) {
             List<DistributionActivityGoodsVo> templateGoodsVos = templateGoodsList.stream().map(item -> {
                 DistributionActivityGoodsVo goodsVo = BeanUtil.toBean(item, DistributionActivityGoodsVo.class);
                 Goods goods = iGoodsService.getById(goodsVo.getGoodsId());
                 goodsVo.setGoodsName(goods.getGoodsName());
-                if (item.getProfitType() == 1){
+                if (item.getProfitType() == 1) {
                     //百分比
                     goodsVo.setProfitMax(item.getProfitMax().multiply(new BigDecimal(100)));
                     goodsVo.setProfitOne(item.getProfitOne().multiply(new BigDecimal(100)));
@@ -116,7 +113,7 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
                                 .eq(ActivityGoodsPrice::getGoodsId, item.getGoodsId())
                                 .eq(ActivityGoodsPrice::getStatus, 1)
                                 .last("limit 1"));
-                if (ObjectUtils.isNotNull(price)){
+                if (ObjectUtils.isNotNull(price)) {
                     goodsVo.setGoodsPrice(price.getGoodsPrice());
                 }
                 return goodsVo;
@@ -139,7 +136,7 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
         lqw.eq(bo.getPosterId() != null, DistributionActivity::getPosterId, bo.getPosterId());
         lqw.orderByDesc(DistributionActivity::getDistributionId);
         List<DistributionActivityVo> voList = entity2Vo(this.list(lqw));
-        if (CollectionUtils.isEmpty(voList)){
+        if (CollectionUtils.isEmpty(voList)) {
             return new ArrayList<>();
         }
         voList.forEach(item -> {
@@ -151,19 +148,19 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
     }
 
     /**
-    * 实体类转化成视图对象
-    *
-    * @param collection 实体类集合
-    * @return
-    */
+     * 实体类转化成视图对象
+     *
+     * @param collection 实体类集合
+     * @return
+     */
     private List<DistributionActivityVo> entity2Vo(Collection<DistributionActivity> collection) {
         List<DistributionActivityVo> voList = collection.stream()
                 .map(any -> BeanUtil.toBean(any, DistributionActivityVo.class))
                 .collect(Collectors.toList());
         if (collection instanceof Page) {
-            Page<DistributionActivity> page = (Page<DistributionActivity>)collection;
+            Page<DistributionActivity> page = (Page<DistributionActivity>) collection;
             Page<DistributionActivityVo> pageVo = new Page<>();
-            BeanUtil.copyProperties(page,pageVo);
+            BeanUtil.copyProperties(page, pageVo);
             pageVo.addAll(voList);
             voList = pageVo;
         }
@@ -180,11 +177,11 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
         add.setUpdateTime(DateUtils.getNowTime());
         this.save(add);
         //活动商品
-        if (CollectionUtils.isNotEmpty(bo.getGoodsList())){
+        if (CollectionUtils.isNotEmpty(bo.getGoodsList())) {
             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){
+                if (ObjectUtils.isNotNull(item.getProfitType()) && item.getProfitType() == 1) {
                     //佣金是百分比
                     entity.setProfitMax(item.getProfitMax().divide(new BigDecimal(100)));
                     entity.setProfitOne(item.getProfitOne().divide(new BigDecimal(100)));
@@ -203,10 +200,10 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
                                 .eq(ActivityGoodsPrice::getActivityCode, add.getCode())
                                 .eq(ActivityGoodsPrice::getGoodsId, item.getGoodsId())
                                 .last("limit 1"));
-                if (ObjectUtils.isNotNull(goodsPrice)){
+                if (ObjectUtils.isNotNull(goodsPrice)) {
                     goodsPrice.setGoodsPrice(item.getGoodsPrice());
                     iActivityGoodsPriceService.updateById(goodsPrice);
-                }else {
+                } else {
                     ActivityGoodsPrice price = new ActivityGoodsPrice();
                     price.setGoodsPrice(item.getGoodsPrice());
                     price.setActivityCode(add.getCode());
@@ -227,7 +224,7 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
     public Boolean updateByEditBo(DistributionActivityEditBo bo) {
         //校验
         DistributionActivity activityTemp = getById(bo.getDistributionId());
-        if (activityTemp.getStatus() == 1){
+        if (activityTemp.getStatus() == 1) {
             throw new CustomException("活动已启用,不能修改!");
         }
         DistributionActivity update = BeanUtil.toBean(bo, DistributionActivity.class);
@@ -236,15 +233,15 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
         this.updateById(update);
         //删除活动商品重新绑定
         iDistributionActivityGoodsService.remove(new LambdaQueryWrapper<DistributionActivityGoods>()
-                .eq(DistributionActivityGoods::getDistributionId,bo.getDistributionId()));
+                .eq(DistributionActivityGoods::getDistributionId, bo.getDistributionId()));
         iActivityGoodsPriceService.remove(new LambdaQueryWrapper<ActivityGoodsPrice>()
-        .eq(ActivityGoodsPrice::getActivityCode,activityTemp.getCode()));
+                .eq(ActivityGoodsPrice::getActivityCode, activityTemp.getCode()));
         //活动商品
-        if (CollectionUtils.isNotEmpty(bo.getGoodsList())){
+        if (CollectionUtils.isNotEmpty(bo.getGoodsList())) {
             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){
+                if (ObjectUtils.isNotNull(item.getProfitType()) && item.getProfitType() == 1) {
                     //佣金是百分比
                     entity.setProfitMax(item.getProfitMax().divide(new BigDecimal(100)));
                     entity.setProfitOne(item.getProfitOne().divide(new BigDecimal(100)));
@@ -263,10 +260,10 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
                                 .eq(ActivityGoodsPrice::getActivityCode, activityTemp.getCode())
                                 .eq(ActivityGoodsPrice::getGoodsId, item.getGoodsId())
                                 .last("limit 1"));
-                if (ObjectUtils.isNotNull(goodsPrice)){
+                if (ObjectUtils.isNotNull(goodsPrice)) {
                     goodsPrice.setGoodsPrice(item.getGoodsPrice());
                     iActivityGoodsPriceService.updateById(goodsPrice);
-                }else {
+                } else {
                     ActivityGoodsPrice price = new ActivityGoodsPrice();
                     price.setGoodsPrice(item.getGoodsPrice());
                     price.setActivityCode(activityTemp.getCode());
@@ -287,13 +284,13 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
      *
      * @param entity 实体类数据
      */
-    private void validEntityBeforeSave(DistributionActivity entity){
+    private void validEntityBeforeSave(DistributionActivity entity) {
         //TODO 做一些数据校验,如唯一约束
     }
 
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if(isValid){
+        if (isValid) {
             //TODO 做一些业务上的校验,判断是否需要校验
         }
         return this.removeByIds(ids);
@@ -301,27 +298,27 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
 
     @Override
     public boolean editStatus(DistributionStatusEditBo bo) {
-        if (ObjectUtils.isNull(bo.getStatus())){
+        if (ObjectUtils.isNull(bo.getStatus())) {
             throw new CustomException("状态不能为空");
         }
         DistributionActivity activity = getById(bo.getDistributionId());
-        if (bo.getStatus() == 1){
+        if (bo.getStatus() == 1) {
             //启用活动
-            if (DateUtils.getNowTime()< activity.getStartTime() || DateUtils.getNowTime() > activity.getEndTime()){
+            if (DateUtils.getNowTime() < activity.getStartTime() || DateUtils.getNowTime() > activity.getEndTime()) {
                 throw new CustomException("不在活动时间内,禁止启用!");
             }
-            if (ObjectUtils.isNotNull(activity.getTempId())){
+            if (ObjectUtils.isNotNull(activity.getTempId())) {
                 //总平台下发活动对比商品是否缺失
                 List<DistributionActivityGoods> activityGoods = iDistributionActivityGoodsService
                         .list(new LambdaQueryWrapper<DistributionActivityGoods>()
-                        .eq(DistributionActivityGoods::getDistributionId, activity.getDistributionId())
-                        .eq(DistributionActivityGoods::getStatus, 1));
+                                .eq(DistributionActivityGoods::getDistributionId, activity.getDistributionId())
+                                .eq(DistributionActivityGoods::getStatus, 1));
                 List<DistributionActivityTemplateGoods> templateGoods = iDistributionActivityTemplateGoodsService
                         .list(new LambdaQueryWrapper<DistributionActivityTemplateGoods>()
-                        .eq(DistributionActivityTemplateGoods::getDistributionTempId, activity.getTempId())
-                        .eq(DistributionActivityTemplateGoods::getStatus, 1));
-                if (activityGoods.size() != templateGoods.size()){
-                    throw new CustomException("活动商品缺失,请先拉取商品信息",777);
+                                .eq(DistributionActivityTemplateGoods::getDistributionTempId, activity.getTempId())
+                                .eq(DistributionActivityTemplateGoods::getStatus, 1));
+                if (activityGoods.size() != templateGoods.size()) {
+                    throw new CustomException("活动商品缺失,请先拉取商品信息", 777);
                 }
             }
         }
@@ -333,7 +330,7 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
     @Transactional(rollbackFor = Exception.class)
     public boolean pullGoods(Long distributionId) {
         DistributionActivity activity = getById(distributionId);
-        if (ObjectUtils.isNull(activity.getTempId())){
+        if (ObjectUtils.isNull(activity.getTempId())) {
             //不是总平台下发的活动
             return true;
         }
@@ -343,17 +340,17 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
                         .eq(DistributionActivityGoods::getDistributionId, activity.getDistributionId())
                         .eq(DistributionActivityGoods::getStatus, 1));
         List<DistributionActivityTemplateGoods> templateGoods = iDistributionActivityTemplateGoodsService.getListEntity(activity.getTempId());
-        if (activityGoods.size() == templateGoods.size()){
+        if (activityGoods.size() == templateGoods.size()) {
             //不缺失商品信息
             return true;
         }
-        if (CollectionUtils.isEmpty(templateGoods)){
+        if (CollectionUtils.isEmpty(templateGoods)) {
             //总平台活动商品没有
             return true;
         }
         DistributionActivityTemplate activityTemplate = iDistributionActivityTemplateService.getEntityById(activity.getTempId());
         Long tenantId = Long.valueOf(ServletUtils.getRequest().getHeader("TenantId"));
-        if (CollectionUtils.isEmpty(activityGoods)){
+        if (CollectionUtils.isEmpty(activityGoods)) {
             //全部缺失
             List<TopGoods> topGoods = iTopGoodsService.listEntityByIds(templateGoods.stream().map(DistributionActivityTemplateGoods::getGoodsId).collect(Collectors.toList()));
             GoodsPullTenantBo bo = new GoodsPullTenantBo();
@@ -370,8 +367,8 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
                 if (ObjectUtils.isNotNull(pul)) {
                     activityGo.setGoodsId(pul.getNewGoodsId());
                     //商品活动价格
-                    TopActivityGoodsPrice topGoodsPrice = iTopActivityGoodsPriceService.getEntity(item.getGoodsId(),activityTemplate.getCode());
-                    if (ObjectUtils.isNotNull(topGoodsPrice)){
+                    TopActivityGoodsPrice topGoodsPrice = iTopActivityGoodsPriceService.getEntity(item.getGoodsId(), activityTemplate.getCode());
+                    if (ObjectUtils.isNotNull(topGoodsPrice)) {
                         ActivityGoodsPrice goodsPrice = BeanUtil.toBean(topGoodsPrice, ActivityGoodsPrice.class);
                         goodsPrice.setGoodsId(pul.getNewGoodsId());
                         goodsPrice.setTenantId(tenantId);
@@ -382,13 +379,13 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
             }).collect(Collectors.toList());
             iDistributionActivityGoodsService.saveBatch(distributionActivityGo);
             iActivityGoodsPriceService.saveBatch(goodsPriceList);
-        }else {
+        } else {
             //部分缺失
             List<Goods> goodsList = iGoodsService.listByIds(activityGoods.stream().map(DistributionActivityGoods::getGoodsId).collect(Collectors.toList()));
             List<TopGoods> topGoods = iTopGoodsService.listEntityByIds(templateGoods.stream().map(DistributionActivityTemplateGoods::getGoodsId).collect(Collectors.toList()));
             List<String> codes = goodsList.stream().map(Goods::getCode).collect(Collectors.toList());
             List<TopGoods> goods = topGoods.stream().filter(item -> !codes.contains(item.getCode())).collect(Collectors.toList());
-            if (CollectionUtils.isNotEmpty(goods)){
+            if (CollectionUtils.isNotEmpty(goods)) {
                 GoodsPullTenantBo bo = new GoodsPullTenantBo();
                 bo.setGoodsList(goods);
                 bo.setTenantId(tenantId);
@@ -405,8 +402,8 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
                     if (ObjectUtils.isNotNull(pul)) {
                         activityGo.setGoodsId(pul.getNewGoodsId());
                         //商品活动价格
-                        TopActivityGoodsPrice topGoodsPrice = iTopActivityGoodsPriceService.getEntity(item.getGoodsId(),activityTemplate.getCode());
-                        if (ObjectUtils.isNotNull(topGoodsPrice)){
+                        TopActivityGoodsPrice topGoodsPrice = iTopActivityGoodsPriceService.getEntity(item.getGoodsId(), activityTemplate.getCode());
+                        if (ObjectUtils.isNotNull(topGoodsPrice)) {
                             ActivityGoodsPrice goodsPrice = BeanUtil.toBean(topGoodsPrice, ActivityGoodsPrice.class);
                             goodsPrice.setGoodsId(pul.getNewGoodsId());
                             goodsPrice.setTenantId(tenantId);
@@ -431,27 +428,27 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
     @Override
     public List<DistributionGoodsListVo> getGoodsList(Long distributionId) {
         List<DistributionGoodsListVo> list = baseMapper.getGoodsList(distributionId);
-        if (CollectionUtils.isEmpty(list)){
+        if (CollectionUtils.isEmpty(list)) {
             return new ArrayList<>();
         }
         list.forEach(item -> {
             //商品活动价格
             ActivityGoodsPrice goodsPrice = iActivityGoodsPriceService
                     .getOne(new LambdaQueryWrapper<ActivityGoodsPrice>()
-                    .eq(ActivityGoodsPrice::getActivityCode, item.getDistributionCode())
-                    .eq(ActivityGoodsPrice::getGoodsId, item.getGoodsId())
-                    .eq(ActivityGoodsPrice::getStatus, 1)
-                    .last("limit 1"));
-            if (ObjectUtils.isNotNull(goodsPrice)){
+                            .eq(ActivityGoodsPrice::getActivityCode, item.getDistributionCode())
+                            .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())){
+            if (ObjectUtils.isNotNull(item.getSpecTemplateId())) {
                 List<GoodsSpecAttributeRelation> specAttributeRelations = goodsSpecAttributeRelationService
                         .list(new LambdaQueryWrapper<GoodsSpecAttributeRelation>()
                                 .eq(GoodsSpecAttributeRelation::getSpecTemplateId, item.getSpecTemplateId()));
-                if (CollectionUtils.isNotEmpty(specAttributeRelations)){
+                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);
                     //从小到大排序
@@ -467,22 +464,22 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
     @Override
     public List<SellerOrderVo> getSellerOrder(SellerOrderQueryBo bo) {
         List<SellerOrderVo> orderVos = baseMapper.getSellerOrder(bo);
-        if (CollectionUtils.isEmpty(orderVos)){
+        if (CollectionUtils.isEmpty(orderVos)) {
             return new ArrayList<>();
         }
         orderVos.forEach(item -> {
-//            if (item.getCashType() == 1){
-//                //百分比
-//                item.setCashRatio(item.getCashRatio().multiply(new BigDecimal("100.00")));
-//            }
+            if (item.getCashType() == 1){
+                //百分比
+                item.setCashRatio(item.getCashRatio().multiply(new BigDecimal("100.00")));
+            }
             //差看佣金状态
             DistributionCashLog cashLog = iDistributionCashLogService
                     .getOne(new LambdaQueryWrapper<DistributionCashLog>()
-                    .eq(DistributionCashLog::getSellerId, item.getSellerId())
-                    .eq(DistributionCashLog::getRelatedSn, item.getOrderSn())
-                    .last("limit 1"));
-            if (ObjectUtils.isNotNull(cashLog)){
-                item.setCashStatus(cashLog.getType() > 1?2:1);
+                            .eq(DistributionCashLog::getSellerId, item.getSellerId())
+                            .eq(DistributionCashLog::getRelatedSn, item.getOrderSn())
+                            .last("limit 1"));
+            if (ObjectUtils.isNotNull(cashLog) && item.getCashStatus() == 3 ) {
+                item.setCashStatus(cashLog.getType() > 1 ? 2 : 1);
             }
         });
         return orderVos;
@@ -496,16 +493,99 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
     @Override
     public List<TenantOrderVo> getOrgOrder(TenantOrderQueryBo bo) {
         List<TenantOrderVo> orderVos = baseMapper.getOrgOrder(bo);
-        if (CollectionUtils.isEmpty(orderVos)){
+        if (CollectionUtils.isEmpty(orderVos)) {
+            return new ArrayList<>();
+        }
+        orderVos.forEach(item -> {
+            //佣金详情
+            List<DistributionRebate> list = iDistributionRebateService
+                    .list(new LambdaQueryWrapper<DistributionRebate>()
+                            .eq(DistributionRebate::getOrderSn, item.getOrderSn())
+                            .eq(DistributionRebate::getStatus, 1));
+            if (CollectionUtils.isNotEmpty(list)) {
+                List<TenantOrderCashVo> cashVoList = list.stream().map(rebate -> {
+                    TenantOrderCashVo cashVo = new TenantOrderCashVo();
+                    cashVo.setSellerId(rebate.getSellerId());
+                    cashVo.setCash(rebate.getCash());
+                    cashVo.setCashStatus(rebate.getCashStatus());
+                    cashVo.setCashTime(rebate.getCreateTime());
+                    cashVo.setCashType(rebate.getProfitType());
+                    if (rebate.getProfitType() == 1){
+                        //百分比
+                        cashVo.setCashRatio(rebate.getProfit().multiply(new BigDecimal("100.00")));
+                    }else {
+                        cashVo.setCashRatio(rebate.getProfit());
+                    }
+                    DistributionSeller seller = iDistributionSellerService.getById(rebate.getSellerId());
+                    cashVo.setSellerName(seller.getRealname());
+                    return cashVo;
+                }).collect(Collectors.toList());
+                item.setCashVoList(cashVoList);
+            }
+        });
+        return orderVos;
+    }
+
+    @Override
+    public SellerOrderVo getCashDetail(Long id) {
+        SellerOrderVo orderVo = baseMapper.getCashDetail(id);
+        if (ObjectUtils.isNull(orderVo)) {
+            return null;
+        }
+        if (orderVo.getCashType() == 1){
+            //百分比
+            orderVo.setCashRatio(orderVo.getCash().multiply(new BigDecimal("100.00")));
+        }
+        //差看佣金状态
+        DistributionCashLog cashLog = iDistributionCashLogService
+                .getOne(new LambdaQueryWrapper<DistributionCashLog>()
+                        .eq(DistributionCashLog::getSellerId, orderVo.getSellerId())
+                        .eq(DistributionCashLog::getRelatedSn, orderVo.getOrderSn())
+                        .last("limit 1"));
+        if (ObjectUtils.isNotNull(cashLog) &&
+                orderVo.getCashStatus() == 3 ) {
+            orderVo.setCashStatus(cashLog.getType() > 1 ? 2 : 1);
+        }
+        return orderVo;
+    }
+
+    @Override
+    public List<DistributionCashVo> getCashList(DistributionCashQueryBo bo) {
+        List<DistributionCashVo> cashVoList = baseMapper.getCashList(bo);
+        if (CollectionUtils.isEmpty(cashVoList)){
+            return new ArrayList<>();
+        }
+        if (ObjectUtils.isNotNull(bo.getStartTime()) && ObjectUtils.isNotNull(bo.getEndTime())){
+            cashVoList.forEach(item -> {
+                //总佣金
+                List<DistributionRebate> list = iDistributionRebateService
+                        .list(new LambdaQueryWrapper<DistributionRebate>()
+                        .eq(DistributionRebate::getSellerId, item.getSellerId())
+                        .ne(DistributionRebate::getCashStatus, 3)
+                        .ge(DistributionRebate::getCreateTime, bo.getStartTime())
+                        .le(DistributionRebate::getCreateTime, bo.getEndTime()));
+                if (CollectionUtils.isNotEmpty(list)){
+                    BigDecimal reduce = list.stream().map(DistributionRebate::getCash).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    item.setCashTotal(reduce);
+                }
+            });
+        }
+        return cashVoList;
+    }
+
+    @Override
+    public List<DistributionOrderVo> getOrderList(DistributionOrderQueryBo bo) {
+        List<DistributionOrderVo> orderVos = baseMapper.getOrderList(bo);
+        if (CollectionUtils.isEmpty(orderVos)) {
             return new ArrayList<>();
         }
         orderVos.forEach(item -> {
             //佣金详情
             List<DistributionRebate> list = iDistributionRebateService
                     .list(new LambdaQueryWrapper<DistributionRebate>()
-                    .eq(DistributionRebate::getOrderSn, item.getOrderSn())
-                    .eq(DistributionRebate::getStatus,1));
-            if (CollectionUtils.isNotEmpty(list)){
+                            .eq(DistributionRebate::getOrderSn, item.getOrderSn())
+                            .eq(DistributionRebate::getStatus, 1));
+            if (CollectionUtils.isNotEmpty(list)) {
                 List<TenantOrderCashVo> cashVoList = list.stream().map(rebate -> {
                     TenantOrderCashVo cashVo = new TenantOrderCashVo();
                     cashVo.setSellerId(rebate.getSellerId());
@@ -513,7 +593,12 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
                     cashVo.setCashStatus(rebate.getCashStatus());
                     cashVo.setCashTime(rebate.getCreateTime());
                     cashVo.setCashType(rebate.getProfitType());
-                    cashVo.setCashRatio(rebate.getProfit());
+                    if (rebate.getProfitType() == 1) {
+                        //百分比
+                        cashVo.setCashRatio(rebate.getProfit().multiply(new BigDecimal("100.00")));
+                    } else {
+                        cashVo.setCashRatio(rebate.getProfit());
+                    }
                     DistributionSeller seller = iDistributionSellerService.getById(rebate.getSellerId());
                     cashVo.setSellerName(seller.getRealname());
                     return cashVo;
@@ -523,4 +608,52 @@ public class DistributionActivityServiceImpl extends ServiceImpl<DistributionAct
         });
         return orderVos;
     }
-}
+
+    @Override
+    public List<DistributionCashTopVo> getOrgCashList(DistributionCashTopQueryBo bo) {
+        List<DistributionCashTopVo> cashVoList = baseMapper.getOrgCashList(bo);
+        if (CollectionUtils.isEmpty(cashVoList)){
+            return new ArrayList<>();
+        }
+        if (ObjectUtils.isNotNull(bo.getStartTime()) && ObjectUtils.isNotNull(bo.getEndTime())){
+            cashVoList.forEach(item -> {
+                //总佣金
+                List<DistributionRebate> list = iDistributionRebateService
+                        .list(new LambdaQueryWrapper<DistributionRebate>()
+                                .eq(DistributionRebate::getSellerId, item.getSellerId())
+                                .ne(DistributionRebate::getCashStatus, 3)
+                                .ge(DistributionRebate::getCreateTime, bo.getStartTime())
+                                .le(DistributionRebate::getCreateTime, bo.getEndTime()));
+                if (CollectionUtils.isNotEmpty(list)){
+                    BigDecimal reduce = list.stream().map(DistributionRebate::getCash).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    item.setCashTotal(reduce);
+                }
+            });
+        }
+        return cashVoList;
+    }
+
+    @Override
+    public List<TopSellerOrderVo> getOrgCashDetail(TopSellerOrderQueryBo bo) {
+        List<TopSellerOrderVo> orderVos = baseMapper.getOrgCashDetail(bo);
+        if (CollectionUtils.isEmpty(orderVos)) {
+            return new ArrayList<>();
+        }
+        orderVos.forEach(item -> {
+            if (item.getCashType() == 1){
+                //百分比
+                item.setCashRatio(item.getCashRatio().multiply(new BigDecimal("100.00")));
+            }
+            //差看佣金状态
+            DistributionCashLog cashLog = iDistributionCashLogService
+                    .getOne(new LambdaQueryWrapper<DistributionCashLog>()
+                            .eq(DistributionCashLog::getSellerId, item.getSellerId())
+                            .eq(DistributionCashLog::getRelatedSn, item.getOrderSn())
+                            .last("limit 1"));
+            if (ObjectUtils.isNotNull(cashLog) && item.getCashStatus() == 3 ) {
+                item.setCashStatus(cashLog.getType() > 1 ? 2 : 1);
+            }
+        });
+        return orderVos;
+    }
+}

+ 45 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionCashVo.java

@@ -0,0 +1,45 @@
+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;
+
+/**
+ * @author yangdamao
+ * @date 2023年03月28日 14:05
+ */
+@Data
+@ApiModel("业务员分销排行榜查询对象")
+public class DistributionCashVo implements Serializable {
+
+    @ApiModelProperty("业务员名称")
+    private String sellerId;
+
+    @ApiModelProperty("业务员名称")
+    private String sellerName;
+
+    @ApiModelProperty("手机号")
+    private String telphone;
+
+    @ApiModelProperty("邀请人ID")
+    private Long parentId;
+
+    @ApiModelProperty("邀请人名称")
+    private String parentName;
+
+    @ApiModelProperty("累计客户数")
+    private Integer subordinateNum;
+
+    @ApiModelProperty("累计推广数")
+    private Integer shareNum;
+
+    @ApiModelProperty("加入时间")
+    private Long createTime;
+
+    @ApiModelProperty("佣金")
+    private BigDecimal cashTotal;
+
+}

+ 74 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/DistributionOrderVo.java

@@ -0,0 +1,74 @@
+package com.zhongzheng.modules.distribution.vo;
+
+import com.zhongzheng.modules.top.distribution.vo.TenantOrderCashVo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年03月28日 14:05
+ */
+@Data
+@ApiModel("业务员订单对象")
+public class DistributionOrderVo implements Serializable {
+
+    /** 订单ID */
+    @ApiModelProperty("订单ID")
+    private Long orderId;
+    /** 订单号 */
+    @ApiModelProperty("订单号")
+    private String orderSn;
+    /** 订单状态 -2 超时关闭,-1手动关闭,0待支付,1已支付 3部分已退款 4完全退款 */
+    @ApiModelProperty("订单状态 -2 超时关闭,-1手动关闭,0待支付,1已支付 3部分已退款 4完全退款")
+    private Integer orderStatus;
+    /** 支付状态 1未收费 2部分收费 3完全收费 4免费 (退款此状态保持不变) */
+    @ApiModelProperty("支付状态 1未收费 2部分收费 3完全收费 4免费 (退款此状态保持不变)")
+    private Integer payStatus;
+    /** 活动名称 */
+    @ApiModelProperty("活动名称")
+    private String distributionName;
+    /** 活动ID */
+    @ApiModelProperty("活动ID")
+    private Long distributionId;
+    /** 活动code */
+    @ApiModelProperty("活动code")
+    private String distributionCode;
+    /** 下单人 */
+    @ApiModelProperty("下单人")
+    private String orderUserName;
+    /** 手机号 */
+    @ApiModelProperty("手机号")
+    private String telphone;
+    /** 订单时间 */
+    @ApiModelProperty("订单时间")
+    private Long orderTime;
+    /** 订单金额 */
+    @ApiModelProperty("订单金额")
+    private BigDecimal orderPrice;
+    /** 订单佣金 */
+    @ApiModelProperty("订单佣金")
+    private BigDecimal orderCash;
+    /** 商品ID */
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+    /** 订单商品ID */
+    @ApiModelProperty("订单商品ID")
+    private Long orderGoodsId;
+    /** 商品名称 */
+    @ApiModelProperty("商品名称")
+    private String goodsName;
+    /** 所属机构 */
+    @ApiModelProperty("所属机构")
+    private String tenantName;
+    /** 所属机构ID */
+    @ApiModelProperty("所属机构ID")
+    private String tenantId;
+    /** 佣金详情 */
+    @ApiModelProperty("佣金详情")
+    private List<TenantOrderCashVo> cashVoList;
+}

+ 4 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/distribution/vo/SellerOrderVo.java

@@ -15,6 +15,9 @@ import java.math.BigDecimal;
 @ApiModel("业务员订单对象")
 public class SellerOrderVo implements Serializable {
 
+    /** id */
+    @ApiModelProperty("id")
+    private Long id;
     /** 订单ID */
     @ApiModelProperty("订单ID")
     private Long orderId;
@@ -58,7 +61,7 @@ public class SellerOrderVo implements Serializable {
     @ApiModelProperty("佣金产生时间")
     private Long cashTime;
     /** 佣金状态 */
-    @ApiModelProperty("佣金状态:1冻结,2正常")
+    @ApiModelProperty("佣金状态:1冻结,2正常, 3退款")
     private Integer cashStatus;
     /** 业务员ID */
     @ApiModelProperty("业务员ID")

+ 23 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/DistributionGoodsBo.java

@@ -0,0 +1,23 @@
+package com.zhongzheng.modules.goods.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年03月29日 16:14
+ */
+@Data
+public class DistributionGoodsBo implements Serializable {
+
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+
+    @ApiModelProperty("分销码")
+    private String disCode;
+
+    @ApiModelProperty("规格模板ID")
+    private Long specTemplateId;
+}

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java

@@ -124,4 +124,7 @@ public interface IGoodsService extends IService<Goods> {
     boolean updateGoodsRepair(UpdateGoodsRepairBo bo);
 
     Goods getOneGoods(String code, Long id);
+
+	GoodsVo getDistributionGoods(DistributionGoodsBo bo);
+
 }

+ 6 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsSpecTemplateService.java

@@ -1,14 +1,15 @@
 package com.zhongzheng.modules.goods.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.zhongzheng.modules.goods.bo.GoodsSpecAddBo;
+import com.zhongzheng.modules.goods.bo.DistributionGoodsBo;
 import com.zhongzheng.modules.goods.bo.GoodsSpecTemplateAddBo;
 import com.zhongzheng.modules.goods.bo.GoodsSpecTemplateEditBo;
 import com.zhongzheng.modules.goods.bo.GoodsSpecTemplateQueryBo;
 import com.zhongzheng.modules.goods.domain.GoodsSpecTemplate;
-import com.zhongzheng.modules.goods.vo.*;
+import com.zhongzheng.modules.goods.vo.GoodsSpecAttributeRelationVo;
+import com.zhongzheng.modules.goods.vo.GoodsSpecTemplateVo;
+import com.zhongzheng.modules.goods.vo.GoodsVo;
 
-import java.util.Collection;
 import java.util.List;
 
 /**
@@ -56,4 +57,6 @@ public interface IGoodsSpecTemplateService extends IService<GoodsSpecTemplate> {
 	GoodsVo getSpecTemplate(Long specTemplateId, String specAttrIds);
 
     GoodsSpecTemplate getSpecTpByTenant(String name,Long createTime,Long newTenantId);
+
+	GoodsSpecTemplateVo getDistributionSpec(DistributionGoodsBo bo);
 }

+ 40 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java

@@ -23,6 +23,8 @@ 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.modules.activity.domain.ActivityGoodsPrice;
+import com.zhongzheng.modules.activity.service.IActivityGoodsPriceService;
 import com.zhongzheng.modules.bank.domain.*;
 import com.zhongzheng.modules.bank.mapper.QuestionMapper;
 import com.zhongzheng.modules.bank.service.*;
@@ -262,6 +264,9 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
     @Autowired
     private ISysGoodsCopyRecordService iGoodsCopyRecordService;
 
+    @Autowired
+    private IActivityGoodsPriceService iActivityGoodsPriceService;
+
 
     @Value("${oldStudySys.educationalInspector}")
     private String INFORM_PATH;
@@ -4506,6 +4511,41 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
                 .eq(Goods::getStatus, 1).last("limit 1"));
     }
 
+    @Override
+    public GoodsVo getDistributionGoods(DistributionGoodsBo bo) {
+        GoodsVo goodsVo = baseMapper.selectDetail(bo.getGoodsId());
+        if (StringUtils.isNotBlank(bo.getDisCode())){
+            //获取分销活动价格
+            goodsVo.setStandPrice(getActivityPrice(bo.getGoodsId(),bo.getDisCode()));
+        }
+        //多规格下的价格区间
+        if (ObjectUtils.isNotNull(goodsVo.getSpecTemplateId())) {
+            List<GoodsSpecAttributeRelation> list = goodsSpecAttributeRelationService
+                    .list(new LambdaQueryWrapper<GoodsSpecAttributeRelation>()
+                            .eq(GoodsSpecAttributeRelation::getSpecTemplateId, goodsVo.getSpecTemplateId()));
+            if (CollectionUtils.isNotEmpty(list)) {
+                List<Long> goodsIds = list.stream().filter(x -> ObjectUtils.isNotNull(x.getGoodsId())).map(GoodsSpecAttributeRelation::getGoodsId).collect(Collectors.toList());
+                List<Goods> goodsList = listByIds(goodsIds);
+                //从小到大排序
+                List<Goods> collect = goodsList.stream().filter(x -> ObjectUtils.isNotNull(x.getStandPrice())).sorted(Comparator.comparing(Goods::getStandPrice)).collect(Collectors.toList());
+                goodsVo.setMinPrice(getActivityPrice(collect.get(0).getGoodsId(),bo.getDisCode()));
+                goodsVo.setMaxPrice(getActivityPrice(collect.get(collect.size() - 1).getGoodsId(),bo.getDisCode()));
+            }
+        }
+        return goodsVo;
+    }
+
+    private BigDecimal getActivityPrice(Long goodsId,String code){
+        ActivityGoodsPrice goodsPrice = iActivityGoodsPriceService.getOne(new LambdaQueryWrapper<ActivityGoodsPrice>()
+                .eq(ActivityGoodsPrice::getGoodsId, goodsId)
+                .eq(ActivityGoodsPrice::getActivityCode, code)
+                .last("limit 1"));
+        if (ObjectUtils.isNotNull(goodsPrice)){
+            return goodsPrice.getGoodsPrice();
+        }
+        return new BigDecimal("0.00");
+    }
+
 
     private Long getNewId(Long oldId, Integer type){
         if (ObjectUtils.isNull(oldId) || oldId <= 0L){

+ 67 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsSpecTemplateServiceImpl.java

@@ -11,6 +11,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.Page;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.activity.domain.ActivityGoodsPrice;
+import com.zhongzheng.modules.activity.service.IActivityGoodsPriceService;
 import com.zhongzheng.modules.course.domain.CourseBusiness;
 import com.zhongzheng.modules.course.domain.CourseEducationType;
 import com.zhongzheng.modules.course.domain.CourseSubject;
@@ -54,6 +56,8 @@ public class GoodsSpecTemplateServiceImpl extends ServiceImpl<GoodsSpecTemplateM
     public ICourseEducationTypeService courseEducationTypeService;
     @Autowired
     public ICourseBusinessService courseBusinessService;
+    @Autowired
+    private IActivityGoodsPriceService iActivityGoodsPriceService;
 
     @Override
     public GoodsSpecTemplateVo queryById(Long specTemplateId){
@@ -492,4 +496,67 @@ public class GoodsSpecTemplateServiceImpl extends ServiceImpl<GoodsSpecTemplateM
         return baseMapper.getSpecTpByTenant(name,createTime, newTenantId);
     }
 
+    @Override
+    public GoodsSpecTemplateVo getDistributionSpec(DistributionGoodsBo bo) {
+        Long specTemplateId = bo.getSpecTemplateId();
+        GoodsSpecTemplate db = this.baseMapper.selectById(specTemplateId);
+        if (ObjectUtils.isNull(db)){
+            return null;
+        }
+        GoodsSpecTemplateVo vo = BeanUtil.toBean(db, GoodsSpecTemplateVo.class);
+        List<GoodsSpec> specList = goodsSpecService.list(new LambdaQueryWrapper<GoodsSpec>()
+                .eq(GoodsSpec::getSpecTemplateId, specTemplateId)
+                .orderByAsc(GoodsSpec::getSort));
+        if (CollectionUtils.isNotEmpty(specList)){
+            List<GoodsSpecVo> specVos = specList.stream().map(item -> {
+                GoodsSpecVo goodsSpecVo = BeanUtil.toBean(item, GoodsSpecVo.class);
+                List<GoodsSpecAttribute> attrList = goodsSpecAttributeService.list(new LambdaQueryWrapper<GoodsSpecAttribute>()
+                        .eq(GoodsSpecAttribute::getSpecId, item.getSpecId())
+                        .orderByAsc(GoodsSpecAttribute::getSort));
+                if (CollectionUtils.isNotEmpty(attrList)) {
+                    List<GoodsSpecAttributeVo> attrVos = attrList.stream().map(x -> BeanUtil.toBean(x, GoodsSpecAttributeVo.class)).collect(Collectors.toList());
+                    goodsSpecVo.setSpecAttrList(attrVos);
+                }
+                return goodsSpecVo;
+            }).collect(Collectors.toList());
+            vo.setSpecList(specVos);
+
+            //规格模板价格集合
+            List<GoodsSpecAttributeVo> specAttrList = specVos.get(0).getSpecAttrList();
+            if (CollectionUtils.isNotEmpty(specAttrList)){
+                List<SpecAttrPriceVo> voList = new ArrayList<>();
+                specAttrList.forEach(item -> {
+                    List<GoodsSpecAttributeRelation> relations = goodsSpecAttributeRelationService.list(new LambdaQueryWrapper<GoodsSpecAttributeRelation>()
+                            .eq(GoodsSpecAttributeRelation::getSpecTemplateId, vo.getSpecTemplateId())
+                            .like(GoodsSpecAttributeRelation::getSpecAttributeIds, item.getSpecAttributeId()));
+                    if (CollectionUtils.isNotEmpty(relations)){
+                        List<SpecAttrPriceVo> collect = relations.stream().map(x -> {
+                            Goods goods = goodsService.getById(x.getGoodsId());
+                            SpecAttrPriceVo priceVo = BeanUtil.toBean(goods,SpecAttrPriceVo.class);
+                            ActivityGoodsPrice goodsPrice = iActivityGoodsPriceService.getOne(new LambdaQueryWrapper<ActivityGoodsPrice>()
+                                    .eq(ActivityGoodsPrice::getGoodsId, goods.getGoodsId())
+                                    .eq(ActivityGoodsPrice::getActivityCode, bo.getDisCode())
+                                    .last("limit 1"));
+                            if (ObjectUtils.isNotNull(goodsPrice)){
+                                priceVo.setStandPrice(goodsPrice.getGoodsPrice());
+                            }
+
+                            priceVo.setSpecAttrIds(x.getSpecAttributeIds());
+                            priceVo.setSpecialGoods(0);
+                            //商品业务类型
+                            CourseBusiness business = courseBusinessService.getById(goods.getBusinessId());
+                            if (ObjectUtils.isNotNull(business) && ObjectUtils.isNotNull(business.getTemplateStatus())){
+                                priceVo.setSpecialGoods(business.getTemplateStatus() == 1? 1:0);
+                            }
+                            return priceVo;
+                        }).collect(Collectors.toList());
+                        voList.addAll(collect);
+                    }
+                });
+                vo.setSpecAttrPriceList(voList);
+            }
+        }
+        return vo;
+    }
+
 }

+ 36 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/bo/DistributionCashTopQueryBo.java

@@ -0,0 +1,36 @@
+package com.zhongzheng.modules.top.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;
+
+/**
+ * @author yangdamao
+ * @date 2023年03月28日 14:05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("业务员分销排行榜查询对象")
+public class DistributionCashTopQueryBo extends BaseEntity {
+    /** 分页大小 */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+    /** 当前页数 */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+
+    @ApiModelProperty("业务员名称")
+    private String sellerName;
+
+    @ApiModelProperty("开始时间")
+    private Long startTime;
+
+    @ApiModelProperty("结束时间")
+    private Long endTime;
+
+    @ApiModelProperty("机构ID")
+    private String tenantId;
+
+}

+ 7 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/bo/TenantOrderQueryBo.java

@@ -6,6 +6,8 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * @author yangdamao
  * @date 2023年03月28日 14:05
@@ -22,7 +24,7 @@ public class TenantOrderQueryBo extends BaseEntity {
     private Integer pageNum;
 
     @ApiModelProperty("机构ID")
-    private Long tenantId;
+    private String tenantId;
     @ApiModelProperty("开始时间")
     private Long startTime;
     @ApiModelProperty("结束时间")
@@ -33,6 +35,9 @@ public class TenantOrderQueryBo extends BaseEntity {
     private String userName;
     @ApiModelProperty("业务员姓名")
     private String sellerName;
-
+    @ApiModelProperty("支付状态 1未收费 2部分收费 3完全收费 4免费 (退款此状态保持不变)")
+    private List<Integer> payStatus;
+    @ApiModelProperty("退款状态 0(无和学员端拒绝退款)  1退款中 2已退款 3拒绝退款")
+    private Integer refundStatus;
 
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/bo/TenantSortNoticeQueryBo.java

@@ -34,6 +34,6 @@ public class TenantSortNoticeQueryBo extends BaseEntity {
     private Integer sortType;
     /** 机构ID */
     @ApiModelProperty("机构ID")
-    private Long tenantId;
+    private String tenantId;
 
 }

+ 30 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/bo/TopSellerOrderQueryBo.java

@@ -0,0 +1,30 @@
+package com.zhongzheng.modules.top.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;
+
+/**
+ * @author yangdamao
+ * @date 2023年03月28日 14:05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("业务员分销排行榜查询对象")
+public class TopSellerOrderQueryBo extends BaseEntity {
+    /** 分页大小 */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+    /** 当前页数 */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+
+    @ApiModelProperty("业务员ID")
+    private Long sellerId;
+
+    @ApiModelProperty("机构ID")
+    private String tenantId;
+
+}

+ 6 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/service/IDistributionActivityTemplateService.java

@@ -2,13 +2,11 @@ package com.zhongzheng.modules.top.distribution.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.distribution.bo.DistributionStatusEditBo;
 import com.zhongzheng.modules.distribution.vo.DistributionSellerVo;
 import com.zhongzheng.modules.top.distribution.bo.*;
-import com.zhongzheng.modules.distribution.bo.DistributionStatusEditBo;
 import com.zhongzheng.modules.top.distribution.domain.DistributionActivityTemplate;
-import com.zhongzheng.modules.top.distribution.vo.DistributionActivityTemplateVo;
-import com.zhongzheng.modules.top.distribution.vo.TenantOrderVo;
-import com.zhongzheng.modules.top.distribution.vo.TenantSortNoticeVo;
+import com.zhongzheng.modules.top.distribution.vo.*;
 
 import java.util.Collection;
 import java.util.List;
@@ -71,4 +69,8 @@ public interface IDistributionActivityTemplateService extends IService<Distribut
     List<TenantSortNoticeVo> getTenantSortNotice(TenantSortNoticeQueryBo bo);
 
     List<TenantOrderVo> getOrgOrder(TenantOrderQueryBo bo);
+
+    List<DistributionCashTopVo> getOrgCashList(DistributionCashTopQueryBo bo);
+
+    List<TopSellerOrderVo> getOrgCashDetail(TopSellerOrderQueryBo bo);
 }

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

@@ -475,4 +475,14 @@ public class DistributionActivityTemplateServiceImpl extends ServiceImpl<Distrib
     public List<TenantOrderVo> getOrgOrder(TenantOrderQueryBo bo) {
         return iDistributionActivityService.getOrgOrder(bo);
     }
+
+    @Override
+    public List<DistributionCashTopVo> getOrgCashList(DistributionCashTopQueryBo bo) {
+        return iDistributionActivityService.getOrgCashList(bo);
+    }
+
+    @Override
+    public List<TopSellerOrderVo> getOrgCashDetail(TopSellerOrderQueryBo bo) {
+        return iDistributionActivityService.getOrgCashDetail(bo);
+    }
 }

+ 51 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/vo/DistributionCashTopVo.java

@@ -0,0 +1,51 @@
+package com.zhongzheng.modules.top.distribution.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年03月28日 14:05
+ */
+@Data
+@ApiModel("业务员分销排行榜查询对象")
+public class DistributionCashTopVo implements Serializable {
+
+    @ApiModelProperty("业务员名称")
+    private String sellerId;
+
+    @ApiModelProperty("业务员名称")
+    private String sellerName;
+
+    @ApiModelProperty("手机号")
+    private String telphone;
+
+    @ApiModelProperty("邀请人ID")
+    private Long parentId;
+
+    @ApiModelProperty("邀请人名称")
+    private String parentName;
+
+    @ApiModelProperty("累计客户数")
+    private Integer subordinateNum;
+
+    @ApiModelProperty("累计推广数")
+    private Integer shareNum;
+
+    @ApiModelProperty("加入时间")
+    private Long createTime;
+
+    @ApiModelProperty("佣金")
+    private BigDecimal cashTotal;
+
+    @ApiModelProperty("机构ID")
+    private String tenantId;
+
+    @ApiModelProperty("机构名称")
+    private String tenantName;
+
+}

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

@@ -27,7 +27,7 @@ public class TenantOrderCashVo implements Serializable {
     @ApiModelProperty("佣金产生时间")
     private Long cashTime;
     /** 佣金状态 */
-    @ApiModelProperty("佣金状态:1冻结,2正常")
+    @ApiModelProperty("佣金状态:1冻结,2正常, 3退款")
     private Integer cashStatus;
     /** 业务员ID */
     @ApiModelProperty("业务员ID")

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

@@ -55,6 +55,9 @@ public class TenantOrderVo implements Serializable {
     /** 商品ID */
     @ApiModelProperty("商品ID")
     private Long goodsId;
+    /** 订单商品ID */
+    @ApiModelProperty("订单商品ID")
+    private Long orderGoodsId;
     /** 商品名称 */
     @ApiModelProperty("商品名称")
     private String goodsName;
@@ -63,7 +66,7 @@ public class TenantOrderVo implements Serializable {
     private String tenantName;
     /** 所属机构ID */
     @ApiModelProperty("所属机构ID")
-    private Long tenantId;
+    private String tenantId;
     /** 佣金详情 */
     @ApiModelProperty("佣金详情")
     private List<TenantOrderCashVo> cashVoList;

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

@@ -16,7 +16,7 @@ import java.math.BigDecimal;
 public class TenantSortNoticeVo implements Serializable {
     /** 机构ID */
     @ApiModelProperty("机构ID")
-    private Long tenantId;
+    private String tenantId;
     /** 机构名称 */
     @ApiModelProperty("机构名称")
     private String tenantName;

+ 79 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/distribution/vo/TopSellerOrderVo.java

@@ -0,0 +1,79 @@
+package com.zhongzheng.modules.top.distribution.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年03月28日 14:05
+ */
+@Data
+@ApiModel("业务员订单对象")
+public class TopSellerOrderVo implements Serializable {
+
+    /** id */
+    @ApiModelProperty("id")
+    private Long id;
+    /** 订单ID */
+    @ApiModelProperty("订单ID")
+    private Long orderId;
+    /** 订单号 */
+    @ApiModelProperty("订单号")
+    private String orderSn;
+    /** 订单状态 -2 超时关闭,-1手动关闭,0待支付,1已支付 3部分已退款 4完全退款 */
+    @ApiModelProperty("订单状态 -2 超时关闭,-1手动关闭,0待支付,1已支付 3部分已退款 4完全退款")
+    private Integer orderStatus;
+    /** 支付状态 1未收费 2部分收费 3完全收费 4免费 (退款此状态保持不变) */
+    @ApiModelProperty("支付状态 1未收费 2部分收费 3完全收费 4免费 (退款此状态保持不变)")
+    private Integer payStatus;
+    /** 活动名称 */
+    @ApiModelProperty("活动名称")
+    private String distributionName;
+    /** 活动ID */
+    @ApiModelProperty("活动ID")
+    private Long distributionId;
+    /** 活动code */
+    @ApiModelProperty("活动code")
+    private String distributionCode;
+    /** 下单人 */
+    @ApiModelProperty("下单人")
+    private String orderUserName;
+    /** 订单时间 */
+    @ApiModelProperty("订单时间")
+    private Long orderTime;
+    /** 订单金额 */
+    @ApiModelProperty("订单金额")
+    private BigDecimal orderPrice;
+    /** 层级佣金类型:1百分比,2固定金额 */
+    @ApiModelProperty("层级佣金类型:1百分比,2固定金额")
+    private Integer cashType;
+    /** 佣金比例 */
+    @ApiModelProperty("佣金比例")
+    private BigDecimal cashRatio;
+    /** 佣金 */
+    @ApiModelProperty("佣金")
+    private BigDecimal cash;
+    /** 佣金产生时间 */
+    @ApiModelProperty("佣金产生时间")
+    private Long cashTime;
+    /** 佣金状态 */
+    @ApiModelProperty("佣金状态:1冻结,2正常, 3退款")
+    private Integer cashStatus;
+    /** 业务员ID */
+    @ApiModelProperty("业务员ID")
+    private Long sellerId;
+    /** 商品ID */
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+    /** 订单商品ID */
+    @ApiModelProperty("订单商品ID")
+    private Long orderGoodsId;
+    @ApiModelProperty("机构ID")
+    private String tenantId;
+    @ApiModelProperty("机构名称")
+    private String tenantName;
+}

+ 2 - 0
zhongzheng-system/src/main/resources/mapper/modules/base/ShoppingCartMapper.xml

@@ -29,12 +29,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="projectName" column="project_name"/>
         <result property="businessName" column="business_name"/>
         <result property="classHours" column="class_hours"/>
+        <result property="distributionCode" column="distribution_code"/>
     </resultMap>
 
     <select id="selectList" parameterType="com.zhongzheng.modules.base.bo.ShoppingCartQueryBo"  resultMap="ShoppingCartVoResult">
         SELECT
             s.id,
             s.goods_id,
+            s.distribution_code,
             g.stand_price,
             g.cover_url,
             g.goods_type,

+ 221 - 2
zhongzheng-system/src/main/resources/mapper/modules/distribution/DistributionActivityMapper.xml

@@ -42,11 +42,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         d.distribution_id,
         d.`code` as distributionCode,
         dr.cash,
+        dr.cash_status,
         dr.create_time as cashTime,
         dr.seller_id,
         dr.profit_type as cashType,
         dr.profit as cashRatio,
-        dr.order_goods_id
+        dr.order_goods_id,
+        dr.id
         FROM
         distribution_rebate dr
         LEFT JOIN order_goods og ON dr.order_goods_id = og.order_goods_id
@@ -111,6 +113,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             u.telphone,
             o.create_time as orderTime,
             og.goods_real_price as orderPrice,
+            og.order_goods_id,
             g.goods_id,
             g.goods_name,
             t.tenant_id,
@@ -128,7 +131,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                     LEFT JOIN distribution_activity d ON og.distribution_code = d.`code`
                     LEFT JOIN goods g ON og.goods_id = g.goods_id
                     LEFT JOIN sys_tenant t ON og.tenant_id = t.tenant_id
-        WHERE og.`status` = 1 AND og.tenant_id = 1
+        WHERE og.`status` = 1
         <if test = "tenantId != null and tenantId != ''" >
             AND og.tenant_id = #{tenantId}
         </if >
@@ -144,6 +147,222 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test = "userName != null and userName != ''" >
             AND u.realname like concat('%', #{userName}, '%')
         </if >
+        <if test="payStatus != null and payStatus.size()!=0 ">
+            AND og.pay_status in
+            <foreach collection="payStatus" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test = "refundStatus != null and refundStatus != ''" >
+            AND og.refund_status = #{refundStatus}
+        </if >
+    </select>
+
+    <select id="getCashDetail" parameterType="java.lang.Long" resultType="com.zhongzheng.modules.distribution.vo.SellerOrderVo">
+        SELECT
+        o.order_id,
+        o.order_sn,
+        o.order_status,
+        og.pay_status,
+        d.`name` as distributionName,
+        u.realname as orderUserName,
+        o.create_time as orderTime,
+        og.goods_real_price as orderPrice,
+        og.goods_id,
+        d.distribution_id,
+        d.`code` as distributionCode,
+        dr.cash,
+        dr.create_time as cashTime,
+        dr.seller_id,
+        dr.profit_type as cashType,
+        dr.profit as cashRatio,
+        dr.order_goods_id,
+        dr.id,
+        dr.cash_status
+        FROM
+        distribution_rebate dr
+        LEFT JOIN order_goods og ON dr.order_goods_id = og.order_goods_id
+        LEFT JOIN distribution_seller ds ON dr.seller_id = ds.seller_id
+        LEFT JOIN `order` o ON dr.order_sn = o.order_sn
+        LEFT JOIN `user` u ON o.user_id = u.user_id
+        LEFT JOIN distribution_activity d ON dr.distribution_code = d.`code`
+        WHERE
+        dr.`status` = 1
+        AND dr.id = #{id}
+    </select>
+
+    <select id="getCashList" parameterType="com.zhongzheng.modules.distribution.bo.DistributionCashQueryBo" resultType="com.zhongzheng.modules.distribution.vo.DistributionCashVo">
+        SELECT
+            ds.seller_id,
+            ds.realname as sellerName,
+            su.phonenumber as telphone,
+            dsp.seller_id as parentId,
+            dsp.realname as parentName,
+            ( SELECT COUNT(*) FROM distribution_seller WHERE parent_id = ds.seller_id AND `status` = 1
+                <if test = "startTime != null and startTime != ''" >
+                    AND create_time <![CDATA[  >=  ]]> #{startTime}
+                </if >
+                <if test = "endTime != null and endTime != ''" >
+                    AND create_time <![CDATA[  <=  ]]> #{endTime}
+                </if >
+                ) AS subordinateNum,
+            ( SELECT COUNT(*) FROM distribution_link WHERE seller_id = ds.seller_id AND `status` = 1
+                <if test = "startTime != null and startTime != ''" >
+                    AND create_time <![CDATA[  >=  ]]> #{startTime}
+                </if >
+                <if test = "endTime != null and endTime != ''" >
+                    AND create_time <![CDATA[  <=  ]]> #{endTime}
+                </if >
+                ) AS shareNum,
+            ds.create_time as createTime,
+            ds.cash + ds.used_cash + ds.freeze_cash AS cashTotal
+        FROM
+            distribution_seller ds
+                LEFT JOIN distribution_seller dsp ON ds.parent_id = dsp.seller_id
+                LEFT JOIN sys_user su ON ds.seller_id = su.seller_id
+        WHERE
+            ds.`status` = 1
+        <if test = "sellerName != null and sellerName != ''" >
+            AND ds.realname like concat('%', #{sellerName}, '%')
+        </if >
+    </select>
+
+    <select id="getOrderList" parameterType="com.zhongzheng.modules.distribution.bo.DistributionOrderQueryBo" resultType="com.zhongzheng.modules.distribution.vo.DistributionOrderVo">
+        SELECT
+        o.order_id,
+        o.order_sn,
+        o.order_status,
+        og.pay_status,
+        d.`name` as distributionName,
+        d.distribution_id,
+        d.`code` as distributionCode,
+        u.realname as orderUserName,
+        u.telphone,
+        o.create_time as orderTime,
+        og.goods_real_price as orderPrice,
+        og.order_goods_id,
+        g.goods_id,
+        g.goods_name,
+        t.tenant_id,
+        t.tenant_name,
+        (SELECT SUM(cash) FROM distribution_rebate WHERE order_sn = og.order_sn GROUP BY order_sn) AS orderCash
+        FROM
+        (SELECT DISTINCT(dre.order_goods_id) FROM distribution_rebate dre
+        <if test = "sellerName != null and sellerName != ''" >
+            LEFT JOIN distribution_seller ds ON dre.seller_id = ds.seller_id WHERE ds.realname LIKE concat('%', #{sellerName}, '%')
+        </if >
+        ) dr
+        LEFT JOIN order_goods og ON dr.order_goods_id = og.order_goods_id
+        LEFT JOIN `order` o ON og.order_sn = o.order_sn
+        LEFT JOIN `user` u ON o.user_id = u.user_id
+        LEFT JOIN distribution_activity d ON og.distribution_code = d.`code`
+        LEFT JOIN goods g ON og.goods_id = g.goods_id
+        LEFT JOIN sys_tenant t ON og.tenant_id = t.tenant_id
+        WHERE og.`status` = 1
+        <if test = "startTime != null and startTime != ''" >
+            AND o.create_time <![CDATA[  >=  ]]> #{startTime}
+        </if >
+        <if test = "endTime != null and endTime != ''" >
+            AND o.create_time <![CDATA[  <=  ]]> #{endTime}
+        </if >
+        <if test = "orderSn != null and orderSn != ''" >
+            AND og.`order` = #{orderSn}
+        </if >
+        <if test = "userName != null and userName != ''" >
+            AND u.realname like concat('%', #{userName}, '%')
+        </if >
+        <if test="payStatus != null and payStatus.size()!=0 ">
+            AND og.pay_status in
+            <foreach collection="payStatus" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test = "refundStatus != null and refundStatus != ''" >
+            AND og.refund_status = #{refundStatus}
+        </if >
+    </select>
+
+    <select id="getOrgCashList" parameterType="com.zhongzheng.modules.top.distribution.bo.DistributionCashTopQueryBo" resultType="com.zhongzheng.modules.top.distribution.vo.DistributionCashTopVo">
+        SELECT
+        ds.seller_id,
+        ds.realname as sellerName,
+        su.phonenumber as telphone,
+        dsp.seller_id as parentId,
+        dsp.realname as parentName,
+        ( SELECT COUNT(*) FROM distribution_seller WHERE parent_id = ds.seller_id AND `status` = 1
+        <if test = "startTime != null and startTime != ''" >
+            AND create_time <![CDATA[  >=  ]]> #{startTime}
+        </if >
+        <if test = "endTime != null and endTime != ''" >
+            AND create_time <![CDATA[  <=  ]]> #{endTime}
+        </if >
+        ) AS subordinateNum,
+        ( SELECT COUNT(*) FROM distribution_link WHERE seller_id = ds.seller_id AND `status` = 1
+        <if test = "startTime != null and startTime != ''" >
+            AND create_time <![CDATA[  >=  ]]> #{startTime}
+        </if >
+        <if test = "endTime != null and endTime != ''" >
+            AND create_time <![CDATA[  <=  ]]> #{endTime}
+        </if >
+        ) AS shareNum,
+        ds.create_time as createTime,
+        t.tenant_id,
+        t.tenant_name,
+        ds.cash + ds.used_cash + ds.freeze_cash AS cashTotal
+        FROM
+        distribution_seller ds
+        LEFT JOIN distribution_seller dsp ON ds.parent_id = dsp.seller_id
+        LEFT JOIN sys_user su ON ds.seller_id = su.seller_id
+        LEFT JOIN sys_tenant t ON ds.tenant_id = t.tenant_id
+        WHERE
+        ds.`status` = 1
+        <if test = "sellerName != null and sellerName != ''" >
+            AND ds.realname like concat('%', #{sellerName}, '%')
+        </if >
+        <if test = "tenantId != null and tenantId != ''" >
+            AND ds.tenant_id like concat('%', #{tenantId}, '%')
+        </if >
+    </select>
+
+    <select id="getOrgCashDetail" parameterType="com.zhongzheng.modules.top.distribution.bo.TopSellerOrderQueryBo" resultType="com.zhongzheng.modules.top.distribution.vo.TopSellerOrderVo">
+        SELECT
+        o.order_id,
+        o.order_sn,
+        o.order_status,
+        og.pay_status,
+        d.`name` as distributionName,
+        u.realname as orderUserName,
+        o.create_time as orderTime,
+        og.goods_real_price as orderPrice,
+        og.goods_id,
+        d.distribution_id,
+        d.`code` as distributionCode,
+        dr.cash,
+        dr.cash_status,
+        dr.create_time as cashTime,
+        dr.seller_id,
+        dr.profit_type as cashType,
+        dr.profit as cashRatio,
+        dr.order_goods_id,
+        dr.id,
+        t.tenant_id,
+        t.tenant_name
+        FROM
+        distribution_rebate dr
+        LEFT JOIN sys_tenant t ON dr.tenant_id = t.tenant_id
+        LEFT JOIN order_goods og ON dr.order_goods_id = og.order_goods_id
+        LEFT JOIN distribution_seller ds ON dr.seller_id = ds.seller_id
+        LEFT JOIN `order` o ON dr.order_sn = o.order_sn
+        LEFT JOIN `user` u ON o.user_id = u.user_id
+        LEFT JOIN distribution_activity d ON dr.distribution_code = d.`code`
+        WHERE
+        dr.`status` = 1
+        <if test = "sellerId != null and sellerId != ''" >
+            AND dr.seller_id = #{sellerId}
+        </if >
+        <if test = "tenantId != null and tenantId != ''" >
+            AND dr.tenant_id = #{tenantId}
+        </if >
     </select>
 
 </mapper>