Browse Source

分销系统V.1.0.0

kaick 1 year ago
parent
commit
f7f2da4f12
25 changed files with 1137 additions and 208 deletions
  1. 11 12
      src/main/java/com/caimei365/commodity/components/PriceUtilService.java
  2. 182 7
      src/main/java/com/caimei365/commodity/controller/ReportingClubApi.java
  3. 1 1
      src/main/java/com/caimei365/commodity/mapper/CmDistributionProductMapper.java
  4. 2 5
      src/main/java/com/caimei365/commodity/mapper/CmDistributionSkuMapper.java
  5. 27 3
      src/main/java/com/caimei365/commodity/mapper/CmReportingMemberMapper.java
  6. 11 0
      src/main/java/com/caimei365/commodity/mapper/PriceMapper.java
  7. 10 0
      src/main/java/com/caimei365/commodity/model/po/CmDistribution.java
  8. 1 1
      src/main/java/com/caimei365/commodity/model/po/CmDistributionProduct.java
  9. 10 2
      src/main/java/com/caimei365/commodity/model/po/CmDistributionTeamProduct.java
  10. 61 12
      src/main/java/com/caimei365/commodity/model/po/CmReportingClub.java
  11. 69 0
      src/main/java/com/caimei365/commodity/model/vo/CmDistributionProductVO.java
  12. 104 0
      src/main/java/com/caimei365/commodity/model/vo/CmDistributionVO.java
  13. 62 0
      src/main/java/com/caimei365/commodity/model/vo/CmRelatedImageVO.java
  14. 158 0
      src/main/java/com/caimei365/commodity/model/vo/CmReportingClubVO.java
  15. 84 0
      src/main/java/com/caimei365/commodity/model/vo/CmReportingMemberVO.java
  16. 29 8
      src/main/java/com/caimei365/commodity/service/CmReportingClubService.java
  17. 117 35
      src/main/java/com/caimei365/commodity/service/impl/CmReportingClubServiceImpl.java
  18. 7 1
      src/main/java/com/caimei365/commodity/service/impl/PageServiceImpl.java
  19. 5 0
      src/main/resources/bootstrap.yml
  20. 2 12
      src/main/resources/mapper/CmDistributionMapper.xml
  21. 9 16
      src/main/resources/mapper/CmDistributionProductMapper.xml
  22. 1 21
      src/main/resources/mapper/CmDistributionSkuMapper.xml
  23. 8 11
      src/main/resources/mapper/CmReportingClubMapper.xml
  24. 125 61
      src/main/resources/mapper/CmReportingMemberMapper.xml
  25. 41 0
      src/main/resources/mapper/PriceMapper.xml

+ 11 - 12
src/main/java/com/caimei365/commodity/components/PriceUtilService.java

@@ -4,11 +4,9 @@ package com.caimei365.commodity.components;
 import com.caimei365.commodity.mapper.PriceMapper;
 import com.caimei365.commodity.mapper.PromotionsMapper;
 import com.caimei365.commodity.model.dto.Sku;
-import com.caimei365.commodity.model.dto.VipSkuPriceDto;
 import com.caimei365.commodity.model.vo.*;
 import com.caimei365.commodity.utils.ImageUtils;
 import com.caimei365.commodity.utils.MathUtil;
-import com.google.common.util.concurrent.AtomicDouble;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
@@ -17,12 +15,7 @@ import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Comparator;
 import java.util.List;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
 /**
@@ -96,11 +89,12 @@ public class PriceUtilService {
      * @param userId 用户Id
      */
     public void setPriceByUserId(PriceVo price, Integer userId, Integer ind) {
-        // 根据用户Id查询用户身份: 0个人,1协销,2会员机构,3供应商,4普通机构
+        // 根据用户Id查询用户身份: 0个人,1协销,7外部协销,2会员机构,3供应商,4普通机构
         Integer identity = priceMapper.getIdentityByUserId(userId);
         if (null == identity) {
             identity = 0;
         }
+
         // priceFlag: 0公开价格,1不公开价格,2仅对会员机构公开,3仅对医美机构公开
         Integer priceFlag = null != price.getPriceFlag() ? price.getPriceFlag() : 0;
         // 会员机构类型:1医美,2生美
@@ -129,10 +123,14 @@ public class PriceUtilService {
                 isShopOwn = true;
             }
         }
-        // 设置价格标志(协销|价格公开|仅对医美机构公开|仅对会员机构公开|供应商自己的商品)
-        boolean setFlag = identity == 1 || priceFlag == 0 || (priceFlag == 3 && clubType == 1) || (priceFlag == 2 && (identity == 2 || isSuperVip)) || isShopOwn;
-
-        List<Sku> skus = priceMapper.findSkus(price.getProductId());
+        // 设置价格标志(协销|价格公开|外部协销|价格公开|仅对医美机构公开|仅对会员机构公开|供应商自己的商品)
+        boolean setFlag = identity == 1 || identity == 7 || priceFlag == 0 || (priceFlag == 3 && clubType == 1) || (priceFlag == 2 && (identity == 2 || isSuperVip)) || isShopOwn;
+        List<Sku> skus = null;
+        if (identity == 7) {
+            skus = priceMapper.findDistributionSkus(price.getProductId());
+        } else {
+            skus = priceMapper.findSkus(price.getProductId());
+        }
         int size = skus.size();
         //税费标志
         boolean taxFlag = "0".equals(price.getIncludedTax()) && ("1".equals(price.getInvoiceType()) || "2".equals(price.getInvoiceType()));
@@ -143,6 +141,7 @@ public class PriceUtilService {
         price.setMinBuyNumber(skus.get(0).getMinBuyNumber());
         price.setUnit(skus.get(0).getUnit());
         price.setStock(skus.get(0).getStock());
+        Integer finalIdentity = identity;
         skus.forEach(s -> {
             s.setOriginalPrice(s.getPrice());
             s.setPriceGrade(getPriceGrade(s.getPrice()));

+ 182 - 7
src/main/java/com/caimei365/commodity/controller/ReportingClubApi.java

@@ -6,6 +6,8 @@ import com.caimei365.commodity.model.po.CmDistributionTeamProduct;
 import com.caimei365.commodity.model.po.CmReportingClub;
 import com.caimei365.commodity.model.po.CmReportingMember;
 import com.caimei365.commodity.model.vo.ArchiveVo;
+import com.caimei365.commodity.model.vo.CmDistributionVO;
+import com.caimei365.commodity.model.vo.CmReportingMemberVO;
 import com.caimei365.commodity.model.vo.PaginationVo;
 import com.caimei365.commodity.service.CmReportingClubService;
 import com.github.pagehelper.PageHelper;
@@ -13,9 +15,13 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @创建人 hzg
@@ -42,11 +48,109 @@ public class ReportingClubApi {
     public ResponseJson list(CmDistribution cmDistribution,String clubName,
                              @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
         PageHelper.startPage(pageNum, pageSize);
-        List<CmReportingMember> cmReportingClubList = cmReportingClubService.getCmReportingClubList(cmDistribution,clubName);
-        PaginationVo<CmReportingMember> paginationVo = new PaginationVo(cmReportingClubList);
+        if (StringUtils.isBlank(cmDistribution.getId()) && null == cmDistribution.getParentId()) {
+            return ResponseJson.error("参数异常", null);
+        }
+        List<CmReportingMember> cmReportingClubList = cmReportingClubService.getCmReportingClubList(new CmDistribution()
+                        .id(cmDistribution.id())
+                        .parentId(cmDistribution.getParentId())
+                , clubName, null, null, null, null, null, null);
+        PaginationVo<CmReportingMemberVO> paginationVo = new PaginationVo(CmReportingMemberVO.setValues(cmReportingClubList));
         return ResponseJson.success(paginationVo);
     }
 
+    /**
+     * 报备佣金列表
+     */
+    @GetMapping("/reportingDistributionList")
+    public ResponseJson reportingDistributionList(CmDistribution cmDistribution, Integer settleStatus) {
+        if (null == cmDistribution.parentId()||null==settleStatus) {
+            return ResponseJson.error("参数异常!", null);
+        }
+        Map<String, Object> map = new HashMap<>();
+        List<CmDistribution> cmDistributionList = cmReportingClubService.getCmDistributionList(new CmDistribution()
+                .linkMan(cmDistribution.linkMan())
+                .mobile(cmDistribution.mobile())
+                .status(90)
+                .parentId(cmDistribution.parentId()));
+        List<CmDistributionVO> cmDistributionVOS = CmDistributionVO.setValues(cmDistributionList);
+        cmDistributionVOS.forEach(s -> {
+            s.setOrderCount(cmReportingClubService.getCmReportingMemberCount(s.getId(), null, cmDistribution.linkMan(), cmDistribution.mobile(), settleStatus));
+            s.setCommission(cmReportingClubService.getCmReportingMemberCommission(s.getId(), null, cmDistribution.linkMan(), cmDistribution.mobile(), settleStatus));
+        });
+        map.put("orderCount", cmReportingClubService.getCmReportingMemberCount(null, cmDistribution.parentId(), cmDistribution.linkMan(), cmDistribution.mobile(), settleStatus));
+        map.put("commission", cmReportingClubService.getCmReportingMemberCommission(null, cmDistribution.parentId(), cmDistribution.linkMan(), cmDistribution.mobile(), settleStatus));
+        map.put("cmDistributionList", cmDistributionVOS);
+        return ResponseJson.success(map);
+    }
+
+    @GetMapping("/reportingDistributionFrom")
+    public ResponseJson reportingDistributionFrom(CmDistribution cmDistribution, String clubName, Integer settleStatus,
+                                                  @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        if (StringUtils.isBlank(cmDistribution.getId())||null==settleStatus) {
+            return ResponseJson.error("参数异常", null);
+        }
+        Map<String, Object> map = new HashMap<>();
+        CmDistributionVO cmDistributionVO = CmDistributionVO.setValue(cmReportingClubService.getCmDistributionById(cmDistribution.id()));
+        cmDistributionVO.setOrderCount(cmReportingClubService.getCmReportingMemberCount(cmDistributionVO.getId(), null, null, null, settleStatus));
+        cmDistributionVO.setCommission(cmReportingClubService.getCmReportingMemberCommission(cmDistributionVO.getId(), null, null, null, settleStatus));
+
+        List<CmReportingMember> cmReportingClubList = cmReportingClubService.getCmReportingClubList(new CmDistribution()
+                        .id(cmDistribution.id())
+                , clubName, settleStatus, null, null, null, null, null);
+        PaginationVo<CmReportingMemberVO> paginationVo = new PaginationVo(CmReportingMemberVO.setValues(cmReportingClubList));
+        map.put("cmDistribution", cmDistributionVO);
+        map.put("paginationVo", paginationVo);
+        return ResponseJson.success(map);
+    }
+
+    /**
+     * 销售佣金列表
+     */
+    @GetMapping("/splitReportingDistributionList")
+    public ResponseJson splitReportingDistributionList(CmDistribution cmDistribution, Integer splitSettleStatus, Integer payWay) {
+        if (null == cmDistribution.parentId()||null==splitSettleStatus||null==payWay) {
+            return ResponseJson.error("参数异常!", null);
+        }
+        Map<String, Object> map = new HashMap<>();
+        List<CmDistribution> cmDistributionList = cmReportingClubService.getCmDistributionList(new CmDistribution()
+                .linkMan(cmDistribution.linkMan())
+                .mobile(cmDistribution.mobile())
+                .status(90)
+                .parentId(cmDistribution.parentId()));
+        List<CmDistributionVO> cmDistributionVOS = CmDistributionVO.setValues(cmDistributionList);
+        cmDistributionVOS.forEach(s -> {
+            s.setOrderCount(cmReportingClubService.getCmReportingMemberSplitCount(s.getId(), null, cmDistribution.linkMan(), cmDistribution.mobile(), splitSettleStatus, payWay));
+            s.setCommission(cmReportingClubService.getCmReportingMemberSplitCommission(s.getId(), null, cmDistribution.linkMan(), cmDistribution.mobile(), splitSettleStatus, payWay));
+        });
+        map.put("orderCount", cmReportingClubService.getCmReportingMemberSplitCount(null, cmDistribution.parentId(), cmDistribution.linkMan(), cmDistribution.mobile(), splitSettleStatus, payWay));
+        map.put("commission", cmReportingClubService.getCmReportingMemberSplitCommission(null, cmDistribution.parentId(), cmDistribution.linkMan(), cmDistribution.mobile(), splitSettleStatus, payWay));
+        map.put("cmDistributionList", cmDistributionVOS);
+        return ResponseJson.success(map);
+    }
+
+    @GetMapping("/splitReportingDistributionFrom")
+    public ResponseJson splitReportingDistributionFrom(CmDistribution cmDistribution, Integer splitSettleStatus, Integer payWay, String shopOrderNo, String startTime, String entTime,
+                                                       @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        if (StringUtils.isBlank(cmDistribution.getId())||null==splitSettleStatus||null==payWay) {
+            return ResponseJson.error("参数异常", null);
+        }
+        Map<String, Object> map = new HashMap<>();
+        CmDistributionVO cmDistributionVO = CmDistributionVO.setValue(cmReportingClubService.getCmDistributionById(cmDistribution.id()));
+        cmDistributionVO.setOrderCount(cmReportingClubService.getCmReportingMemberSplitCount(cmDistributionVO.getId(), null, null, null, splitSettleStatus, payWay));
+        cmDistributionVO.setCommission(cmReportingClubService.getCmReportingMemberSplitCommission(cmDistributionVO.getId(), null, null, null, splitSettleStatus, payWay));
+
+        List<CmReportingMember> cmReportingClubList = cmReportingClubService.getCmReportingClubList(new CmDistribution()
+                        .id(cmDistribution.id())
+                , null, null, payWay, splitSettleStatus, shopOrderNo, startTime, entTime);
+        PaginationVo<CmReportingMemberVO> paginationVo = new PaginationVo(CmReportingMemberVO.setValues(cmReportingClubList));
+        map.put("cmDistribution", cmDistributionVO);
+        map.put("paginationVo", paginationVo);
+        return ResponseJson.success(map);
+    }
+
     @ApiOperation("分销团队商品列表")
     @ApiImplicitParams({
             @ApiImplicitParam(readOnly = true, name = "pageNo", value = "页面页数"),
@@ -58,6 +162,9 @@ public class ReportingClubApi {
     public ResponseJson productList(CmDistribution cmDistribution,
                              @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
         PageHelper.startPage(pageNum, pageSize);
+        if (StringUtils.isBlank(cmDistribution.getId())) {
+            return ResponseJson.error("参数异常", null);
+        }
         List<CmDistributionTeamProduct> cmDistributionTeamProducts = cmReportingClubService.getCmDistributionTeamProductList(cmDistribution);
         PaginationVo<CmDistributionTeamProduct> paginationVo = new PaginationVo(cmDistributionTeamProducts);
         return ResponseJson.success(paginationVo);
@@ -67,13 +174,17 @@ public class ReportingClubApi {
     @ApiImplicitParams({
             @ApiImplicitParam(readOnly = true, name = "pageNo", value = "页面页数"),
             @ApiImplicitParam(readOnly = true, name = "pageSize", value = "页面数据量"),
+            @ApiImplicitParam(readOnly = true, name = "id", value = "团队管理员Id"),
             @ApiImplicitParam(readOnly = true, name = "productName", value = "商品名称"),
     })
     @GetMapping("/archiveList")
-    public ResponseJson getProductArchiveList(String productName,
-                             @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+    public ResponseJson getProductArchiveList(Integer id, String productName,
+                                              @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        if (null==id) {
+            return ResponseJson.error("参数异常", null);
+        }
         PageHelper.startPage(pageNum, pageSize);
-        List<ArchiveVo> archiveList = cmReportingClubService.getProductArchiveList(productName);
+        List<ArchiveVo> archiveList = cmReportingClubService.getProductArchiveList(id, productName);
         PaginationVo<ArchiveVo> paginationVo = new PaginationVo(archiveList);
         return ResponseJson.success(paginationVo);
     }
@@ -85,18 +196,82 @@ public class ReportingClubApi {
     })
     @GetMapping("/details")
     public ResponseJson list(String id) {
+        if (StringUtils.isBlank(id)) {
+            return ResponseJson.error("参数异常", null);
+        }
         CmReportingMember cmReportingMember = cmReportingClubService.getCmReportingMemberById(id);
-        return ResponseJson.success(cmReportingMember);
+        return ResponseJson.success(CmReportingMemberVO.setValue(cmReportingMember));
     }
 
     @ApiOperation("新增机构意向订单")
     @ApiImplicitParams({
-            @ApiImplicitParam(readOnly = true, name = "id", value = "机构意向订单报备成员记录Id"),
     })
     @PostMapping("/add")
     public ResponseJson add(CmReportingClub cmReportingClub) {
         return cmReportingClubService.addCmReportingClub(cmReportingClub);
     }
 
+    @ApiOperation("锁定机构意向订单")
+    @ApiImplicitParams({
+    })
+    @GetMapping("/updateReportingClub")
+    public ResponseJson updateCmReportingClub(CmReportingClub cmReportingClub) {
+        if (StringUtils.isBlank(cmReportingClub.id()) && null == cmReportingClub.distributionId()) {
+            return ResponseJson.error("参数异常!", null);
+        }
+        cmReportingClubService.updateCmReportingClub(new CmReportingClub()
+                .id(cmReportingClub.id())
+                .distributionId(cmReportingClub.distributionId())
+                .lockStatus(1)
+                .lockTime(new Date())
+        );
+        return ResponseJson.success("确认成功!", null);
+    }
+
+    @ApiOperation("确认结算机构意向订单")
+    @ApiImplicitParams({
+    })
+    @GetMapping("/updateSettleStatus")
+    public ResponseJson updateSettleStatus(CmReportingMember cmReportingMember) {
+        if (StringUtils.isBlank(cmReportingMember.id())) {
+            return ResponseJson.error("参数异常!", null);
+        }
+        CmReportingMember cmReportingMemberById = cmReportingClubService.getCmReportingMemberById(cmReportingMember.id());
+        if (null != cmReportingMemberById &&cmReportingMemberById.auditStatus().equals("2")) {
+            cmReportingClubService.updateCmReportingMember(new CmReportingMember()
+                    .id(cmReportingMember.id())
+                    .settleStatus(3)
+                    .settleTime(new Date())
+            );
+        } else {
+            return ResponseJson.error("订单异常!", null);
+        }
+
+        return ResponseJson.success("确认成功!", null);
+    }
+
+    @ApiOperation("确认分账结算机构意向订单")
+    @ApiImplicitParams({
+            @ApiImplicitParam(readOnly = true, name = "id", value = "机构意向订单报备记录Id"),
+    })
+    @GetMapping("/updateSplitSettleStatus")
+    public ResponseJson updateSplitSettleStatus(String [] ids) {
+        if (ids.length>0) {
+            return ResponseJson.error("参数异常!", null);
+        }
+        for (String id : ids) {
+            CmReportingClub cmReportingClubById = cmReportingClubService.getCmReportingClubById(id);
+            if (null != cmReportingClubById && cmReportingClubById.orderStatus() == 1) {
+                cmReportingClubService.updateCmReportingClub(new CmReportingClub()
+                        .id(id)
+                        .splitSettleStatus(3)
+                        .splitSettleTime(new Date())
+                );
+            } else {
+                return ResponseJson.error("订单异常!", null);
+            }
+        }
+        return ResponseJson.success("确认成功!", null);
+    }
 
 }

+ 1 - 1
src/main/java/com/caimei365/commodity/mapper/CmDistributionProductMapper.java

@@ -38,7 +38,7 @@ public interface CmDistributionProductMapper
      * @param productName     搜索关键词
      * @return
      */
-    List<ArchiveVo> getProductArchiveList( @Param("productName") String productName);
+    List<ArchiveVo> getProductArchiveList( @Param("id") Integer id,@Param("productName") String productName);
 
     /**
      * 通过对象查询分销团队商品列表

+ 2 - 5
src/main/java/com/caimei365/commodity/mapper/CmDistributionSkuMapper.java

@@ -1,9 +1,7 @@
 package com.caimei365.commodity.mapper;
 
-import com.caimei.modules.product.entity.CmDistributionSku;
-import com.caimei.modules.product.entity.CmSku;
-import com.thinkgem.jeesite.common.persistence.CrudDao;
-import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
+import com.caimei365.commodity.model.po.CmDistributionSku;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -57,7 +55,6 @@ public interface CmDistributionSkuMapper
      */
     public List<String> getByIds(CmDistributionSku cmDistributionSku);
 
-    public List<CmSku> findDistributionSku(Integer productId);
     /**
      * 通过对象查询记录总数
      *

+ 27 - 3
src/main/java/com/caimei365/commodity/mapper/CmReportingMemberMapper.java

@@ -5,6 +5,7 @@ import com.caimei365.commodity.model.po.CmReportingMember;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -29,7 +30,7 @@ public interface CmReportingMemberMapper
      * @param cmDistribution 分销报备成员
      * @return 分销报备成员集合
      */
-    public List<CmReportingMember> getCmDistributionMemberList(@Param("cmDistribution")CmDistribution cmDistribution,@Param("clubName") String clubName);
+    public List<CmReportingMember> getCmDistributionMemberList(@Param("cmDistribution")CmDistribution cmDistribution,@Param("clubName") String clubName,@Param("settleStatus") Integer settleStatus,@Param("payWay") Integer payWay,@Param("splitSettleStatus") Integer splitSettleStatus,@Param("shopOrderNo") String shopOrderNo,@Param("startTime") String startTime,@Param("endTime") String endTime);
 
     /**
      * 通过Id查询分销报备成员对象
@@ -63,13 +64,36 @@ public interface CmReportingMemberMapper
      */
     public List<String> getByIds(CmReportingMember cmReportingMember);
 
+    /**
+     * 通过对象查询分销报备成员记录总数
+     */
+    public Integer getCount(CmReportingMember cmReportingMember);
+
     /**
      * 通过对象查询分销报备成员记录总数
      *
-     * @param cmReportingMember 分销报备成员
      * @return 分销报备成员Integer
      */
-    public Integer getCmReportingMemberCount(CmReportingMember cmReportingMember);
+    public  Integer getCmReportingMemberCount(@Param("distributionId") String distributionId,@Param("parentId") Integer parentId,@Param("linkMan") String linkMan,@Param("mobile") String mobile,@Param("settleStatus") Integer settleStatus);
+
+    /**
+     * 通过对象查询分销报备佣金
+     *
+     * @return 分销报备成员Integer
+     */
+    public  BigDecimal getCmReportingMemberCommission(@Param("distributionId") String distributionId, @Param("parentId") Integer parentId, @Param("linkMan") String linkMan, @Param("mobile") String mobile, @Param("settleStatus") Integer settleStatus);
+    /**
+     * 通过对象查询分销订单佣金
+     *
+     * @return 分销报备成员Integer
+     */
+    public  BigDecimal getCmReportingMemberSplitCommission(@Param("distributionId") String distributionId, @Param("parentId") Integer parentId, @Param("linkMan") String linkMan, @Param("mobile") String mobile, @Param("splitSettleStatus") Integer settleStatus,@Param("payWay") Integer payWay);
+    /**
+     * 通过对象查询分销订单记录总数
+     *
+     * @return 分销报备成员Integer
+     */
+    public  Integer getCmReportingMemberSplitCount(@Param("distributionId") String distributionId, @Param("parentId") Integer parentId, @Param("linkMan") String linkMan, @Param("mobile") String mobile, @Param("splitSettleStatus") Integer settleStatus,@Param("payWay") Integer payWay);
 
     /**
      * 新增分销报备成员

+ 11 - 0
src/main/java/com/caimei365/commodity/mapper/PriceMapper.java

@@ -25,6 +25,10 @@ public interface PriceMapper {
      */
     PriceVo getDetailPrice(Integer productId);
 
+    /**
+     * 根据商品id查找价格
+     */
+    PriceVo getDistributionDetailPrice(Integer productId);
     /**
      * 采美sku最低价
      * @param productId
@@ -103,6 +107,13 @@ public interface PriceMapper {
      */
     List<Sku> findSkus(Integer productId);
 
+    /**
+     * 分销人员skus
+     * @param productId
+     * @return
+     */
+    List<Sku> findDistributionSkus(Integer productId);
+
     /**
      * skus
      * @param productId

+ 10 - 0
src/main/java/com/caimei365/commodity/model/po/CmDistribution.java

@@ -55,6 +55,8 @@ public class CmDistribution  implements Serializable
     /** 分销二维码 */
     private String qrCode;
 
+    /** 头像 */
+    private String image;
     /** 父级团队Id:0表示团队 */
     private Integer parentId;
 
@@ -72,6 +74,14 @@ public class CmDistribution  implements Serializable
     /** 删除状态 0正常,其他删除 */
     private String delFlag;
 
+    public String getImage() {
+        return image;
+    }
+
+    public void setImage(String image) {
+        this.image = image;
+    }
+
     public String getId() {
         return id;
     }

+ 1 - 1
src/main/java/com/caimei365/commodity/model/po/CmDistributionProduct.java

@@ -72,7 +72,7 @@ public class CmDistributionProduct  implements Serializable
     /** 机构价格(同为二手商品的交易价) */
     private BigDecimal price;
 
-    /** 机构价格(同为二手商品的交易价) */
+    /** skus */
     private List<CmDistributionSku> skus;
 
     public Integer getDistributionId() {

+ 10 - 2
src/main/java/com/caimei365/commodity/model/po/CmDistributionTeamProduct.java

@@ -5,6 +5,7 @@ import lombok.experimental.Accessors;
 import org.apache.ibatis.type.Alias;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 /**
  * 对象 cm_distribution_team_product
@@ -31,8 +32,6 @@ public class CmDistributionTeamProduct  implements Serializable
     /** 上架状态:1上架,2下架 */
     private String validFlag;
 
-
-
     /** 商品名称 */
     private String name;
     /** 供应商Id */
@@ -41,6 +40,15 @@ public class CmDistributionTeamProduct  implements Serializable
     private String shopName;
     /** mainImage */
     private String mainImage;
+    private BigDecimal price;
+
+    public BigDecimal getPrice() {
+        return price;
+    }
+
+    public void setPrice(BigDecimal price) {
+        this.price = price;
+    }
 
     public String getName() {
         return name;

+ 61 - 12
src/main/java/com/caimei365/commodity/model/po/CmReportingClub.java

@@ -8,7 +8,6 @@ import org.apache.ibatis.type.Alias;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-import java.util.List;
 
 /**
  * 机构报备对象 cm_reporting_club
@@ -55,7 +54,7 @@ public class CmReportingClub implements Serializable
     private Integer lockStatus;
 
     /** 锁定时间 */
-    private Integer lockTime;
+    private Date lockTime;
 
     /** 分销报备人数量 */
     private Integer distributionCount;
@@ -85,10 +84,66 @@ public class CmReportingClub implements Serializable
     /** 结算时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date settleTime;
+
+    /** 分账结算状态: 0待确认 1待手动分账 ,2待手动结算,3已结算 */
+    private Integer splitSettleStatus;
+
+    /** 分账结算时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date splitSettleTime;
+
+    /** 子订单编号 */
+    private String shopOrderNo;
+
+    /** 下单时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date orderTime;
+
     /** 报备成员 */
     private CmReportingMember cmReportingMember;
-    /** 报备成员集合 */
-    private List<CmReportingMember> cmReportingMemberList;
+
+    /** 商品详情 */
+    private CmDistributionProduct distributionProduct;
+
+    public CmDistributionProduct getDistributionProduct() {
+        return distributionProduct;
+    }
+
+    public String getShopOrderNo() {
+        return shopOrderNo;
+    }
+
+    public Integer getSplitSettleStatus() {
+        return splitSettleStatus;
+    }
+
+    public void setSplitSettleStatus(Integer splitSettleStatus) {
+        this.splitSettleStatus = splitSettleStatus;
+    }
+
+    public Date getSplitSettleTime() {
+        return splitSettleTime;
+    }
+
+    public void setSplitSettleTime(Date splitSettleTime) {
+        this.splitSettleTime = splitSettleTime;
+    }
+
+    public void setShopOrderNo(String shopOrderNo) {
+        this.shopOrderNo = shopOrderNo;
+    }
+
+    public Date getOrderTime() {
+        return orderTime;
+    }
+
+    public void setOrderTime(Date orderTime) {
+        this.orderTime = orderTime;
+    }
+
+    public void setDistributionProduct(CmDistributionProduct distributionProduct) {
+        this.distributionProduct = distributionProduct;
+    }
 
     public Integer getOrderId() {
         return orderId;
@@ -138,11 +193,11 @@ public class CmReportingClub implements Serializable
         this.productImage = productImage;
     }
 
-    public Integer getLockTime() {
+    public Date getLockTime() {
         return lockTime;
     }
 
-    public void setLockTime(Integer lockTime) {
+    public void setLockTime(Date lockTime) {
         this.lockTime = lockTime;
     }
 
@@ -170,13 +225,7 @@ public class CmReportingClub implements Serializable
         this.cmReportingMember = cmReportingMember;
     }
 
-    public List<CmReportingMember> getCmReportingMemberList() {
-        return cmReportingMemberList;
-    }
 
-    public void setCmReportingMemberList(List<CmReportingMember> cmReportingMemberList) {
-        this.cmReportingMemberList = cmReportingMemberList;
-    }
 
     public String getId() {
         return id;

+ 69 - 0
src/main/java/com/caimei365/commodity/model/vo/CmDistributionProductVO.java

@@ -0,0 +1,69 @@
+package com.caimei365.commodity.model.vo;
+
+import com.caimei365.commodity.model.po.CmDistributionProduct;
+import lombok.Data;
+import org.apache.ibatis.type.Alias;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 对象 cm_distribution_product
+ *
+ * @author Kaick
+ * @date 2023-09-18
+ */
+@Data
+@Alias("CmDistributionProductVO")
+public class CmDistributionProductVO  implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private String id;
+
+    /** 对应采美商品id */
+    private Integer productId;
+
+    /** 商品名称 */
+    private String name;
+    /** 供应商Id */
+    private String shopID;
+    /** 供应商名称 */
+    private String shopName;
+    /** mainImage */
+    private String mainImage;
+    /** skuId */
+    private String skuId;
+    /** 机构价格(同为二手商品的交易价) */
+    private BigDecimal price;
+
+
+    public static List<CmDistributionProductVO> setValues(List<CmDistributionProduct> cmDistributionProductList) {
+        List<CmDistributionProductVO> cmDistributionProductVOList = new ArrayList<>();
+        if(null!=cmDistributionProductList) {
+            cmDistributionProductList.forEach(cmDistributionProduct -> {
+                cmDistributionProductVOList.add(setValue(cmDistributionProduct));
+            });
+        }
+        return cmDistributionProductVOList;
+    }
+
+    public static CmDistributionProductVO setValue(CmDistributionProduct cmDistributionProduct) {
+
+        CmDistributionProductVO cmDistributionProductVO = new CmDistributionProductVO();
+        if(null!=cmDistributionProduct) {
+            cmDistributionProductVO.setId(cmDistributionProduct.getId());
+            cmDistributionProductVO.setProductId(cmDistributionProduct.getProductId());
+            cmDistributionProductVO.setName(cmDistributionProduct.getName());
+            cmDistributionProductVO.setMainImage(cmDistributionProduct.getMainImage());
+            cmDistributionProductVO.setShopID(cmDistributionProduct.getShopID());
+            cmDistributionProductVO.setShopName(cmDistributionProduct.getShopName());
+            cmDistributionProductVO.setSkuId(cmDistributionProduct.getSkuId());
+            cmDistributionProductVO.setPrice(cmDistributionProduct.getPrice());
+        }
+        return cmDistributionProductVO;
+    }
+}

+ 104 - 0
src/main/java/com/caimei365/commodity/model/vo/CmDistributionVO.java

@@ -0,0 +1,104 @@
+package com.caimei365.commodity.model.vo;
+
+import com.caimei365.commodity.model.po.CmDistribution;
+import lombok.Data;
+import org.apache.ibatis.type.Alias;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * distribution对象 cm_distribution
+ *
+ * @author Kaick
+ * @date 2023-09-25
+ */
+@Data
+@Alias("CmDistributionVO")
+public class CmDistributionVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private String id;
+
+    /**
+     * 用户id
+     */
+    private Integer userId;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 联系人
+     */
+    private String linkMan;
+
+    /**
+     * 手机号
+     */
+    private String mobile;
+
+    /**
+     * 状态:90上线,91下线
+     */
+    private Integer status;
+
+    /**
+     * 分销二维码
+     */
+    private String qrCode;
+
+    /**
+     * 头像
+     */
+    private String image;
+
+    /**
+     * 父级团队Id:0表示团队
+     */
+    private Integer parentId;
+
+    /**
+     * 订单数量
+     */
+    private Integer orderCount;
+
+    /**
+     * 佣金
+     */
+    private BigDecimal commission;
+
+
+    public static List<CmDistributionVO> setValues(List<CmDistribution> cmDistributionList) {
+        List<CmDistributionVO> cmDistributionVOList = new ArrayList<>();
+        if(null!=cmDistributionList) {
+            cmDistributionList.forEach(cmDistribution -> {
+                cmDistributionVOList.add(setValue(cmDistribution));
+            });
+        }
+        return cmDistributionVOList;
+    }
+
+    public static CmDistributionVO setValue(CmDistribution cmDistribution) {
+            CmDistributionVO cmDistributionVO = new CmDistributionVO();
+            if(null!=cmDistribution) {
+                cmDistributionVO.setId(cmDistribution.getId());
+                cmDistributionVO.setUserId(cmDistribution.getUserId());
+                cmDistributionVO.setName(cmDistribution.getName());
+                cmDistributionVO.setLinkMan(cmDistribution.getLinkMan());
+                cmDistributionVO.setMobile(cmDistribution.getMobile());
+                cmDistributionVO.setStatus(cmDistribution.getStatus());
+                cmDistributionVO.setQrCode(cmDistribution.getQrCode());
+                cmDistributionVO.setImage(cmDistribution.getImage());
+                cmDistributionVO.setParentId(cmDistribution.getParentId());
+            }
+        return cmDistributionVO;
+    }
+}

+ 62 - 0
src/main/java/com/caimei365/commodity/model/vo/CmRelatedImageVO.java

@@ -0,0 +1,62 @@
+package com.caimei365.commodity.model.vo;
+
+import com.caimei365.commodity.model.po.CmRelatedImage;
+import lombok.Data;
+import org.apache.ibatis.type.Alias;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 相关图片对象 cm_related_image
+ *
+ * @author Kaick
+ * @date 2023-09-20
+ */
+@Data
+@Alias("CmRelatedImageVO")
+public class CmRelatedImageVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private String id;
+
+    /**
+     * 分类:1分销报备凭证图片(cm_reporting_member)
+     */
+    private String type;
+
+    /**
+     * 归属者Id(type字段表Id)
+     */
+    private String authorId;
+    /**
+     * 图片
+     */
+    private String image;
+
+    public static List<CmRelatedImageVO> setValues(List<CmRelatedImage> cmRelatedImageList) {
+        List<CmRelatedImageVO> cmRelatedImageVOList = new ArrayList<>();
+        if(null!=cmRelatedImageList) {
+            cmRelatedImageList.forEach(cmRelatedImage -> {
+                cmRelatedImageVOList.add(setValue(cmRelatedImage));
+            });
+        }
+        return cmRelatedImageVOList;
+    }
+
+    public static CmRelatedImageVO setValue(CmRelatedImage cmRelatedImage) {
+        CmRelatedImageVO cmRelatedImageVO = new CmRelatedImageVO();
+        if (null != cmRelatedImage) {
+            cmRelatedImageVO.setId(cmRelatedImage.getId());
+            cmRelatedImageVO.setType(cmRelatedImage.getType());
+            cmRelatedImageVO.setAuthorId(cmRelatedImage.getAuthorId());
+            cmRelatedImageVO.setImage(cmRelatedImage.getImage());
+        }
+        return cmRelatedImageVO;
+    }
+}
+

+ 158 - 0
src/main/java/com/caimei365/commodity/model/vo/CmReportingClubVO.java

@@ -0,0 +1,158 @@
+package com.caimei365.commodity.model.vo;
+
+import com.caimei365.commodity.model.po.CmReportingClub;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.apache.ibatis.type.Alias;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 机构报备对象 cm_reporting_club
+ *
+ * @author Kaick
+ * @date 2023-09-20
+ */
+@Data
+@Alias("CmReportingClubVO")
+public class CmReportingClubVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private String id;
+
+    /**
+     * 机构名称
+     */
+    private String clubName;
+
+    /**
+     * 联系人
+     */
+    private String linkMan;
+
+    /**
+     * 手机号
+     */
+    private String mobile;
+
+    /**
+     * 商品id
+     */
+    private Integer productId;
+
+    /**
+     * 商品名称
+     */
+    private String productName;
+
+    /**
+     * 商品图片
+     */
+    private String productImage;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+    /**
+     * 订单id
+     */
+    private Integer orderId;
+    /**
+     * 订单状态 :1已成交,0未成交
+     */
+    private Integer orderStatus;
+
+    /**
+     * 锁定状态 :1锁定,0未锁定
+     */
+    private Integer lockStatus;
+
+
+    /**
+     * 分销报备人数量
+     */
+    private Integer distributionCount;
+
+    /**
+     * 分销报备锁定人id
+     */
+    private Integer distributionId;
+
+    /**
+     * 分销报备锁定人id
+     */
+    private String distributionName;
+
+    /**
+     * 添加时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    /**
+     * 商品总佣金
+     */
+    private BigDecimal commission;
+
+    /**
+     * 结算状态: 1已完结 ,0未完结
+     */
+    private Integer settleStatus;
+
+    /** 子订单编号 */
+    private String shopOrderNo;
+
+    /** 下单时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date orderTime;
+    /**
+     * 报备成员
+     */
+    private CmDistributionProductVO distributionProduct;
+
+
+    public static List<CmReportingClubVO> setValues(List<CmReportingClub> cmReportingClubList) {
+        List<CmReportingClubVO> cmReportingClubVOList = new ArrayList<>();
+        if (null != cmReportingClubList) {
+            cmReportingClubList.forEach(cmReportingMember -> {
+                cmReportingClubVOList.add(setValue(cmReportingMember));
+            });
+        }
+        return cmReportingClubVOList;
+    }
+
+    public static CmReportingClubVO setValue(CmReportingClub cmReportingClub) {
+        CmReportingClubVO cmReportingClubVO = new CmReportingClubVO();
+        if (null != cmReportingClub) {
+            cmReportingClubVO.setId(cmReportingClub.getId());
+            cmReportingClubVO.setClubName(cmReportingClub.getClubName());
+            cmReportingClubVO.setLinkMan(cmReportingClub.getLinkMan());
+            cmReportingClubVO.setMobile(cmReportingClub.getMobile());
+            cmReportingClubVO.setProductId(cmReportingClub.getProductId());
+            cmReportingClubVO.setProductName(cmReportingClub.getProductName());
+            cmReportingClubVO.setProductImage(cmReportingClub.getProductImage());
+            cmReportingClubVO.setRemarks(cmReportingClub.getRemarks());
+            cmReportingClubVO.setOrderId(cmReportingClub.getOrderId());
+            cmReportingClubVO.setOrderStatus(cmReportingClub.getOrderStatus());
+            cmReportingClubVO.setLockStatus(cmReportingClub.getLockStatus());
+            cmReportingClubVO.setDistributionCount(cmReportingClub.getDistributionCount());
+            cmReportingClubVO.setDistributionId(cmReportingClub.getDistributionId());
+            cmReportingClubVO.setDistributionName(cmReportingClub.getDistributionName());
+            cmReportingClubVO.setCreateTime(cmReportingClub.getCreateTime());
+            cmReportingClubVO.setCommission(cmReportingClub.getCommission());
+            cmReportingClubVO.setSettleStatus(cmReportingClub.getSettleStatus());
+            cmReportingClubVO.setShopOrderNo(cmReportingClub.getShopOrderNo());
+            cmReportingClubVO.setOrderTime(cmReportingClub.getOrderTime());
+            cmReportingClubVO.setDistributionProduct(CmDistributionProductVO.setValue(cmReportingClub.getDistributionProduct()));
+        }
+        return cmReportingClubVO;
+    }
+
+}

+ 84 - 0
src/main/java/com/caimei365/commodity/model/vo/CmReportingMemberVO.java

@@ -0,0 +1,84 @@
+package com.caimei365.commodity.model.vo;
+
+import com.caimei365.commodity.model.po.CmReportingMember;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.apache.ibatis.type.Alias;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 分销报备成员对象 cm_reporting_member
+ *
+ * @author Kaick
+ * @date 2023-09-20
+ */
+@Data
+@Alias("CmReportingMemberVO")
+public class CmReportingMemberVO implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private String id;
+
+    /** 分销报备人id */
+    private Integer distributionId;
+
+    /** 报备机构id */
+    private Integer clubReportingId;
+
+    /** 审核状态:1待审核,2审核通过,3审核失败 */
+    private String auditStatus;
+
+    /** 审核备注 */
+    private String auditText;
+    /**备注 */
+    private String remarks;
+    /** 添加时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    /** 商品佣金 */
+    private BigDecimal commission;
+
+    /** 结算状态: 1待确认,2待结算,3已结算 */
+    private Integer settleStatus;
+    /** 报备机构详情 */
+    private CmReportingClubVO cmReportingClub;
+    /** 凭证图片集合 */
+    private List<CmRelatedImageVO> cmRelatedImageList;
+
+    public static List<CmReportingMemberVO> setValues(List<CmReportingMember> cmReportingMemberList) {
+        List<CmReportingMemberVO> cmDistributionVOList = new ArrayList<>();
+        if(null!=cmReportingMemberList) {
+            cmReportingMemberList.forEach(cmReportingMember -> {
+                cmDistributionVOList.add(setValue(cmReportingMember));
+            });
+        }
+        return cmDistributionVOList;
+    }
+
+    public static CmReportingMemberVO setValue(CmReportingMember cmReportingMember) {
+
+        CmReportingMemberVO cmReportingMemberVO = new CmReportingMemberVO();
+        if(null!=cmReportingMember) {
+            cmReportingMemberVO.setId(cmReportingMember.getId());
+            cmReportingMemberVO.setDistributionId(cmReportingMember.getDistributionId());
+            cmReportingMemberVO.setClubReportingId(cmReportingMember.getClubReportingId());
+            cmReportingMemberVO.setAuditStatus(cmReportingMember.getAuditStatus());
+            cmReportingMemberVO.setAuditText(cmReportingMember.getAuditText());
+            cmReportingMemberVO.setRemarks(cmReportingMember.getRemarks());
+            cmReportingMemberVO.setCreateTime(cmReportingMember.getCreateTime());
+            cmReportingMemberVO.setCommission(cmReportingMember.getCommission());
+            cmReportingMemberVO.setSettleStatus(cmReportingMember.getSettleStatus());
+            cmReportingMemberVO.setCmReportingClub(CmReportingClubVO.setValue(cmReportingMember.getCmReportingClub()));
+            cmReportingMemberVO.setCmRelatedImageList(CmRelatedImageVO.setValues(cmReportingMember.getCmRelatedImageList()));
+        }
+        return cmReportingMemberVO;
+    }
+}
+

+ 29 - 8
src/main/java/com/caimei365/commodity/service/CmReportingClubService.java

@@ -6,8 +6,8 @@ import com.caimei365.commodity.model.po.CmDistributionTeamProduct;
 import com.caimei365.commodity.model.po.CmReportingClub;
 import com.caimei365.commodity.model.po.CmReportingMember;
 import com.caimei365.commodity.model.vo.ArchiveVo;
-import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -16,21 +16,22 @@ import java.util.List;
  * @author Kaick
  * @date 2023-09-26
  */
-public interface CmReportingClubService
-{
+public interface CmReportingClubService {
     /**
      * 通过对象查询机构报备列表
      *
      * @param cmReportingClub 机构报备
      * @return 机构报备集合
      */
-    public List<CmReportingMember> getCmReportingClubList(CmDistribution cmDistribution,String clubName);
+    public List<CmReportingMember> getCmReportingClubList(CmDistribution cmDistribution, String clubName, Integer settleStatus, Integer payWay, Integer splitSettleStatus, String shopOrderNo, String startTime, String entTime);
+
     /**
      * 功能描述: 分销团队商品列表
-     * @auther: Kaick
-     * @date: 2023/9/26 13:39
+     *
      * @param cmDistribution
      * @return [cmDistribution]
+     * @auther: Kaick
+     * @date: 2023/9/26 13:39
      */
 
     public List<CmDistributionTeamProduct> getCmDistributionTeamProductList(CmDistribution cmDistribution);
@@ -38,10 +39,11 @@ public interface CmReportingClubService
     /**
      * 查询分销商品资料列表
      *
-     * @param productName     搜索关键词
+     * @param productName 搜索关键词
      * @return
      */
-    List<ArchiveVo> getProductArchiveList( String productName);
+    List<ArchiveVo> getProductArchiveList(Integer id, String productName);
+
     /**
      * 通过Id查询机构报备
      *
@@ -49,6 +51,25 @@ public interface CmReportingClubService
      * @return 机构报备
      */
     public CmReportingMember getCmReportingMemberById(String id);
+
+    public CmDistribution getCmDistributionById(String id);
+
+    public CmReportingClub getCmReportingClubById(String id);
+
+    public List<CmDistribution> getCmDistributionList(CmDistribution cmDistribution);
+
+    public Integer getCmReportingMemberCount(String distributionId, Integer parentId, String linkMan, String mobile, Integer settleStatus);
+
+    public BigDecimal getCmReportingMemberCommission(String distributionId, Integer parentId, String linkMan, String mobile, Integer settleStatus);
+
+    public Integer getCmReportingMemberSplitCount(String distributionId, Integer parentId, String linkMan, String mobile, Integer settleStatus, Integer payWay);
+
+    public BigDecimal getCmReportingMemberSplitCommission(String distributionId, Integer parentId, String linkMan, String mobile, Integer settleStatus, Integer payWay);
+
+    public void updateCmReportingClub(CmReportingClub cmReportingClub);
+
+    public void updateCmReportingMember(CmReportingMember cmReportingMember);
+
     /**
      * 新增机构报备
      */

+ 117 - 35
src/main/java/com/caimei365/commodity/service/impl/CmReportingClubServiceImpl.java

@@ -1,18 +1,16 @@
 package com.caimei365.commodity.service.impl;
 
-import com.caimei365.commodity.mapper.CmDistributionProductMapper;
-import com.caimei365.commodity.mapper.CmRelatedImageMapper;
-import com.caimei365.commodity.mapper.CmReportingClubMapper;
-import com.caimei365.commodity.mapper.CmReportingMemberMapper;
+import com.caimei365.commodity.mapper.*;
 import com.caimei365.commodity.model.ResponseJson;
 import com.caimei365.commodity.model.po.*;
 import com.caimei365.commodity.model.vo.ArchiveVo;
 import com.caimei365.commodity.service.CmReportingClubService;
-import org.apache.commons.lang3.StringUtils;
+import com.caimei365.commodity.utils.MathUtil;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 
@@ -31,6 +29,8 @@ public class CmReportingClubServiceImpl implements CmReportingClubService {
     @Resource
     private CmRelatedImageMapper cmRelatedImageMapper;
     @Resource
+    private CmDistributionMapper cmDistributionMapper;
+    @Resource
     private CmDistributionProductMapper cmDistributionProductMapper;
 
     /**
@@ -40,19 +40,16 @@ public class CmReportingClubServiceImpl implements CmReportingClubService {
      * @return 机构报备
      */
     @Override
-    public List<CmReportingMember> getCmReportingClubList(CmDistribution cmDistribution, String clubName) {
-        List<CmReportingMember> cmReportingMemberList = new ArrayList<>();
-        if (null != cmDistribution.parentId()) {
-            cmReportingMemberList = cmReportingMemberMapper.getCmDistributionMemberList(new CmDistribution().parentId(cmDistribution.parentId()), clubName);
-            cmReportingMemberList.forEach(s -> {
-                s.cmReportingClub(cmReportingClubMapper.getCmReportingClubById(String.valueOf(s.clubReportingId())));
-            });
-        } else if (StringUtils.isNotBlank(cmDistribution.id())) {
-            cmReportingMemberList = cmReportingMemberMapper.getCmDistributionMemberList(new CmDistribution().id(cmDistribution.id()), clubName);
-            cmReportingMemberList.forEach(s -> {
-                s.cmReportingClub(cmReportingClubMapper.getCmReportingClubById(String.valueOf(s.clubReportingId())));
-            });
-        }
+    public List<CmReportingMember> getCmReportingClubList(CmDistribution cmDistribution, String clubName, Integer settleStatus, Integer payWay, Integer splitSettleStatus, String shopOrderNo, String startTime, String entTime) {
+        List<CmReportingMember> cmReportingMemberList = cmReportingMemberMapper.getCmDistributionMemberList(cmDistribution, clubName, settleStatus, payWay, splitSettleStatus, shopOrderNo, startTime, entTime);
+       if(cmReportingMemberList.size()>0){
+           cmReportingMemberList.forEach(s -> {
+               s.cmReportingClub(cmReportingClubMapper.getCmReportingClubById(String.valueOf(s.clubReportingId())));
+               s.cmReportingClub().distributionProduct(cmDistributionProductMapper.getByCmDistributionProduct(new CmDistributionProduct().productId(s.cmReportingClub().productId())));
+               s.cmReportingClub().distributionProduct().price(setDistributionProductPrice(s.cmReportingClub().productId()));
+           });
+       }
+
         return cmReportingMemberList;
     }
 
@@ -65,12 +62,56 @@ public class CmReportingClubServiceImpl implements CmReportingClubService {
     @Override
     public List<CmDistributionTeamProduct> getCmDistributionTeamProductList(CmDistribution cmDistribution) {
         List<CmDistributionTeamProduct> cmDistributionTeamProductList = cmDistributionProductMapper.getCmDistributionTeamProductList(new CmDistributionTeamProduct().distributionId(Integer.valueOf(cmDistribution.id())));
+        if(cmDistributionTeamProductList.size()>0) {
+            cmDistributionTeamProductList.forEach(s -> {
+                s.setPrice(setDistributionProductPrice(s.productId()));
+            });
+        }
         return cmDistributionTeamProductList;
     }
 
     @Override
-    public List<ArchiveVo> getProductArchiveList(String productName){
-        return cmDistributionProductMapper.getProductArchiveList(productName);
+    public List<ArchiveVo> getProductArchiveList(Integer id, String productName) {
+        return cmDistributionProductMapper.getProductArchiveList(id, productName);
+    }
+
+    @Override
+    public CmDistribution getCmDistributionById(String id) {
+        return cmDistributionMapper.getCmDistributionById(id);
+    }
+
+    @Override
+    public CmReportingClub getCmReportingClubById(String id) {
+        return cmReportingClubMapper.getCmReportingClubById(id);
+    }
+
+    @Override
+    public List<CmDistribution> getCmDistributionList(CmDistribution cmDistribution) {
+        return cmDistributionMapper.getCmDistributionList(cmDistribution);
+    }
+
+    @Override
+    public Integer getCmReportingMemberCount(String distributionId, Integer parentId, String linkMan, String mobile, Integer settleStatus) {
+        Integer cmReportingMemberCount = cmReportingMemberMapper.getCmReportingMemberCount(distributionId, parentId, linkMan, mobile, settleStatus);
+        return cmReportingMemberCount == null ? 0 : cmReportingMemberCount;
+    }
+
+    @Override
+    public BigDecimal getCmReportingMemberCommission(String distributionId, Integer parentId, String linkMan, String mobile, Integer settleStatus) {
+        BigDecimal cmReportingMemberCommission = cmReportingMemberMapper.getCmReportingMemberCommission(distributionId, parentId, linkMan, mobile, settleStatus);
+        return cmReportingMemberCommission == null ? new BigDecimal(0) : cmReportingMemberCommission;
+    }
+
+    @Override
+    public Integer getCmReportingMemberSplitCount(String distributionId, Integer parentId, String linkMan, String mobile, Integer settleStatus, Integer payWay) {
+        Integer cmReportingMemberSplitCount = cmReportingMemberMapper.getCmReportingMemberSplitCount(distributionId, parentId, linkMan, mobile, settleStatus, payWay);
+        return cmReportingMemberSplitCount == null ? 0 : cmReportingMemberSplitCount;
+    }
+
+    @Override
+    public BigDecimal getCmReportingMemberSplitCommission(String distributionId, Integer parentId, String linkMan, String mobile, Integer settleStatus, Integer payWay) {
+        BigDecimal cmReportingMemberSplitCommission = cmReportingMemberMapper.getCmReportingMemberSplitCommission(distributionId, parentId, linkMan, mobile, settleStatus, payWay);
+        return cmReportingMemberSplitCommission == null ? new BigDecimal(0) : cmReportingMemberSplitCommission;
     }
 
     /**
@@ -84,11 +125,35 @@ public class CmReportingClubServiceImpl implements CmReportingClubService {
         CmReportingMember cmReportingMemberById = cmReportingMemberMapper.getCmReportingMemberById(id);
         if (null != cmReportingMemberById) {
             cmReportingMemberById.cmReportingClub(cmReportingClubMapper.getCmReportingClubById(String.valueOf(cmReportingMemberById.clubReportingId())));
+            //机构订单已报备人数
+            Integer count = cmReportingMemberMapper.getCount(new CmReportingMember().clubReportingId(cmReportingMemberById.clubReportingId()).auditStatus("2"));
+            cmReportingMemberById.cmReportingClub().distributionCount(count == null ? 0 : count);
+            cmReportingMemberById.cmReportingClub().distributionProduct(cmDistributionProductMapper.getByCmDistributionProduct(new CmDistributionProduct().productId(cmReportingMemberById.cmReportingClub().productId())));
             cmReportingMemberById.cmRelatedImageList(cmRelatedImageMapper.getCmRelatedImageList(new CmRelatedImage().type("1").authorId(cmReportingMemberById.id())));
         }
         return cmReportingMemberById;
     }
 
+    /**
+     * 修改机构报备
+     *
+     * @return 机构报备
+     */
+    @Override
+    public void updateCmReportingClub(CmReportingClub cmReportingClub) {
+        cmReportingClubMapper.updateCmReportingClub(cmReportingClub);
+    }
+
+    /**
+     * 修改机构报备
+     *
+     * @return 机构报备
+     */
+    @Override
+    public void updateCmReportingMember(CmReportingMember cmReportingMember) {
+        cmReportingMemberMapper.updateCmReportingMember(cmReportingMember);
+    }
+
     /**
      * 新增机构报备
      */
@@ -97,7 +162,6 @@ public class CmReportingClubServiceImpl implements CmReportingClubService {
         CmReportingClub byCmReportingClub = cmReportingClubMapper.getByCmReportingClub(new CmReportingClub()
                 .mobile(cmReportingClub.mobile())
                 .productId(cmReportingClub.productId())
-                .orderStatus(0)
                 .lockStatus(1)
         );
         if (null == byCmReportingClub) {
@@ -107,26 +171,44 @@ public class CmReportingClubServiceImpl implements CmReportingClubService {
                     .lockStatus(0)
             );
             if (null == byCmReportingClub) {
+                cmReportingClub.lockStatus(0).createTime(new Date());
                 cmReportingClubMapper.addCmReportingClub(cmReportingClub);
             }
+            String byId = cmReportingClubMapper.getById(new CmReportingClub()
+                    .mobile(cmReportingClub.mobile())
+                    .productId(cmReportingClub.productId())
+                    .lockStatus(0)
+            );
             CmReportingMember cmReportingMember = cmReportingClub.cmReportingMember()
-                    .clubReportingId(Integer.valueOf(cmReportingClub.id()))
-                    .distributionId(cmReportingClub.distributionId())
-                    .auditStatus("1")
-                    .createTime(new Date());
+                    .clubReportingId(Integer.valueOf(byId));
+            if(null!=cmReportingMemberMapper.getByCmReportingMember(cmReportingMember)){
+                return ResponseJson.error("该机构您已报备,请勿重复报备!");
+            }
+            cmReportingMember.auditStatus("1").createTime(new Date());
             cmReportingMemberMapper.addCmReportingMember(cmReportingMember);
-            cmReportingMember.cmRelatedImageList().forEach(s -> {
-                s.type("1");
-                s.authorId(String.valueOf(cmReportingMember.distributionId()))
-                        .createTime(new Date());
-                cmRelatedImageMapper.addCmRelatedImage(s);
-            });
-            return ResponseJson.success("报备成功!",null);
+            if (null != cmReportingMember.cmRelatedImageList()) {
+                cmReportingMember.cmRelatedImageList().forEach(s -> {
+                    s.type("1");
+                    s.authorId(cmReportingMember.id())
+                            .createTime(new Date());
+                    cmRelatedImageMapper.addCmRelatedImage(s);
+                });
+            }
+            return ResponseJson.success("报备成功!", null);
         } else {
-            return ResponseJson.error("抱歉,该机构/商品采购意向订单报备已被其他人锁定,目前暂无法进行报备!");
+            return ResponseJson.error("抱歉,该机构已被其他人锁定,目前暂无法进行报备!");
         }
     }
-
+    public BigDecimal setDistributionProductPrice(Integer productId) {
+        CmDistributionProduct price = cmDistributionProductMapper.getByCmDistributionProduct(new CmDistributionProduct().productId(productId));
+        boolean taxFlag = "0".equals(price.getIncludedTax()) && ("1".equals(price.getInvoiceType()) || "2".equals(price.getInvoiceType()));
+        //添加税费
+        if (taxFlag) {
+            BigDecimal thisTaxFee = MathUtil.div(MathUtil.mul(price.getPrice(), price.getClubTaxPoint()), 100, 2);
+            price.setPrice(MathUtil.add(price.getPrice(), thisTaxFee));
+        }
+        return price.getPrice().setScale(2, RoundingMode.HALF_UP);
+    }
 }
 
 

+ 7 - 1
src/main/java/com/caimei365/commodity/service/impl/PageServiceImpl.java

@@ -571,6 +571,7 @@ public class PageServiceImpl implements PageService {
      */
     @Override
     public ResponseJson<ProductDetailVo> getProductDetails(Integer productId, Integer userId) {
+        Integer identity = priceMapper.getIdentityByUserId(userId);
         // 商品详情页
         ProductDetailVo product = pageMapper.getProductDetails(productId);
         //当该商品的“能否退货”字段的值是“不能”时,新增特殊商品退货须知提示
@@ -648,7 +649,12 @@ public class PageServiceImpl implements PageService {
         // 商品不处于已删除/待审核/审核未通过的状态
         if (0 != product.getValidFlag()) {
             // 数据库获取基本价格信息
-            PriceVo price = priceMapper.getDetailPrice(productId);
+            PriceVo price = null;
+            if (identity == 7) {
+                price = priceMapper.getDistributionDetailPrice(productId);
+            } else {
+                price = priceMapper.getDetailPrice(productId);
+            }
             // 根据用户id设置详细价格
             priceUtilService.setPriceByUserId(price, userId, 0);
             // 设置价格

+ 5 - 0
src/main/resources/bootstrap.yml

@@ -13,3 +13,8 @@ spring:
       # uri: http://47.119.112.46:18001          # 配置中心地址
       uri: http://120.79.162.1:18001     # 配置中心地址(正式环境)
       name: commodity                   # 配置文件名称
+mybatis:
+  # 扫描classpath中mapper目录下的映射配置文件,针对于映射文件放到了resources目录下
+  mapper-locations: classpath:/mapper/*.xml
+  # 定义包别名,使用pojo时可以直接使用pojo的类型名称不用加包名
+  type-aliases-package: com.caimei365.commodity.model

+ 2 - 12
src/main/resources/mapper/CmDistributionMapper.xml

@@ -91,17 +91,7 @@
 		from cm_distribution AS cm_distribution
 		<where>  cm_distribution.delFlag = 0
 			<if test="id != null  and id != ''">
-				and cm_distribution.id
-				<if test="id.toUpperCase().indexOf('=')==-1">
-					= #{id}
-				</if>
-				<if test="id.toUpperCase().indexOf('=')!=-1">
-					<if test="id.toUpperCase().indexOf('NOT')!=-1"> not </if>
-					<if test="id.toUpperCase().indexOf('IN')!=-1"> in </if>
-					<foreach item="idIn" collection="id.substring(id.toUpperCase().indexOf('=')+1,id.length()).trim().split(',')" open="(" separator="," close=")">
-						#{idIn}
-					</foreach>
-				</if>
+				and cm_distribution.id= #{id}
 			</if>
 			<if test="userId != null "> and cm_distribution.userId = #{userId}</if>
 			<if test="name != null  and name != ''"> and cm_distribution.name like concat('%', #{name}, '%')</if>
@@ -114,7 +104,7 @@
 			<if test="bankAccount != null  and bankAccount != ''"> and cm_distribution.bankAccount = #{bankAccount}</if>
 			<if test="status != null "> and cm_distribution.status = #{status}</if>
 			<if test="qrCode != null  and qrCode != ''"> and cm_distribution.qrCode = #{qrCode}</if>
-			<if test="parentId != null "> and cm_distribution.parentId = #{parentId}</if>
+			<if test="parentId != null "> and (cm_distribution.id = #{parentId} or  cm_distribution.parentId = #{parentId})</if>
 			<if test="parentIds != null  and parentIds != ''"> and cm_distribution.parentIds = #{parentIds}</if>
 			<if test="updateTime != null "> and cm_distribution.updateTime = #{updateTime}</if>
 			<if test="addTime != null "> and cm_distribution.addTime = #{addTime}</if>

+ 9 - 16
src/main/resources/mapper/CmDistributionProductMapper.xml

@@ -37,8 +37,8 @@
             p.shopID,
             s.name AS shopName,
             cm_distribution_product.addTime,
-            cm_distribution_sku.skuId,
-            ifnull(cm_distribution_sku.price,0) AS price
+            (select cds.skuId from cm_distribution_sku cds where cds.productId = p.productID order by cds.price asc limit 1) AS skuId,
+            ifnull((select cds.price from cm_distribution_sku cds where cds.productId = p.productID order by cds.price asc limit 1),0) AS price
     </sql>
 
     <select id="getByCmDistributionProduct" parameterType="com.caimei365.commodity.model.po.CmDistributionProduct" resultMap="CmDistributionProductResult">
@@ -46,7 +46,6 @@
         from cm_distribution_product AS cm_distribution_product
         LEFT JOIN product p ON  cm_distribution_product.productId = p.productID
         LEFT JOIN shop s on p.shopID = s.shopID
-        LEFT JOIN cm_distribution_sku cm_distribution_sku ON  cm_distribution_sku.productId = p.productID
         <where>
             <if test="id != null  and id != ''">
                 and cm_distribution_product.id
@@ -106,15 +105,14 @@
         p.shopID,
         s.name AS shopName,
         cm_distribution_product.addTime,
-        cm_distribution_sku.skuId,
-        ifnull(cm_distribution_sku.price,0) AS price,
+        (select cds.skuId from cm_distribution_sku cds where cds.productId = p.productID order by cds.price asc limit 1) AS skuId,
+        ifnull((select cds.price from cm_distribution_sku cds where cds.productId = p.productID order by cds.price asc limit 1),0) AS price,
         cdtp.distributionId
        from cm_distribution_team_product AS cdtp
         LEFT JOIN cm_distribution AS cm_distribution on cdtp.distributionId=cm_distribution.id
         LEFT JOIN cm_distribution_product AS cm_distribution_product  on cdtp.productId=cm_distribution_product.productId
         LEFT JOIN product p ON  cm_distribution_product.productId = p.productID
         LEFT JOIN shop s on p.shopID = s.shopID
-        LEFT JOIN cm_distribution_sku cm_distribution_sku ON  cm_distribution_sku.productId = p.productID
         <where>
             <if test="id != null  and id != ''">
                 and cm_distribution_product.id
@@ -163,7 +161,6 @@
        from cm_distribution_product AS cm_distribution_product
         LEFT JOIN product p ON  cm_distribution_product.productId = p.productID
         LEFT JOIN shop s on p.shopID = s.shopID
-        LEFT JOIN cm_distribution_sku cm_distribution_sku ON  cm_distribution_sku.productId = p.productID
         <where>
             <if test="id != null  and id != ''">
                 and cm_distribution_product.id
@@ -212,13 +209,14 @@
         cm_distribution_team_product.validFlag,
         p.name,
         p.mainImage,
+        (select price from cm_distribution_sku cs where cs.productId = p.productId order by price asc limit 1) as price,
         p.shopID,
         s.name AS shopName
         from cm_distribution_team_product AS cm_distribution_team_product
         left join cm_distribution_product AS cm_distribution_product on cm_distribution_product.productId=cm_distribution_team_product.productId
         LEFT JOIN product p ON  cm_distribution_product.productId = p.productID
         LEFT JOIN shop s on p.shopID = s.shopID
-        <where>  cm_distribution_team_product.delFlag = 0 and cm_distribution_product.delFlag = 0
+        <where>  cm_distribution_team_product.validFlag = 1 and cm_distribution_product.validFlag = 1
             <if test="id != null  and id != ''">
                 and cm_distribution_team_product.id
                 <if test="id.toUpperCase().indexOf('=')==-1">
@@ -238,7 +236,6 @@
             <if test="name != null  and name != ''"> and p.name like concat('%', #{name}, '%')</if>
         </where>
         group by cm_distribution_team_product.id
-        order by cm_distribution_team_product.createTime desc
     </select>
     <select id="getProductArchiveList" resultType="com.caimei365.commodity.model.vo.ArchiveVo">
         select cpa.id AS "archiveId",
@@ -253,6 +250,8 @@
         left join product p on cm_distribution_team_product.productId = p.productID
         left join shop s on p.shopID = s.shopID
         <where>
+            cpa.productId = cm_distribution_team_product.productID
+            and cm_distribution_team_product.distributionId=#{id}
             <if test="productName != null and productName != ''">
                 and cpa.productName LIKE concat('%', #{productName}, '%')
             </if>
@@ -264,7 +263,6 @@
        from cm_distribution_product AS cm_distribution_product
         LEFT JOIN product p ON  cm_distribution_product.productId = p.productID
         LEFT JOIN shop s on p.shopID = s.shopID
-        LEFT JOIN cm_distribution_sku cm_distribution_sku ON  cm_distribution_sku.productId = p.productID
         <where>
             <if test="id != null  and  id != ''">
                 and cm_distribution_product.id
@@ -306,7 +304,7 @@
     <select id="getCmDistributionTeamProductCount" parameterType="CmDistributionTeamProduct" resultType="int">
         select count(1)
         from cm_distribution_team_product AS cm_distribution_team_product
-        <where>  cm_distribution_team_product.delFlag = 0
+        <where>
             <if test="id != null  and  id != ''">
                 and cm_distribution_team_product.id
                 <if test="id.toUpperCase().indexOf('=')==-1">
@@ -324,7 +322,6 @@
             <if test="productId != null "> and cm_distribution_team_product.productId = #{productId}</if>
             <if test="validFlag != null  and validFlag != ''"> and cm_distribution_team_product.validFlag = #{validFlag}</if>
         </where>
-        group by cm_distribution_team_product.id
     </select>
 
 
@@ -333,7 +330,6 @@
        from cm_distribution_product AS cm_distribution_product
         LEFT JOIN product p ON  cm_distribution_product.productId = p.productID
         LEFT JOIN shop s on p.shopID = s.shopID
-        LEFT JOIN cm_distribution_sku cm_distribution_sku ON  cm_distribution_sku.productId = p.productID
         where    cm_distribution_product.id = #{id} group by cm_distribution_product.id
     </select>
 
@@ -342,7 +338,6 @@
        from cm_distribution_product AS cm_distribution_product
         LEFT JOIN product p ON  cm_distribution_product.productId = p.productID
         LEFT JOIN shop s on p.shopID = s.shopID
-        LEFT JOIN cm_distribution_sku cm_distribution_sku ON  cm_distribution_sku.productId = p.productID
         <where>
             <if test="id != null  and id != ''">
                 and cm_distribution_product.id
@@ -385,7 +380,6 @@
        from cm_distribution_product AS cm_distribution_product
         LEFT JOIN product p ON  cm_distribution_product.productId = p.productID
         LEFT JOIN shop s on p.shopID = s.shopID
-        LEFT JOIN cm_distribution_sku cm_distribution_sku ON  cm_distribution_sku.productId = p.productID
         <where>
             <if test="id != null  and id != ''">
                 and cm_distribution_product.id
@@ -438,7 +432,6 @@
        from cm_distribution_product AS cm_distribution_product
         LEFT JOIN product p ON  cm_distribution_product.productId = p.productID
         LEFT JOIN shop s on p.shopID = s.shopID
-        LEFT JOIN cm_distribution_sku cm_distribution_sku ON  cm_distribution_sku.productId = p.productID
         <where>
             <if test="id != null  and id != ''">
                 and cm_distribution_product.id

+ 1 - 21
src/main/resources/mapper/CmDistributionSkuMapper.xml

@@ -92,27 +92,7 @@
         order by cm_distribution_sku.skuId desc
     </select>
 
-    <select id="findDistributionSku" resultType="com.caimei365.commodity.model.po.CmSku">
-        select cs.skuId,
-               cs.productId,
-               cs.organizeId,
-               cs.unit,
-               cs.stock,
-               (select costCheckFlag
-                from cm_organize_product_info
-                where productId = cs.productId and organizeId = cs.organizeId) as costCheckFlag,
-               cs.costPrice,
-               cs.cmCostPrice,
-               cs.organizeCostPrice,
-               ifnull(cs.shopPercent, 0)                                       as shopPercent,
-               ifnull(cs.organizePercent, 0)                                   as organizePercent,
-               ifnull(cs.cmPercent, 0)                                         as cmPercent,
-               chs.price
-        from cm_sku cs
-                 left join cm_distribution_sku chs on cs.skuId = chs.skuId
-        where cs.productId = #{productID}
-          and cs.organizeId = (SELECT SUBSTRING(groundMall, 1, 1) FROM product WHERE productID = cs.productId)
-    </select>
+
     <select id="getCmDistributionSkuCount" parameterType="com.caimei365.commodity.model.po.CmDistributionSku" resultType="int">
         select count(1)
         from cm_distribution_sku AS cm_distribution_sku

+ 8 - 11
src/main/resources/mapper/CmReportingClubMapper.xml

@@ -22,7 +22,6 @@
 		<result property="productImage"    column="productImage"    />
 		<result property="commission"    column="commission"    />
 		<result property="settleStatus"    column="settleStatus"    />
-		<result property="settleTime"    column="settleTime"    />
 		<result property="orderId"    column="orderId"    />
 	</resultMap>
 
@@ -43,7 +42,6 @@
 			cm_reporting_club.createTime,
 			ifnull(cm_reporting_club.commission,0) AS commission,
 			cm_reporting_club.settleStatus,
-			cm_reporting_club.settleTime,
 			cm_distribution.name AS distributionName,
 			p.name AS productName,
 			p.mainImage AS productImage
@@ -81,7 +79,6 @@
 			<if test="createTime != null "> and cm_reporting_club.createTime = #{createTime}</if>
 			<if test="commission != null "> and cm_reporting_club.commission = #{commission}</if>
 			<if test="settleStatus != null "> and cm_reporting_club.settleStatus = #{settleStatus}</if>
-			<if test="settleTime != null "> and cm_reporting_club.settleTime = #{settleTime}</if>
 			<if test="productName != null and productName!='' "> and p.name  like concat('%', #{productName}, '%')</if>
 		</where>
 		group by cm_reporting_club.id
@@ -123,7 +120,6 @@
 			<if test="createTime != null "> and cm_reporting_club.createTime = #{createTime}</if>
 			<if test="commission != null "> and cm_reporting_club.commission = #{commission}</if>
 			<if test="settleStatus != null "> and cm_reporting_club.settleStatus = #{settleStatus}</if>
-			<if test="settleTime != null "> and cm_reporting_club.settleTime = #{settleTime}</if>
 			<if test="productName != null and productName!='' "> and p.name  like concat('%', #{productName}, '%')</if>
 
 		</where>
@@ -160,18 +156,20 @@
 			<if test="createTime != null "> and cm_reporting_club.createTime = #{createTime}</if>
 			<if test="commission != null "> and cm_reporting_club.commission = #{commission}</if>
 			<if test="settleStatus != null "> and cm_reporting_club.settleStatus = #{settleStatus}</if>
-			<if test="settleTime != null "> and cm_reporting_club.settleTime = #{settleTime}</if>
 		</where>
 		group by cm_reporting_club.id
 	</select>
 
 
 	<select id="getCmReportingClubById" parameterType="String" resultMap="CmReportingClubResult">
-		<include refid="selectCmReportingClubVo"/>
+		<include refid="selectCmReportingClubVo"/>,
+		cso.shopOrderNo,
+		cso.orderTime
 		from cm_reporting_club AS cm_reporting_club
 		LEFT JOIN cm_distribution_product AS cm_distribution_product  on cm_reporting_club.productId=cm_distribution_product.productId
 		LEFT JOIN product p ON  cm_distribution_product.productId = p.productID
 		LEFT JOIN cm_distribution AS cm_distribution ON  cm_reporting_club.distributionId = cm_distribution.id
+		left join cm_shop_order cso on cso.orderID = cm_reporting_club.orderID
 		where  cm_reporting_club.delFlag = 0 and cm_reporting_club.id = #{id}
 	</select>
 
@@ -204,7 +202,6 @@
 			<if test="createTime != null "> and cm_reporting_club.createTime = #{createTime}</if>
 			<if test="commission != null "> and cm_reporting_club.commission = #{commission}</if>
 			<if test="settleStatus != null "> and cm_reporting_club.settleStatus = #{settleStatus}</if>
-			<if test="settleTime != null "> and cm_reporting_club.settleTime = #{settleTime}</if>
 		</where>
 		group by cm_reporting_club.id
 	</select>
@@ -238,9 +235,9 @@
 			<if test="createTime != null "> and cm_reporting_club.createTime = #{createTime}</if>
 			<if test="commission != null "> and cm_reporting_club.commission = #{commission}</if>
 			<if test="settleStatus != null "> and cm_reporting_club.settleStatus = #{settleStatus}</if>
-			<if test="settleTime != null "> and cm_reporting_club.settleTime = #{settleTime}</if>
 		</where>
 		group by cm_reporting_club.id
+		order by cm_reporting_club.createTime desc
 		limit 0,1
 	</select>
 
@@ -261,7 +258,6 @@
 			<if test="createTime != null">createTime,</if>
 			<if test="commission != null">commission,</if>
 			<if test="settleStatus != null">settleStatus,</if>
-			<if test="settleTime != null">settleTime,</if>
 		</trim>
 		<trim prefix="values (" suffix=")" suffixOverrides=",">
 			<if test="id != null and id != ''">#{id},</if>
@@ -278,7 +274,6 @@
 			<if test="createTime != null">#{createTime},</if>
 			<if test="commission != null">#{commission},</if>
 			<if test="settleStatus != null">#{settleStatus},</if>
-			<if test="settleTime != null">#{settleTime},</if>
 		</trim>
 	</insert>
 
@@ -289,6 +284,7 @@
 			<if test="linkMan != null and linkMan != ''">linkMan = #{linkMan},</if>
 			<if test="mobile != null and mobile != ''">mobile = #{mobile},</if>
 			<if test="productId != null">productId = #{productId},</if>
+			<if test="orderId != null">orderId = #{orderId},</if>
 			<if test="orderStatus != null">orderStatus = #{orderStatus},</if>
 			<if test="lockStatus != null">lockStatus = #{lockStatus},</if>
 			<if test="lockTime != null">lockTime = #{lockTime},</if>
@@ -299,6 +295,8 @@
 			<if test="commission != null">commission = #{commission},</if>
 			<if test="settleStatus != null">settleStatus = #{settleStatus},</if>
 			<if test="settleTime != null">settleTime = #{settleTime},</if>
+			<if test="splitSettleStatus != null">splitSettleStatus = #{splitSettleStatus},</if>
+			<if test="splitSettleTime != null">splitSettleTime = #{splitSettleTime},</if>
 		</trim>
 		where id = #{id}
 	</update>
@@ -345,7 +343,6 @@
 			<if test="createTime != null "> and cm_reporting_club.createTime = #{createTime}</if>
 			<if test="commission != null "> and cm_reporting_club.commission = #{commission}</if>
 			<if test="settleStatus != null "> and cm_reporting_club.settleStatus = #{settleStatus}</if>
-			<if test="settleTime != null "> and cm_reporting_club.settleTime = #{settleTime}</if>
 		</where>
 	</delete>
 

+ 125 - 61
src/main/resources/mapper/CmReportingMemberMapper.xml

@@ -104,88 +104,133 @@
 		order by cm_reporting_member.createTime desc
 	</select>
 
-	<select id="getCmDistributionMemberList" parameterType="com.caimei365.commodity.model.po.CmDistribution" resultMap="CmReportingMemberResult">
-		<include refid="selectCmReportingMemberVo"/>
+	<select id="getCmDistributionMemberList"  resultMap="CmReportingMemberResult">
+		<include refid="selectCmReportingMemberVo"/>,
+		cso.shopOrderNo,
+		cso.orderTime
 		from cm_reporting_member AS cm_reporting_member
 		left join  cm_reporting_club AS cm_reporting_club on cm_reporting_club.id=cm_reporting_member.clubReportingId
 		left join cm_distribution AS cm_distribution on cm_distribution.id=cm_reporting_member.distributionId
+		left join cm_shop_order cso on cso.orderID = cm_reporting_club.orderID
+		LEFT JOIN cm_receipt_order_relation crr ON crr.orderId = cm_reporting_club.orderID AND crr.delFlag = '0'
+		LEFT JOIN cm_discern_receipt cdr ON crr.receiptId = cdr.id
 		<where>  cm_reporting_member.delFlag = 0 and cm_distribution.delFlag = 0
-			<if test="id != null  and id != ''">
+			<if test="cmDistribution.id != null  and cmDistribution.id != ''">
 				and cm_distribution.id
-				<if test="id.toUpperCase().indexOf('=')==-1">
-					= #{id}
+				<if test="cmDistribution.id.toUpperCase().indexOf('=')==-1">
+					= #{cmDistribution.id}
 				</if>
-				<if test="id.toUpperCase().indexOf('=')!=-1">
-					<if test="id.toUpperCase().indexOf('NOT')!=-1"> not </if>
-					<if test="id.toUpperCase().indexOf('IN')!=-1"> in </if>
-					<foreach item="idIn" collection="id.substring(id.toUpperCase().indexOf('=')+1,id.length()).trim().split(',')" open="(" separator="," close=")">
+				<if test="cmDistribution.id.toUpperCase().indexOf('=')!=-1">
+					<if test="cmDistribution.id.toUpperCase().indexOf('NOT')!=-1"> not </if>
+					<if test="cmDistribution.id.toUpperCase().indexOf('IN')!=-1"> in </if>
+					<foreach item="idIn" collection="cmDistribution.id.substring(cmDistribution.id.toUpperCase().indexOf('=')+1,cmDistribution.id.length()).trim().split(',')" open="(" separator="," close=")">
 						#{idIn}
 					</foreach>
 				</if>
 			</if>
-			<if test="userId != null "> and cm_distribution.userId = #{userId}</if>
-			<if test="name != null  and name != ''"> and cm_distribution.name like concat('%', #{name}, '%')</if>
-			<if test="linkMan != null  and linkMan != ''"> and cm_distribution.linkMan = #{linkMan}</if>
-			<if test="mobile != null  and mobile != ''"> and cm_distribution.mobile = #{mobile}</if>
-			<if test="password != null  and password != ''"> and cm_distribution.password = #{password}</if>
-			<if test="corporateName != null  and corporateName != ''"> and cm_distribution.corporateName like concat('%', #{corporateName}, '%')</if>
-			<if test="splitCode != null  and splitCode != ''"> and cm_distribution.splitCode = #{splitCode}</if>
-			<if test="bankName != null  and bankName != ''"> and cm_distribution.bankName like concat('%', #{bankName}, '%')</if>
-			<if test="bankAccount != null  and bankAccount != ''"> and cm_distribution.bankAccount = #{bankAccount}</if>
-			<if test="status != null "> and cm_distribution.status = #{status}</if>
-			<if test="qrCode != null  and qrCode != ''"> and cm_distribution.qrCode = #{qrCode}</if>
-			<if test="parentId != null "> and cm_distribution.parentId = #{parentId}</if>
-			<if test="parentIds != null  and parentIds != ''"> and cm_distribution.parentIds = #{parentIds}</if>
-			<if test="updateTime != null "> and cm_distribution.updateTime = #{updateTime}</if>
-			<if test="addTime != null "> and cm_distribution.addTime = #{addTime}</if>
+			<if test="cmDistribution.userId != null "> and cm_distribution.userId = #{cmDistribution.userId}</if>
+			<if test="cmDistribution.name != null  and cmDistribution.name != ''"> and cm_distribution.name like concat('%', #{cmDistribution.name}, '%')</if>
+			<if test="cmDistribution.linkMan != null  and cmDistribution.linkMan != ''"> and cm_distribution.linkMan = #{cmDistribution.linkMan}</if>
+			<if test="cmDistribution.mobile != null  and cmDistribution.mobile != ''"> and cm_distribution.mobile = #{cmDistribution.mobile}</if>
+			<if test="cmDistribution.password != null  and cmDistribution.password != ''"> and cm_distribution.password = #{cmDistribution.password}</if>
+			<if test="cmDistribution.corporateName != null  and cmDistribution.corporateName != ''"> and cm_distribution.corporateName like concat('%', #{cmDistribution.corporateName}, '%')</if>
+			<if test="cmDistribution.splitCode != null  and cmDistribution.splitCode != ''"> and cm_distribution.splitCode = #{cmDistribution.splitCode}</if>
+			<if test="cmDistribution.bankName != null  and cmDistribution.bankName != ''"> and cm_distribution.bankName like concat('%', #{cmDistribution.bankName}, '%')</if>
+			<if test="cmDistribution.bankAccount != null  and cmDistribution.bankAccount != ''"> and cm_distribution.bankAccount = #{cmDistribution.bankAccount}</if>
+			<if test="cmDistribution.status != null "> and cm_distribution.status = #{cmDistribution.status}</if>
+			<if test="cmDistribution.qrCode != null  and cmDistribution.qrCode != ''"> and cm_distribution.qrCode = #{cmDistribution.qrCode}</if>
+			<if test="cmDistribution.parentId != null "> and cm_distribution.parentId = #{cmDistribution.parentId}</if>
+			<if test="cmDistribution.parentIds != null  and cmDistribution.parentIds != ''"> and cm_distribution.parentIds = #{cmDistribution.parentIds}</if>
+			<if test="cmDistribution.updateTime != null "> and cm_distribution.updateTime = #{cmDistribution.updateTime}</if>
+			<if test="cmDistribution.addTime != null "> and cm_distribution.addTime = #{cmDistribution.addTime}</if>
 			<if test="clubName != null and clubName != ''"> and cm_reporting_club.clubName like concat('%', #{clubName}, '%')</if>
+			<if test="settleStatus != null"> and cm_reporting_member.settleStatus = #{settleStatus}</if>
+			<if test="splitSettleStatus != null"> and cm_reporting_club.splitSettleStatus = #{splitSettleStatus}</if>
+			<if test="payWay != null"> and cdr.payWay = #{payWay}</if>
+			<if test="shopOrderNo != null"> and cso.shopOrderNo = #{shopOrderNo}</if>
+			<if test="startTime != null and startTime != ''"> and cso.orderTime > #{startTime}</if>
+			<if test="endTime != null and endTime != ''"> and cso.orderTime &lt; #{endTime}</if>
 		</where>
 		group by cm_reporting_member.id
 		order by cm_reporting_member.createTime desc
 	</select>
 
 
-	<select id="getCmReportingMemberCount" parameterType="com.caimei365.commodity.model.po.CmReportingMember" resultType="Integer">
-		select ifnull(count(1),0)
+	<select id="getCmReportingMemberCount" resultType="Integer">
+		select count(1)
 		from cm_reporting_member AS cm_reporting_member
+		left join cm_distribution AS cm_distribution on cm_distribution.id=cm_reporting_member.distributionId
 		<where>  cm_reporting_member.delFlag = 0
-			<if test="id != null  and  id != ''">
-				and cm_reporting_member.id
-				<if test="id.toUpperCase().indexOf('=')==-1">
-					= #{id}
-				</if>
-				<if test="id.toUpperCase().indexOf('=')!=-1">
-					<if test="id.toUpperCase().indexOf('NOT')!=-1"> not </if>
-					<if test="id.toUpperCase().indexOf('IN')!=-1"> in </if>
-					<foreach item="idIn" collection="id.substring(id.toUpperCase().indexOf('=')+1,id.length()).trim().split(',')" open="(" separator="," close=")">
-						#{idIn}
-					</foreach>
-				</if>
-			</if>
-			<if test="distributionId != null "> and cm_reporting_member.distributionId = #{distributionId}</if>
-			<if test="clubReportingId != null "> and cm_reporting_member.clubReportingId = #{clubReportingId}</if>
-			<if test="auditStatus != null  and  auditStatus != ''">
-				and cm_reporting_member.auditStatus
-				<if test="auditStatus.toUpperCase().indexOf('=')==-1">
-					= #{auditStatus}
-				</if>
-				<if test="auditStatus.toUpperCase().indexOf('=')!=-1">
-					<if test="auditStatus.toUpperCase().indexOf('NOT')!=-1"> not </if>
-					<if test="auditStatus.toUpperCase().indexOf('IN')!=-1"> in </if>
-					<foreach item="idIn" collection="auditStatus.substring(auditStatus.toUpperCase().indexOf('=')+1,auditStatus.length()).trim().split(',')" open="(" separator="," close=")">
-						#{idIn}
-					</foreach>
-				</if>
-			</if>
-			<if test="auditText != null  and auditText != ''"> and cm_reporting_member.auditText = #{auditText}</if>
-			<if test="auditTime != null "> and cm_reporting_member.auditTime = #{auditTime}</if>
-			<if test="updateTime != null "> and cm_reporting_member.updateTime = #{updateTime}</if>
-			<if test="createTime != null "> and cm_reporting_member.createTime = #{createTime}</if>
-			<if test="commission != null "> and cm_reporting_member.commission = #{commission}</if>
+			and cm_distribution.delFlag = 0
+			and cm_distribution.status= 90
+			and cm_reporting_member.auditStatus= 2
+			and cm_reporting_member.commission is not null
+			<if test="distributionId != null  and distributionId != ''"> and cm_reporting_member.distributionId = #{distributionId}</if>
+			<if test="parentId != null "> and (cm_distribution.id = #{parentId} or  cm_distribution.parentId = #{parentId})</if>
+			<if test="linkMan != null  and linkMan != ''"> and cm_distribution.linkMan = #{linkMan}</if>
+			<if test="mobile != null  and mobile != ''"> and cm_distribution.mobile = #{mobile}</if>
 			<if test="settleStatus != null "> and cm_reporting_member.settleStatus = #{settleStatus}</if>
-			<if test="settleTime != null "> and cm_reporting_member.settleTime = #{settleTime}</if>
 		</where>
--- 		group by cm_reporting_member.id
+	</select>
+
+	<select id="getCmReportingMemberCommission" resultType="BigDecimal">
+		select sum(cm_reporting_member.commission)
+		from cm_reporting_member AS cm_reporting_member
+		left join cm_distribution AS cm_distribution on cm_distribution.id=cm_reporting_member.distributionId
+		<where>  cm_reporting_member.delFlag = 0
+			and cm_distribution.delFlag = 0
+			and cm_distribution.status= 90
+			and cm_reporting_member.auditStatus= 2
+			and cm_reporting_member.commission is not null
+			<if test="distributionId != null  and distributionId != ''"> and cm_reporting_member.distributionId = #{distributionId}</if>
+			<if test="parentId != null "> and (cm_distribution.id = #{parentId} or  cm_distribution.parentId = #{parentId})</if>
+			<if test="linkMan != null  and linkMan != ''"> and cm_distribution.linkMan = #{linkMan}</if>
+			<if test="mobile != null  and mobile != ''"> and cm_distribution.mobile = #{mobile}</if>
+			<if test="settleStatus != null "> and cm_reporting_member.settleStatus = #{settleStatus}</if>
+		</where>
+	</select>
+	<select id="getCmReportingMemberSplitCommission" resultType="BigDecimal">
+		SELECT ifnull(sum(IFNULL(cop.organizeCostPrice,cop.price*cop.organizePercent)),0)
+		from cm_reporting_club a
+		left join cm_distribution cd on cd.id = a.distributionId
+		left join cm_order co on co.orderID = a.orderID
+		left join cm_shop_order cso on cso.orderID = a.orderID
+		left join cm_order_product cop on cop.orderID = a.orderID
+		LEFT JOIN cm_receipt_order_relation crr ON crr.orderId = a.orderID AND crr.delFlag = '0'
+		LEFT JOIN cm_discern_receipt cdr ON crr.receiptId = cdr.id
+		<where>  a.delFlag = 0
+			and cd.delFlag = 0
+			and cd.status= 90
+			and a.commission is not null
+			<if test="distributionId != null  and distributionId != ''"> and a.distributionId = #{distributionId}</if>
+			<if test="parentId != null "> and (cd.id = #{parentId} or  cd.parentId = #{parentId})</if>
+			<if test="linkMan != null  and linkMan != ''"> and cd.linkMan = #{linkMan}</if>
+			<if test="mobile != null  and mobile != ''"> and cd.mobile = #{mobile}</if>
+			<if test="splitSettleStatus != null "> and a.splitSettleStatus = #{splitSettleStatus}</if>
+			<if test="payWay != null "> and cdr.payWay = #{payWay}</if>
+		</where>
+	</select>
+
+	<select id="getCmReportingMemberSplitCount" resultType="Integer">
+		SELECT count(1)
+		from cm_reporting_club a
+		left join cm_distribution cd on cd.id = a.distributionId
+		left join cm_order co on co.orderID = a.orderID
+		left join cm_shop_order cso on cso.orderID = a.orderID
+		left join cm_order_product cop on cop.orderID = a.orderID
+		LEFT JOIN cm_receipt_order_relation crr ON crr.orderId = a.orderID AND crr.delFlag = '0'
+		LEFT JOIN cm_discern_receipt cdr ON crr.receiptId = cdr.id
+		<where>  a.delFlag = 0
+			and cd.delFlag = 0
+			and cd.status= 90
+			and a.commission is not null
+			<if test="distributionId != null  and distributionId != ''"> and a.distributionId = #{distributionId}</if>
+			<if test="parentId != null "> and (cd.id = #{parentId} or  cd.parentId = #{parentId})</if>
+			<if test="linkMan != null  and linkMan != ''"> and cd.linkMan = #{linkMan}</if>
+			<if test="mobile != null  and mobile != ''"> and cd.mobile = #{mobile}</if>
+			<if test="splitSettleStatus != null "> and a.splitSettleStatus = #{splitSettleStatus}</if>
+			<if test="payWay != null "> and cdr.payWay = #{payWay}</if>
+		</where>
 	</select>
 
 
@@ -258,6 +303,25 @@
 		group by cm_reporting_member.id
 		limit 0,1
 	</select>
+	<select id="getCount" resultType="Integer">
+		select count(1)
+		from cm_reporting_member AS cm_reporting_member
+		<where>  cm_reporting_member.delFlag = 0
+			<if test="id != null "> and cm_reporting_member.id = #{id}</if>
+			<if test="distributionId != null "> and cm_reporting_member.distributionId = #{distributionId}</if>
+			<if test="clubReportingId != null "> and cm_reporting_member.clubReportingId = #{clubReportingId}</if>
+			<if test="auditStatus != null "> and cm_reporting_member.auditStatus = #{auditStatus}</if>
+			<if test="auditText != null  and auditText != ''"> and cm_reporting_member.auditText = #{auditText}</if>
+			<if test="auditBy != null "> and cm_reporting_member.auditBy = #{auditBy}</if>
+			<if test="auditTime != null "> and cm_reporting_member.auditTime = #{auditTime}</if>
+			<if test="updateTime != null "> and cm_reporting_member.updateTime = #{updateTime}</if>
+			<if test="createTime != null "> and cm_reporting_member.createTime = #{createTime}</if>
+			<if test="remarks != null  and remarks != ''"> and cm_reporting_member.remarks = #{remarks}</if>
+			<if test="commission != null "> and cm_reporting_member.commission = #{commission}</if>
+			<if test="settleStatus != null "> and cm_reporting_member.settleStatus = #{settleStatus}</if>
+			<if test="settleTime != null "> and cm_reporting_member.settleTime = #{settleTime}</if>
+		</where>
+	</select>
 
 	<insert id="addCmReportingMember" parameterType="com.caimei365.commodity.model.po.CmReportingMember" useGeneratedKeys="true" keyProperty="id">
 		insert into cm_reporting_member

+ 41 - 0
src/main/resources/mapper/PriceMapper.xml

@@ -34,6 +34,27 @@
                 order by cs.price asc limit 1) ccs on ccs.productId=p.productId
         where p.productID = #{productId}
     </select>
+
+    <select id="getDistributionDetailPrice" resultType="com.caimei365.commodity.model.vo.PriceVo">
+        select p.productID                  as productId,
+               p.actStatus,
+               (select normalPrice
+                from cm_sku
+                where productId = #{productId} and organizeId = 0
+                order by price asc
+                limit 1)                    as normalPrice,
+               p.priceFlag,
+               p.step,
+               p.shopID                     as shopId,
+               cdp.clubTaxPoint                   as taxRate,
+               cdp.includedTax,
+               cdp.invoiceType,
+               0 as svipProductFlag,
+               p.productType
+        from cm_distribution_product cdp
+        left join product p on p.productID = cdp.productId
+        where cdp.productID = #{productId}
+    </select>
     <select id="getMinPrice" resultType="com.caimei365.commodity.model.vo.PriceVo">
         select normalPrice, price
         from cm_sku
@@ -229,6 +250,26 @@
         where cs.productId = #{productId} and cs.organizeId = 0
         ORDER BY cs.price ASC
     </select>
+    <select id="findDistributionSkus" resultType="com.caimei365.commodity.model.dto.Sku">
+        select cds.skuId,
+               cds.price,
+               normalPrice,
+               cds.costPrice,
+               ifnull(ladderPriceFlag, 0)                                                                           as ladderPriceFlag,
+               cds.costCheckFlag AS costCheckFlag,
+               cds.shopPercent as costProportional,
+               ifnull(stock, 0)                                                                                     as stock,
+               unit,
+               ifnull(minBuyNumber, (SELECT buyNum
+                                     FROM product_ladder_price
+                                     WHERE skuId = cs.skuId
+                                     ORDER BY buyNum asc
+                                     LIMIT 1))                                                                      AS minBuyNumber
+        from cm_sku cs
+        left join cm_distribution_sku cds on cs.skuId = cds.skuId
+        where cds.productId = #{productId} and cs.organizeId = 0
+        ORDER BY cds.price ASC
+    </select>
     <select id="findOrganizeProductSkus" resultType="com.caimei365.commodity.model.dto.Sku">
         SELECT skuId,
                price,