소스 검색

供应商商品

chao 4 년 전
부모
커밋
26bb915843

+ 49 - 0
src/main/java/com/caimei365/commodity/controller/ProductShopApi.java

@@ -1,11 +1,22 @@
 package com.caimei365.commodity.controller;
 
+import com.caimei365.commodity.model.ResponseJson;
+import com.caimei365.commodity.model.search.ProductListVo;
+import com.caimei365.commodity.model.vo.ProductShopVO;
 import com.caimei365.commodity.service.ShopService;
+import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
  * Description
  *
@@ -19,4 +30,42 @@ import org.springframework.web.bind.annotation.RestController;
 public class ProductShopApi {
     private final ShopService shopService;
 
+    /**
+     * 供应商-主推商品
+     */
+    @ApiOperation("供应商-主推商品(旧:/supplier/home/products)")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = true, name = "shopId", value = "供应商Id(旧:supplierId)"),
+        @ApiImplicitParam(required = false, name = "identity", value = "用户身份:1协销,2会员机构,3供应商,4普通机构")
+    })
+    @GetMapping("/home/products")
+    public ResponseJson<List<ProductListVo>> getSupplierMainProducts(Integer shopId, @RequestParam(value = "identity", defaultValue = "0") Integer identity) {
+        return shopService.getMainProducts(shopId, identity);
+    }
+
+    /**
+     * 供应商-我的商品列表
+     */
+    @ApiOperation("供应商-我的商品(旧:/supplier/myProduct)")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = true, name = "shopId", value = "供应商Id"),
+        @ApiImplicitParam(required = false, name = "name", value = "商品名称"),
+        @ApiImplicitParam(required = false, name = "productCode", value = "货号"),
+        @ApiImplicitParam(required = false, name = "validFlag", value = "状态:0逻辑删除,1待审核,2已上架,3已下架,8审核未通过,9已隐身,10已冻结"),
+        @ApiImplicitParam(required = false, name = "featuredFlag", value = "是否主推:0否,1是"),
+        @ApiImplicitParam(required = false, name = "typeSort", value = "分类类型:1产品,2仪器"),
+        @ApiImplicitParam(required = false, name = "bigTypeId", value = "一级分类Id"),
+        @ApiImplicitParam(required = false, name = "smallTypeId", value = "二级分类Id"),
+        @ApiImplicitParam(required = false, name = "tinyTypeId", value = "三级级分类Id"),
+        @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
+        @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
+    })
+    @GetMapping("/products")
+    public ResponseJson<PageInfo<ProductShopVO>> getShopProducts(Integer shopId, String name, String productCode,
+       Integer validFlag, Integer featuredFlag, Integer typeSort, Integer bigTypeId, Integer smallTypeId, Integer tinyTypeId,
+                                             @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                             @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        return shopService.getShopProducts(shopId, name, productCode, validFlag, featuredFlag, typeSort, bigTypeId, smallTypeId, tinyTypeId, pageNum, pageSize);
+    }
+
 }

+ 15 - 0
src/main/java/com/caimei365/commodity/mapper/ShopMapper.java

@@ -1,7 +1,11 @@
 package com.caimei365.commodity.mapper;
 
+import com.caimei365.commodity.model.search.ProductListVo;
+import com.caimei365.commodity.model.vo.ProductShopVO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * Description
  *
@@ -10,4 +14,15 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface ShopMapper {
+    /**
+     * 供应商-主推商品
+     */
+    List<ProductListVo> getMainProducts(Integer shopId, List<Integer> visibilityList);
+
+    /**
+     * 获取供应商-我的商品列表
+     */
+    List<ProductShopVO> getShopProductsSelect(Integer shopId, String name, String productCode, Integer validFlag, Integer featuredFlag, Integer typeSort, Integer bigTypeId, Integer smallTypeId, Integer tinyTypeId);
+
+    String getTypeName(Integer bigTypeId, Integer smallTypeId, Integer tinyTypeId);
 }

+ 72 - 0
src/main/java/com/caimei365/commodity/model/vo/ProductShopVO.java

@@ -0,0 +1,72 @@
+package com.caimei365.commodity.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/4/19
+ */
+@Data
+public class ProductShopVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 商品id
+     */
+    private Integer productId;
+    /**
+     * 名称name
+     */
+    private String name;
+    /**
+     * 内部商品名称
+     */
+    private String aliasName;
+    /**
+     * 商品价格
+     */
+    private Double price;
+    /**
+     * 市场价
+     */
+    private Double normalPrice;
+    /**
+     * 主图
+     */
+    private String mainImage;
+    /**
+     * 所在分类名称
+     */
+    private String typeName;
+    /**
+     * 商品状态, 0逻辑删除 1待审核 2已上架 3已下架 8审核未通过 9已隐身 10已冻结
+     */
+    private Integer validFlag;
+    /**
+     * 供应商主推商品标志 0否 1是
+     */
+    private Integer featuredFlag;
+    /** 商品货号 */
+    private String productCode;
+    /** 促销活动 */
+    private PromotionsVo promotions;
+    /**
+     * 分类类型,1产品,2仪器
+     */
+    private Integer typeSort;
+    /**
+     * 一级分类ID
+     */
+    private Integer bigTypeId;
+    /**
+     * 二级分类Id
+     */
+    private Integer smallTypeId;
+    /**
+     * 三级分类Id
+     */
+    private Integer tinyTypeId;
+}

+ 33 - 0
src/main/java/com/caimei365/commodity/service/ShopService.java

@@ -1,5 +1,12 @@
 package com.caimei365.commodity.service;
 
+import com.caimei365.commodity.model.ResponseJson;
+import com.caimei365.commodity.model.search.ProductListVo;
+import com.caimei365.commodity.model.vo.ProductShopVO;
+import com.github.pagehelper.PageInfo;
+
+import java.util.List;
+
 /**
  * Description
  *
@@ -7,4 +14,30 @@ package com.caimei365.commodity.service;
  * @date : 2021/4/16
  */
 public interface ShopService {
+
+    /**
+     * 供应商-主推商品
+     * @param shopId   供应商Id
+     * @param identity 用户身份:1协销,2会员机构,3供应商,4普通机构
+     * @return
+     */
+    ResponseJson<List<ProductListVo>> getMainProducts(Integer shopId, Integer identity);
+
+    /**
+     * 供应商-我的商品列表
+     *
+     * @param shopId        供应商Id
+     * @param name          商品名称
+     * @param productCode   货号
+     * @param validFlag     状态:0逻辑删除,1待审核,2已上架,3已下架,8审核未通过,9已隐身,10已冻结
+     * @param featuredFlag  是否主推:0否,1是
+     * @param typeSort      分类类型:1产品,2仪器
+     * @param bigTypeId     一级分类Id
+     * @param smallTypeId   二级分类Id
+     * @param tinyTypeId    三级级分类Id
+     * @param pageNum       页码
+     * @param pageSize      每页数量
+     * @return PageInfo<ProductShopVO>
+     */
+    ResponseJson<PageInfo<ProductShopVO>> getShopProducts(Integer shopId, String name, String productCode, Integer validFlag, Integer featuredFlag, Integer typeSort, Integer bigTypeId, Integer smallTypeId, Integer tinyTypeId, int pageNum, int pageSize);
 }

+ 132 - 0
src/main/java/com/caimei365/commodity/service/impl/ShopServiceImpl.java

@@ -1,11 +1,22 @@
 package com.caimei365.commodity.service.impl;
 
+import com.caimei365.commodity.components.PriceUtilService;
 import com.caimei365.commodity.mapper.ShopMapper;
+import com.caimei365.commodity.model.ResponseJson;
+import com.caimei365.commodity.model.search.ProductListVo;
+import com.caimei365.commodity.model.vo.PaginationVo;
+import com.caimei365.commodity.model.vo.ProductShopVO;
+import com.caimei365.commodity.model.vo.PromotionsVo;
 import com.caimei365.commodity.service.ShopService;
+import com.caimei365.commodity.utils.ImageUtils;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.*;
 
 /**
  * Description
@@ -18,4 +29,125 @@ import javax.annotation.Resource;
 public class ShopServiceImpl implements ShopService {
     @Resource
     private ShopMapper shopMapper;
+    @Resource
+    private PriceUtilService priceUtilService;
+    @Value("${caimei.wwwDomain}")
+    private String domain;
+    /**
+     * 供应商-主推商品
+     *
+     * @param shopId   供应商Id
+     * @param identity 用户身份:1协销,2会员机构,3供应商,4普通机构
+     * @return List<ProductListVo>
+     */
+    @Override
+    public ResponseJson<List<ProductListVo>> getMainProducts(Integer shopId, Integer identity) {
+        if (shopId == null) {
+            return ResponseJson.error("参数异常:缺少供应商Id", null);
+        }
+        // identity: 0个人,1协销,2会员机构,3供应商,4普通机构
+        // p_visibility:3:所有人可见,2:普通机构可见,1:会员机构可见
+        List<Integer> visibilityList = new ArrayList<>();
+        if (identity == 1 || identity == 2) {
+            // 协销 | 会员机构 | 综合供应商
+            visibilityList.addAll(Arrays.asList(1,2,3));
+        } else if (identity == 4) {
+            // 普通机构
+            visibilityList.addAll(Arrays.asList(2,3));
+        } else {
+            // 游客|所有人
+            visibilityList.add(3);
+        }
+        List<ProductListVo> list = shopMapper.getMainProducts(shopId, visibilityList);
+        // 设置价格等级 及 老图片路径
+        list.forEach(product -> {
+            product.setPriceGrade(priceUtilService.getPriceGrade(product.getPrice()));
+            product.setPrice(0d);
+            product.setImage(ImageUtils.getImageURL("product", product.getImage(), 0, domain));
+        });
+        return ResponseJson.success(list);
+    }
+
+    /**
+     * 供应商-我的商品列表
+     *
+     * @param shopId       供应商Id
+     * @param name         商品名称
+     * @param productCode  货号
+     * @param validFlag    状态:0逻辑删除,1待审核,2已上架,3已下架,8审核未通过,9已隐身,10已冻结
+     * @param featuredFlag 是否主推:0否,1是
+     * @param typeSort     分类类型:1产品,2仪器
+     * @param bigTypeId    一级分类Id
+     * @param smallTypeId  二级分类Id
+     * @param tinyTypeId    三级级分类Id
+     * @param pageNum      页码
+     * @param pageSize     每页数量
+     * @return PageInfo<ProductShopVO>
+     */
+    @Override
+    public ResponseJson<PageInfo<ProductShopVO>> getShopProducts(Integer shopId, String name, String productCode, Integer validFlag, Integer featuredFlag, Integer typeSort, Integer bigTypeId, Integer smallTypeId, Integer tinyTypeId, int pageNum, int pageSize) {
+        if (null == shopId) {
+            return ResponseJson.error("参数异常:缺少供应商Id", null);
+        }
+        Map<String, Object> map = new HashMap<>();
+        PageHelper.startPage(pageNum, pageSize);
+        List<ProductShopVO> productList = shopMapper.getShopProductsSelect(shopId, name, productCode, validFlag, featuredFlag, typeSort, bigTypeId, smallTypeId, tinyTypeId);
+//        if (null != productList && productList.size() > 0) {
+//            for (ProductShopVO product : productList) {
+//                product.setMainImage(ImageUtils.getImageURL("product", product.getMainImage(), 0, domain));
+//                String typeName = shopMapper.getTypeName(product.getBigTypeId(), product.getSmallTypeId(), product.getTinyTypeId());
+//                product.setTypeName(typeName);
+//                //店铺促销
+//                PromotionsVo promotions = promotionsDao.getSupplierPromotionsBySupplierId(product.getShopID());
+//                if (promotions == null) {
+//                    promotions = promotionsDao.getProductPromotionsByProductId(product.getProductID());
+//                }
+//                if (null != promotions) {
+//                    List<CartItem> productGifts = null;
+//                    List<CartItem> promotionsProduct = null;
+//                    if (2 == promotions.getMode()) {
+//                        //满减商品
+//                        promotionsProduct = promotionsDao.findPromotionsProduct(promotions.getId());
+//                    } else if (3 == promotions.getMode()) {
+//                        //满赠商品
+//                        promotionsProduct = promotionsDao.findPromotionsProduct(promotions.getId());
+//                        productGifts = promotionsDao.getProductGifts(promotions.getId());
+//                    }
+//                    //促销商品
+//                    if (null != promotionsProduct && promotionsProduct.size() > 0) {
+//                        promotionsProduct.forEach(p -> {
+//                            if (p != null) {
+//                                p.setImage(ImageUtils.getImageURL("product", p.getImage(), 0, domain));
+//                            }
+//                        });
+//                        promotions.setProductList(promotionsProduct);
+//                    }
+//                    //促销赠品
+//                    if (null != productGifts && productGifts.size() > 0) {
+//                        productGifts.forEach(p -> {
+//                            p.setImage(ImageUtils.getImageURL("product", p.getImage(), 0, domain));
+//                        });
+//                        promotions.setGiftList(productGifts);
+//                    }
+//                    product.setPromotions(promotions);
+//                } else if ("1".equals(product.getLadderPriceFlag())) {
+//                    //启用阶梯价格
+//                    sellerProductService.getLadderPrice(product);
+//                }
+//            }
+//        }
+//        PaginationVo<ProductShopVO> productPage = new PaginationVo<>(productList);
+//        map.put("productPage", productPage);
+//        List<ProductShopVO> mainProduct = supplierDao.findMainProduct(product.getShopID());
+//        //主推商品数量
+//        int featuredNum = 0;
+//        if (null != mainProduct) {
+//            featuredNum = mainProduct.size();
+//        }
+//        map.put("featuredNum", featuredNum);
+//        return ResponseJson.success(map);
+
+        return null;
+
+    }
 }

+ 66 - 1
src/main/resources/mapper/ShopMapper.xml

@@ -1,5 +1,70 @@
 <?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.ShopMapper">
-
+    <select id="getMainProducts" resultType="com.caimei365.commodity.model.search.ProductListVo">
+		select
+			p.productID as id,
+			p.`name` as `name`,
+			p.mainImage as image,
+			p.price1 as price,
+			p.unit as unit,
+			p.price1TextFlag as priceFlag,
+            IFNULL(p.visibility,3) as visibility,
+		    p.price8Text as beautyActFlag
+		from product p
+        where p.shopID = #{supplierId}
+        and p.visibility in
+        <foreach collection="visibilityList" item="visibility" index="index" open="(" separator="," close=")">
+            #{visibility}
+        </foreach>
+        and p.validFlag = 2 and p.featuredFlag=1
+        order by p.productID desc limit 4
+    </select>
+    <select id="getShopProductsSelect" resultType="com.caimei365.commodity.model.vo.ProductShopVO">
+        select
+            p.productID as productId, p.name, p.aliasName, p.price, p.normalPrice, p.mainImage,
+            p.validFlag, p.featuredFlag, p.productCode, p.bigTypeID as bigTypeId,
+            p.smallTypeID as smallTypeId, p.tinyTypeID as tinyTypeId,
+            b.typeSort as typeSort
+        from product p
+        left join bigtype b on p.bigTypeID = b.bigTypeID
+        <where>
+            p.shopID = #{shopId}
+            <if test="productCode != null and productCode != ''">
+                and p.productCode = #{productCode}
+            </if>
+            <if test="validFlag != null and validFlag != ''">
+                and p.validFlag = #{validFlag}
+            </if>
+            <if test="featuredFlag != null and featuredFlag != ''">
+                and p.featuredFlag = #{featuredFlag}
+            </if>
+            <if test="tinyTypeId != null and tinyTypeId != 0">
+                and p.tinyTypeID = #{tinyTypeId}
+            </if>
+            <if test="smallTypeId != null and smallTypeId != 0">
+                and p.smallTypeID = #{smallTypeId}
+            </if>
+            <if test="bigTypeId != null and bigTypeId != 0">
+                and p.bigTypeID = #{bigTypeId}
+            </if>
+            <if test="typeSort != null and typeSort != ''">
+                and b.typeSort = #{typeSort}
+            </if>
+            <if test="name != null and name != ''">
+                and p.name like CONCAT("%",#{name},"%")
+            </if>
+        </where>
+        order by p.productID desc
+    </select>
+    <select id="getTypeName" resultType="java.lang.String">
+        select
+          CONCAT_WS("-", b.name, s.name, t.name)
+        from
+          bigtype b
+          left join smalltype s on s.smallTypeID = #{smallTypeId}
+          left join tinytype t on t.tinyTypeID = #{tinyTypeId}
+        where
+          b.bigTypeID = #{bigTypeId};
+    </select>
 </mapper>