huangzhiguo 2 роки тому
батько
коміт
6eb85abdd6
33 змінених файлів з 1003 додано та 254 видалено
  1. 36 22
      src/main/java/com/caimei365/commodity/controller/MallOrganizeApi.java
  2. 45 0
      src/main/java/com/caimei365/commodity/controller/MallProductApi.java
  3. 6 4
      src/main/java/com/caimei365/commodity/controller/ProcurementApi.java
  4. 16 0
      src/main/java/com/caimei365/commodity/controller/ProductPageApi.java
  5. 31 7
      src/main/java/com/caimei365/commodity/mapper/MallOrganizeMapper.java
  6. 31 0
      src/main/java/com/caimei365/commodity/mapper/MallProductMapper.java
  7. 0 7
      src/main/java/com/caimei365/commodity/mapper/PageMapper.java
  8. 7 0
      src/main/java/com/caimei365/commodity/mapper/PriceMapper.java
  9. 5 1
      src/main/java/com/caimei365/commodity/model/dto/ProcurementDto.java
  10. 1 1
      src/main/java/com/caimei365/commodity/model/po/ProcurePo.java
  11. 2 2
      src/main/java/com/caimei365/commodity/model/vo/MainmenuVo.java
  12. 4 0
      src/main/java/com/caimei365/commodity/model/vo/MallActiveImageVo.java
  13. 42 0
      src/main/java/com/caimei365/commodity/model/vo/MallFloorVo.java
  14. 1 1
      src/main/java/com/caimei365/commodity/model/vo/MallImageLinkVo.java
  15. 43 1
      src/main/java/com/caimei365/commodity/model/vo/MallOrganizeProductVo.java
  16. 82 0
      src/main/java/com/caimei365/commodity/model/vo/MallProductSkuVo.java
  17. 1 1
      src/main/java/com/caimei365/commodity/model/vo/MallThemeVo.java
  18. 4 0
      src/main/java/com/caimei365/commodity/model/vo/ProductDetailVo.java
  19. 16 6
      src/main/java/com/caimei365/commodity/service/MallOrganizeService.java
  20. 20 0
      src/main/java/com/caimei365/commodity/service/MallProductService.java
  21. 8 0
      src/main/java/com/caimei365/commodity/service/PageService.java
  22. 4 3
      src/main/java/com/caimei365/commodity/service/ProcurementService.java
  23. 14 0
      src/main/java/com/caimei365/commodity/service/impl/AdditionalService.java
  24. 92 34
      src/main/java/com/caimei365/commodity/service/impl/MallOrganizeServiceImpl.java
  25. 55 0
      src/main/java/com/caimei365/commodity/service/impl/MallProductServiceImpl.java
  26. 126 30
      src/main/java/com/caimei365/commodity/service/impl/PageServiceImpl.java
  27. 19 9
      src/main/java/com/caimei365/commodity/service/impl/ProcureService.java
  28. 106 35
      src/main/java/com/caimei365/commodity/service/impl/ProcurementServiceImpl.java
  29. 95 12
      src/main/resources/mapper/MallOrganizeMapper.xml
  30. 42 0
      src/main/resources/mapper/MallProductMapper.xml
  31. 0 60
      src/main/resources/mapper/PageMapper.xml
  32. 21 0
      src/main/resources/mapper/PriceMapper.xml
  33. 28 18
      src/test/java/com/caimei365/commodity/ProductApplicationTests.java

+ 36 - 22
src/main/java/com/caimei365/commodity/controller/MallOrganizeApi.java

@@ -45,51 +45,65 @@ public class MallOrganizeApi {
     }
 
     /**
-     * 主菜单区详情
+     * 活动详情
      * @param organizeId
-     * @param id
+     * @param activeId
      * @return
      */
-    @ApiOperation("主菜单区详情")
+    @ApiOperation("活动详情")
     @ApiImplicitParams({
             @ApiImplicitParam(readOnly = true, name = "organizeId", value = "组织Id 1 联合丽格"),
-            @ApiImplicitParam(readOnly = true, name = "jumpType", value = "跳转类型 1商品详情 2活动列表"),
-            @ApiImplicitParam(readOnly = true, name = "id", value = "菜单Id")
+            @ApiImplicitParam(readOnly = true, name = "activeId", value = "活动Id")
     })
     @GetMapping("/mall/detail")
-    public ResponseJson<Map<String,Object>> getMenu(Integer organizeId, Integer jumpType, Integer id) {
+    public ResponseJson<Map<String,Object>> getMenu(Integer organizeId,  Integer activeId) {
         if (null == organizeId) {
             return ResponseJson.error(-1,"商城类型不能为空",null);
         }
-        if (null == jumpType) {
-            return ResponseJson.error(-1,"菜单类型不能为空",null);
-        }
-        if (null == id) {
+        if (null == activeId) {
             return ResponseJson.error(-1,"菜单id不能为空",null);
         }
 
-        return mallOrganizeService.getMenu(organizeId, jumpType, id);
+        return mallOrganizeService.getMenu(organizeId,  activeId);
+    }
+
+    /**
+     * 活动宣传图商品
+     * @param imageId
+     * @return
+     */
+    @GetMapping("/mall/activeProduct")
+    public ResponseJson<List<MallOrganizeProductVo>> activeProduct(Integer imageId) {
+        if (null == imageId) {
+            return ResponseJson.error(-1,"活动宣传图id不能为空",null);
+        }
+        return mallOrganizeService.activeProduct(imageId);
     }
 
     /**
      * 商品楼层详情
-     * @param activeId
-     * @param organizeId
+     * @param floorId
      * @return
      */
     @ApiOperation("商品楼层详情")
     @ApiImplicitParams({
-            @ApiImplicitParam(readOnly = true, name = "organizeId", value = "组织Id 1 联合丽格"),
-            @ApiImplicitParam(readOnly = true, name = "activeId", value = "活动Id")
+            @ApiImplicitParam(readOnly = true, name = "floorId", value = "楼层Id")
     })
     @GetMapping("/mall/organizeProducts")
-    public ResponseJson<List<MallOrganizeProductVo>> getOrganizeProducts(Integer organizeId, Integer activeId) {
-        if (null == activeId) {
-            return ResponseJson.error(-1,"活动id不能为空",null);
-        }
-        if (null == organizeId) {
-            return ResponseJson.error(-1,"商城类型不能为空",null);
+    public ResponseJson<List<MallOrganizeProductVo>> getOrganizeProducts(Integer floorId) {
+        if (null == floorId) {
+            return ResponseJson.error(-1,"楼层Id不能为空",null);
         }
-        return mallOrganizeService.getOrganizeProducts(activeId, organizeId);
+        return mallOrganizeService.getOrganizeProducts(floorId);
+    }
+
+    /**
+     * 专题活动详情 只有一个已启用状态的活动
+     * @return
+     */
+    @ApiOperation("专题活动详情 只有一个已启用状态的活动")
+    @GetMapping("/mall/getThemeInfo")
+    public ResponseJson<Map<String, Object>> getThemeInfo() {
+        return mallOrganizeService.getThemeInfo();
     }
 }

+ 45 - 0
src/main/java/com/caimei365/commodity/controller/MallProductApi.java

@@ -0,0 +1,45 @@
+package com.caimei365.commodity.controller;
+
+import com.caimei365.commodity.model.ResponseJson;
+import com.caimei365.commodity.service.MallProductService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/5/11
+ */
+@Api(tags = "外部商城商品api")
+@RestController
+@RequestMapping("/commodity/mallProduct")
+public class MallProductApi {
+    @Autowired private MallProductService productService;
+
+    /**
+     * 外部商城商品详情
+     * @param productId
+     * @return
+     */
+    @ApiOperation("外部商城商品详情")
+    @ApiImplicitParams({
+            @ApiImplicitParam(readOnly = true, name = "productId", value = "商品Id")
+    })
+    @GetMapping("/getProductInfo")
+    public ResponseJson<Map<String, Object>> getProductInfo(Integer productId) {
+        if(null == productId) {
+            return ResponseJson.error(-1,"商品Id不能为空",null);
+        }
+        return productService.productInfo(productId);
+    }
+}

+ 6 - 4
src/main/java/com/caimei365/commodity/controller/ProcurementApi.java

@@ -3,6 +3,7 @@ package com.caimei365.commodity.controller;
 import com.caimei365.commodity.model.ResponseJson;
 import com.caimei365.commodity.model.dto.ProcurementDto;
 import com.caimei365.commodity.service.ProcurementService;
+import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -36,10 +37,11 @@ public class ProcurementApi {
     @ApiImplicitParams({
             @ApiImplicitParam(readOnly = true, name = "pageNo", value = "页面页数"),
             @ApiImplicitParam(readOnly = true, name = "pageSize", value = "页面数据量"),
+            @ApiImplicitParam(readOnly = true, name = "userId", value = "用户Id"),
     })
     @GetMapping("/findList")
-    public ResponseJson<List<ProcurementDto>> findList(int pageNo, int pageSize) {
-        return  procurementService.findList(pageNo, pageSize);
+    public ResponseJson<PageInfo<ProcurementDto>> findList(int pageNo, int pageSize, Integer userId) {
+        return  procurementService.findList(pageNo, pageSize,userId);
     }
 
     /**
@@ -120,7 +122,7 @@ public class ProcurementApi {
             @ApiImplicitParam(readOnly = true, name = "number", value = "购买数量")
     })
     @PostMapping("/saveProcurement")
-    public ResponseJson saveProcurement(ProcurementDto procurementDto) {
+    public ResponseJson saveProcurement(ProcurementDto procurementDto) throws Exception{
         if (null == procurementDto.getUserId()) {
             return ResponseJson.error(-1,"参数userId不能为空", null);
         }
@@ -141,7 +143,7 @@ public class ProcurementApi {
             @ApiImplicitParam(readOnly = true, name = "number", value = "购买数量")
     })
     @PostMapping("/pateProcurement")
-    public ResponseJson participateProcurement(ProcurementDto procurementDto) {
+    public ResponseJson participateProcurement(ProcurementDto procurementDto) throws Exception {
         if (null == procurementDto.getUserId()) {
             return ResponseJson.error(-1,"参数userId不能为空", null);
         }

+ 16 - 0
src/main/java/com/caimei365/commodity/controller/ProductPageApi.java

@@ -283,6 +283,22 @@ public class ProductPageApi {
         return pageService.getProductDetails(productId, userId);
     }
 
+    /**
+     * 商品详情页 -- 组织
+     *
+     * @param productId 商品Id
+     * @param userId    用户Id
+     *                  Statistics统计存入Redis的hash => prefix + ":" + field + ":" + date("yyyyMMdd");
+     */
+    @ApiOperation("商品详情页(旧:/product/details)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = false, name = "userId", value = "用户id"),
+            @ApiImplicitParam(required = false, name = "productId", value = "商品Id")
+    })
+    @GetMapping("/product/organizeDetails")
+    public ResponseJson<ProductDetailVo> getProductOrganizeDetails(Integer productId, Integer userId) {
+        return pageService.getProductOrganizeDetails(productId, userId);
+    }
     /**
      * 再次购买商品列表
      *

+ 31 - 7
src/main/java/com/caimei365/commodity/mapper/MallOrganizeMapper.java

@@ -35,8 +35,21 @@ public interface MallOrganizeMapper {
      * @param organizeId
      * @return
      */
-    List<MallThemeVo> getmallTheme(@Param("organizeId") Integer organizeId);
+    MallThemeVo getmallTheme(@Param("organizeId") Integer organizeId);
 
+    /**
+     * 楼层信息
+     * @param organizeId
+     * @return
+     */
+    List<MallFloorVo> getFloorInfo(@Param("organizeId") Integer organizeId);
+
+    /**
+     * 楼层商品
+     * @param floorIds
+     * @return
+     */
+    List<MallOrganizeProductVo> getFloorProducts(@Param("floorIds") List<Integer> floorIds);
     /**
      * 外部商城活动
      * @param organizeId
@@ -48,7 +61,7 @@ public interface MallOrganizeMapper {
      * 外部商城活动商品
      * @return
      */
-    List<MallOrganizeProductVo> getMallProducts(@Param("activeId") Integer activeId);
+    List<MallOrganizeProductVo> getMallProducts(@Param("activeIds") List<Integer> activeIds);
 
     /**
      * 活动Id
@@ -82,18 +95,29 @@ public interface MallOrganizeMapper {
     List<MallActiveImageVo> getActiveImageById(@Param("activeId") Integer activeId);
     /**
      * 主菜单区详情 -- 活动
-     * @param organizeId
      * @param activeId
      * @return
      */
-    List<MallOrganizeProductVo> getMenuActiveList(@Param("organizeId") Integer organizeId, @Param("activeId") Integer activeId);
+    List<MallOrganizeProductVo> getMenuActiveList(@Param("activeId") Integer activeId);
 
+    /**
+     * 活动宣传商品
+     * @param imageId
+     * @return
+     */
+    List<MallOrganizeProductVo> getImageProduct(@Param("imageId") Integer imageId);
     /**
      * 商品楼层详情
-     * @param organizeId
-     * @param activeId
+     * @param floorId
+     * @return
+     */
+    List<MallOrganizeProductVo> getOrganizeProducts(@Param("floorId") Integer floorId);
+
+    /**
+     * 专题活动 只有一个已启用状态的活动
      * @return
      */
-    List<MallOrganizeProductVo> getOrganizeProducts(@Param("organizeId") Integer organizeId, @Param("activeId") Integer activeId);
+    MallThemeVo getThemeInfo();
 
+    List<MallOrganizeProductVo> getThemeProduct();
 }

+ 31 - 0
src/main/java/com/caimei365/commodity/mapper/MallProductMapper.java

@@ -0,0 +1,31 @@
+package com.caimei365.commodity.mapper;
+
+import com.caimei365.commodity.model.vo.MallOrganizeProductVo;
+import com.caimei365.commodity.model.vo.MallProductSkuVo;
+import com.caimei365.commodity.model.vo.ProductDetailVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/5/11
+ */
+@Mapper
+public interface MallProductMapper {
+    /**
+     * 外部商城 商品详情
+     * @param productId
+     * @return
+     */
+    MallOrganizeProductVo getOrganizeProductDetails(@Param("productId") Integer productId);
+
+    /**
+     * 商品sku信息
+     * @return
+     */
+    List<MallProductSkuVo> getMallSkus(@Param("mallProductId") Integer mallProductId);
+}

+ 0 - 7
src/main/java/com/caimei365/commodity/mapper/PageMapper.java

@@ -133,13 +133,6 @@ public interface PageMapper {
      */
     ProductDetailVo getProductDetails(Integer productId);
 
-    /**
-     * 外部商城 商品详情
-     * @param organizeId
-     * @param productId
-     * @return
-     */
-    ProductDetailVo getOrganizeProductDetails(@Param("organizeId") Integer organizeId, @Param("productId") Integer productId);
     /**
      * 再次购买
      *

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

@@ -88,6 +88,13 @@ public interface PriceMapper {
      */
     List<Sku> findSkus(Integer productId);
 
+    /**
+     * 外部商城sku
+     * @param productId
+     * @return
+     */
+    List<MallProductSkuVo> findOrganizeSkus(Integer productId);
+
     /**
      * 查找所有阶梯价中最低价
      * @param productId

+ 5 - 1
src/main/java/com/caimei365/commodity/model/dto/ProcurementDto.java

@@ -49,11 +49,15 @@ public class ProcurementDto {
     /**
      * 参与机构数
      */
-    private String partNumber;
+    private Integer partNumber;
     /**
      * 是否实现 0 以实现 1 未实现
      */
     private String isAchieve;
+    /**
+     * 是否参与集采 0未参与 1参与 2我创建的
+     */
+    private Integer isInvolved;
     /**
      * 是否删除 0 未删除 其他删除
      */

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

@@ -43,7 +43,7 @@ public class ProcurePo {
     /**
      * 创建时间
      */
-    private String saveTime;
+    private Long saveTime;
     /**
      * 创建人Id
      */

+ 2 - 2
src/main/java/com/caimei365/commodity/model/vo/MainmenuVo.java

@@ -21,11 +21,11 @@ public class MainmenuVo {
     /**
      * 菜单主题
      */
-    private String topicvar;
+    private String topic;
     /**
      * 菜单banner图
      */
-    private String imagevar;
+    private String image;
     /**
      * 排序值
      */

+ 4 - 0
src/main/java/com/caimei365/commodity/model/vo/MallActiveImageVo.java

@@ -18,6 +18,10 @@ public class MallActiveImageVo {
      * 活动Id
      */
     private Integer activeId;
+    /**
+     * 活动图名称
+     */
+    private String topic;
     /**
      * 宣传图
      */

+ 42 - 0
src/main/java/com/caimei365/commodity/model/vo/MallFloorVo.java

@@ -0,0 +1,42 @@
+package com.caimei365.commodity.model.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/5/10
+ */
+@Data
+public class MallFloorVo {
+
+    private Integer id ;
+    /**
+     * 组织ID,具体对应cm_mall_organize表ID
+     */
+    private Integer organizeId;
+    /**
+     * 楼层标题
+     */
+    private String topic;
+    /**
+     * 排序
+     */
+    private Integer sort;
+    /**
+     * 状态 0停用 1启用
+     */
+    private Integer enabledStatus ;
+    /**
+     * 添加时间
+     */
+    private Date addTime;
+    /**
+     * 楼层商品
+     */
+    private List<MallOrganizeProductVo> products;
+}

+ 1 - 1
src/main/java/com/caimei365/commodity/model/vo/MallImageLinkVo.java

@@ -40,7 +40,7 @@ public class MallImageLinkVo implements Serializable {
      * 跳转类型 1商品详情 2活动列表
      * @return
      */
-    private String jumpType;
+    private Integer jumpType;
     /**
      * 跳转商品Id
      */

+ 43 - 1
src/main/java/com/caimei365/commodity/model/vo/MallOrganizeProductVo.java

@@ -2,6 +2,8 @@ package com.caimei365.commodity.model.vo;
 
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * Description
  *
@@ -10,10 +12,38 @@ import lombok.Data;
  */
 @Data
 public class MallOrganizeProductVo {
+    /**
+     * 活动Id
+     */
+    private Integer activeId;
+    /**
+     * 楼层Id
+     */
+    private Integer floorId;
+    /**
+     * 活动图Id
+     */
+    private Integer imageId;
+    /**
+     * 活动商品宣传图主题
+     */
+    private String topic;
     /**
      * 商品Id
      */
-    private String productId;
+    private Integer productId;
+    /**
+     * 外部商城商品id
+     */
+    private Integer mallProductId;
+    /**
+     * 供应商Id
+     */
+    private Integer shopId;
+    /**
+     * 供应商名称
+     */
+    private String shopName;
     /**
      * 商品名称
      */
@@ -30,6 +60,14 @@ public class MallOrganizeProductVo {
      * 成本价
      */
     private String costPrice;
+    /**
+     * 价格等级
+     */
+    private Integer priceGrade;
+    /**
+     * 价格
+     */
+    private Double price;
     /**
      * 启用阶梯价格标识 0否 1是
      */
@@ -46,4 +84,8 @@ public class MallOrganizeProductVo {
      * 商品状态,1已上架,2已下架
      */
     private String validFlag;
+    /**
+     * sku信息
+     */
+    private List<MallProductSkuVo> sku;
 }

+ 82 - 0
src/main/java/com/caimei365/commodity/model/vo/MallProductSkuVo.java

@@ -0,0 +1,82 @@
+package com.caimei365.commodity.model.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/5/11
+ */
+@Data
+public class MallProductSkuVo {
+    private Integer id;
+    /**
+     * 商品Id
+     */
+    private Integer productId;
+    /**
+     * 外部商城SkuId
+     */
+    private Integer organId;
+    /**
+     * 采美SkuId
+     */
+    private Integer skuId;
+    /**
+     * 外部商城productId
+     */
+    private Integer mallProductId;
+    /**
+     * 外部商城起订量
+     */
+    private Integer minBuyNumber;
+
+    private Integer stock;
+    /**
+     * 外部商城售价
+     */
+    private Double price;
+    /**
+     * 价格等级
+     */
+    private Integer priceGrade;
+    /**
+     * 包装规格
+     */
+    private String unit;
+    /**
+     * 机构价
+     */
+    private String clubPrice;
+    /**
+     * 成本类型:1固定成本 2比例成本
+     */
+    private String costCheckFlag;
+    /**
+     * 成本价
+     */
+    private Double costPrice;
+    /**
+     * 比例成本百分比
+     */
+    private Double costProportional;
+    /**
+     * 采美起订量
+     */
+    private Integer cmMinBuyNumber;
+    /**
+     * 分账组织佣金比例
+     */
+    private Integer organizePercent;
+    /**
+     * 分账供应商成本比例
+     */
+    private Integer shopPercent;
+    /**
+     * 分账采美佣金比例
+     */
+    private Integer cmPercent;
+}

+ 1 - 1
src/main/java/com/caimei365/commodity/model/vo/MallThemeVo.java

@@ -35,7 +35,7 @@ public class MallThemeVo {
     /**
      * 跳转类型 1商品详情 2活动列表
      */
-    private String jumpType;
+    private Integer jumpType;
     /**
      * 跳转商品Id
      */

+ 4 - 0
src/main/java/com/caimei365/commodity/model/vo/ProductDetailVo.java

@@ -370,4 +370,8 @@ public class ProductDetailVo implements Serializable {
      * 关联标签库字符串
      */
     private String  relatedLabels;
+    /**
+     * 外部商城sku
+     */
+    private List<MallProductSkuVo> organizeSkus;
 }

+ 16 - 6
src/main/java/com/caimei365/commodity/service/MallOrganizeService.java

@@ -2,6 +2,7 @@ package com.caimei365.commodity.service;
 
 import com.caimei365.commodity.model.ResponseJson;
 import com.caimei365.commodity.model.vo.MallOrganizeProductVo;
+import com.caimei365.commodity.model.vo.MallThemeVo;
 
 import java.util.List;
 import java.util.Map;
@@ -21,19 +22,28 @@ public interface MallOrganizeService {
     ResponseJson<Map<String, Object>> getMallHome(Integer organizeId);
 
     /**
-     * 主菜单区详情
+     * 活动详情
      * @param organizeId
-     * @param id
+     * @param activeId
      * @return
      */
-    ResponseJson<Map<String,Object>> getMenu(Integer organizeId, Integer jumpType, Integer id);
+    ResponseJson<Map<String,Object>> getMenu(Integer organizeId, Integer activeId);
 
+    /**
+     * 活动商品列表
+     * @return
+     */
+    ResponseJson<List<MallOrganizeProductVo>> activeProduct(Integer imageId);
     /**
      * 商品楼层详情
-     * @param activeId
-     * @param organizeId
+     * @param floorId
      * @return
      */
-    ResponseJson<List<MallOrganizeProductVo>> getOrganizeProducts(Integer activeId, Integer organizeId);
+    ResponseJson<List<MallOrganizeProductVo>> getOrganizeProducts(Integer floorId);
 
+    /**
+     * 专题活动 只有一个已启用状态的活动
+     * @return
+     */
+    ResponseJson<Map<String,Object>> getThemeInfo();
 }

+ 20 - 0
src/main/java/com/caimei365/commodity/service/MallProductService.java

@@ -0,0 +1,20 @@
+package com.caimei365.commodity.service;
+
+import com.caimei365.commodity.model.ResponseJson;
+
+import java.util.Map;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/5/11
+ */
+public interface MallProductService {
+    /**
+     * 外部商城商品详情
+     * @param productId
+     * @return
+     */
+    ResponseJson<Map<String, Object>> productInfo(Integer productId);
+}

+ 8 - 0
src/main/java/com/caimei365/commodity/service/PageService.java

@@ -105,6 +105,14 @@ public interface PageService {
      */
     ResponseJson<ProductDetailVo> getProductDetails(Integer productId, Integer userId);
 
+    /**
+     * 商品详情页 -- 组织
+     * @param productId
+     * @param userId
+     * @return
+     */
+    ResponseJson<ProductDetailVo> getProductOrganizeDetails(Integer productId, Integer userId);
+
     /**
      * 再次购买商品列表
      *

+ 4 - 3
src/main/java/com/caimei365/commodity/service/ProcurementService.java

@@ -4,6 +4,7 @@ import com.caimei365.commodity.model.ResponseJson;
 import com.caimei365.commodity.model.dto.ProcurementDto;
 import com.caimei365.commodity.model.po.ProcurePo;
 import com.caimei365.commodity.model.vo.PaginationVo;
+import com.github.pagehelper.PageInfo;
 
 import java.util.List;
 import java.util.Map;
@@ -22,7 +23,7 @@ public interface ProcurementService {
      * @param pageSize
      * @return
      */
-    ResponseJson<List<ProcurementDto>> findList(int pageNo, int pageSize);
+    ResponseJson<PageInfo<ProcurementDto>> findList(int pageNo, int pageSize,Integer userId);
 
     /**
      * 查看详情
@@ -52,14 +53,14 @@ public interface ProcurementService {
      * @param procurementDto
      * @return
      */
-    ResponseJson saveProcurement(ProcurementDto procurementDto);
+    ResponseJson saveProcurement(ProcurementDto procurementDto) throws Exception;
 
     /**
      * 参与集采
      * @param procurementDto
      * @return
      */
-    ResponseJson participateProcurement(ProcurementDto procurementDto);
+    ResponseJson participateProcurement(ProcurementDto procurementDto) throws Exception;
 
     /**
      * 删除集采 | 退出集采

+ 14 - 0
src/main/java/com/caimei365/commodity/service/impl/AdditionalService.java

@@ -101,4 +101,18 @@ public class AdditionalService {
         return mongoTemplate.find(query, AdditionalPo.class);
     }
 
+    /**
+     * 根据参与集采Id查询
+     *
+     * @param additionalId
+     * @return
+     */
+    public AdditionalPo findAdditionalById(String additionalId) {
+        //调用dao
+        Query query = new Query();
+        query.addCriteria(Criteria.where("additionalId").is(additionalId));
+        query.addCriteria(Criteria.where("delFlag").is("0"));
+        return mongoTemplate.find(query, AdditionalPo.class).get(0);
+    }
+
 }

+ 92 - 34
src/main/java/com/caimei365/commodity/service/impl/MallOrganizeServiceImpl.java

@@ -1,16 +1,20 @@
 package com.caimei365.commodity.service.impl;
 
+import com.caimei365.commodity.components.PriceUtilService;
 import com.caimei365.commodity.mapper.MallOrganizeMapper;
 import com.caimei365.commodity.model.ResponseJson;
+import com.caimei365.commodity.model.po.ProcurePo;
 import com.caimei365.commodity.model.vo.*;
 import com.caimei365.commodity.service.MallOrganizeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * Description
@@ -22,6 +26,8 @@ import java.util.Map;
 public class MallOrganizeServiceImpl implements MallOrganizeService {
 
     @Autowired private MallOrganizeMapper mallOrganizeMapper;
+    @Autowired private ProcureService procureService;
+    @Resource private PriceUtilService priceUtilService;
     /**
      * 联合丽格小程序首页
      *
@@ -38,18 +44,25 @@ public class MallOrganizeServiceImpl implements MallOrganizeService {
         List<MallImageLinkVo> bannerImageList = mallOrganizeMapper.getMallBannerImages(organizeId);
         map.put("bannerList", bannerImageList);
         // 专题活动
-        List<MallThemeVo> mallThemeVos = mallOrganizeMapper.getmallTheme(organizeId);
+        MallThemeVo mallThemeVos = mallOrganizeMapper.getmallTheme(organizeId);
         map.put("mallTheme", mallThemeVos);
         // 商品楼层
-        List<MallActiveVo> mallActive = mallOrganizeMapper.getMallActive(organizeId);
+        List<MallFloorVo> floorList = mallOrganizeMapper.getFloorInfo(organizeId);
         // 楼层商品
-        for (MallActiveVo active : mallActive) {
-            List<MallOrganizeProductVo> mallProducts = mallOrganizeMapper.getMallProducts(active.getId());
+        List<Integer> floorIds = floorList.stream().map(m -> m.getId()).collect(Collectors.toList());
+        List<MallOrganizeProductVo> mallProducts = mallOrganizeMapper.getFloorProducts(floorIds);
+
+        for (MallFloorVo floor : floorList) {
             if (null != mallProducts) {
-                active.setProducts(mallProducts);
+                List<MallOrganizeProductVo> productVos = mallProducts.stream().filter(m -> m.getFloorId() == floor.getId()).collect(Collectors.toList());
+                productVos.forEach( product -> {
+                    // 价格等级
+                    product.setPriceGrade(priceUtilService.getPriceGrade(product.getPrice()));
+                });
+                floor.setProducts(productVos);
             }
         }
-        map.put("mallActive", mallActive);
+        map.put("floorList", floorList);
         return ResponseJson.success(map);
     }
 
@@ -57,49 +70,94 @@ public class MallOrganizeServiceImpl implements MallOrganizeService {
      * 主菜单区详情
      *
      * @param organizeId
-     * @param id
+     * @param activeId
      * @return
      */
     @Override
-    public ResponseJson<Map<String,Object>> getMenu(Integer organizeId,Integer jumpType, Integer id) {
+    public ResponseJson<Map<String,Object>> getMenu(Integer organizeId, Integer activeId) {
         Map<String, Object> map = new HashMap<>();
-        // 获取菜单信息
-        MainmenuVo menuInfo = mallOrganizeMapper.getMenuInfo(organizeId, id);
-        if (menuInfo == null) {
-            return ResponseJson.error(-1,"该菜单不存在,请刷新菜单",null);
-        }
-        if (1 == menuInfo.getJumpType()) {
-            // 菜单跳转单商品
-            MallOrganizeProductVo menuProductList = mallOrganizeMapper.getMenuProductList(organizeId, id);
-            map.put("menuProductList", menuProductList);
+        // 菜单跳转活动
+        if (null != activeId) {
+            MallActiveVo active = mallOrganizeMapper.getActiveById(organizeId, activeId);
+            // 活动宣传图
+            List<MallActiveImageVo> imageList = mallOrganizeMapper.getActiveImageById(activeId);
+
+            active.setActiveImageVos(imageList);
+            map.put("active", active);
         } else {
-            // 菜单跳转活动
-            if (null != menuInfo.getJumpActiveId()) {
-                MallActiveVo active = mallOrganizeMapper.getActiveById(organizeId, menuInfo.getJumpActiveId());
-                // 活动宣传图
-                List<MallActiveImageVo> imageList = mallOrganizeMapper.getActiveImageById(menuInfo.getJumpActiveId());
-                // 活动商品信息
-                List<MallOrganizeProductVo> menuList = mallOrganizeMapper.getMenuActiveList(organizeId, id);
-                active.setProducts(menuList);
-                active.setActiveImageVos(imageList);
-                map.put("active", active);
-            } else {
-                return ResponseJson.error(-1,"该活动不存在,请联系维护人员",null);
-            }
+            return ResponseJson.error(-1,"该活动不存在,请联系维护人员",null);
         }
         return ResponseJson.success(map);
     }
 
+    /**
+     * 活动商品列表
+     *
+     * @return
+     */
+    @Override
+    public ResponseJson<List<MallOrganizeProductVo>> activeProduct(Integer imageId) {
+        // 活动商品信息
+        List<MallOrganizeProductVo> menuList = mallOrganizeMapper.getImageProduct(imageId);
+        menuList.forEach(p -> {
+            // 价格等级
+            p.setPriceGrade(priceUtilService.getPriceGrade(p.getPrice()));
+        });
+
+        return ResponseJson.success(menuList);
+    }
+
     /**
      * 商品楼层详情
      *
-     * @param activeId
-     * @param organizeId
+     * @param floorId
      * @return
      */
     @Override
-    public ResponseJson<List<MallOrganizeProductVo>> getOrganizeProducts(Integer activeId, Integer organizeId) {
-        List<MallOrganizeProductVo> organizeProducts = mallOrganizeMapper.getOrganizeProducts(activeId, organizeId);
+    public ResponseJson<List<MallOrganizeProductVo>> getOrganizeProducts(Integer floorId) {
+        List<MallOrganizeProductVo> organizeProducts = mallOrganizeMapper.getOrganizeProducts(floorId);
+        organizeProducts.forEach(p -> {
+            // 价格等级
+            p.setPriceGrade(priceUtilService.getPriceGrade(p.getPrice()));
+        });
         return ResponseJson.success(organizeProducts);
     }
+
+    /**
+     * 专题活动 只有一个已启用状态的活动
+     *
+     * @return
+     */
+    @Override
+    public ResponseJson<Map<String,Object>> getThemeInfo() {
+        Map<String ,Object> map = new HashMap<>();
+        // 专题活动
+        MallThemeVo themeInfo = mallOrganizeMapper.getThemeInfo();
+        if (null != themeInfo) {
+            if ("1".equals(themeInfo.getJumpType())) {
+                // 1商品详情
+                MallOrganizeProductVo themeProduct = mallOrganizeMapper.getMenuProductList(themeInfo.getOrganizeId(), themeInfo.getJumpProductId());
+                map.put("themeProduct", themeProduct);
+            } else {
+                // 菜单跳转活动
+                if (null != themeInfo.getJumpActiveId()) {
+                    MallActiveVo active = mallOrganizeMapper.getActiveById(themeInfo.getOrganizeId(), themeInfo.getJumpActiveId());
+                    // 活动宣传图
+                    List<MallActiveImageVo> imageList = mallOrganizeMapper.getActiveImageById(themeInfo.getJumpActiveId());
+                    // 活动商品信息
+                    List<MallOrganizeProductVo> menuList = mallOrganizeMapper.getMenuActiveList(themeInfo.getJumpActiveId());
+                    menuList.forEach(p -> {
+                        // 价格等级
+                        p.setPriceGrade(priceUtilService.getPriceGrade(p.getPrice()));
+                    });
+                    active.setProducts(menuList);
+                    active.setActiveImageVos(imageList);
+                    map.put("active", active);
+                } else {
+                    return ResponseJson.error(-1,"该活动不存在,请联系维护人员",null);
+                }
+            }
+        }
+        return ResponseJson.success(map);
+    }
 }

+ 55 - 0
src/main/java/com/caimei365/commodity/service/impl/MallProductServiceImpl.java

@@ -0,0 +1,55 @@
+package com.caimei365.commodity.service.impl;
+
+import com.caimei365.commodity.components.PriceUtilService;
+import com.caimei365.commodity.mapper.MallProductMapper;
+import com.caimei365.commodity.mapper.PageMapper;
+import com.caimei365.commodity.model.ResponseJson;
+import com.caimei365.commodity.model.vo.MallOrganizeProductVo;
+import com.caimei365.commodity.model.vo.MallProductSkuVo;
+import com.caimei365.commodity.model.vo.ProductDetailVo;
+import com.caimei365.commodity.service.MallProductService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/5/11
+ */
+@Service
+public class MallProductServiceImpl implements MallProductService {
+
+    @Autowired private MallProductMapper productMapper;
+    @Autowired private PriceUtilService priceUtilService;
+    /**
+     * 外部商城商品详情
+     * @param productId
+     * @return
+     */
+    @Override
+    public ResponseJson<Map<String, Object>> productInfo(Integer productId) {
+        Map<String, Object> map = new HashMap<>();
+        // 商品信息
+        MallOrganizeProductVo product = productMapper.getOrganizeProductDetails(productId);
+        if (null != product) {
+            // 商品sku
+            if (null != product.getMallProductId()) {
+                List<MallProductSkuVo> mallSkus = productMapper.getMallSkus(product.getMallProductId());
+                if (null != mallSkus) {
+                    mallSkus.forEach(s -> {
+                        s.setPriceGrade(priceUtilService.getPriceGrade(s.getPrice()));
+                    });
+                    product.setSku(mallSkus);
+                }
+            }
+        }
+        map.put("product", product);
+        return ResponseJson.success(map);
+    }
+}

+ 126 - 30
src/main/java/com/caimei365/commodity/service/impl/PageServiceImpl.java

@@ -551,17 +551,8 @@ public class PageServiceImpl implements PageService {
      */
     @Override
     public ResponseJson<ProductDetailVo> getProductDetails(Integer productId, Integer userId) {
-        // 获取用户组织 0 采美
-        Integer organizeId = pageMapper.getOrganizeId(userId);
         // 商品详情页
-        ProductDetailVo product = null;
-        // 采美商品详情页
-        if (0 == organizeId) {
-            product = pageMapper.getProductDetails(productId);
-        } else{
-        // 外部商城 商品详情页  -- 联合丽格
-            product = pageMapper.getOrganizeProductDetails(organizeId,productId);
-        }
+        ProductDetailVo product = pageMapper.getProductDetails(productId);
         //当该商品的“能否退货”字段的值是“不能”时,新增特殊商品退货须知提示
         if (product == null) {
             //商品不存在
@@ -613,13 +604,11 @@ public class PageServiceImpl implements PageService {
         product.setBigTypeName(list.size() > 0 ? list.get(0) : null);
         product.setSmallTypeName(list.size() > 1 ? list.get(1) : null);
         product.setTinyTypeName(list.size() > 2 ? list.get(2) : null);
-        if (0 == organizeId) {
-            // 商品云上美博会活动状态
-            Integer pcBeautyStatus = shopMapper.getPcBeautyStatusById(product.getProductId());
-            Integer appletsBeautyStatus = shopMapper.getAppletsBeautyStatusById(product.getProductId());
-            product.setPcActType(null != pcBeautyStatus ? 1 : 0);
-            product.setAppletsActType(null != appletsBeautyStatus ? 1 : 0);
-        }
+        // 商品云上美博会活动状态
+        Integer pcBeautyStatus = shopMapper.getPcBeautyStatusById(product.getProductId());
+        Integer appletsBeautyStatus = shopMapper.getAppletsBeautyStatusById(product.getProductId());
+        product.setPcActType(null != pcBeautyStatus ? 1 : 0);
+        product.setAppletsActType(null != appletsBeautyStatus ? 1 : 0);
         // 商品资料id
         Integer archiveId = pageMapper.getArchiveIdById(product.getProductId());
         product.setArchiveId(null != archiveId ? archiveId : 0);
@@ -638,8 +627,6 @@ public class PageServiceImpl implements PageService {
         }
         // 商品不处于已删除/待审核/审核未通过的状态
         if (0 != product.getValidFlag()) {
-            // 采美价格设置
-            if (0 == organizeId) {
                 // 数据库获取基本价格信息
                 PriceVo price = priceMapper.getDetailPrice(productId);
                 // 根据用户id设置详细价格
@@ -657,17 +644,6 @@ public class PageServiceImpl implements PageService {
                 product.setUserIdentity(price.getUserIdentity());
                 product.setSvipProductFlag(price.getSvipProductFlag());
                 product.setSvipPriceTag(price.getSvipPriceTag());
-            }
-            // 组织设置价格 -- 联合丽格
-            if (1 == organizeId) {
-                // 数据库获取基本价格信息
-                List<Sku> skus = priceMapper.getDetailOrganizePrice(productId);
-                // 设置价格
-                product.setPrice(skus.get(0).getPrice());
-                product.setMinBuyNumber(skus.get(0).getMinBuyNumber());
-                product.setSkuId(skus.get(0).getSkuId());
-                product.setSkus(skus);
-            }
             //设置展示的价格等级
             product.setPriceGrade(priceUtilService.getPriceGrade(product.getPrice()));
             //查询商品收藏情况,1未收藏,0未收藏,未收藏过该商品用户是null
@@ -686,6 +662,126 @@ public class PageServiceImpl implements PageService {
         return ResponseJson.success(product);
     }
 
+    /**
+     * 商品详情页 -- 组织
+     *
+     * @param productId
+     * @param userId
+     * @return
+     */
+    @Override
+    public ResponseJson<ProductDetailVo> getProductOrganizeDetails(Integer productId, Integer userId) {
+        // 商品详情页
+        ProductDetailVo product = pageMapper.getProductDetails(productId);
+        //当该商品的“能否退货”字段的值是“不能”时,新增特殊商品退货须知提示
+        /*if (product == null) {
+            //商品不存在
+            product = new ProductDetailVo();
+            product.setValidFlag(0);
+        } else {
+            if (null != product.getReturnGoodsStutas() && 2 == product.getReturnGoodsStutas()) {
+                String helpContent = pageMapper.getHelpContent(1040);
+                product.setHelpContent(helpContent);
+            }
+        }*/
+        String[] split = null;
+        // 品牌名称
+        String brandName = shopMapper.getBrandNameById(product.getBrandId());
+        product.setBrandName(brandName);
+        //商品标签
+        if (product.getTags() != null) {
+            String tags = product.getTags().replace(" ", ",").replace("、", ",").replace(",", ",");
+            if (tags.contains(",")) {
+                List<String> list = new ArrayList<String>();
+                for (String s : tags.split(",")) {
+                    if (s != null && !"".equals(s)) {
+                        list.add(s);
+                    }
+                }
+                split = list.toArray(new String[list.size()]);
+            }
+        }
+        product.setTagsList(split);
+        // 主图
+        product.setMainImage(ImageUtils.getImageURL("product", product.getMainImage(), 0, domain));
+        // 商品图片
+        List<ProductImagePo> imageList = shopMapper.getProductImages(productId);
+        for (ProductImagePo image : imageList) {
+            String imageURL = ImageUtils.getImageURL("product", image.getImage(), 0, domain);
+            image.setImage(imageURL);
+        }
+        product.setImageList(imageList);
+        // 商品详情
+        ProductDetailInfoPo productDetail = shopMapper.getProductDetailInfo(productId);
+        product.setProductDetail(productDetail);
+        // 相关参数
+        List<ProductParameterPo> parametersList = shopMapper.getProductParameters(productId);
+        product.setParametersList(parametersList);
+        // 分类名称
+        String typeName = shopMapper.getTypeName(product.getBigTypeId(), product.getSmallTypeId(), product.getTinyTypeId());
+        product.setTypeName(typeName);
+        List<String> list = StringUtils.isNotEmpty(typeName) ? Arrays.asList(typeName.split("-")) : new ArrayList<>();
+        product.setBigTypeName(list.size() > 0 ? list.get(0) : null);
+        product.setSmallTypeName(list.size() > 1 ? list.get(1) : null);
+        product.setTinyTypeName(list.size() > 2 ? list.get(2) : null);
+        // 商品云上美博会活动状态
+        /*Integer pcBeautyStatus = shopMapper.getPcBeautyStatusById(product.getProductId());
+        Integer appletsBeautyStatus = shopMapper.getAppletsBeautyStatusById(product.getProductId());
+        product.setPcActType(null != pcBeautyStatus ? 1 : 0);
+        product.setAppletsActType(null != appletsBeautyStatus ? 1 : 0);*/
+        // 商品资料id
+        /*Integer archiveId = pageMapper.getArchiveIdById(product.getProductId());
+        product.setArchiveId(null != archiveId ? archiveId : 0);*/
+        //供应商信息
+        ShopVo shop = shopMapper.getProductShopById(product.getShopId());
+        if (null != shop) {
+            Integer normalNum = shopMapper.getProductNumById(product.getShopId());
+            shop.setNormalNum(null == normalNum ? 0 : normalNum);
+            if (shop.getBusinessScope() != null && shop.getBusinessScope().contains("/")) {
+                String[] businessScopeArray = shop.getBusinessScope().split("/");
+                shop.setBusinessScopeArray(businessScopeArray);
+            }
+            shop.setLogo(ImageUtils.getImageURL("shopLogo", shop.getLogo(), 0, domain));
+            shop.setBusinessLicense(ImageUtils.getImageURL("shopLogo", shop.getBusinessLicense(), 0, domain));
+            product.setShop(shop);
+        }
+        // 商品不处于已删除/待审核/审核未通过的状态
+        if (0 != product.getValidFlag()) {
+            // 数据库获取基本价格信息
+//            PriceVo price = priceMapper.getDetailPrice(productId);
+            // 根据用户id设置详细价格
+//            priceUtilService.setPriceByUserId(price, userId, 0);
+            List<MallProductSkuVo> organizeSkus = priceMapper.findOrganizeSkus(productId);
+            // 设置价格
+            product.setPrice(organizeSkus.get(0).getPrice());
+            product.setMinBuyNumber(organizeSkus.get(0).getMinBuyNumber());
+            product.setUnit(organizeSkus.get(0).getUnit());
+            product.setStock(organizeSkus.get(0).getStock());
+            product.setOrganizeSkus(organizeSkus);
+            product.setSkuId(organizeSkus.get(0).getSkuId());
+            /*product.setActStatus(price.getActStatus());
+            product.setPromotions(price.getPromotions());
+            product.setUserIdentity(price.getUserIdentity());
+            product.setSvipProductFlag(price.getSvipProductFlag());
+            product.setSvipPriceTag(price.getSvipPriceTag());*/
+            //设置展示的价格等级
+            product.setPriceGrade(priceUtilService.getPriceGrade(product.getPrice()));
+            //查询商品收藏情况,1未收藏,0未收藏,未收藏过该商品用户是null
+            Integer like = likeMapper.findLike(userId, productId);
+            product.setUserLike(like);
+        }
+        // 设置售罄标记
+        /*Integer flag = priceMapper.getSaleOutFlag(product.getProductId()) > 0 ? 0 : 1;
+        product.setSaleOutFlag(flag);*/
+        // 关联标签库字符串
+        /*if (StringUtils.isNotBlank(product.getRelatedLabels())) {
+            String replaceAll = product.getRelatedLabels().replaceAll("##", ",");
+            product.setRelatedLabels(replaceAll);
+        }*/
+
+        return ResponseJson.success(product);
+    }
+
     /**
      * 再次购买商品列表
      *

+ 19 - 9
src/main/java/com/caimei365/commodity/service/impl/ProcureService.java

@@ -51,6 +51,15 @@ public class ProcureService {
         procureRepository.save(procure);
     }
 
+    public void findList() {
+        //调用dao
+        Query query = new Query();
+        query.addCriteria(Criteria.where("delFlag").is("0"));
+        query.with(Sort.by(Sort.Direction.DESC, "saveTime"));
+        List<ProcurePo> procurePos = mongoTemplate.find(query, ProcurePo.class);
+        System.out.println(procurePos);
+    }
+
     /**
      * 根据id删除
      *
@@ -68,13 +77,14 @@ public class ProcureService {
      */
     public List<ProcurePo> findList(int pageNo, int pageSize) {
         //调用dao
-        Pageable pageable = PageRequest.of(pageNo, pageSize);
+//        Pageable pageable = PageRequest.of(pageNo, pageSize);
         Query query = new Query();
         query.addCriteria(Criteria.where("delFlag").is("0"));
+        query.addCriteria(Criteria.where("createUserId").ne(null));
         query.with(Sort.by(Sort.Direction.DESC, "saveTime"));
-        List<ProcurePo> procurePos = mongoTemplate.find(query.with(pageable), ProcurePo.class);
-//        long count1 = mongoTemplate.count(query, ProcurePo.class);
-//        PageImpl<ProcurePo> procurePos1 = new PageImpl<>(procurePos, pageable, count1);
+        List<ProcurePo> procurePos = mongoTemplate.find(query, ProcurePo.class);
+        /*long count1 = mongoTemplate.count(query, ProcurePo.class);
+        PageImpl<ProcurePo> procurePos1 = new PageImpl<>(procurePos, pageable, count1);*/
         return procurePos;
     }
 
@@ -95,16 +105,16 @@ public class ProcureService {
      * @param userId
      * @return
      */
-    public List<ProcurePo> findInvolvedList(Integer userId) {
+    public List<ProcurePo> findInvolvedList(String userId) {
         Query query = new Query();
         query.addCriteria(Criteria.where("userId").is(userId));
-        query.addCriteria(Criteria.where("createUserId").not().is(userId));
+        query.addCriteria(Criteria.where("createUserId").is(null));
         query.with(Sort.by(Sort.Direction.DESC, "saveTime"));
         query.with(Sort.by(Sort.Direction.DESC, "isAchieve"));
-        List<ProcurePo> procureList = mongoTemplate.find(query, ProcurePo.class);
+        /*List<ProcurePo> procureList = mongoTemplate.find(query, ProcurePo.class);
         procureList.forEach(p -> {
 
-        });
+        });*/
         return mongoTemplate.find(query, ProcurePo.class);
     }
 
@@ -114,7 +124,7 @@ public class ProcureService {
      * @param userId
      * @return
      */
-    public List<ProcurePo> findUserList(Integer userId) {
+    public List<ProcurePo> findUserList(String userId) {
         Query query = new Query();
         query.addCriteria(Criteria.where("createUserId").is(userId));
         query.with(Sort.by(Sort.Direction.DESC, "saveTime"));

+ 106 - 35
src/main/java/com/caimei365/commodity/service/impl/ProcurementServiceImpl.java

@@ -9,6 +9,8 @@ import com.caimei365.commodity.model.vo.PaginationVo;
 import com.caimei365.commodity.model.vo.UserVo;
 import com.caimei365.commodity.service.ProcurementService;
 import com.caimei365.commodity.utils.ImageUtils;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -46,11 +48,13 @@ public class ProcurementServiceImpl implements ProcurementService {
      * @return
      */
     @Override
-    public ResponseJson<List<ProcurementDto>> findList(int pageNo, int pageSize) {
+    public ResponseJson<PageInfo<ProcurementDto>> findList(int pageNo, int pageSize,Integer userId) {
+        PageHelper.startPage(pageNo, pageSize);
         List<ProcurementDto> procurementList = new ArrayList<>();
-        ProcurementDto procurementDto = new ProcurementDto();
+        // 我参与的
+        List<ProcurePo> involvedList = procureService.findInvolvedList(userId.toString());
         // 参与者记录
-        List<AdditionalPo> additionalPos = additionalService.findList();
+        //  List<AdditionalPo> additionalPos = additionalService.findList();
         // 所有集采信息
         List<ProcurePo> list = procureService.findList(pageNo, pageSize);
         // 用户信息获取
@@ -58,10 +62,17 @@ public class ProcurementServiceImpl implements ProcurementService {
         List<UserVo> userInfo = procurementMapper.selUserInfo(userIds);
         if (null != list && list.size() > 0) {
             list.forEach(p -> {
+                ProcurementDto procurementDto = new ProcurementDto();
+                // 参与集采集合
+                List<AdditionalPo> additionalPoList = additionalService.findProcureById(p.getId());
                 procurementDto.setId(p.getId());
                 procurementDto.setUserId(p.getUserId());
                 if (null != userInfo) {
-                    procurementDto.setUserName(userInfo.get(userInfo.indexOf(p.getUserId())).getUserName());
+                    Integer i = Integer.parseInt(p.getUserId());
+                    List<UserVo> collect = userInfo.stream().filter(u -> u.getUserId().equals(i)).collect(Collectors.toList());
+                    if (null != collect && collect.size()>0) {
+                        procurementDto.setUserName(collect.get(0).getUserName());
+                    }
                 }
                 String imageURL = ImageUtils.getImageURL("product", p.getProductImage(), 0, domain);
                 if (StringUtils.isNotBlank(imageURL)) {
@@ -76,12 +87,25 @@ public class ProcurementServiceImpl implements ProcurementService {
                 procurementDto.setNumber(p.getNumber());
                 procurementDto.setIsAchieve(p.getIsAchieve());
                 procurementDto.setDelFlag(p.getDelFlag());
-                Integer count = Collections.frequency(additionalPos, p.getId());
-                procurementDto.setPartNumber(count.toString());
+                // 参与机构数量
+                procurementDto.setPartNumber(additionalPoList.size());
+                // 是否参与集采 0未参与 1参与 2我创建的
+                if (p.getCreateUserId().equals(userId.toString())) {
+                    procurementDto.setIsInvolved(2);
+                } else {
+                    List<String> stringList = additionalPoList.stream().map(a -> a.getAdditionalId()).collect(Collectors.toList());
+                    List<ProcurePo> collect = involvedList.stream().filter(item -> stringList.contains(item.getId())).collect(Collectors.toList());
+                    if (null != collect && collect.size()>0) {
+                        procurementDto.setIsInvolved(1);
+                    } else {
+                        procurementDto.setIsInvolved(0);
+                    }
+                }
                 procurementList.add(procurementDto);
             });
         }
-        return ResponseJson.success(procurementList);
+        PageInfo<ProcurementDto> page = new PageInfo(procurementList);
+        return ResponseJson.success(page);
     }
 
     /**
@@ -166,38 +190,75 @@ public class ProcurementServiceImpl implements ProcurementService {
     @Override
     public ResponseJson<List<ProcurementDto>> myProcurement(Integer userId, Integer procurementType) {
         List<ProcurementDto> procurementList = new ArrayList<>();
-        ProcurementDto procurementDto = new ProcurementDto();
         // 参与者记录
         List<AdditionalPo> additionalPos = additionalService.findList();
+
         List<ProcurePo> list = new ArrayList<>();
         if (0 == procurementType) {
             // 我参与的
-            list = procureService.findInvolvedList(userId);
+            list = procureService.findInvolvedList(userId.toString());
         } else {
             // 我发起的
-            list = procureService.findUserList(userId);
+            list = procureService.findUserList(userId.toString());
         }
         // 设置返回信息
         if (null != list && list.size() > 0) {
             list.forEach(p -> {
-                procurementDto.setId(p.getId());
-                procurementDto.setUserId(p.getUserId());
-                String imageURL = ImageUtils.getImageURL("product", p.getProductImage(), 0, domain);
-                if (StringUtils.isNotBlank(imageURL)) {
-                    procurementDto.setProductImage(imageURL);
-                }
-                procurementDto.setProductName(p.getProductName());
-                procurementDto.setPrice(p.getPrice());
-                procurementDto.setSaveTime(returnFormat.format(p.getSaveTime()));
-                if (StringUtils.isNotBlank(p.getCreateUserId())) {
-                    procurementDto.setCreateUserId(p.getCreateUserId());
+                // 返回填充
+                ProcurementDto procurementDto = new ProcurementDto();
+
+                if (0 == procurementType) {
+                    // 我参与的
+                    procurementDto.setIsInvolved(1);
+                    // 主集采信息
+                    AdditionalPo additionalPo = additionalService.findAdditionalById(p.getId());
+                    // 主集采信息
+                    ProcurePo pro = procureService.findById(additionalPo.getProcureId());
+                    if (!procurementList.stream().map(ProcurementDto::getId).collect(Collectors.toList()).contains(pro.getId())) {
+                        procurementDto.setId(pro.getId());
+                        procurementDto.setUserId(pro.getUserId());
+                        String imageURL = ImageUtils.getImageURL("product", pro.getProductImage(), 0, domain);
+                        if (StringUtils.isNotBlank(imageURL)) {
+                            procurementDto.setProductImage(imageURL);
+                        }
+                        procurementDto.setProductName(pro.getProductName());
+                        procurementDto.setPrice(pro.getPrice());
+                        procurementDto.setSaveTime(returnFormat.format(pro.getSaveTime()));
+                        if (StringUtils.isNotBlank(pro.getCreateUserId())) {
+                            procurementDto.setCreateUserId(pro.getCreateUserId());
+                        }
+                        procurementDto.setNumber(pro.getNumber());
+                        procurementDto.setIsAchieve(pro.getIsAchieve());
+                        procurementDto.setDelFlag(pro.getDelFlag());
+                        Integer count = Collections.frequency(additionalPos, pro.getId());
+
+                        procurementDto.setPartNumber(count);
+                        procurementList.add(procurementDto);
+                    }
+                } else {
+                    // 我发起的
+                    procurementDto.setIsInvolved(2);
+                    procurementDto.setId(p.getId());
+                    procurementDto.setUserId(p.getUserId());
+                    String imageURL = ImageUtils.getImageURL("product", p.getProductImage(), 0, domain);
+                    if (StringUtils.isNotBlank(imageURL)) {
+                        procurementDto.setProductImage(imageURL);
+                    }
+                    procurementDto.setProductName(p.getProductName());
+                    procurementDto.setPrice(p.getPrice());
+                    procurementDto.setSaveTime(returnFormat.format(p.getSaveTime()));
+                    if (StringUtils.isNotBlank(p.getCreateUserId())) {
+                        procurementDto.setCreateUserId(p.getCreateUserId());
+                    }
+                    procurementDto.setNumber(p.getNumber());
+                    procurementDto.setIsAchieve(p.getIsAchieve());
+                    procurementDto.setDelFlag(p.getDelFlag());
+                    Integer count = Collections.frequency(additionalPos, p.getId());
+
+                    procurementDto.setPartNumber(count);
+                    procurementList.add(procurementDto);
                 }
-                procurementDto.setNumber(p.getNumber());
-                procurementDto.setIsAchieve(p.getIsAchieve());
-                procurementDto.setDelFlag(p.getDelFlag());
-                Integer count = Collections.frequency(additionalPos, p.getId());
-                procurementDto.setPartNumber(count.toString());
-                procurementList.add(procurementDto);
+
             });
         }
         // 用户信息获取
@@ -206,7 +267,12 @@ public class ProcurementServiceImpl implements ProcurementService {
         // 用户信息赋予
         if (null != userInfo) {
             procurementList.forEach(p -> {
-                p.setUserName(userInfo.get(userInfo.indexOf(p.getUserId())).getUserName());
+                Integer i = Integer.parseInt(p.getUserId());
+                List<UserVo> collect = userInfo.stream().filter(u -> u.getUserId().equals(i)).collect(Collectors.toList());
+                if (null != collect && collect.size() > 0) {
+                    p.setUserName(collect.get(0).getUserName());
+                }
+//                p.setUserName(userInfo.get(userInfo.indexOf(p.getUserId())).getUserName());
             });
         }
         return ResponseJson.success(procurementList);
@@ -226,10 +292,12 @@ public class ProcurementServiceImpl implements ProcurementService {
         List<ProcurePo> involvedList = new ArrayList<>();
         if (0 == procurementType) {
             // 我参与的集采修改回显
-            involvedList = procureService.findInvolvedList(userId);
+            involvedList = procureService.findInvolvedList(userId.toString());
+            procurementDto.setIsInvolved(1);
         } else {
             // 我发起的集采修改回显
-            involvedList = procureService.findUserList(userId);
+            involvedList = procureService.findUserList(userId.toString());
+            procurementDto.setIsInvolved(2);
         }
         // 检索匹配
         ProcurePo procurePo = involvedList.get(involvedList.indexOf(id));
@@ -265,14 +333,15 @@ public class ProcurementServiceImpl implements ProcurementService {
      * @return
      */
     @Override
-    public ResponseJson saveProcurement(ProcurementDto procurementDto) {
+    public ResponseJson saveProcurement(ProcurementDto procurementDto) throws Exception {
         ProcurePo procurePo = new ProcurePo();
         // 初始化数据
         procurePo.setUserId(procurementDto.getUserId());
         procurePo.setProductImage(procurementDto.getProductImage());
         procurePo.setProductName(procurementDto.getProductName());
         procurePo.setPrice(procurementDto.getPrice());
-        procurePo.setSaveTime(saveFormat.format(new Date()));
+        String time = saveFormat.format(new Date());
+        procurePo.setSaveTime(saveFormat.parse(time).getTime());
         procurePo.setNumber(procurementDto.getNumber());
         if (StringUtils.isNotBlank(procurementDto.getId())) {
             // 修改集采信息
@@ -284,6 +353,7 @@ public class ProcurementServiceImpl implements ProcurementService {
         } else {
             // 发布集采需求
             procurePo.setCreateUserId(procurementDto.getUserId());
+            procurePo.setClubName(procurementDto.getUserName());
             procurePo.setIsAchieve("0");
             procurePo.setDelFlag("0");
             procureService.save(procurePo);
@@ -298,7 +368,7 @@ public class ProcurementServiceImpl implements ProcurementService {
      * @return
      */
     @Override
-    public ResponseJson participateProcurement(ProcurementDto procurementDto) {
+    public ResponseJson participateProcurement(ProcurementDto procurementDto) throws Exception {
         ProcurePo procurePo = new ProcurePo();
 
         // 参与集采需求
@@ -306,9 +376,10 @@ public class ProcurementServiceImpl implements ProcurementService {
         procurePo.setProductImage(procurementDto.getProductImage());
         procurePo.setProductName(procurementDto.getProductName());
         procurePo.setPrice(procurementDto.getPrice());
-        procurePo.setSaveTime(saveFormat.format(new Date()));
+        String time = saveFormat.format(new Date());
+        procurePo.setSaveTime(Long.valueOf(saveFormat.parse(time).getTime()));
         procurePo.setNumber(procurementDto.getNumber());
-        procurePo.setCreateUserId(procurementDto.getUserId());
+//        procurePo.setCreateUserId(procurementDto.getUserId());
         procurePo.setIsAchieve("0");
         procurePo.setDelFlag("0");
         procureService.save(procurePo);

+ 95 - 12
src/main/resources/mapper/MallOrganizeMapper.xml

@@ -13,7 +13,7 @@
         </where>
     </select>
     <select id="getMallBannerImages" resultType="com.caimei365.commodity.model.vo.MallImageLinkVo">
-        SELECT id, organizeID as oranizeId, bannerName, bannerImage, sort, jumpType, jumpProductId, jumpActiveId
+        SELECT id, organizeID as organizeId, bannerName, bannerImage, sort, jumpType, jumpProductId, jumpActiveId
         FROM cm_mall_banner_image
         <where>
             enabledStatus = 1
@@ -31,6 +31,43 @@
                 AND organizeId = #{organizeId}
             </if>
         </where>
+        limit 1
+    </select>
+    <select id="getFloorInfo" resultType="com.caimei365.commodity.model.vo.MallFloorVo">
+        SELECT id, organizeId, topic, sort, enabledStatus, ADDTIME
+        FROM cm_mall_floor
+        <where>
+         enabledStatus = 1
+            <if test="organizeId != null and organizeId != ''">
+                AND organizeId = #{organizeId}
+            </if>
+        </where>
+    </select>
+    <select id="getFloorProducts" resultType="com.caimei365.commodity.model.vo.MallOrganizeProductVo">
+        SELECT
+        cmfp.floorId,
+        cmop.productID AS productId,
+        (select price from cm_mall_product_sku where productID=p.productID order by price asc limit 1) as price,
+        cmop.normalPrice,
+        cmop.costPrice,
+        cmop.ladderPriceFlag,
+        cmop.retailPrice,
+        cmop.minBuyNumber,
+        cmop.validFlag,
+        p.name,
+        p.mainImage
+        FROM cm_mall_floor_product cmfp
+        LEFT JOIN cm_mall_organize_products cmop ON cmfp.productId = cmop.id
+        LEFT JOIN product p ON p.productId = cmop.productId
+        <where>
+            cmop.delFlag = 0 AND cmop.validFlag = 1
+            <if test="floorIds.size() > 0">
+                and cmfp.floorId in
+                <foreach collection="floorIds" item="floorId" open="(" separator="," close=")">
+                    #{floorId}
+                </foreach>
+            </if>
+        </where>
     </select>
     <select id="getMallActive" resultType="com.caimei365.commodity.model.vo.MallActiveVo">
         SELECT cma.id, cma.organizeId, cma.topic, cma.enabledStatus, cma.activeType
@@ -54,12 +91,15 @@
         p.name,
         p.mainImage
         FROM cm_mall_active_product cmap
-        LEFT JOIN cm_mall_organize_products cmop ON cmap.id = cmop.productID
+        LEFT JOIN cm_mall_organize_products cmop ON cmap.productId = cmop.productID
         LEFT JOIN product p ON p.productID = cmap.productId
         <where>
             cmop.delFlag = 0 AND cmop.validFlag = 1
-            <if test="activeId != null and activeId != ''">
-                AND cmap.activeId = #{activeId}
+            <if test="activeIds.size() > 0">
+                and cmap.activeId in
+                <foreach collection="activeIds" item="activeId" open="(" separator="," close=")">
+                    #{activeId}
+                </foreach>
             </if>
         </where>
         limit 6
@@ -99,15 +139,17 @@
         </where>
     </select>
     <select id="getActiveImageById" resultType="com.caimei365.commodity.model.vo.MallActiveImageVo">
-        select id, activeId, image
+        select id, activeId, topic, image
         from cm_mall_active_image
         where activeId = #{activeId}
     </select>
     <select id="getMenuActiveList" resultType="com.caimei365.commodity.model.vo.MallOrganizeProductVo">
         SELECT
+            cmap.imageId as imageId,
             cmop.productID as productId,
             cmop.normalPrice,
             cmop.costPrice,
+            (select price from cm_mall_product_sku where productID=p.productID order by price asc limit 1) as price,
             cmop.ladderPriceFlag,
             cmop.retailPrice,
             cmop.minBuyNumber,
@@ -118,25 +160,66 @@
          LEFT JOIN cm_mall_active_product cmap ON cmap.activeId = cma.id
          LEFT JOIN cm_mall_organize_products cmop ON cmop.id = cmap.productId
          LEFT JOIN product p ON p.productId = cmop.productId
-        where cma.organizeId = #{organizeId} and cma.id = #{activeId}
+        where  cma.id = #{activeId}
           and cma.enabledStatus = 1 and cmop.delFlag = 0
     </select>
+    <select id="getImageProduct" resultType="com.caimei365.commodity.model.vo.MallOrganizeProductVo">
+        SELECT
+            cmap.imageId AS imageId,
+            (SELECT topic FROM cm_mall_active_image WHERE id = #{imageId} limit 1) AS topic,
+            cmop.productID AS productId,
+            cmop.normalPrice,
+            cmop.costPrice,
+            (SELECT price FROM cm_mall_product_sku WHERE productID=p.productID ORDER BY price ASC LIMIT 1) AS price,
+            cmop.ladderPriceFlag,
+            cmop.retailPrice,
+            cmop.minBuyNumber,
+            cmop.validFlag,
+            p.name,
+            p.mainImage
+        FROM cm_mall_active_product cmap
+                 LEFT JOIN cm_mall_organize_products cmop ON cmop.productId = cmap.productId
+                 LEFT JOIN product p ON cmop.productId = p.productId
+            where cmap.imageId = #{imageId}
+    </select>
     <select id="getOrganizeProducts" resultType="com.caimei365.commodity.model.vo.MallOrganizeProductVo">
+        SELECT
+            cmfp.floorId,
+            cmop.productID AS productId,
+            cmop.normalPrice,
+            cmop.costPrice,
+            (SELECT price FROM cm_mall_product_sku WHERE productID=p.productID ORDER BY price ASC LIMIT 1) AS price,
+            cmop.ladderPriceFlag,
+            cmop.retailPrice,
+            cmop.minBuyNumber,
+            cmop.validFlag,
+            p.name,
+            p.mainImage,
+            cmop.organizeId
+        FROM cm_mall_organize_products cmop
+                 LEFT JOIN product p ON p.productId = cmop.productId
+                 LEFT JOIN cm_mall_floor_product cmfp ON cmfp.productId = cmop.id
+        WHERE cmfp.floorId = #{floorId}
+    </select>
+    <select id="getThemeInfo" resultType="com.caimei365.commodity.model.vo.MallThemeVo">
+        SELECT id, organizeId, topic, image, enabledStatus, jumpType, jumpProductId, jumpActiveId, ADDTIME
+        FROM cm_mall_theme
+        WHERE enabledStatus = 1
+    </select>
+    <select id="getThemeProduct" resultType="com.caimei365.commodity.model.vo.MallOrganizeProductVo">
         SELECT
             cmop.productID as productId,
             cmop.normalPrice,
             cmop.costPrice,
+            (select price from cm_mall_product_sku where productID=p.productID order by price asc limit 1) as price,
             cmop.ladderPriceFlag,
             cmop.retailPrice,
             cmop.minBuyNumber,
             cmop.validFlag,
             p.name,
             p.mainImage
-        FROM cm_mall_organize_products cmop
-         LEFT JOIN cm_mall_active_product cmap ON cmap.productId = cmop.id
-         LEFT JOIN product p ON p.productId = cmap.productId
-         LEFT JOIN cm_mall_active cma ON cma.id = cmap.activeId
-        WHERE cma.id = #{activeId} AND cma.organizeId = #{organizeId}
-        limit 20
+        FROM  cm_mall_organize_products cmop
+                 LEFT JOIN product p ON p.productId = cmop.productID
+        WHERE cmop.organizeId = #{organizeId} and cmop.id = #{id} and cmop.delFlag = 0
     </select>
 </mapper>

+ 42 - 0
src/main/resources/mapper/MallProductMapper.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.caimei365.commodity.mapper.MallProductMapper">
+    <select id="getOrganizeProductDetails" resultType="com.caimei365.commodity.model.vo.MallOrganizeProductVo">
+        SELECT p.productID                                                                                     AS productId,
+               p.shopID                                                                                        AS shopId,
+               cmop.normalPrice AS normalPrice,
+               (select price from cm_mall_product_sku where productID=p.productID order by price asc limit 1) as price,
+               IFNULL((SELECT stock FROM cm_sku WHERE productId = #{productId} ORDER BY price ASC LIMIT 1), 0) AS stock,
+               cmop.minBuyNumber AS minBuyNumber,
+               (SELECT unit FROM cm_sku WHERE productId = #{productId} ORDER BY price ASC LIMIT 1)             AS unit,
+               cmop.validFlag,
+               p.name,
+               s.name as shopName
+        FROM cm_mall_organize_products cmop
+                 LEFT JOIN product p ON p.productId = cmop.productId
+                 LEFT JOIN shop s ON s.shopId = p.shopId
+        WHERE p.productID = #{productId}
+    </select>
+    <select id="getMallSkus" resultType="com.caimei365.commodity.model.vo.MallProductSkuVo">
+        SELECT
+            cmps.id,
+            cmps.productId,
+            cmps.mallProductId,
+            cmps.id,
+            cmps.skuId,
+            cmps.minBuyNumber,
+            cmps.price,
+            cs.unit,
+            cs.price as clubPrice,
+            cs.costCheckFlag as costCheckFlag,
+            cs.costPrice as costPrice,
+            cs.costProportional as costProportional,
+            cs.minBuyNumber AS cmMinBuyNumber,
+            cmps.organizePercent,
+            cmps.shopPercent,
+            cmps.cmPercent
+        FROM cm_mall_product_sku cmps
+                 LEFT JOIN cm_sku cs ON cmps.skuId = cs.skuId
+        where cmps.mallProductId = #{mallProductId}
+    </select>
+</mapper>

+ 0 - 60
src/main/resources/mapper/PageMapper.xml

@@ -299,66 +299,6 @@
                  left join shop s on s.shopId = p.shopId
         where p.productID = #{productId}
     </select>
-    <select id="getOrganizeProductDetails" resultType="com.caimei365.commodity.model.vo.ProductDetailVo">
-        SELECT p.productID                                                                                     AS productId,
-               p.shopID                                                                                        AS shopId,
-               cmop.normalPrice AS normalPrice,
-               IFNULL((SELECT stock FROM cm_sku WHERE productId = 4857 ORDER BY price ASC LIMIT 1), 0) AS stock,
-               cmop.minBuyNumber AS minBuyNumber,
-               (SELECT unit FROM cm_sku WHERE productId = 4857 ORDER BY price ASC LIMIT 1)             AS unit,
-               p.name,
-               p.aliasName,
-               p.commodityType,
-               p.mainImage,
-               p.invoiceType,
-               p.bigTypeID                                                                                     AS bigTypeId,
-               p.smallTypeID                                                                                   AS smallTypeId,
-               p.tinyTypeID                                                                                    AS tinyTypeId,
-               p.searchKey,
-               p.visibility,
-               p.commodityDetailsFlag,
-               p.brandID                                                                                       AS brandId,
-               p.productType,
-               p.tags,
-               p.includedTax,
-               p.productCategory,
-               p.serviceNumber,
-               p.taxPoint,
-               p.supplierTaxPoint,
-               p.priceFlag,
-               p.actFlag,
-               p.addTime,
-               p.hasSkuFlag,
-               p.sellNumber,
-               p.sortIndex,
-               p.featuredFlag,
-               p.recommendType,
-               p.machineType,
-               p.productCode,
-               p.updateTime,
-               cmop.validFlag,
-               p.searchKey,
-               p.allAreaFlag,
-               p.step,
-               p.provinceIds,
-               p.qualificationImg,
-               p.trainingMethod,
-               p.trainingType,
-               p.trainingFee,
-               p.productRemarks,
-               p.productDetail                                                                                 AS productDetailChose,
-               s.shopType                                                                                      AS shopType,
-               p.qualificationNo                                                                               AS qualificationNo,
-               p.productName                                                                                   AS productName,
-               p.qualificationTime                                                                             AS qualificationTime,
-               p.qualificationLink                                                                             AS qualificationLink,
-               p.returnGoodsStutas,
-               P.relatedLabels
-        FROM cm_mall_organize_products cmop
-                 LEFT JOIN product p ON p.productId = cmop.productId
-                 LEFT JOIN shop s ON s.shopId = p.shopId
-        WHERE p.productID = #{productId} and cmop.organizeID = #{organizeId}
-    </select>
     <select id="getBuyAgainProducts" resultType="com.caimei365.commodity.model.vo.ProductItemVo">
         select p.productID                 as productId,
                p.actStatus,

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

@@ -212,6 +212,27 @@
         where cs.productId = #{productId}
         ORDER BY cs.price ASC
     </select>
+    <select id="findOrganizeSkus" resultType="com.caimei365.commodity.model.vo.MallProductSkuVo">
+        SELECT cmps.id,
+               cs.skuId,
+               cs.price,
+               cs.normalPrice,
+               cs.costPrice,
+               IFNULL(cs.ladderPriceFlag, 0) AS ladderPriceFlag,
+               cs.costCheckFlag,
+               cs.costProportional,
+               IFNULL(cs.stock, 0) AS stock,
+               cs.unit,
+               cmps.minBuyNumber,
+               cmps.price,
+               cmps.organizePercent,
+               cmps.shopPercent,
+               cmps.cmPercent
+        FROM cm_sku cs
+                 LEFT JOIN cm_mall_product_sku cmps ON cs.skuId = cmps.skuId
+        WHERE cmps.productId = #{productId}
+        ORDER BY cs.price ASC
+    </select>
     <select id="findLowPrice" resultType="com.caimei365.commodity.model.vo.ProductItemVo">
         select plp.buyPrice as price, cs.unit as unit, plp.buyNum as minBuyNumber, cs.skuId as skuId, cs.stock
         from product_ladder_price plp

+ 28 - 18
src/test/java/com/caimei365/commodity/ProductApplicationTests.java

@@ -1,18 +1,28 @@
-//package com.caimei365.commodity;
-//
-//import org.junit.jupiter.api.Test;
-//import org.springframework.boot.test.context.SpringBootTest;
-//
-//@SpringBootTest
-//class ProductApplicationTests {
-//
-//    @Test
-//    void contextLoads() {
-////        String[] split = new String[]{"wwe","dsfsdf","","","dsfds"};
-////        Object[] objects = Arrays.stream(split).filter(StringUtils::isNotEmpty).toArray();
-////        System.out.println(Arrays.toString(objects));
-//
-//    }
-//
-//
-//}
+package com.caimei365.commodity;
+
+import com.caimei365.commodity.model.po.ProcurePo;
+import com.caimei365.commodity.service.impl.ProcureService;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@SpringBootTest
+class ProductApplicationTests {
+    // 集采 | 接龙参与信息
+    @Autowired
+    ProcureService procureService;
+    @Test
+    void contextLoads() {
+        List<ProcurePo> list = procureService.findInvolvedList("111224");
+        System.out.println(list);
+//        String[] split = new String[]{"wwe","dsfsdf","","","dsfds"};
+//        Object[] objects = Arrays.stream(split).filter(StringUtils::isNotEmpty).toArray();
+//        System.out.println(Arrays.toString(objects));
+
+    }
+
+
+}