Pārlūkot izejas kodu

添加销量记录

chao 3 gadi atpakaļ
vecāks
revīzija
6f0fd6648e

+ 9 - 0
backup.sql

@@ -23,3 +23,12 @@ ALTER TABLE product
     MODIFY COLUMN priceFlag char(2) default '0' null comment '是否公开机构价:0公开价格,1不公开价格,2仅对会员机构公开,3仅对医美机构公开',
     MODIFY COLUMN visibility char(2) default '3' not null comment '商品可见度:3:所有人可见,2:普通机构可见,1:会员机构可见,4:仅医美机构可见' AFTER priceFlag;
 
+-- =================================== 2021年12月 小版本 start =====================================
+-- 1. 商品增加销量记录,可按月统计销量,便于搜索排序
+CREATE TABLE `cm_product_sales_record`(
+     `id` INT NOT NULL AUTO_INCREMENT,
+     `productId` int(11) NOT NULL COMMENT '商品ID',
+     `productCount` int(11) DEFAULT NULL COMMENT '销量',
+     `addTime` DATETIME DEFAULT NULL COMMENT '销售时间',
+     PRIMARY KEY (`id`)
+) ENGINE=INNODB CHARSET=utf8mb4 COMMENT='用户销量记录表';

+ 4 - 5
src/main/java/com/caimei365/commodity/components/SearchOpenService.java

@@ -363,15 +363,14 @@ public class SearchOpenService {
         // 创建sort对象,并设置二维排序
         Sort sorter = new Sort();
         // 价格,销量,人气 排序
-        String[] sortFields = {"p_price", "p_sales", "p_favorite"};
+        String[] sortFields = {"price", "sales", "favorite"};
         if (StringUtils.isNotEmpty(sortField) && Arrays.asList(sortFields).contains(sortField)) {
             Order order = (1 == sortType) ? Order.DECREASE : Order.INCREASE;
             // 设置排序字段
-            sorter.addToSortFields(new SortField(sortField, order));
-        } else {
-            // 默认商品ID倒序
-            sorter.addToSortFields(new SortField("p_id", Order.DECREASE));
+            sorter.addToSortFields(new SortField("p_" + sortField, order));
         }
+        // 默认商品ID倒序
+        sorter.addToSortFields(new SortField("p_id", Order.DECREASE));
         //添加Sort对象参数
         searchParams.setSort(sorter);
 

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

@@ -69,4 +69,10 @@ public interface PriceMapper {
      * 根据用户Id查询供应商Id
      */
     Integer getShopIdByUserId(Integer userId);
+    /**
+     * 添加销量记录
+     * @param productId 商品Id
+     * @param productCount 销量
+     */
+    void insertProductSalesRecord(Integer productId, Integer productCount);
 }

+ 2 - 0
src/main/java/com/caimei365/commodity/service/impl/PriceServiceImpl.java

@@ -156,6 +156,8 @@ public class PriceServiceImpl implements PriceService {
                 // 更新销量
                 priceMapper.updateProductSales(salesVo);
             }
+            // 添加销量记录
+            priceMapper.insertProductSalesRecord(productId, productCount);
             log.info("【更新商品销量】:" + salesVo.toString());
         }
         return ResponseJson.success(null);

+ 42 - 42
src/main/java/com/caimei365/commodity/service/impl/SearchIndexServiceImpl.java

@@ -210,8 +210,8 @@ public class SearchIndexServiceImpl implements SearchIndexService {
             if (promotionIds != null && promotionIds.size() > 0) {
                 product.setP_promotions_id(promotionIds.get(0));
             }
-            // 定义星范商品数据
-            List<DocumentDTO<MallProductDO>> mallProductList = new ArrayList<>();
+//            // 定义星范商品数据
+//            List<DocumentDTO<MallProductDO>> mallProductList = new ArrayList<>();
 //            // 星范商品设值,【必须先于商品文档设值】
 //            Integer mallId = setMallProductDocument(mallProductList, productId);
             // 定义商品文档数据
@@ -238,7 +238,7 @@ public class SearchIndexServiceImpl implements SearchIndexService {
                     return updateProductIndexById(productId);
                 } else {
                     // 推送到阿里云
-                    pushProductDocument(mainList, productList, mallProductList);
+                    pushProductDocument(mainList, productList/*, mallProductList*/);
                     // 返回结果
                     return ResponseJson.success(mainList.size());
                 }
@@ -605,8 +605,8 @@ public class SearchIndexServiceImpl implements SearchIndexService {
             // 获取数据库商品列表的分页数据
             List<ProductDO> dbList = searchMapper.searchProductList();
 
-            // 定义星范商品数据
-            List<DocumentDTO<MallProductDO>> mallProductList = new ArrayList<>();
+//            // 定义星范商品数据
+//            List<DocumentDTO<MallProductDO>> mallProductList = new ArrayList<>();
             // 定义商品文档数据
             List<DocumentDTO<ProductDO>> productList = new ArrayList<>();
             // 定义主文档入口数据
@@ -640,7 +640,7 @@ public class SearchIndexServiceImpl implements SearchIndexService {
             }
             try {
                 // 推送到阿里云
-                pushProductDocument(mainList, productList, mallProductList);
+                pushProductDocument(mainList, productList/*, mallProductList*/);
                 // 添加到返回结果
                 productRecord += mainList.size();
             } catch (OpenSearchClientException | OpenSearchException | JSONException e) {
@@ -656,11 +656,11 @@ public class SearchIndexServiceImpl implements SearchIndexService {
      *
      * @param mainList        list
      * @param productList     list
-     * @param mallProductList list
+     * // @param mallProductList list
      * @throws OpenSearchClientException exp
      * @throws OpenSearchException       exp
      */
-    private void pushProductDocument(List<DocumentDTO<MainDO>> mainList, List<DocumentDTO<ProductDO>> productList, List<DocumentDTO<MallProductDO>> mallProductList) throws OpenSearchClientException, OpenSearchException {
+    private void pushProductDocument(List<DocumentDTO<MainDO>> mainList, List<DocumentDTO<ProductDO>> productList/*, List<DocumentDTO<MallProductDO>> mallProductList*/) throws OpenSearchClientException, OpenSearchException {
         if (mainList.size() > 0) {
             // 将主文档列表转换成Json串,并推送到阿里云
             String mainDocStr = new JSONArray(mainList).toString();
@@ -677,12 +677,12 @@ public class SearchIndexServiceImpl implements SearchIndexService {
             // 更新
             log.info(">>>>>>>>>>>>>>>update document: 【search_product(" + productList.size() + "个):" + productResult + "】");
         }
-        // 将星范商品推送到阿里云
-        if (mallProductList.size() > 0) {
-            String mallProductStr = new JSONArray(mallProductList).toString();
-            String mallProductResult = searchOpenService.pushDocument(mallProductStr, "search_product_mall");
-            log.info(">>>>>>>>>>>>>>>add document: 【search_product_mall(" + mallProductList.size() + "):" + mallProductResult + "】");
-        }
+//        // 将星范商品推送到阿里云
+//        if (mallProductList.size() > 0) {
+//            String mallProductStr = new JSONArray(mallProductList).toString();
+//            String mallProductResult = searchOpenService.pushDocument(mallProductStr, "search_product_mall");
+//            log.info(">>>>>>>>>>>>>>>add document: 【search_product_mall(" + mallProductList.size() + "):" + mallProductResult + "】");
+//        }
     }
 
     /**
@@ -1087,34 +1087,34 @@ public class SearchIndexServiceImpl implements SearchIndexService {
         return docsJsonArr.toString();
     }
 
-    /**
-     * 商品星范商品设值
-     *
-     * @param mallProductList list
-     * @param productId       int
-     */
-    private Integer setMallProductDocument(List<DocumentDTO<MallProductDO>> mallProductList, Integer productId) {
-        // 是否是星范商品
-        int mallCount = searchMapper.countMallProduct(productId);
-        if (mallCount >= 1) {
-            MallProductDO mallProduct = searchMapper.searchMallProductByProductId(productId);
-            // 是否有阶梯价
-            Integer mallLadderFlag = searchMapper.getMallLadderPriceFlag(productId);
-            if (mallLadderFlag == 1) {
-                // 阶梯价
-                Double mallLadderPrice = searchMapper.getMallLowerLadderPrice(productId);
-                mallProduct.setM_price(mallLadderPrice);
-            }
-            mallProduct.setM_all(1);
-            // 搜索星范商品数据
-            DocumentDTO<MallProductDO> mallProductDoc = new DocumentDTO<>();
-            mallProductDoc.setCmd("add");
-            mallProductDoc.setFields(mallProduct);
-            mallProductList.add(mallProductDoc);
-            return mallProduct.getM_id();
-        }
-        return 0;
-    }
+//    /**
+//     * 商品星范商品设值
+//     *
+//     * @param mallProductList list
+//     * @param productId       int
+//     */
+//    private Integer setMallProductDocument(List<DocumentDTO<MallProductDO>> mallProductList, Integer productId) {
+//        // 是否是星范商品
+//        int mallCount = searchMapper.countMallProduct(productId);
+//        if (mallCount >= 1) {
+//            MallProductDO mallProduct = searchMapper.searchMallProductByProductId(productId);
+//            // 是否有阶梯价
+//            Integer mallLadderFlag = searchMapper.getMallLadderPriceFlag(productId);
+//            if (mallLadderFlag == 1) {
+//                // 阶梯价
+//                Double mallLadderPrice = searchMapper.getMallLowerLadderPrice(productId);
+//                mallProduct.setM_price(mallLadderPrice);
+//            }
+//            mallProduct.setM_all(1);
+//            // 搜索星范商品数据
+//            DocumentDTO<MallProductDO> mallProductDoc = new DocumentDTO<>();
+//            mallProductDoc.setCmd("add");
+//            mallProductDoc.setFields(mallProduct);
+//            mallProductList.add(mallProductDoc);
+//            return mallProduct.getM_id();
+//        }
+//        return 0;
+//    }
 
     /**
      * 商品文档设值

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

@@ -129,6 +129,10 @@
         INSERT INTO cm_product_sales(productId, product, shop, productCount, property)
         VALUES (#{productId}, #{productName}, #{shopName}, #{productCount}, #{property})
     </insert>
+    <insert id="insertProductSalesRecord">
+        INSERT INTO cm_product_sales_record(productId, productCount, addTime)
+        VALUES (#{productId}, #{productCount}, NOW())
+    </insert>
     <update id="updateProductSales" parameterType="com.caimei365.commodity.model.vo.ProductSalesVo">
         UPDATE cm_product_sales
         SET product=#{productName},