Browse Source

服务商/协销商品列表控制

zhijiezhao 4 months ago
parent
commit
63fd4ebc33

+ 3 - 2
src/main/java/com/caimei365/commodity/components/SearchOpenService.java

@@ -240,8 +240,9 @@ public class SearchOpenService {
         // p_valid:0逻辑删除 1待审核 2已上架 3已下架 8审核未通过 9已隐身 10已冻结
         // p_visibility:3:所有人可见,2:普通机构可见,1:会员机构可见,4:仅医美机构可见
         if (identity == 1) {
-            // 协销 | 综合供应商
-            thisFilter += "(p_valid=2 OR p_valid=3 OR p_valid=9) AND p_type=1";
+            // 协销 | 综合供应商   当前版本协销为服务商,商品可见权限为普通上架商品
+//            thisFilter += "(p_valid=2 OR p_valid=3 OR p_valid=9) AND p_type=1";
+            thisFilter += "p_valid=2 AND p_type=1";
         } else if (identity == 5) {
             // 医美机构
             thisFilter += "p_valid=2 AND p_type=1";

+ 4 - 3
src/main/java/com/caimei365/commodity/controller/SearchProductApi.java

@@ -63,6 +63,7 @@ public class SearchProductApi {
     @ApiImplicitParams({
             @ApiImplicitParam(required = false, name = "keyword", value = "搜索关键字"),
             @ApiImplicitParam(required = false, name = "brandIds", value = "品牌id字符串,逗号隔开"),
+            @ApiImplicitParam(required = false, name = "serviceProviderId", value = "协销Id"),
             @ApiImplicitParam(required = false, name = "identity", value = "用户身份: 0个人,1协销,2会员机构,3供应商,4普通机构,5医美机构"),
             @ApiImplicitParam(required = false, name = "newFlag", value = "查询新品标记,默认0,新品1"),
             @ApiImplicitParam(required = false, name = "promotionFlag", value = "查询促销标记,默认0,促销1"),
@@ -73,7 +74,7 @@ public class SearchProductApi {
     })
     @IpSave(saveName = "搜索商品", saveParams = true)
     @GetMapping("/product")
-    public ResponseJson<String> queryProductByKeyword(String keyword, String brandIds,
+    public ResponseJson<String> queryProductByKeyword(String keyword, String brandIds, Integer serviceProviderId,
                                                       @RequestParam(value = "identity", defaultValue = "0") Integer identity,
                                                       @RequestParam(value = "newFlag", defaultValue = "0") Integer newFlag,
                                                       @RequestParam(value = "promotionFlag", defaultValue = "0") Integer promotionFlag,
@@ -82,7 +83,7 @@ public class SearchProductApi {
                                                       @RequestParam(value = "productFlag", defaultValue = "1") int productFlag,
                                                       @RequestParam(value = "linkageFlag", defaultValue = "0") int linkageFlag,
                                                       String sortField, Integer sortType) {
-        return searchProductService.queryProductByKeyword(keyword, brandIds, identity, newFlag, promotionFlag, pageNum, pageSize, sortField, sortType);
+        return searchProductService.queryProductByKeyword(keyword, brandIds, serviceProviderId, identity, newFlag, promotionFlag, pageNum, pageSize, sortField, sortType);
     }
 
     /**
@@ -232,7 +233,7 @@ public class SearchProductApi {
      */
     @GetMapping("/con/keyword")
     public ResponseJson conKeyword(String keyword) {
-        return ResponseJson.success(searchProductService.conKeyword( keyword));
+        return ResponseJson.success(searchProductService.conKeyword(keyword));
     }
 
     /**

+ 2 - 0
src/main/java/com/caimei365/commodity/mapper/SearchMapper.java

@@ -237,4 +237,6 @@ public interface SearchMapper {
     int countSalesByDate(Integer productId, Date date);
 
     List<Integer> findPromotions();
+
+    String findServiceProductIds(Integer serviceProviderId);
 }

+ 1 - 1
src/main/java/com/caimei365/commodity/service/SearchProductService.java

@@ -27,7 +27,7 @@ public interface SearchProductService {
      * @param sortType  升降序0/1
      * @return JsonStr(list)
      */
-    ResponseJson<String> queryProductByKeyword(String keyword, String brandIds, Integer identity, Integer newFlag, Integer promotionFlag, int pageNum, int pageSize, String sortField, Integer sortType);
+    ResponseJson<String> queryProductByKeyword(String keyword, String brandIds, Integer serviceProviderId, Integer identity, Integer newFlag, Integer promotionFlag, int pageNum, int pageSize, String sortField, Integer sortType);
 
     /**
      * 根据分类Id搜索商品

+ 11 - 2
src/main/java/com/caimei365/commodity/service/impl/SearchProductServiceImpl.java

@@ -64,6 +64,7 @@ public class SearchProductServiceImpl implements SearchProductService {
     private RedisService redisService;
     @Resource
     private CmPraiseStatisticsMapper cmPraiseStatisticsMapper;
+
     /**
      * 根据关键词搜索商品
      *
@@ -78,7 +79,7 @@ public class SearchProductServiceImpl implements SearchProductService {
      * @return JsonStr(list)
      */
     @Override
-    public ResponseJson<String> queryProductByKeyword(String keyword, String brandIds, Integer identity, Integer newFlag, Integer promotionFlag,
+    public ResponseJson<String> queryProductByKeyword(String keyword, String brandIds, Integer serviceProviderId, Integer identity, Integer newFlag, Integer promotionFlag,
                                                       int pageNum, int pageSize, String sortField, Integer sortType) {
         String queryStr = "product:'" + keyword + "'";
         if (StringUtils.isEmpty(keyword)) {
@@ -91,6 +92,14 @@ public class SearchProductServiceImpl implements SearchProductService {
         if (promotionFlag == 1) {
             filterList.add("p_promotions_id > 0");
         }
+        if (null != serviceProviderId && serviceProviderId > 0) {
+            /** sort使用in查询服务商可展示商品
+             * in(p_id, "8136|8135|8134")
+             * 用法参考文档https://help.aliyun.com/zh/open-search/industry-algorithm-edition/in-and-notin?spm=a2c4g.11186623.0.0.6fe44bdfKhFWxG
+             */
+            String productIds = searchMapper.findServiceProductIds(serviceProviderId);
+            filterList.add("in(p_id,\"" + productIds + "\")");
+        }
         if (!StringUtils.isEmpty(brandIds) && !"null".equals(brandIds)) {
             StringBuffer brandBuilder = new StringBuffer();
             List<String> brandList = new ArrayList<>();
@@ -429,7 +438,7 @@ public class SearchProductServiceImpl implements SearchProductService {
         if (productList.size() > 0) {
             return ResponseJson.success(pageObj.toString());
         } else {
-            return ResponseJson.error( 0,"未查询到文档记录(数据库)", null);
+            return ResponseJson.error(0, "未查询到文档记录(数据库)", null);
         }
     }
 

+ 51 - 16
src/main/resources/mapper/SearchMapper.xml

@@ -28,8 +28,35 @@
         ifnull(p.newvalidflag,0) as p_newvalidflag,
         p.productType as p_product_type,
         p.relatedLabels as p_labels,
-        (select unit from cm_sku where productID=#{productId} order by price asc LIMIT 1) as p_unit,
-        (select price from cm_sku where productID=#{productId} order by price asc LIMIT 1) as p_price
+        (select unit from cm_sku where productID=
+        #{productId}
+        order
+        by
+        price
+        asc
+        LIMIT
+        1
+        )
+        as
+        p_unit,
+        (
+        select
+        price
+        from
+        cm_sku
+        where
+        productID
+        =
+        #{productId}
+        order
+        by
+        price
+        asc
+        LIMIT
+        1
+        )
+        as
+        p_price
     </sql>
     <sql id="Product_Joins">
         left join tinytype as t on p.tinyTypeID = t.tinyTypeID
@@ -50,21 +77,21 @@
     <select id="findProductCount" resultType="java.lang.Integer">
         select count(*)
         from product p
-        left join cm_organize_product_info copi on p.productID = copi.productId
+                 left join cm_organize_product_info copi on p.productID = copi.productId
         where validFlag in (2, 3, 9)
           and productCategory = 1
     </select>
     <select id="findProductInvalidCount" resultType="java.lang.Integer">
         select count(*)
         from product p
-        left join cm_organize_product_info copi on p.productID = copi.productId
+                 left join cm_organize_product_info copi on p.productID = copi.productId
         where validFlag in (2, 3, 9)
            or productCategory != 1
     </select>
     <select id="findProductInvalidIds" resultType="java.lang.Integer">
         select p.productID
         from product p
-        left join cm_organize_product_info copi on p.productID = copi.productId
+                 left join cm_organize_product_info copi on p.productID = copi.productId
         where validFlag in (2, 3, 9)
            or productCategory != 1
     </select>
@@ -105,15 +132,15 @@
         select count(*)
         from shop
         where shopType = 1
-        and (status not in (90, 9)
-           or shopID = 1252)
+          and (status not in (90, 9)
+            or shopID = 1252)
     </select>
     <select id="findSupplierInvalidIds" resultType="java.lang.Integer">
         select shopID
         from shop
-        where  shopType = 1
-        and (status not in (90, 9)
-           or shopID = 1252)
+        where shopType = 1
+          and (status not in (90, 9)
+            or shopID = 1252)
     </select>
     <select id="searchSupplierList" resultType="com.caimei365.commodity.model.search.SupplierDO">
         select
@@ -129,7 +156,7 @@
         <include refid="Search_Supplier_List"/>
         from shop as s
         <include refid="Supplier_Joins"/>
-        where  shopType = 1
+        where shopType = 1
         and (status = 90 or status = 9)
         and shopID != 1252
         and s.shopID = #{shopId}
@@ -446,7 +473,7 @@
                 order by a.pubdate desc
             </if>
             <if test="sortType != 1">
-                order by  (IFNULL(c.pv, 0) +IFNULL(c.num, 0) + IFNULL(a.basePv, 0) + IFNULL(a.basePraise, 0))  desc
+                order by (IFNULL(c.pv, 0) +IFNULL(c.num, 0) + IFNULL(a.basePv, 0) + IFNULL(a.basePraise, 0)) desc
             </if>
         </if>
 
@@ -523,10 +550,12 @@
         DELETE
         FROM user_search_history
         WHERE userId = #{userId}
-          AND id NOT IN (
-            SELECT temp.id
-            FROM (SELECT id FROM user_search_history WHERE userId = #{userId} ORDER BY searchDate DESC LIMIT 10) AS temp
-        )
+          AND id NOT IN (SELECT temp.id
+                         FROM (SELECT id
+                               FROM user_search_history
+                               WHERE userId = #{userId}
+                               ORDER BY searchDate DESC
+                               LIMIT 10) AS temp)
     </delete>
     <delete id="deleteAllSearchHistory">
         DELETE
@@ -585,4 +614,10 @@
         WHERE (cp.status = 1 OR (cp.status = 2 AND cp.endTime > NOW()))
           AND cp.delFlag = 0
     </select>
+    <select id="findServiceProductIds" resultType="java.lang.String">
+        SELECT GROUP_CONCAT(cpp.productId SEPARATOR '|') AS ps
+        FROM cm_provider_product cpp
+        LEFT JOIN serviceprovider sp ON cpp.providerId = sp.providerId
+        WHERE sp.serviceProviderId = #{serviceProviderId}
+    </select>
 </mapper>