Browse Source

Merge remote-tracking branch 'origin/developer' into developerC

chao 3 years ago
parent
commit
f0191529db

+ 1 - 0
src/main/java/com/caimei365/commodity/components/SearchOpenService.java

@@ -77,6 +77,7 @@ public class SearchOpenService {
      * @throws OpenSearchException       exp
      * @throws OpenSearchException       exp
      */
      */
     public JSONObject getResultJsonObject(String queryStr, SearchParams searchParams) throws OpenSearchClientException, OpenSearchException {
     public JSONObject getResultJsonObject(String queryStr, SearchParams searchParams) throws OpenSearchClientException, OpenSearchException {
+        log.info("【阿里云开放搜索】查询参数:"+ searchParams.toString());
         // 创建并构造OpenSearch对象
         // 创建并构造OpenSearch对象
         OpenSearch openSearch = new OpenSearch(accesskey, secret, host);
         OpenSearch openSearch = new OpenSearch(accesskey, secret, host);
         // 创建OpenSearchClient对象,并以OpenSearch对象作为构造参数
         // 创建OpenSearchClient对象,并以OpenSearch对象作为构造参数

+ 13 - 0
src/main/java/com/caimei365/commodity/controller/ProductPageApi.java

@@ -372,4 +372,17 @@ public class ProductPageApi {
         }
         }
         return pageService.getRechargeGoods(productId);
         return pageService.getRechargeGoods(productId);
     }
     }
+
+    /**
+     * 正品联盟商品详情
+     */
+    @ApiOperation("充值商品详情(旧:/product/auth/details)")
+    @ApiImplicitParam(required = false, name = "productId", value = "正品联盟商品Id")
+    @GetMapping("/auth/details")
+    public ResponseJson<AuthProductVo> getAuthProductDetails(Integer productId) {
+        if (null == productId) {
+            return ResponseJson.error("参数异常", null);
+        }
+        return pageService.getAuthProductDetails(productId);
+    }
 }
 }

+ 13 - 0
src/main/java/com/caimei365/commodity/mapper/PageMapper.java

@@ -2,6 +2,7 @@ package com.caimei365.commodity.mapper;
 
 
 import com.caimei365.commodity.model.po.ArchiveFilePo;
 import com.caimei365.commodity.model.po.ArchiveFilePo;
 import com.caimei365.commodity.model.po.ArchivePo;
 import com.caimei365.commodity.model.po.ArchivePo;
+import com.caimei365.commodity.model.po.BrandProductParamPo;
 import com.caimei365.commodity.model.search.ProductListVo;
 import com.caimei365.commodity.model.search.ProductListVo;
 import com.caimei365.commodity.model.vo.*;
 import com.caimei365.commodity.model.vo.*;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
@@ -316,4 +317,16 @@ public interface PageMapper {
      * 查询首页直播宣传图
      * 查询首页直播宣传图
      */
      */
     String getLiveAdvertisingImage();
     String getLiveAdvertisingImage();
+    /**
+     * 查询正品联盟商品详情
+     */
+    AuthProductVo getAuthProductByProductId(Integer productId);
+    /**
+     * 查询正品联盟声明文件
+     */
+    StatementFileVo getStatementFile(Integer authUserId, Integer brandId);
+    /**
+     * 查询正品联盟商品参数
+     */
+    List<BrandProductParamPo> getAuthProductParams(Integer productId);
 }
 }

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

@@ -248,5 +248,4 @@ public interface SearchMapper {
     List<Integer> findPromotion(List<Integer> productIds);
     List<Integer> findPromotion(List<Integer> productIds);
 
 
     List<Integer> findPromotionId(Integer p_id);
     List<Integer> findPromotionId(Integer p_id);
-
 }
 }

+ 22 - 0
src/main/java/com/caimei365/commodity/model/po/BrandProductParamPo.java

@@ -0,0 +1,22 @@
+package com.caimei365.commodity.model.po;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author Aslee
+ */
+@Data
+public class BrandProductParamPo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 商品参数名称
+     */
+    private String name;
+    /**
+     * 商品参数内容
+     */
+    private String content;
+}

+ 116 - 0
src/main/java/com/caimei365/commodity/model/vo/AuthProductVo.java

@@ -0,0 +1,116 @@
+package com.caimei365.commodity.model.vo;
+
+import com.caimei365.commodity.model.po.BrandProductParamPo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author Aslee
+ */
+@Data
+public class AuthProductVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 商品名称
+     */
+    private String productName;
+    /**
+     * 商品SN码
+     */
+    private String snCode;
+    /**
+     * 商品图片
+     */
+    private String productImage;
+    /**
+     * 供应商公众号二维码图片
+     */
+    private String qrCodeImage;
+    /**
+     * 授权牌照
+     */
+    private String certificateImage;
+    /**
+     * 品牌授权Id
+     */
+    private Integer authId;
+    /**
+     * 品牌授权logo
+     */
+    private String authLogo;
+    /**
+     * 品牌Id
+     */
+    private Integer brandId;
+    /**
+     * 品牌名称
+     */
+    private String brandName;
+    /**
+     * 产地
+     */
+    private String productionPlace;
+    /**
+     * 防伪链接
+     */
+    private String securityLink;
+    /**
+     * 供应商类型:1品牌方,2代理商
+     */
+    private Integer shopType;
+    /**
+     * 供应商名称
+     */
+    private String shopName;
+    /**
+     * 供应商用户id
+     */
+    private Integer authUserId;
+    /**
+     * 声明类型:1弹窗声明,2链接声明
+     */
+    private Integer statementType;
+    /**
+     * 声明弹窗内容
+     */
+    private String statementContent;
+    /**
+     * 声明链接
+     */
+    private String statementLink;
+    /**
+     * 声明图片
+     */
+    private String statementImage;
+    /**
+     * 声明文件
+     */
+    private StatementFileVo statementFile;
+    /**
+     * 被授权方
+     */
+    private String authParty;
+    /**
+     * 商品参数
+     */
+    private List<BrandProductParamPo> paramList;
+    /**
+     * pc商品图片(含水印)
+     */
+    private String pcImage;
+    /**
+     * 小程序商品图片(含水印)
+     */
+    private String appletsImage;
+    /**
+     * pc授权牌照图片(含水印)
+     */
+    private String pcCertificateImage;
+    /**
+     * 小程序授权牌照图片(含水印)
+     */
+    private String appletsCertificateImage;
+}

+ 45 - 0
src/main/java/com/caimei365/commodity/model/vo/StatementFileVo.java

@@ -0,0 +1,45 @@
+package com.caimei365.commodity.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author Aslee
+ */
+@Data
+public class StatementFileVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+    /**
+     * 对应cm_brand_auth表id
+     */
+    private Integer brandAuthId;
+
+    /**
+     * 声明文件名称
+     */
+    private String name;
+
+    /**
+     * oss存储名
+     */
+    private String ossName;
+
+    /**
+     * 文件唯一标识
+     */
+    private String md5Hex;
+
+    /**
+     * 上传时间
+     */
+    private Date uploadTime;
+
+    /**
+     * 访问声明文件链接
+     */
+    private String url;
+}

+ 7 - 0
src/main/java/com/caimei365/commodity/service/PageService.java

@@ -192,4 +192,11 @@ public interface PageService {
      * @param productId 商品id
      * @param productId 商品id
      */
      */
     ResponseJson<ProductDetailVo> getRechargeGoods(Integer productId);
     ResponseJson<ProductDetailVo> getRechargeGoods(Integer productId);
+
+    /**
+     * 正品联盟商品详情
+     * @param productId     正品联盟商品Id
+     * @return
+     */
+    ResponseJson<AuthProductVo> getAuthProductDetails(Integer productId);
 }
 }

+ 31 - 9
src/main/java/com/caimei365/commodity/service/impl/PageServiceImpl.java

@@ -106,7 +106,7 @@ public class PageServiceImpl implements PageService {
      */
      */
     @Override
     @Override
     @Cacheable(value = "insCommodityData", key = "#pageId+'-'+#userId+'-'+#source", unless = "#result == null")
     @Cacheable(value = "insCommodityData", key = "#pageId+'-'+#userId+'-'+#source", unless = "#result == null")
-    public ResponseJson<Map<String, Object>> getClassifyData(Integer pageId, Integer userId, Integer source,Integer flag) {
+    public ResponseJson<Map<String, Object>> getClassifyData(Integer pageId, Integer userId, Integer source, Integer flag) {
         source = source == null ? 1 : source;
         source = source == null ? 1 : source;
         Map<String, Object> map = new HashMap<>(3);
         Map<String, Object> map = new HashMap<>(3);
         Integer typeSort = pageMapper.getPageTypeSort(pageId);
         Integer typeSort = pageMapper.getPageTypeSort(pageId);
@@ -117,7 +117,7 @@ public class PageServiceImpl implements PageService {
             setFloorLinkType(floorContent);
             setFloorLinkType(floorContent);
             floor.setFloorContent(floorContent);
             floor.setFloorContent(floorContent);
             List<FloorImageVo> floorImageList = pageMapper.getFloorImageByCentreId(floor.getId(), source);
             List<FloorImageVo> floorImageList = pageMapper.getFloorImageByCentreId(floor.getId(), source);
-            setFloorImageProduct(userId, floorImageList, source,flag);
+            setFloorImageProduct(userId, floorImageList, source, flag);
             floor.setFloorImageList(floorImageList);
             floor.setFloorImageList(floorImageList);
         }
         }
         map.put("typeSort", typeSort);
         map.put("typeSort", typeSort);
@@ -134,7 +134,7 @@ public class PageServiceImpl implements PageService {
      */
      */
     @Cacheable(value = "getHomeCommodityData", key = "#userId +'-'+ #source", unless = "#result == null")
     @Cacheable(value = "getHomeCommodityData", key = "#userId +'-'+ #source", unless = "#result == null")
     @Override
     @Override
-    public ResponseJson<Map<String, Object>> getHomeData(Integer userId, Integer source,Integer flag) {
+    public ResponseJson<Map<String, Object>> getHomeData(Integer userId, Integer source, Integer flag) {
         Map<String, Object> map = new HashMap<>(2);
         Map<String, Object> map = new HashMap<>(2);
         //楼层管理
         //楼层管理
         source = source == null ? 1 : source;
         source = source == null ? 1 : source;
@@ -150,7 +150,7 @@ public class PageServiceImpl implements PageService {
                 floorIterator.remove();
                 floorIterator.remove();
                 continue;
                 continue;
             }
             }
-            setFloorImageProduct(userId, floorImageList, source,flag);
+            setFloorImageProduct(userId, floorImageList, source, flag);
             floor.setFloorImageList(floorImageList);
             floor.setFloorImageList(floorImageList);
         }
         }
         map.put("homePageFloor", homePageFloor);
         map.put("homePageFloor", homePageFloor);
@@ -352,7 +352,7 @@ public class PageServiceImpl implements PageService {
      */
      */
     @Cacheable(value = "getPageBeautyData", key = "#userId +'-'+ #pageId +'-'+ #source", unless = "#result == null")
     @Cacheable(value = "getPageBeautyData", key = "#userId +'-'+ #pageId +'-'+ #source", unless = "#result == null")
     @Override
     @Override
-    public ResponseJson<Map<String, Object>> getPageBeautyData(Integer pageId, Integer userId, Integer source,Integer flag) {
+    public ResponseJson<Map<String, Object>> getPageBeautyData(Integer pageId, Integer userId, Integer source, Integer flag) {
         if (pageId == null) {
         if (pageId == null) {
             return ResponseJson.error("参数异常: 页面id不能为空!", null);
             return ResponseJson.error("参数异常: 页面id不能为空!", null);
         }
         }
@@ -375,7 +375,7 @@ public class PageServiceImpl implements PageService {
             } else {
             } else {
                 setFloorLinkType(floorContent);
                 setFloorLinkType(floorContent);
                 List<FloorImageVo> floorImageList = pageMapper.getFloorImageByCentreId(floor.getId(), source);
                 List<FloorImageVo> floorImageList = pageMapper.getFloorImageByCentreId(floor.getId(), source);
-                setFloorImageProduct(userId, floorImageList, source,flag);
+                setFloorImageProduct(userId, floorImageList, source, flag);
                 floor.setFloorImageList(floorImageList);
                 floor.setFloorImageList(floorImageList);
                 String templateTypeStr = floorContent.getTemplateType();
                 String templateTypeStr = floorContent.getTemplateType();
                 if (StringUtils.isNotEmpty(templateTypeStr)) {
                 if (StringUtils.isNotEmpty(templateTypeStr)) {
@@ -634,7 +634,7 @@ public class PageServiceImpl implements PageService {
             double price = product.getPrice() != null ? product.getPrice() : 0d;
             double price = product.getPrice() != null ? product.getPrice() : 0d;
             double costPrice = product.getCostPrice() != null ? product.getCostPrice() : 0d;
             double costPrice = product.getCostPrice() != null ? product.getCostPrice() : 0d;
             double discountPrice = product.getDiscountPrice() != null ? product.getDiscountPrice() : 0d;
             double discountPrice = product.getDiscountPrice() != null ? product.getDiscountPrice() : 0d;
-            Integer costFlag = product.getCostCheckFlag();
+            Integer costFlag = product.getCostCheckFlag() != null ? product.getCostCheckFlag() : 1;
             // 成本大于等于复购价 或 复购价大于机构价
             // 成本大于等于复购价 或 复购价大于机构价
             boolean state = (costFlag == 1 && MathUtil.compare(costPrice, discountPrice) >= 0) || MathUtil.compare(discountPrice, price) > 0;
             boolean state = (costFlag == 1 && MathUtil.compare(costPrice, discountPrice) >= 0) || MathUtil.compare(discountPrice, price) > 0;
             product.setRepurchasePriceState(state);
             product.setRepurchasePriceState(state);
@@ -1145,13 +1145,13 @@ public class PageServiceImpl implements PageService {
     }
     }
 
 
     @Override
     @Override
-    public ResponseJson<Map<String, Object>> getSvipProductPage(Integer userId, Integer source, Integer pageNum, Integer pageSize,Integer flag) {
+    public ResponseJson<Map<String, Object>> getSvipProductPage(Integer userId, Integer source, Integer pageNum, Integer pageSize, Integer flag) {
         Map<String, Object> svipProductPageData = new HashMap<>(2);
         Map<String, Object> svipProductPageData = new HashMap<>(2);
         String adsImage = pageMapper.getSvipProductAdsImage(userId, source);
         String adsImage = pageMapper.getSvipProductAdsImage(userId, source);
         PageHelper.startPage(pageNum, pageSize);
         PageHelper.startPage(pageNum, pageSize);
         List<ProductItemVo> svipProductList = pageMapper.getSvipProductList();
         List<ProductItemVo> svipProductList = pageMapper.getSvipProductList();
         svipProductList.forEach(svipProduct -> {
         svipProductList.forEach(svipProduct -> {
-            priceUtilService.setProductDetails(userId, svipProduct,flag);
+            priceUtilService.setProductDetails(userId, svipProduct, flag);
             svipProduct.setImage(ImageUtils.getImageURL("product", svipProduct.getImage(), 0, domain));
             svipProduct.setImage(ImageUtils.getImageURL("product", svipProduct.getImage(), 0, domain));
         });
         });
         PaginationVo<ProductItemVo> svipProductPage = new PaginationVo<>(svipProductList);
         PaginationVo<ProductItemVo> svipProductPage = new PaginationVo<>(svipProductList);
@@ -1172,4 +1172,26 @@ public class PageServiceImpl implements PageService {
         product.setMainImage(ImageUtils.getImageURL("product", product.getMainImage(), 0, domain));
         product.setMainImage(ImageUtils.getImageURL("product", product.getMainImage(), 0, domain));
         return ResponseJson.success(product);
         return ResponseJson.success(product);
     }
     }
+
+    @Override
+    public ResponseJson<AuthProductVo> getAuthProductDetails(Integer productId) {
+        AuthProductVo authProduct = pageMapper.getAuthProductByProductId(productId);
+        if (null == authProduct) {
+            return ResponseJson.error("商品不存在", null);
+        }
+        // 代理声明文件
+        if (null != authProduct.getStatementType() && authProduct.getStatementType() == 4) {
+            StatementFileVo statementFile = pageMapper.getStatementFile(authProduct.getAuthUserId(), authProduct.getBrandId());
+            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+            // 设置URL过期时间为1个小时
+            Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000);
+            String url = ossClient.generatePresignedUrl(bucketName, active + "/authFile/" + statementFile.getOssName(), expiration).toString();
+            statementFile.setUrl(url);
+            ossClient.shutdown();
+            authProduct.setStatementFile(statementFile);
+        }
+        // 商品参数
+        authProduct.setParamList(pageMapper.getAuthProductParams(productId));
+        return ResponseJson.success(authProduct);
+    }
 }
 }

+ 74 - 30
src/main/java/com/caimei365/commodity/service/impl/SearchProductServiceImpl.java

@@ -67,31 +67,51 @@ public class SearchProductServiceImpl implements SearchProductService {
     public ResponseJson<String> queryProductByKeyword(String keyword, String brandIds, Integer identity, Integer newFlag, Integer promotionFlag,
     public ResponseJson<String> queryProductByKeyword(String keyword, String brandIds, Integer identity, Integer newFlag, Integer promotionFlag,
                                                       int pageNum, int pageSize, String sortField, Integer sortType) {
                                                       int pageNum, int pageSize, String sortField, Integer sortType) {
         String queryStr = "product:'" + keyword + "'";
         String queryStr = "product:'" + keyword + "'";
-        String filter = "";
         if (StringUtils.isEmpty(keyword)) {
         if (StringUtils.isEmpty(keyword)) {
             queryStr = "p_all:'1'";
             queryStr = "p_all:'1'";
         }
         }
+        List<String> filterList = new ArrayList<>();
+        if (newFlag == 1) {
+            Calendar c = Calendar.getInstance();
+            c.setTime(new Date());
+            c.add(Calendar.YEAR, -1);
+            String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
+            filterList.add("p_time > " + time);
+        }
+        if (promotionFlag == 1) {
+            filterList.add("p_promotions_id > 0");
+        }
         if (!StringUtils.isEmpty(brandIds)) {
         if (!StringUtils.isEmpty(brandIds)) {
+            StringBuffer brandBuilder = new StringBuffer();
             if (brandIds.contains(",")) {
             if (brandIds.contains(",")) {
                 String[] split = brandIds.split(",");
                 String[] split = brandIds.split(",");
                 for (int i = 0; i < split.length; i++) {
                 for (int i = 0; i < split.length; i++) {
-                    queryStr += " OR p_brand:'" + split[i] + "'";
+                    if (i == 0) {
+                        brandBuilder.append("p_brand_id=").append(split[i]);
+                    } else {
+                        brandBuilder.append(" OR p_brand_id=").append(split[i]);
+                    }
                 }
                 }
             } else {
             } else {
-                queryStr += " AND p_brand:'" + brandIds + "'";
+                brandBuilder.append("p_brand_id=").append(brandIds);
             }
             }
+            String brandFilter = brandBuilder.toString();
+            if (brandFilter.contains("OR")) {
+                brandFilter = "(" + brandFilter + ")";
+            }
+            filterList.add(brandFilter);
         }
         }
-        if (newFlag == 1) {
-//            p_time=20201105
-            Calendar c = Calendar.getInstance();
-            c.setTime(new Date());
-            c.add(Calendar.YEAR, -1);
-            String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
-            filter += "p_time > " + time;
-        }
-        if (promotionFlag == 1) {
-//            p_promotions_id > 0
-            filter += "AND p_promotions_id > 0";
+        String filter = "";
+        StringBuffer filterBuffer = new StringBuffer();
+        if (filterList.size() > 0) {
+            for (int i = 0; i < filterList.size(); i++) {
+                if (i == 0) {
+                    filterBuffer.append(filterList.get(i));
+                } else {
+                    filterBuffer.append(" AND ").append(filterList.get(i));
+                }
+            }
+            filter = "(" + filterBuffer.toString() + ")";
         }
         }
         // 阿里云搜索
         // 阿里云搜索
         ResponseJson<String> result = queryProduct(queryStr, filter, identity, pageNum, pageSize, sortField, sortType);
         ResponseJson<String> result = queryProduct(queryStr, filter, identity, pageNum, pageSize, sortField, sortType);
@@ -132,7 +152,6 @@ public class SearchProductServiceImpl implements SearchProductService {
             queryStr = "p_all:'1'";
             queryStr = "p_all:'1'";
         }
         }
         if (newFlag == 1) {
         if (newFlag == 1) {
-//            p_time=20201105
             Calendar c = Calendar.getInstance();
             Calendar c = Calendar.getInstance();
             c.setTime(new Date());
             c.setTime(new Date());
             c.add(Calendar.YEAR, -1);
             c.add(Calendar.YEAR, -1);
@@ -140,8 +159,11 @@ public class SearchProductServiceImpl implements SearchProductService {
             filter += "p_time > " + time;
             filter += "p_time > " + time;
         }
         }
         if (promotionFlag == 1) {
         if (promotionFlag == 1) {
-//            p_promotions_id > 0
-            filter += "AND p_promotions_id > 0";
+            if (newFlag == 1) {
+                filter += "AND p_promotions_id > 0";
+            } else {
+                filter += "p_promotions_id > 0";
+            }
         }
         }
         SearchParams searchParams = searchOpenService.getParams(queryStr, identity, filter);
         SearchParams searchParams = searchOpenService.getParams(queryStr, identity, filter);
         ResponseJson<Set<HashMap<String, Object>>> result = getBrandResult(searchParams, queryStr);
         ResponseJson<Set<HashMap<String, Object>>> result = getBrandResult(searchParams, queryStr);
@@ -193,7 +215,6 @@ public class SearchProductServiceImpl implements SearchProductService {
     @Override
     @Override
     public ResponseJson<String> queryProductByType(Integer id, Integer idType, String brandIds, Integer identity, Integer newFlag, Integer promotionFlag, int pageNum, int pageSize, String sortField, Integer sortType) {
     public ResponseJson<String> queryProductByType(Integer id, Integer idType, String brandIds, Integer identity, Integer newFlag, Integer promotionFlag, int pageNum, int pageSize, String sortField, Integer sortType) {
         String queryStr = "";
         String queryStr = "";
-        String filter = "";
         if (idType == 1) {
         if (idType == 1) {
             queryStr = "p_bigtype:'" + id + "'";
             queryStr = "p_bigtype:'" + id + "'";
         } else if (idType == 2) {
         } else if (idType == 2) {
@@ -208,29 +229,52 @@ public class SearchProductServiceImpl implements SearchProductService {
         if (requestSize > SEARCH_MAX_NUM) {
         if (requestSize > SEARCH_MAX_NUM) {
             requestPageSize = (int) Math.floor(SEARCH_MAX_NUM / pageSize) * pageSize;
             requestPageSize = (int) Math.floor(SEARCH_MAX_NUM / pageSize) * pageSize;
         }
         }
+        List<String> filterList = new ArrayList<>();
+        if (newFlag == 1) {
+            Calendar c = Calendar.getInstance();
+            c.setTime(new Date());
+            c.add(Calendar.YEAR, -1);
+            String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
+            filterList.add("p_time > " + time);
+        }
+        if (promotionFlag == 1) {
+            filterList.add("p_promotions_id > 0");
+        }
         if (!StringUtils.isEmpty(brandIds)) {
         if (!StringUtils.isEmpty(brandIds)) {
+            StringBuffer brandBuilder = new StringBuffer();
             if (brandIds.contains(",")) {
             if (brandIds.contains(",")) {
                 String[] split = brandIds.split(",");
                 String[] split = brandIds.split(",");
                 for (int i = 0; i < split.length; i++) {
                 for (int i = 0; i < split.length; i++) {
-                    queryStr += " OR p_brand:'" + split[i] + "'";
+                    if (i == 0) {
+                        brandBuilder.append("p_brand_id=").append(split[i]);
+                    } else {
+                        brandBuilder.append(" OR p_brand_id=").append(split[i]);
+                    }
                 }
                 }
             } else {
             } else {
-                queryStr += " AND p_brand:'" + brandIds + "'";
+                brandBuilder.append("p_brand_id=").append(brandIds);
             }
             }
+            String brandFilter = brandBuilder.toString();
+            if (brandFilter.contains("OR")) {
+                brandFilter = "(" + brandFilter + ")";
+            }
+            filterList.add(brandFilter);
         }
         }
-        if (newFlag == 1) {
-            Calendar c = Calendar.getInstance();
-            c.setTime(new Date());
-            c.add(Calendar.YEAR, -1);
-            String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
-            filter += "p_time > " + time;
-        }
-        if (promotionFlag == 1) {
-            filter += "AND p_promotions_id > 0";
+        String filter = "";
+        StringBuffer filterBuffer = new StringBuffer();
+        if (filterList.size() > 0) {
+            for (int i = 0; i < filterList.size(); i++) {
+                if (i == 0) {
+                    filterBuffer.append(filterList.get(i));
+                } else {
+                    filterBuffer.append(" AND ").append(filterList.get(i));
+                }
+            }
+            filter = "(" + filterBuffer.toString() + ")";
         }
         }
         SearchParams searchParams = searchOpenService.getScrollProductParams(queryStr, identity, requestPageSize, sortField, sortType);
         SearchParams searchParams = searchOpenService.getScrollProductParams(queryStr, identity, requestPageSize, sortField, sortType);
         String thisFilter = searchParams.getFilter();
         String thisFilter = searchParams.getFilter();
-        if (StringUtils.isNotEmpty(thisFilter)) {
+        if (StringUtils.isNotEmpty(String.valueOf(filter))) {
             thisFilter = thisFilter + " AND " + filter;
             thisFilter = thisFilter + " AND " + filter;
         }
         }
         searchParams.setFilter(thisFilter);
         searchParams.setFilter(thisFilter);

+ 3 - 3
src/main/java/com/caimei365/commodity/service/impl/SellerServiceImpl.java

@@ -119,9 +119,9 @@ public class SellerServiceImpl implements SellerService {
             productList.add(0, productItemVo);
             productList.add(0, productItemVo);
             Integer userIdentity = shopMapper.getUserIdentityById(userId);
             Integer userIdentity = shopMapper.getUserIdentityById(userId);
             // 如果非会员身份剔除会员可见商品
             // 如果非会员身份剔除会员可见商品
-            if(userIdentity!=null){
-                if (userIdentity == 0 || userIdentity == 1 || userIdentity == 5 || userIdentity == 6) {
-                    productList.removeIf(c->"1".equals(c.getVisibility()));
+            if (userIdentity != null) {
+                if (userIdentity == 0 || userIdentity == 4 || userIdentity == 6) {
+                    productList.removeIf(c -> "1".equals(c.getVisibility()));
                 }
                 }
             }
             }
             productList.forEach(product -> {
             productList.forEach(product -> {

+ 43 - 2
src/main/resources/mapper/PageMapper.xml

@@ -193,8 +193,7 @@
             p.priceFlag,
             p.priceFlag,
             p.price,
             p.price,
             p.costPrice,
             p.costPrice,
-            p.costCheckFlag,
-            p.shopID as shopId,
+            ifnull(p.costCheckFlag,1) as costCheckFlag,
             p.searchKey as keyword,
             p.searchKey as keyword,
             p.minBuyNumber as minBuyNumber,
             p.minBuyNumber as minBuyNumber,
             p.maxBuyNumber as maxBuyNumber,
             p.maxBuyNumber as maxBuyNumber,
@@ -643,5 +642,47 @@
     <select id="getLiveAdvertisingImage" resultType="java.lang.String">
     <select id="getLiveAdvertisingImage" resultType="java.lang.String">
         SELECT advertisingImage FROM new_page_live_advertising_image LIMIT 1;
         SELECT advertisingImage FROM new_page_live_advertising_image LIMIT 1;
     </select>
     </select>
+    <select id="getAuthProductByProductId" resultType="com.caimei365.commodity.model.vo.AuthProductVo">
+        select p.name  as productName,
+               p.snCode,
+               p.pcImage,
+               p.appletsImage,
+               p.pcCertificateImage,
+               p.appletsCertificateImage,
+               p.brandId,
+               b.authLogo,
+               b.name  as brandName,
+               c.name  as productionPlace,
+               a.id    as authId,
+               a.authParty,
+               u.authUserId as authUserId,
+               u.name  as shopName,
+               u.shopType,
+               u.qrCodeImage,
+               i.securityLink,
+               i.statementType,
+               i.statementContent,
+               i.statementLink,
+               i.statementImage
+        from cm_brand_auth_product p
+                 left join cm_brand_auth a on p.authId = a.id
+                 left join cm_brand_auth_user u on a.authUserId = u.authUserId
+                 left join cm_brand_auth_shop_info i on u.authUserId = i.authUserId and p.brandId = i.brandId
+                 left join cm_brand b on i.brandId = b.id
+                 left join country c on i.countryId = c.countryId
+        where p.id = #{productId} and u.status = 1 and a.status = 1 and p.status = 1 and a.auditStatus = 1 and p.auditStatus = 1
+    </select>
+    <select id="getStatementFile" resultType="com.caimei365.commodity.model.vo.StatementFileVo">
+        select name,ossName,md5Hex,uploadTime
+        from cm_brand_auth_file
+        where authUserId = #{authUserId}
+          and brandId = #{brandId}
+        limit 1
+    </select>
+    <select id="getAuthProductParams" resultType="com.caimei365.commodity.model.po.BrandProductParamPo">
+        select name, content
+        from cm_brand_product_param
+        where productId = #{productId}
+    </select>
 
 
 </mapper>
 </mapper>

+ 12 - 8
src/main/resources/mapper/SearchMapper.xml

@@ -38,7 +38,7 @@
         left join shop as sh on p.shopID = sh.shopID
         left join shop as sh on p.shopID = sh.shopID
     </sql>
     </sql>
     <select id="searchProductById" resultType="com.caimei365.commodity.model.search.ProductDO">
     <select id="searchProductById" resultType="com.caimei365.commodity.model.search.ProductDO">
-        select <include refid="Search_Product_List"/>, p.productCategory
+        select<include refid="Search_Product_List"/>, p.productCategory
         from product p
         from product p
         <include refid="Product_Joins"/>
         <include refid="Product_Joins"/>
         where p.validFlag in (2,3,9) and p.productCategory = 1
         where p.validFlag in (2,3,9) and p.productCategory = 1
@@ -428,7 +428,7 @@
         select id, userId, searchWord, searchDate, delFlag
         select id, userId, searchWord, searchDate, delFlag
         from user_search_history
         from user_search_history
         where userId = #{userId}
         where userId = #{userId}
-        order by id desc
+        order by searchDate desc
     </select>
     </select>
     <select id="getHistoryIdByWord" resultType="java.lang.Integer">
     <select id="getHistoryIdByWord" resultType="java.lang.Integer">
         select id
         select id
@@ -527,11 +527,15 @@
         and cp.delflag = 0
         and cp.delflag = 0
     </select>
     </select>
     <select id="findPromotionId" resultType="java.lang.Integer">
     <select id="findPromotionId" resultType="java.lang.Integer">
-        select cpp.promotionsId
-        from cm_promotions_product cpp
-        left join cm_promotions cp on cp.id=cpp.promotionsId
-        where cpp.productId = #{p_id}
-        and cp.endTime>now() or (cp.status='1')
-        and cp.delflag = 0
+        select pr.id
+        from cm_promotions pr
+                 left join cm_promotions_product prp on pr.id = prp.promotionsId
+        where (prp.productId = #{p_id} or
+               prp.supplierId = (select p.shopID from product p where p.productID = #{p_id})
+            )
+          and (pr.status = 1 or (pr.status = 2 and (NOW() between pr.beginTime and pr.endTime)))
+          and pr.delFlag not in (1, 2)
+        order by pr.type desc
+        limit 1
     </select>
     </select>
 </mapper>
 </mapper>