Explorar o código

服务商可见商品控制

zhijiezhao hai 4 meses
pai
achega
2d291c5c09

+ 51 - 0
src/main/java/com/caimei365/manager/controller/caimei/providers/ProvidersApi.java

@@ -4,6 +4,7 @@ import com.caimei365.manager.FastDFS.FastDFSClient;
 import com.caimei365.manager.entity.PaginationVo;
 import com.caimei365.manager.entity.ResponseJson;
 import com.caimei365.manager.entity.caimei.CmRelatedImage;
+import com.caimei365.manager.entity.caimei.product.Product;
 import com.caimei365.manager.entity.caimei.providers.CmProviders;
 import com.caimei365.manager.entity.caimei.providers.CmProvidersContract;
 import com.caimei365.manager.service.caimei.providers.CmProvidersContractService;
@@ -37,6 +38,56 @@ public class ProvidersApi {
     @Resource
     private CmProvidersContractService cmProvidersContractService;
 
+    /**
+     * 添加商品列表
+     *
+     * @param shopName
+     * @param productName
+     * @param productId
+     * @param shopId
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @GetMapping("/product/list")
+    public ResponseJson<PaginationVo<Product>> providersProductList(Integer providerId,
+                                                                    String shopName,
+                                                                    String productName,
+                                                                    Integer productId,
+                                                                    Integer shopId,
+                                                                    @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                    @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        return cmProvidersService.getProviderProducts(providerId,shopName, productName, productId, shopId, pageNum, pageSize);
+    }
+
+    /**
+     * 服务商商品列表
+     *
+     * @param productName
+     * @param productId
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @GetMapping("/products")
+    public ResponseJson<PaginationVo<Product>> providersProducts(@NotNull(message = "服务商Id不能为空") Integer providerId,
+                                                                 String productName,
+                                                                 Integer productId,
+                                                                 @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                 @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        return cmProvidersService.getProviderProductList(providerId, productName, productId, pageNum, pageSize);
+    }
+
+    @GetMapping("/add/products")
+    public ResponseJson addProvidersProducts(Integer providerId, String productIds) {
+        return cmProvidersService.addProvidersProducts(providerId, productIds);
+    }
+
+    @GetMapping("/del/products")
+    public ResponseJson delProvidersProducts(Integer providerId, Integer productId) {
+        return cmProvidersService.delProvidersProducts(providerId, productId);
+    }
+
     @GetMapping("/list")
     public ResponseJson providersList(String name,
                                       Integer serviceLevel,

+ 11 - 2
src/main/java/com/caimei365/manager/dao/providers/CmProvidersMapper.java

@@ -2,6 +2,7 @@ package com.caimei365.manager.dao.providers;
 
 import java.util.List;
 
+import com.caimei365.manager.entity.caimei.product.Product;
 import com.caimei365.manager.entity.caimei.providers.CmProviders;
 import com.caimei365.manager.entity.po.UploadFilePo;
 import org.apache.ibatis.annotations.Mapper;
@@ -14,8 +15,7 @@ import org.apache.ibatis.annotations.Param;
  * @date 2023-12-12
  */
 @Mapper
-public interface CmProvidersMapper
-{
+public interface CmProvidersMapper {
     /**
      * 通过对象查询列表
      *
@@ -88,6 +88,7 @@ public interface CmProvidersMapper
      * @return 结果
      */
     int delCmProviders(CmProviders cmProviders);
+
     /**
      * 批量删除
      *
@@ -96,4 +97,12 @@ public interface CmProvidersMapper
      */
     List<UploadFilePo> getProvidersUploadFileList(@Param("ids") String ids, @Param("type") Integer type);
 
+    List<Product> getProductList(@Param("providerId") Integer providerId, @Param("shopName") String shopName, @Param("productName") String productName,
+                                 @Param("productId") Integer productId, @Param("shopId") Integer shopId);
+
+    void addProviderProduct(@Param("providerId") Integer providerId, @Param("productIds") List<String> productIds);
+
+    List<Product> getProviderProductList(@Param("providerId") Integer providerId, @Param("productName") String productName, @Param("productId") Integer productId);
+
+    void delProviderProduct(@Param("providerId") Integer providerId, @Param("productId") Integer productId);
 }

+ 11 - 1
src/main/java/com/caimei365/manager/service/caimei/providers/CmProvidersService.java

@@ -1,5 +1,8 @@
 package com.caimei365.manager.service.caimei.providers;
 
+import com.caimei365.manager.entity.PaginationVo;
+import com.caimei365.manager.entity.ResponseJson;
+import com.caimei365.manager.entity.caimei.product.Product;
 import com.caimei365.manager.entity.caimei.providers.CmProviders;
 
 import javax.servlet.http.HttpServletRequest;
@@ -55,11 +58,18 @@ public interface CmProvidersService {
     int updateCmProviders(CmProviders cmProviders);
 
     /**
-     *下載圖片
+     * 下載圖片
      */
     void downloadImage(String ids, Integer type, HttpServletRequest request, HttpServletResponse response) throws Exception;
 
 
+    ResponseJson<PaginationVo<Product>> getProviderProducts(Integer providerId,String shopName, String productName, Integer productId, Integer shopId, int pageNum, int pageSize);
+
+    ResponseJson addProvidersProducts(Integer providerId, String productIds);
+
+    ResponseJson<PaginationVo<Product>> getProviderProductList(Integer providerId, String productName, Integer productId, int pageNum, int pageSize);
+
+    ResponseJson delProvidersProducts(Integer providerId, Integer productId);
 }
 
 

+ 56 - 1
src/main/java/com/caimei365/manager/service/caimei/providers/impl/CmProvidersServiceImpl.java

@@ -1,23 +1,31 @@
 package com.caimei365.manager.service.caimei.providers.impl;
 
 import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
+import com.caimei.utils.AppUtils;
+import com.caimei.utils.StringUtil;
 import com.caimei365.manager.FastDFS.FastDFSClient;
 import com.caimei365.manager.config.utils.DateUtil;
 import com.caimei365.manager.dao.CmRelatedImageMapper;
 import com.caimei365.manager.dao.providers.CmProvidersContractMapper;
 import com.caimei365.manager.dao.providers.CmProvidersMapper;
 import com.caimei365.manager.dao.user.UserMapper;
+import com.caimei365.manager.entity.PaginationVo;
+import com.caimei365.manager.entity.ResponseJson;
 import com.caimei365.manager.entity.caimei.CmRelatedImage;
 import com.caimei365.manager.entity.caimei.cmUser.User;
+import com.caimei365.manager.entity.caimei.product.Product;
 import com.caimei365.manager.entity.caimei.providers.CmProviders;
 import com.caimei365.manager.entity.caimei.providers.CmProvidersContract;
 import com.caimei365.manager.entity.po.UploadFilePo;
 import com.caimei365.manager.service.caimei.providers.CmProvidersContractService;
 import com.caimei365.manager.service.caimei.providers.CmProvidersService;
 import com.caimei365.manager.utils.ImageUtils;
+import com.github.pagehelper.PageHelper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
@@ -192,7 +200,54 @@ public class CmProvidersServiceImpl implements CmProvidersService {
         FastDFSClient.download(request, response, imageZipPath, imageZipPath.substring(imageZipPath.lastIndexOf("/")));
         // 删除临时文件夹
         String tempPath = imageZipPath.substring(0, imageZipPath.lastIndexOf("/"));
-        log.info("【图片压缩包】,删除图片压缩包文件夹:" + ImageUtils.deleteFile( new File(tempPath)));
+        log.info("【图片压缩包】,删除图片压缩包文件夹:" + ImageUtils.deleteFile(new File(tempPath)));
+    }
+
+    @Override
+    public ResponseJson<PaginationVo<Product>> getProviderProducts(Integer providerId, String shopName, String productName, Integer productId, Integer shopId, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        // 供应商商品
+        List<Product> productList = cmProvidersMapper.getProductList(providerId, shopName, productName, productId, shopId);
+        productList.forEach(product -> {
+            if (StringUtil.isNotBlank(product.getMainImage())) {
+                product.setMainImage(AppUtils.getImageURL("product", product.getMainImage(), 0, "wwwServer"));
+                if (!product.getMainImage().contains("https")) {
+                    product.setMainImage("https://admin.caimei365.com/" + product.getMainImage());
+                }
+            }
+        });
+        PaginationVo<Product> page = new PaginationVo<>(productList);
+        return ResponseJson.success(page);
+    }
+
+    @Override
+    public ResponseJson addProvidersProducts(Integer providerId, String productIds) {
+        List<String> strings = Arrays.asList(productIds.split(","));
+        cmProvidersMapper.addProviderProduct(providerId, strings);
+        return ResponseJson.success();
+    }
+
+    @Override
+    public ResponseJson<PaginationVo<Product>> getProviderProductList(Integer providerId, String productName, Integer productId, int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        // 供应商商品
+        List<Product> productList = cmProvidersMapper.getProviderProductList(providerId, productName, productId);
+        productList.forEach(product -> {
+            if (StringUtil.isNotBlank(product.getMainImage())) {
+                product.setMainImage(AppUtils.getImageURL("product", product.getMainImage(), 0, "wwwServer"));
+                if (!product.getMainImage().contains("https")) {
+                    product.setMainImage("https://admin.caimei365.com/" + product.getMainImage());
+                }
+            }
+        });
+        PaginationVo<Product> page = new PaginationVo<>(productList);
+        return ResponseJson.success(page);
+    }
+
+    @Override
+    public ResponseJson delProvidersProducts(Integer providerId, Integer productId) {
+        cmProvidersMapper.delProviderProduct(providerId, productId);
+        return ResponseJson.success();
     }
 
 }

+ 66 - 2
src/main/resources/mapper/providers/CmProvidersMapper.xml

@@ -99,7 +99,9 @@
             </if>
             <if test="contractStartDate != null ">and cm_providers_contract.contractStartDate >= #{contractStartDate}
             </if>
-            <if test="contractEndDate != null ">and cm_providers_contract.contractEndDate  <![CDATA[ <= ]]> #{contractEndDate}</if>
+            <if test="contractEndDate != null ">and cm_providers_contract.contractEndDate  <![CDATA[ <= ]]>
+                #{contractEndDate}
+            </if>
         </where>
         group by cm_providers.id
         order by cm_providers.createTime desc
@@ -177,11 +179,60 @@
             <foreach item="idsIn"
                      collection="ids.split(',')"
                      open="(" separator="," close=")">
-                    #{idsIn}
+                #{idsIn}
             </foreach>
         </where>
         group by cm_providers.id
     </select>
+    <select id="getProductList" resultType="com.caimei365.manager.entity.caimei.product.Product">
+        SELECT
+        p.productId,
+        p.name as productName,
+        p.mainImage,
+        s.shopId,
+        s.name AS shopName
+        FROM product p
+        LEFT JOIN cm_organize_product_info copi ON copi.productId = p.productId
+        LEFT JOIN shop s ON s.shopId = p.shopId
+        LEFT JOIN cm_provider_product cpp on p.productId = cpp.productId AND cpp.providerId = #{providerId}
+        <where>
+            copi.organizeId = 0 AND copi.validFlag = 2 AND cpp.providerId IS NULL
+            <if test="productId != null">
+                and p.productId = #{productId}
+            </if>
+            <if test="shopId != null">
+                and s.shopId = #{shopId}
+            </if>
+            <if test="productName != null and productName != ''">
+                and p.name like concat('%', #{productName},'%')
+            </if>
+            <if test="shopName != null and shopName != ''">
+                and s.name like concat('%', #{shopName},'%')
+            </if>
+        </where>
+    </select>
+    <select id="getProviderProductList" resultType="com.caimei365.manager.entity.caimei.product.Product">
+        SELECT
+        p.productId,
+        p.name as productName,
+        p.mainImage,
+        s.shopId,
+        s.name AS shopName
+        FROM cm_provider_product cpp
+        LEFT JOIN product p on cpp.productId = p.productId
+        LEFT JOIN cm_organize_product_info copi ON copi.productId = p.productId
+        LEFT JOIN shop s ON s.shopId = p.shopId
+        <where>
+            cpp.providerId = #{providerId}
+            AND copi.organizeId = 0 AND copi.validFlag = 2
+            <if test="productId != null">
+                and p.productId = #{productId}
+            </if>
+            <if test="productName != null and productName != ''">
+                and p.name like concat('%', #{productName},'%')
+            </if>
+        </where>
+    </select>
 
 
     <insert id="addCmProviders" parameterType="CmProviders" useGeneratedKeys="true" keyProperty="id">
@@ -227,6 +278,13 @@
             <if test="splitCode != null and splitCode != ''">#{splitCode},</if>
         </trim>
     </insert>
+    <insert id="addProviderProduct">
+        INSERT INTO cm_provider_product (providerId, productId)
+        VALUES
+        <foreach collection="productIds" item="item" separator=",">
+            (#{providerId}, #{item})
+        </foreach>
+    </insert>
 
     <update id="updateCmProviders" parameterType="CmProviders">
         update cm_providers
@@ -285,4 +343,10 @@
         </where>
     </delete>
 
+    <delete id="delProviderProduct">
+        delete from cm_provider_product
+        where productId = #{productId}
+        and providerId = #{providerId}
+    </delete>
+
 </mapper>