Quellcode durchsuchen

呵呵首页楼层

Aslee vor 3 Jahren
Ursprung
Commit
a5c73bf992

+ 20 - 0
src/main/java/com/caimei/controller/ProductApi.java

@@ -1,6 +1,7 @@
 package com.caimei.controller;
 
 import com.caimei.model.ResponseJson;
+import com.caimei.model.vo.FloorVo;
 import com.caimei.model.vo.HeHeActivityVo;
 import com.caimei.model.vo.ProductVo;
 import com.caimei.service.ProductService;
@@ -37,6 +38,25 @@ public class ProductApi {
         return productService.carouselFigure();
     }
 
+    @ApiOperation("首页楼层")
+    @GetMapping("/floor")
+    public ResponseJson<List<FloorVo>> productFloor() {
+        return productService.productFloor();
+    }
+
+    @ApiOperation("首页楼层详情")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "floorId", value = "楼层Id", required = true),
+            @ApiImplicitParam(name = "productName", value = "商品名称", required = false),
+            @ApiImplicitParam(name = "pageNum", value = "第几页", required = false),
+            @ApiImplicitParam(name = "pageSize", value = "一页多少条", required = false)
+    })
+    @GetMapping("/floor/detail")
+    public ResponseJson<PageInfo<ProductVo>> floorDetail(Integer floorId,String productName, @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
+                                             @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
+        return productService.floorDetail(floorId, productName, pageNum, pageSize);
+    }
+
     @ApiOperation("商品列表")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "name", value = "搜索商品名称", required = false),

+ 23 - 3
src/main/java/com/caimei/mapper/ProductMapper.java

@@ -24,12 +24,21 @@ public interface ProductMapper {
     List<String> findImageAll();
 
     /**
-     * 查询所有商品
+     * 查询商品
      *
-     * @param name
+     * @param productName
      * @return
      */
-    List<ProductVo> findProductList(String name);
+    List<ProductVo> findProductList(@Param("productName") String productName);
+
+    /**
+     * 查询楼层商品
+     *
+     * @param productName
+     * @param limitNum
+     * @return
+     */
+    List<ProductVo> findFloorProductList(@Param("floorId") Integer floorId, @Param("productName") String productName, @Param("limitNum") Integer limitNum);
 
     /**
      * 查询进行中的活动
@@ -167,4 +176,15 @@ public interface ProductMapper {
      * @return
      */
     List<ProductVo> findActivityProduct(@Param("userId") Integer userId, @Param("activityId") Integer activityId);
+
+
+    /**
+     * 获取所有商品楼层
+     * @return
+     */
+    List<FloorVo> findAllFloor();
+
+
+
+    FloorVo findFloorById(Integer floorId);
 }

+ 34 - 0
src/main/java/com/caimei/model/vo/FloorVo.java

@@ -0,0 +1,34 @@
+package com.caimei.model.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Aslee
+ * @date : 2021/6/17
+ */
+@Data
+public class FloorVo {
+    /**
+     * 楼层id
+     */
+    private Integer floorId;
+
+    /**
+     * 楼层标题
+     */
+    private String title;
+
+    /**
+     * 楼层描述
+     */
+    private String description;
+
+    /**
+     * 楼层商品列表
+     */
+    private List<ProductVo> productList;
+}

+ 17 - 0
src/main/java/com/caimei/service/ProductService.java

@@ -1,6 +1,7 @@
 package com.caimei.service;
 
 import com.caimei.model.ResponseJson;
+import com.caimei.model.vo.FloorVo;
 import com.caimei.model.vo.HeHeActivityVo;
 import com.caimei.model.vo.ProductVo;
 import com.github.pagehelper.PageInfo;
@@ -77,4 +78,20 @@ public interface ProductService {
      * @return
      */
     ResponseJson<Map<String, Object>> activityDetails(Integer userId, Integer activityId, Integer pageNum, Integer pageSize);
+
+
+    /**
+     * 商品楼层
+     * @return
+     */
+    ResponseJson<List<FloorVo>> productFloor();
+
+    /**
+     * 楼层详情
+     *
+     * @param floorId
+     * @param productName
+     * @return
+     */
+    ResponseJson<PageInfo<ProductVo>> floorDetail(Integer floorId, String productName, Integer pageNum, Integer pageSize);
 }

+ 57 - 0
src/main/java/com/caimei/service/impl/ProductServiceImpl.java

@@ -190,4 +190,61 @@ public class ProductServiceImpl implements ProductService {
         map.put("pageInfo", pageInfo);
         return ResponseJson.success(map);
     }
+
+
+    @Override
+    public ResponseJson<List<FloorVo>> productFloor() {
+        List<FloorVo> floorList = productMapper.findAllFloor();
+        floorList.forEach(floor->{
+            List<ProductVo> productList = productMapper.findFloorProductList(floor.getFloorId(), null, 6);
+            productList.forEach((product) -> {
+                product.setMainImage(ProductUtils.getImageURL("product", product.getMainImage(), 0, domain));
+                Integer activityId = productMapper.findActivityByProductId(product.getProductId());
+                if (activityId != null && activityId > 0) {
+                    product.setActiveStatus(1);
+                    //活动阶梯
+                    List<ActivityLadderVo> ladderList = productMapper.findActivityLadder(activityId, product.getProductId());
+                    if (ladderList != null && ladderList.size() > 0) {
+                        product.setPrice(ladderList.get(0).getBuyPrice());
+                    }
+                }
+                //税费
+                boolean addTaxFlag = ("0".equals(product.getIncludedTax()) && ("1".equals(product.getInvoiceType()) || "2".equals(product.getInvoiceType())));
+                if (addTaxFlag) {
+                    BigDecimal addedValueTax = MathUtil.div(MathUtil.mul(product.getPrice(), product.getClubTaxPoint()), BigDecimal.valueOf(100), 2);
+                    BigDecimal price = MathUtil.add(product.getPrice(), addedValueTax);
+                    product.setPrice(price);
+                }
+            });
+            floor.setProductList(productList);
+        });
+        return ResponseJson.success(floorList);
+    }
+
+    @Override
+    public ResponseJson<PageInfo<ProductVo>> floorDetail(Integer floorId, String productName, Integer pageNum, Integer pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        List<ProductVo> productList = productMapper.findFloorProductList(floorId, productName, null);
+        productList.forEach((product) -> {
+            product.setMainImage(ProductUtils.getImageURL("product", product.getMainImage(), 0, domain));
+            Integer activityId = productMapper.findActivityByProductId(product.getProductId());
+            if (activityId != null && activityId > 0) {
+                product.setActiveStatus(1);
+                //活动阶梯
+                List<ActivityLadderVo> ladderList = productMapper.findActivityLadder(activityId, product.getProductId());
+                if (ladderList != null && ladderList.size() > 0) {
+                    product.setPrice(ladderList.get(0).getBuyPrice());
+                }
+            }
+            //税费
+            boolean addTaxFlag = ("0".equals(product.getIncludedTax()) && ("1".equals(product.getInvoiceType()) || "2".equals(product.getInvoiceType())));
+            if (addTaxFlag) {
+                BigDecimal addedValueTax = MathUtil.div(MathUtil.mul(product.getPrice(), product.getClubTaxPoint()), BigDecimal.valueOf(100), 2);
+                BigDecimal price = MathUtil.add(product.getPrice(), addedValueTax);
+                product.setPrice(price);
+            }
+        });
+        PageInfo<ProductVo> pageInfo = new PageInfo<>(productList);
+        return ResponseJson.success(pageInfo);
+    }
 }

+ 49 - 0
src/main/resources/backup.sql

@@ -99,3 +99,52 @@ ALTER TABLE `cm_cart`
 
 ALTER TABLE `cm_order_product`
   ADD COLUMN `heUserId` INT NULL   COMMENT '分销者id(呵呵商城订单使用)' AFTER `cancelNum`;
+# -------------------------------------------商品楼层优化start---------------------------------------------------
+# 创建首页楼层表
+CREATE TABLE `cm_hehe_floor` (
+                                 `id` INT NOT NULL AUTO_INCREMENT,
+                                 `title` VARCHAR(20) NULL COMMENT '楼层标题',
+                                 `description` VARCHAR(255) NULL COMMENT '楼层描述',
+                                 `sort` INT NULL COMMENT '排序',
+                                 `status` INT NULL COMMENT '状态,0停用,1启用',
+                                 `createTime` DATETIME NULL COMMENT '创建时间',
+                                 PRIMARY KEY (`id`))
+    ENGINE = InnoDB
+    DEFAULT CHARACTER SET = utf8
+    COLLATE = utf8_bin
+    COMMENT = '呵呵商城首页楼层';
+
+# 删除字段
+ALTER TABLE `caimei`.`cm_hehe_product`
+    DROP COLUMN `recommend`,
+    DROP COLUMN `sort`;
+
+# 楼层商品表
+CREATE TABLE `cm_hehe_floor_product` (
+                                         `id` INT NOT NULL AUTO_INCREMENT,
+                                         `floorId` INT NULL,
+                                         `productId` INT NULL,
+                                         `validFlag` INT NULL COMMENT '上架状态:1上架,0下架',
+                                         `recommend` INT NULL COMMENT '是否为推荐商品(0 没推荐,1 推荐商品)',
+                                         `sort` INT NULL COMMENT '排序值',
+                                         `addTime` DATETIME NULL COMMENT '添加时间',
+                                         PRIMARY KEY (`id`))
+    ENGINE = InnoDB
+    DEFAULT CHARACTER SET = utf8
+    COLLATE = utf8_bin
+    COMMENT = '呵呵商品楼层商品表';
+
+INSERT INTO `cm_hehe_floor` (`id`, `title`, `description`, `sort`, `status`, `createTime`) VALUES ('1', '楼层1', '楼层1描述', '1', '1', '2021-06-21 11:30:26');
+
+INSERT INTO `cm_hehe_floor_product` (`id`, `floorId`, `productId`, `validFlag`, `recommend`, `sort`, `addTime`) VALUES ('1', '1', '1', '1', '0', '1', '2021-06-21 11:30:26');
+INSERT INTO `cm_hehe_floor_product` (`id`, `floorId`, `productId`, `validFlag`, `recommend`, `sort`, `addTime`) VALUES ('2', '1', '2', '1', '0', '2', '2021-06-21 11:30:26');
+INSERT INTO `cm_hehe_floor_product` (`id`, `floorId`, `productId`, `validFlag`, `recommend`, `sort`, `addTime`) VALUES ('3', '1', '3', '1', '0', '3', '2021-06-21 11:30:26');
+
+
+INSERT INTO `cm_hehe_floor` (`id`, `title`, `description`, `sort`, `status`, `createTime`) VALUES ('2', '楼层2', '楼层2描述', '2', '1', '2021-06-21 11:30:26');
+
+INSERT INTO `cm_hehe_floor_product` (`id`, `floorId`, `productId`, `validFlag`, `recommend`, `sort`, `addTime`) VALUES ('1', '2', '1', '1', '0', '1', '2021-06-21 11:30:26');
+INSERT INTO `cm_hehe_floor_product` (`id`, `floorId`, `productId`, `validFlag`, `recommend`, `sort`, `addTime`) VALUES ('2', '2', '2', '1', '0', '2', '2021-06-21 11:30:26');
+INSERT INTO `cm_hehe_floor_product` (`id`, `floorId`, `productId`, `validFlag`, `recommend`, `sort`, `addTime`) VALUES ('3', '2', '3', '1', '0', '3', '2021-06-21 11:30:26');
+
+# -------------------------------------------商品楼层优化end------------------------------------------------

+ 156 - 118
src/main/resources/mapper/ProductMapper.xml

@@ -5,152 +5,185 @@
 <mapper namespace="com.caimei.mapper.ProductMapper">
     <select id="findImageAll" resultType="string">
         SELECT
-          image
+            image
         FROM
-          cm_hehe_image
+            cm_hehe_image
         WHERE
-          status = 1
+            status = 1
         ORDER BY
-          - sort DESC
+            - sort DESC
     </select>
 
     <select id="findProductList" resultType="com.caimei.model.vo.ProductVo">
         SELECT
-          a.productId,
-          a.recommend,
-          a.price,
-          a.includedTax,
-          a.invoiceType,
-          a.clubTaxPoint,
-          p.name,
-          P.unit,
-          p.mainImage
+        a.productId,
+        a.price,
+        a.includedTax,
+        a.invoiceType,
+        a.clubTaxPoint,
+        p.name,
+        P.unit,
+        p.mainImage
         FROM
-          cm_hehe_product a
-          LEFT JOIN product p ON a.productId = p.productID
+        cm_hehe_product a
+        LEFT JOIN product p ON a.productId = p.productID
         WHERE
-          a.validFlag = 1
-          <if test="name != null and name != ''">
-              AND p.name LIKE CONCAT('%',#{name},'%')
-          </if>
+        a.validFlag = 1
+        <if test="productName != null and productName != ''">
+            AND p.name LIKE CONCAT('%',#{productName},'%')
+        </if>
         ORDER BY
-          a.recommend DESC,
-          - a.sort DESC,
-          a.addTime DESC
+        a.addTime desc
     </select>
 
+    <select id="findFloorProductList" resultType="com.caimei.model.vo.ProductVo">
+        SELECT
+        a.productId,
+        fp.recommend,
+        a.price,
+        a.includedTax,
+        a.invoiceType,
+        a.clubTaxPoint,
+        p.name,
+        P.unit,
+        p.mainImage
+        FROM
+        cm_hehe_product a
+        left join cm_hehe_floor_product fp on a.id = fp.productId
+        LEFT JOIN product p ON a.productId = p.productID
+        left join cm_hehe_floor f on fp.floorId = f.id
+        WHERE
+        a.validFlag = 1
+        and f.status = 1
+        and fp.validFlag = 1
+        <if test="floorId != null">
+            AND fp.floorId = #{floorId}
+        </if>
+        <if test="productName != null and productName != ''">
+            AND p.name LIKE CONCAT('%',#{productName},'%')
+        </if>
+        ORDER BY
+        fp.recommend DESC,
+        - fp.sort DESC,
+        fp.addTime DESC,
+        fp.productId desc
+        <if test="limitNum != null">
+            limit #{limitNum}
+        </if>
+    </select>
+
+
     <select id="findActivityByProductId" resultType="integer">
         SELECT
-          activityId
+            activityId
         FROM
-          cm_hehe_activity_product a
-          LEFT JOIN cm_hehe_activity cha ON a.activityId = cha.id
+            cm_hehe_activity_product a
+                LEFT JOIN cm_hehe_activity cha ON a.activityId = cha.id
         WHERE
-          cha.delFlag = 0
+            cha.delFlag = 0
           AND a.delFlag = 0
           AND NOW() BETWEEN cha.beginTime
-          AND cha.endTime
+            AND cha.endTime
           AND a.productId = #{productId}
     </select>
 
     <select id="findActivityLadder" resultType="com.caimei.model.vo.ActivityLadderVo">
         SELECT
-          buyNum,
-          buyPrice
+            buyNum,
+            buyPrice
         FROM
-          cm_hehe_activity_ladder
+            cm_hehe_activity_ladder
         WHERE
-          activityId = #{activityId}
+            activityId = #{activityId}
           AND productId = #{productId}
         ORDER BY
-          ladderNum
+            ladderNum
     </select>
-    
+
     <select id="findProductByProductId" resultType="com.caimei.model.vo.ProductDetailsVo">
         SELECT
-          a.productId,
-          a.recommend,
-          a.price,
-          a.includedTax,
-          a.invoiceType,
-          a.clubTaxPoint,
-          a.validFlag,
-          p.name,
-          p.mainImage,
-          p.brandID AS "brandId",
-          p.bigTypeID AS "bigTypeId",
-          p.smallTypeID AS "smallTypeId",
-          p.tinyTypeID AS "tinyTypeId",
-          P.unit,
-          P.stock,
-          p.tags
+            a.productId,
+            a.price,
+            a.includedTax,
+            a.invoiceType,
+            a.clubTaxPoint,
+            a.validFlag,
+            p.name,
+            p.mainImage,
+            p.brandID AS "brandId",
+            p.bigTypeID AS "bigTypeId",
+            p.smallTypeID AS "smallTypeId",
+            p.tinyTypeID AS "tinyTypeId",
+            P.unit,
+            P.stock,
+            p.tags
         FROM
-          cm_hehe_product a
-          LEFT JOIN product p ON a.productId = p.productID
+            cm_hehe_product a
+                LEFT JOIN product p ON a.productId = p.productID
         WHERE
-          a.productId = #{productId}
+            a.productId = #{productId}
     </select>
 
     <select id="findProductImages" resultType="string">
         SELECT
-          image
+            image
         FROM
-          productimage
+            productimage
         WHERE
-          productID = #{productId}
+            productID = #{productId}
         ORDER BY
-          mainFlag DESC
+            mainFlag DESC
     </select>
 
     <select id="findProductDetail" resultType="com.caimei.model.po.ProductDetailInfoPo">
         select
-          productDetailInfoID as productDetailInfoId,
-          productID as productId,
-          propValueAlias,
-          propValueImages,
-          detailInfo,
-          detailInfoTxt,
-          seoTitle,
-          seoKeyword,
-          seoDes,
-          serviceInfo,
-          orderInfo
+            productDetailInfoID as productDetailInfoId,
+            productID as productId,
+            propValueAlias,
+            propValueImages,
+            detailInfo,
+            detailInfoTxt,
+            seoTitle,
+            seoKeyword,
+            seoDes,
+            serviceInfo,
+            orderInfo
         from
-          productdetailinfo
+            productdetailinfo
         where
-          productID = #{productId}
+            productID = #{productId}
     </select>
 
     <select id="findTypeName" resultType="string">
         SELECT
-          CONCAT_WS('-', b.name, s.name, t.name)
+            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}
+            bigtype b
+                LEFT JOIN smalltype s ON s.smallTypeID = #{smallTypeId}
+                LEFT JOIN tinytype t ON t.tinyTypeID = #{tinyTypeId}
         WHERE
-          b.bigTypeID = #{bigTypeId}
+            b.bigTypeID = #{bigTypeId}
     </select>
-    
+
     <select id="findBrandName" resultType="string">
         SELECT
-          name
+            name
         FROM
-          cm_brand
+            cm_brand
         WHERE
-          id = #{brandId}
+            id = #{brandId}
           and delFlag = '0'
           and status = '1'
     </select>
 
     <select id="findParameters" resultType="com.caimei.model.vo.RelatedParametersVo">
         SELECT
-          paramsName,
-          paramsContent
+            paramsName,
+            paramsContent
         FROM
-          cm_product_related_parameters
+            cm_product_related_parameters
         WHERE
-          productId = #{productId}
+            productId = #{productId}
           AND delFlag = '0'
     </select>
 
@@ -164,36 +197,36 @@
 
     <insert id="insertSearchHistory">
         INSERT INTO `user_search_history` (
-          `userId`, `searchWord`, `searchDate`,
-          `delFlag`
+            `userId`, `searchWord`, `searchDate`,
+            `delFlag`
         )
         VALUES
-          (
+        (
             #{userId}, #{searchWord}, #{searchDate},
             #{delFlag}
-          )
+        )
     </insert>
 
     <select id="searchHistory" resultType="string">
         SELECT
-          searchWord
+            searchWord
         FROM
-          user_search_history
+            user_search_history
         WHERE
-          userId = #{userId}
+            userId = #{userId}
         ORDER BY
-          searchDate DESC
+            searchDate DESC
         LIMIT
-          10
+            10
     </select>
 
     <delete id="deleteHistoryByUserId">
         DELETE FROM user_search_history
         WHERE userId=#{userId}
-        AND id NOT IN (
+          AND id NOT IN (
             SELECT temp.id FROM (
-                SELECT id FROM user_search_history WHERE userId=#{userId} ORDER BY id DESC LIMIT 10
-            ) AS temp
+                                    SELECT id FROM user_search_history WHERE userId=#{userId} ORDER BY id DESC LIMIT 10
+                                ) AS temp
         )
     </delete>
 
@@ -203,25 +236,25 @@
 
     <select id="findActivityAll" resultType="com.caimei.model.vo.HeHeActivityVo">
         SELECT
-          cha.id AS activityId,
-          cha.name,
-          cha.listImage,
-          cha.beginTime,
-          cha.endTime,
-          COUNT(chua.id) AS productCount
+            cha.id AS activityId,
+            cha.name,
+            cha.listImage,
+            cha.beginTime,
+            cha.endTime,
+            COUNT(chua.id) AS productCount
         FROM
-          cm_hehe_user_activity chua
-          LEFT JOIN cm_hehe_activity cha ON chua.activityId = cha.id
+            cm_hehe_user_activity chua
+                LEFT JOIN cm_hehe_activity cha ON chua.activityId = cha.id
         WHERE
-          chua.userId = #{userId}
+            chua.userId = #{userId}
           AND cha.delFlag = 0
           AND cha.status = 1
           AND cha.beginTime <![CDATA[ <= ]]> NOW()
           AND cha.endTime <![CDATA[ >= ]]> NOW()
         GROUP BY
-          cha.id
+            cha.id
         ORDER BY
-          cha.addTime DESC
+            cha.addTime DESC
     </select>
 
     <select id="findActivityById" resultType="string">
@@ -230,22 +263,27 @@
 
     <select id="findActivityProduct" resultType="com.caimei.model.vo.ProductVo">
         SELECT
-          chp.productId,
-          chp.recommend,
-          chp.price,
-          chp.includedTax,
-          chp.invoiceType,
-          chp.clubTaxPoint,
-          p.name,
-          P.unit,
-          p.mainImage
+            chp.productId,
+            chp.price,
+            chp.includedTax,
+            chp.invoiceType,
+            chp.clubTaxPoint,
+            p.name,
+            P.unit,
+            p.mainImage
         FROM
-          cm_hehe_user_activity chua
-          LEFT JOIN cm_hehe_product chp ON chua.productId = chp.productId
-          LEFT JOIN product p ON chua.productId = p.productID
+            cm_hehe_user_activity chua
+                LEFT JOIN cm_hehe_product chp ON chua.productId = chp.productId
+                LEFT JOIN product p ON chua.productId = p.productID
         WHERE
-          chua.userId = #{userId}
+            chua.userId = #{userId}
           AND chua.activityId = #{activityId}
     </select>
+    <select id="findAllFloor" resultType="com.caimei.model.vo.FloorVo">
+        select id as floorId,title,description from cm_hehe_floor where status = 1 order by - sort desc
+    </select>
+    <select id="findFloorById" resultType="com.caimei.model.vo.FloorVo">
+        select id as floorId,title,description from cm_hehe_floor where id = #{floorId}
+    </select>
 
 </mapper>