Prechádzať zdrojové kódy

Merge branch 'test'

lyhzzz 2 rokov pred
rodič
commit
fc3d4aa4f3

+ 24 - 1
README.md

@@ -18,7 +18,7 @@
 2,批量查询日统计
 ~~~~
 
-###**v2.0.1** 
+###**v2.0.0** 
 ~~~~
 1.h5获取店鋪列表根据分類Id    /api/getShopByCategory
     添加参数deptId  不传默认澳门  
@@ -29,4 +29,27 @@
 5页面统计 /api/point
     添加参数 deptId
 
+~~~~
+
+###**v2.0.1** 
+~~~~
+
+1.新增接口
+     添加热点时商品来源下拉框   GET  无参   /back/product/productSourceHK 
+     
+     h5获取商品详情_hk   GET 其他参数与澳门一致,新增参数  productSourceId         /api/hk/getProductInfo  
+     h5加入购物车_hk      GET 其他参数与澳门一致,新增参数  productSourceId        /api/hk/inCat
+     h5获取购物商品数量_hk  GET 其他参数与澳门一致,新增参数  productSourceId       /api/hk/getCatNum
+     
+2.添加参数 
+    保存热点    /service/scene/edit/tag/save
+    hotDataList 中添加参数 productSourceId  商品来源Id
+3.hot.json文件内容新增
+    productSource obj
+        id              商品来源Id
+        cdfName         来源名称
+        cdfMchId        店铺Id
+        cdfHost         来源域名
+        mchType         0,远程来源,1本地来源
+详见文档http://120.25.146.52:3090/project/81/interface/api/9452
 ~~~~

+ 5 - 1
src/main/java/com/cdf/common/ResultCode.java

@@ -19,6 +19,7 @@ public enum ResultCode {
 
     OLD_PASSWORD_ERROR(50001,"原密碼错误!"),
     OLD_NEW_PASSWORD_EQ(50002,"原密碼与新密碼一致无需更改!"),
+    HOT_PRODUCT_SOURCE_ERROR(50002,"热点商品来源不一致!"),
 
     NOT_DELETE_PARENT_DEPT(6001,"集团总部不可删除"),
     NOT_DELETE_DEPT_USER(6002,"请先删除专柜下用戶"),
@@ -29,7 +30,10 @@ public enum ResultCode {
     UPLOAD_FILE_TO_LONG(7003,"文件上传过大"),
 
     MOVE_FOLDER_ERROR(8004,"移动文件夹错误"),
-    DEL_SHOP_CATEGORY_ERROR(8004,"正在被使用,不能刪除。");
+    DEL_SHOP_CATEGORY_ERROR(8004,"正在被使用,不能刪除。"),
+
+
+    ;
 
     public int code;
     public String msg;

+ 74 - 0
src/main/java/com/cdf/controller/api/CdfHkProductApiController.java

@@ -0,0 +1,74 @@
+package com.cdf.controller.api;
+
+import com.alibaba.fastjson.JSONObject;
+import com.cdf.common.ResultCode;
+import com.cdf.common.ResultData;
+import com.cdf.entity.ProductSource;
+import com.cdf.exception.BusinessException;
+import com.cdf.httpClient.client.CdfClient;
+import com.cdf.httpClient.client.CdfHKClient;
+import com.cdf.httpClient.request.CdfInCatRequest;
+import com.cdf.httpClient.response.cdf.CdfProductVo;
+import com.cdf.service.IProductSourceService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+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 javax.annotation.Resource;
+
+@RestController
+@RequestMapping("/api")
+public class CdfHkProductApiController {
+
+    @Resource
+    private CdfHKClient cdfHKClient;
+    @Autowired
+    private IProductSourceService productSourceService;
+
+    @GetMapping("/getCatNum")
+    public ResultData getCatNum(@RequestParam(required = false) String AccessToken,
+                                @RequestParam(required = false,defaultValue = "1")Integer productSourceId){
+        ProductSource productSource = productSourceService.getById(productSourceId);
+        if(productSource == null|| productSource.getMchType() == 1){
+            throw new BusinessException(ResultCode.PARAM_MISS);
+        }
+        JSONObject catNum = cdfHKClient.getCatNum(productSource.getCdfHost(),productSource.getCdfMchId(),AccessToken);
+        return  ResultData.ok(catNum);
+    }
+
+    @GetMapping("/inCat")
+    public ResultData inCat(@RequestParam(required = false) String AccessToken,
+                            @RequestParam(required = false) String skuId,
+                            @RequestParam(required = false) Integer num,
+                            @RequestParam(required = false,defaultValue = "1")Integer productSourceId){
+        ProductSource productSource = productSourceService.getById(productSourceId);
+        if(productSource == null|| productSource.getMchType() == 1){
+            throw new BusinessException(ResultCode.PARAM_MISS);
+        }
+        JSONObject jsonObject = cdfHKClient.inCat(productSource.getCdfHost(),productSource.getCdfMchId(),AccessToken, new CdfInCatRequest(skuId, num));
+        if(jsonObject.get("success")!=null && !jsonObject.getBoolean("success")){
+            return ResultData.error(jsonObject.getString("msg"));
+        }
+        if(jsonObject.get("status")!=null ){
+            return ResultData.error(401,jsonObject.getString("msg"));
+        }
+        return ResultData.ok(jsonObject);
+    }
+
+    @GetMapping("/getProductInfo")
+    public ResultData getProductInfo(@RequestParam(required = false) String productId,
+                                     @RequestParam(required = false,defaultValue = "1")Integer productSourceId){
+        if(StringUtils.isBlank(productId)){
+            return ResultData.ok();
+        }
+        ProductSource productSource = productSourceService.getById(productSourceId);
+        if(productSource == null || productSource.getMchType() == 1){
+            throw new BusinessException(ResultCode.PARAM_MISS);
+        }
+        CdfProductVo productById = cdfHKClient.getProductById(productSource.getCdfHost(),productSource.getCdfMchId(),productId);
+        return ResultData.ok(productById);
+    }
+}

+ 48 - 48
src/main/java/com/cdf/controller/api/CdfProductApiController.java

@@ -1,48 +1,48 @@
-package com.cdf.controller.api;
-
-import com.alibaba.fastjson.JSONObject;
-import com.cdf.common.ResultData;
-import com.cdf.httpClient.client.CdfClient;
-import com.cdf.httpClient.request.CdfInCatRequest;
-import com.cdf.httpClient.response.cdf.CdfProductVo;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-
-@RestController
-@RequestMapping("/api")
-public class CdfProductApiController {
-
-    @Resource
-    private CdfClient cdfClient;
-
-    @GetMapping("/getCatNum")
-    public ResultData getCatNum(@RequestParam(required = false) String AccessToken){
-        JSONObject catNum = cdfClient.getCatNum(AccessToken);
-        return  ResultData.ok(catNum);
-    }
-
-    @GetMapping("/inCat")
-    public ResultData inCat(@RequestParam(required = false) String AccessToken,
-                            @RequestParam(required = false) String skuId,
-                            @RequestParam(required = false) Integer num){
-        JSONObject jsonObject = cdfClient.inCat(AccessToken, new CdfInCatRequest(skuId, num));
-        if(jsonObject.get("success")!=null && !jsonObject.getBoolean("success")){
-            return ResultData.error(jsonObject.getString("msg"));
-        }
-        if(jsonObject.get("status")!=null ){
-            return ResultData.error(401,jsonObject.getString("msg"));
-        }
-        return ResultData.ok(jsonObject);
-    }
-
-    @GetMapping("/getProductInfo")
-    public ResultData getProductInfo(@RequestParam(required = false) String productId){
-        if(StringUtils.isBlank(productId)){
-            return ResultData.ok();
-        }
-        CdfProductVo productById = cdfClient.getProductById(productId);
-        return ResultData.ok(productById);
-    }
-}
+//package com.cdf.controller.api;
+//
+//import com.alibaba.fastjson.JSONObject;
+//import com.cdf.common.ResultData;
+//import com.cdf.httpClient.client.CdfClient;
+//import com.cdf.httpClient.request.CdfInCatRequest;
+//import com.cdf.httpClient.response.cdf.CdfProductVo;
+//import org.apache.commons.lang3.StringUtils;
+//import org.springframework.web.bind.annotation.*;
+//
+//import javax.annotation.Resource;
+//
+//@RestController
+//@RequestMapping("/api")
+//public class CdfProductApiController {
+//
+//    @Resource
+//    private CdfClient cdfClient;
+//
+//    @GetMapping("/getCatNum")
+//    public ResultData getCatNum(@RequestParam(required = false) String AccessToken){
+//        JSONObject catNum = cdfClient.getCatNum(AccessToken);
+//        return  ResultData.ok(catNum);
+//    }
+//
+//    @GetMapping("/inCat")
+//    public ResultData inCat(@RequestParam(required = false) String AccessToken,
+//                            @RequestParam(required = false) String skuId,
+//                            @RequestParam(required = false) Integer num){
+//        JSONObject jsonObject = cdfClient.inCat(AccessToken, new CdfInCatRequest(skuId, num));
+//        if(jsonObject.get("success")!=null && !jsonObject.getBoolean("success")){
+//            return ResultData.error(jsonObject.getString("msg"));
+//        }
+//        if(jsonObject.get("status")!=null ){
+//            return ResultData.error(401,jsonObject.getString("msg"));
+//        }
+//        return ResultData.ok(jsonObject);
+//    }
+//
+//    @GetMapping("/getProductInfo")
+//    public ResultData getProductInfo(@RequestParam(required = false) String productId){
+//        if(StringUtils.isBlank(productId)){
+//            return ResultData.ok();
+//        }
+//        CdfProductVo productById = cdfClient.getProductById(productId);
+//        return ResultData.ok(productById);
+//    }
+//}

+ 9 - 25
src/main/java/com/cdf/controller/back/CdfProductController.java

@@ -4,13 +4,14 @@ import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.cdf.common.PageInfo;
 import com.cdf.common.ResultData;
+import com.cdf.entity.ProductSource;
 import com.cdf.exception.BusinessException;
 import com.cdf.httpClient.client.CdfClient;
 import com.cdf.httpClient.response.cdf.*;
+import com.cdf.service.IProductSourceService;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
@@ -21,29 +22,12 @@ import java.util.List;
 @RequestMapping("/back/product")
 public class CdfProductController {
 
-    @Resource
-    private CdfClient cdfClient;
+    @Autowired
+    IProductSourceService productSourceService;
 
-    @RequestMapping("/list")
+    @PostMapping("/list")
     public ResultData getProductList(@RequestBody CdfProductListRequest param){
-        if(StringUtils.isNotBlank(param.getKeyword()) && param.getKeyword().contains(",")){
-            if(param.getPageNum() >1){
-                PageInfo pageInfo = PageInfo.PageInfo(param.getPageIndex(), 20L, 0L, new ArrayList<>());
-                return  ResultData.ok(pageInfo);
-            }
-            JSONArray ids = new JSONArray();
-            ids.addAll(Arrays.asList(param.getKeyword().split(",")));
-            CdfProductListByIdsRequest idsRequest = new CdfProductListByIdsRequest(ids);
-            CdfProductListByIdsVo vos = cdfClient.getProductListByIds(idsRequest);
-            List<CdfProduct> productCardList = vos.getProductCardList();
-            PageInfo pageInfo = PageInfo.PageInfo(param.getPageIndex(), (long) productCardList.size(), (long) productCardList.size(), productCardList);
-            return ResultData.ok(pageInfo);
-        }
-        CdfProductListResponse productList = cdfClient.getProductList(param);
-        if(productList.getSearchResult().getType() == 4 ){
-            throw new BusinessException(productList.getSearchResult().getType(),productList.getSearchResult().getDesc());
-        }
-        PageInfo pageInfo = PageInfo.PageInfo(param.getPageIndex(), 20L, productList.getCount()*20, productList.getList());
-        return ResultData.ok(pageInfo);
+        ProductSource productSource = productSourceService.getById(1);
+        return ResultData.ok(productSourceService.getBySource(param,productSource));
     }
 }

+ 26 - 5
src/main/java/com/cdf/controller/back/HkProductController.java

@@ -2,15 +2,17 @@ package com.cdf.controller.back;
 
 import com.alibaba.fastjson.JSONArray;
 import com.cdf.common.PageInfo;
+import com.cdf.common.ResultCode;
 import com.cdf.common.ResultData;
+import com.cdf.entity.ProductSource;
 import com.cdf.exception.BusinessException;
 import com.cdf.httpClient.client.CdfClient;
 import com.cdf.httpClient.response.cdf.*;
 import com.cdf.service.IProductHkService;
+import com.cdf.service.IProductSourceService;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
@@ -21,15 +23,34 @@ import java.util.List;
 @RequestMapping("/back/product")
 public class HkProductController {
 
-    @Resource
+    @Autowired
     IProductHkService productHkService;
+    @Autowired
+    IProductSourceService productSourceService;
 
-    @RequestMapping("/HKList")
+
+    @PostMapping("/HKList")
     public ResultData getProductList(@RequestBody CdfProductListRequest param){
+        if(param.getProductSourceId() != null){
+            ProductSource productSource = productSourceService.getById(param.getProductSourceId());
+            if(productSource == null){
+                throw new BusinessException(ResultCode.PARAM_MISS);
+            }
+            if(productSource.getMchType() == 0){
+                return ResultData.ok(productSourceService.getBySource(param,productSource));
+            }
+        }
         if(StringUtils.isNotBlank(param.getKeyword()) && param.getKeyword().contains(",")){
             List<String> strings = Arrays.asList(param.getKeyword().split(","));
             param.setProductIds(strings);
         }
+
         return ResultData.ok(productHkService.pageList(param));
     }
+
+    @GetMapping("/productSourceHK")
+    public ResultData productSourceHK(){
+        List<ProductSource> list = productSourceService.getProductHk("HK");
+        return ResultData.ok(list);
+    }
 }

+ 4 - 1
src/main/java/com/cdf/controller/back/TestController.java

@@ -11,6 +11,7 @@ import com.cdf.common.ResultData;
 import com.cdf.entity.ProductHk;
 import com.cdf.entity.Shop;
 import com.cdf.httpClient.client.CdfClient;
+import com.cdf.httpClient.client.CdfHKClient;
 import com.cdf.httpClient.client.FdkkClient;
 import com.cdf.httpClient.request.FdkkAllSceneRequest;
 import com.cdf.httpClient.response.FdkkResponse;
@@ -46,6 +47,8 @@ public class TestController {
     IShopService shopService;
     @Resource
     CdfClient cdfClient;
+    @Resource
+    CdfHKClient cdfHKClient;
     @Autowired
     private ScheduleTask scheduleTask;
     @Resource
@@ -59,7 +62,7 @@ public class TestController {
 
     @RequestMapping("/test/getProductById")
     public ResultData getProductById(@RequestParam(required = false) String productId){
-        return ResultData.ok(cdfClient.getProductById(productId));
+        return ResultData.ok(cdfHKClient.getProductById("https://hk.cdfmembers.com","604163145",productId));
     }
 
     @RequestMapping("/test/getProductList")

+ 3 - 0
src/main/java/com/cdf/entity/HotRelation.java

@@ -40,6 +40,9 @@ public class HotRelation implements Serializable {
     @TableField("content")
     private String content;
 
+    @TableField("product_source_id")
+    private Integer productSourceId;
+
     @TableField("tb_status")
     @TableLogic
     private Boolean tbStatus;

+ 75 - 0
src/main/java/com/cdf/entity/ProductSource.java

@@ -0,0 +1,75 @@
+package com.cdf.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-01-31
+ */
+@Getter
+@Setter
+@TableName("t_product_source")
+public class ProductSource implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * cdf店铺表
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 店铺名称
+     */
+    @TableField("cdf_name")
+    private String cdfName;
+
+    /**
+     * cdf店铺Id
+     */
+    @TableField("cdf_mch_id")
+    private String cdfMchId;
+
+    /**
+     * cdf店铺访问域名
+     */
+    @TableField("cdf_host")
+    private String cdfHost;
+
+    /**
+     * 0远程店铺,1本地店铺
+     */
+    @TableField("mch_type")
+    private Integer mchType;
+
+    /**
+     * 所在地区
+     */
+    @TableField("region")
+    private String region;
+
+    @TableField("tb_status")
+    @TableLogic
+    private Integer tbStatus;
+
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+
+}

+ 3 - 3
src/main/java/com/cdf/generate/AutoGenerate.java

@@ -20,7 +20,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") ;
 
         generate(path,"", getTables(new String[]{
-                "t_total_data_hk"
+                "t_product_source"
         }));
 
 //        generate(path,"goods", getTables(new String[]{
@@ -48,8 +48,8 @@ public class AutoGenerate {
 
 
     public static void  generate(String path,String moduleName,  List<String> tables){
-        FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/cdf_gm",
-                "root","123456")
+        FastAutoGenerator.create("jdbc:mysql://18.156.200.112:3306/cdf_gm_test",
+                "root","4Dage@zhongmian#@168")
                 .globalConfig(builder -> {
                     builder.author("")               //作者
                             .outputDir(path+"\\src\\main\\java")    //输出路径(写到java目录)

+ 81 - 0
src/main/java/com/cdf/httpClient/client/CdfHKClient.java

@@ -0,0 +1,81 @@
+package com.cdf.httpClient.client;
+
+import com.alibaba.fastjson.JSONObject;
+import com.cdf.httpClient.request.CdfChannelclick;
+import com.cdf.httpClient.request.CdfInCatRequest;
+import com.cdf.httpClient.response.cdf.*;
+import com.dtflys.forest.annotation.Get;
+import com.dtflys.forest.annotation.JSONBody;
+import com.dtflys.forest.annotation.Post;
+import com.dtflys.forest.annotation.Var;
+
+public interface CdfHKClient {
+
+    /**
+     * 获取商品详情
+     * @Var("host")String host,@Var("mchId") String mchId,
+     */
+    @Get(url = "{host}/api/prod/sqdetail?productId=${productId}",
+        headers = {
+                "app-key: h5sqBuyer_{mchId}",
+                "app-version: 6.6.88",
+                "ymt-pars: appid=71&mchId={mchId}&language=zh_CN&format=json"
+        })
+    CdfProductVo getProductById(@Var("host")String host,@Var("mchId") String mchId,@Var("productId") String productId);
+    /**
+     * 根据关键字搜索商品列表
+     */
+    @Post(url = "{host}/api/nodesearch/sqsearch",
+        headers = {
+                "app-key: h5sqBuyer_{mchId}",
+                "app-version: 6.6.88",
+                "ymt-pars: appid=71&mchId={mchId}&language=zh_CN&format=json"
+
+        })
+    CdfProductListResponse getProductList(@Var("host")String host,@Var("mchId") String mchId,@JSONBody CdfProductListRequest param);
+    /**
+     * 批量查询商品详情
+     */
+    @Post(url = "{host}/api/prod/getsqproductcardlistbyids",
+        headers = {
+                "app-key: h5sqBuyer_{mchId}",
+                "app-version: 6.6.88",
+                "ymt-pars: appid=71&mchId={mchId}&language=zh_CN&format=json"
+
+        })
+    CdfProductListByIdsVo getProductListByIds(@Var("host")String host,@Var("mchId") String mchId,@JSONBody CdfProductListByIdsRequest param);
+    /**
+     * 查询购物车数量
+     */
+    @Get(url = "{host}/api/trading/sqscartprodnum",
+        headers = {
+                "app-key: h5sqBuyer_{mchId}",
+                "app-version: 6.6.88",
+                "ymt-pars: appid=71&accesstoken={accessToken}&mchId={mchId}&language=zh_CN&format=json",
+        })
+    JSONObject getCatNum(@Var("host")String host,@Var("mchId") String mchId,@Var("accessToken") String accessToken);
+    /**
+     * 加入购物车
+     */
+    @Post(url = "{host}/api/trading/sqscartprod",
+        headers = {
+                "app-key: h5sqBuyer_{mchId}",
+                "app-version: 6.6.88",
+                "ymt-pars: appid=71&accesstoken={accessToken}&mchId={mchId}&language=zh_CN&format=json",
+        })
+    JSONObject inCat(@Var("host")String host,@Var("mchId") String mchId,@Var("accessToken") String accessToken, @JSONBody CdfInCatRequest request);
+    /**
+     * 上报商品来源
+     * 1,用戶点击进入商品详情时
+     * 2,用戶点击加入购物车时
+     * 3,用戶点击加入收藏时
+     */
+    @Post(url = "{host}/api/prodextra/channelclick",
+        headers = {
+                "app-key: h5sqBuyer_{mchId}",
+                "app-version: 6.6.88",
+                "cookieid: {cookieId}",
+                "ymt-pars: appid=71&accesstoken={accessToken}&userid={userId}&mchId={mchId}&language=zh_CN&format=json",
+        })
+    JSONObject channelclick(@Var("host")String host,@Var("mchId") String mchId,@Var("cookieId") String cookieId, @Var("accessToken") String accessToken, @Var("userId")String userId, @JSONBody CdfChannelclick request);
+}

+ 3 - 0
src/main/java/com/cdf/httpClient/request/FdkkHotData.java

@@ -1,5 +1,6 @@
 package com.cdf.httpClient.request;
 
+import com.cdf.entity.ProductSource;
 import lombok.Data;
 
 import java.util.List;
@@ -12,4 +13,6 @@ public class FdkkHotData {
     private Integer hotType;
     private List<String> relationIds;
     private String hotContent;
+
+    private Integer productSourceId;
 }

+ 3 - 0
src/main/java/com/cdf/httpClient/response/cdf/CdfProduct.java

@@ -1,5 +1,6 @@
 package com.cdf.httpClient.response.cdf;
 
+import com.cdf.entity.ProductSource;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -16,4 +17,6 @@ public class CdfProduct implements Serializable {
     private Integer stock;  //库存数量
 
     private String url; //香港详情链接
+
+    private ProductSource productSource ;
 }

+ 2 - 0
src/main/java/com/cdf/httpClient/response/cdf/CdfProductListRequest.java

@@ -18,6 +18,8 @@ public class CdfProductListRequest {
 
     private String language = "eshop_cn";
 
+    private Integer productSourceId = 5;
+
 
     public String getKeyword() {
         return keyword;

+ 18 - 0
src/main/java/com/cdf/mapper/IProductSourceMapper.java

@@ -0,0 +1,18 @@
+package com.cdf.mapper;
+
+import com.cdf.entity.ProductSource;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-01-31
+ */
+@Mapper
+public interface IProductSourceMapper extends BaseMapper<ProductSource> {
+
+}

+ 22 - 0
src/main/java/com/cdf/service/IProductSourceService.java

@@ -0,0 +1,22 @@
+package com.cdf.service;
+
+import com.cdf.entity.ProductSource;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.cdf.httpClient.response.cdf.CdfProductListRequest;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-01-31
+ */
+public interface IProductSourceService extends IService<ProductSource> {
+
+    List<ProductSource> getProductHk(String type);
+
+    Object getBySource(CdfProductListRequest param,ProductSource productSource);
+}

+ 47 - 16
src/main/java/com/cdf/service/impl/FdkkSceneEditService.java

@@ -8,8 +8,10 @@ import com.cdf.common.ResultCode;
 import com.cdf.entity.HotRelation;
 import com.cdf.entity.NumRegion;
 import com.cdf.entity.ProductHk;
+import com.cdf.entity.ProductSource;
 import com.cdf.exception.BusinessException;
 import com.cdf.httpClient.client.CdfClient;
+import com.cdf.httpClient.client.CdfHKClient;
 import com.cdf.httpClient.client.FdkkClient;
 import com.cdf.httpClient.request.FdkkHotData;
 import com.cdf.httpClient.request.FdkkHotRequest;
@@ -20,6 +22,7 @@ import com.cdf.httpClient.response.cdf.*;
 import com.cdf.service.IFdkkUserService;
 import com.cdf.service.IHotRelationService;
 import com.cdf.service.IProductHkService;
+import com.cdf.service.IProductSourceService;
 import com.cdf.util.*;
 import com.google.zxing.client.j2se.MatrixToImageWriter;
 import com.google.zxing.common.BitMatrix;
@@ -37,6 +40,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.IOException;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 @Slf4j
@@ -58,7 +62,7 @@ public class FdkkSceneEditService {
     @Resource
     private FdkkClient fdkkClient;
     @Resource
-    private CdfClient cdfClient;
+    private CdfHKClient cdfHKClient;
     @Autowired
     private IHotRelationService hotRelationService;
     @Autowired
@@ -69,6 +73,8 @@ public class FdkkSceneEditService {
     IProductHkService productHkService;
     @Autowired
     IFdkkUserService fdkkUserService;
+    @Autowired
+    IProductSourceService productSourceService;
 
 
     public JSONObject getAuth(String num, String token) {
@@ -104,6 +110,10 @@ public class FdkkSceneEditService {
             if(hotRelation == null){
                  hotRelation = new HotRelation();
                  update = false;
+            }else {
+                if(!hotRelation.getProductSourceId().equals(fdkkHotData.getProductSourceId())){
+                    throw new BusinessException(ResultCode.HOT_PRODUCT_SOURCE_ERROR);
+                }
             }
             hotRelation.setHotId(sid);
             hotRelation.setHotType(type);
@@ -114,6 +124,7 @@ public class FdkkSceneEditService {
             }
             hotRelation.setNum(fdkkHotRequest.getNum());
             hotRelation.setContent(fdkkHotData.getHotContent());
+            hotRelation.setProductSourceId(fdkkHotData.getProductSourceId());
             if(update){
                 hotRelationService.updateById(hotRelation);
             }else {
@@ -269,6 +280,7 @@ public class FdkkSceneEditService {
 
         List<String> sidsList = new ArrayList<>();
         HashMap<String,HotRelation> hotRelationMap = new HashMap<>();
+        HashMap<Integer,ProductSource> productSourceMap = new HashMap<>();
         for (Object obj : tags) {
             JSONObject tag = (JSONObject) obj;
             String sid = tag.getString("sid");
@@ -278,6 +290,12 @@ public class FdkkSceneEditService {
         for (HotRelation hotRelation : hotRelations) {
             hotRelationMap.put(hotRelation.getHotId(),hotRelation);
         }
+        Set<Integer> productSourceIds = hotRelations.stream().map(HotRelation::getProductSourceId).collect(Collectors.toSet());
+        List<ProductSource> productSources = productSourceService.listByIds(productSourceIds);
+        for (ProductSource productSource : productSources) {
+            productSourceMap.put(productSource.getId(),productSource);
+        }
+
         for (Object obj : tags) {
             JSONObject tag = (JSONObject) obj;
             String sid = tag.getString("sid");
@@ -302,6 +320,9 @@ public class FdkkSceneEditService {
             if(jsonArray == null || jsonArray.size() <=0){
                 continue;
             }
+            if(hotRelation.getProductSourceId() != null){
+                tag.put("productSource",productSourceMap.get(hotRelation.getProductSourceId()));
+            }
             resultMap.put(sid,jsonArray);
             requestArray.addAll(jsonArray);
         }
@@ -309,35 +330,45 @@ public class FdkkSceneEditService {
             return tags;
         }
 
-        if(pType.equals("AM")){
-            CdfProductListByIdsRequest param = new CdfProductListByIdsRequest(requestArray);
-            CdfProductListByIdsVo vos = cdfClient.getProductListByIds(param);
-            if(vos.getProductCardList()!=null && vos.getProductCardList().size() >0){
-                for (CdfProduct cdfProduct : vos.getProductCardList()) {
-                    productMap.put(cdfProduct.getId(),cdfProduct);
+        for (ProductSource productSource : productSources) {
+            if(productSource.getMchType() == 1){
+                List<ProductHk> list = productHkService.getListByIds(requestArray);
+                List<CdfProduct> convert = productHkService.convert(list, language);
+                for (CdfProduct cdfProduct : convert) {
+                    productMap.put(productSource.getId() + "_"+ cdfProduct.getId(),cdfProduct);
                 }
             }
-        }
-        if(pType.equals("HK")){
-            List<ProductHk> list = productHkService.getListByIds(requestArray);
-            List<CdfProduct> convert = productHkService.convert(list, language);
-            for (CdfProduct cdfProduct : convert) {
-                productMap.put(cdfProduct.getId(),cdfProduct);
+            if(productSource.getMchType() == 0){
+                CdfProductListByIdsRequest param = new CdfProductListByIdsRequest(requestArray);
+                CdfProductListByIdsVo vos = cdfHKClient.getProductListByIds(productSource.getCdfHost(),productSource.getCdfMchId(),param);
+                if(vos.getProductCardList()!=null && vos.getProductCardList().size() >0){
+                    for (CdfProduct cdfProduct : vos.getProductCardList()) {
+                        productMap.put(productSource.getId() + "_"+ cdfProduct.getId(),cdfProduct);
+                    }
+                }
             }
+
         }
 
         for (Object obj : tags) {
             JSONObject tag = (JSONObject) obj;
             String sid = tag.getString("sid");
+            JSONObject productSource = tag.getJSONObject("productSource");
+            String keyPre = "";
+            if(productSource != null){
+                Integer id = productSource.getInteger("id");
+                keyPre = id +"_";
+            }
+
             JSONArray jsonArray = resultMap.get(sid);
             if(jsonArray==null || jsonArray.size()<=0){
                 continue;
             }
             List<CdfProduct> cdfProductList = new ArrayList<>();
             for (Object o : jsonArray) {
-                String key = o.toString();
-                if(productMap.get(key)!=null){
-                    cdfProductList.add(productMap.get(key));
+                String key = keyPre + o.toString();
+                if(productMap.get( key)!=null){
+                    cdfProductList.add(productMap.get( key));
                 }
             }
             if(cdfProductList.size() >0){

+ 10 - 0
src/main/java/com/cdf/service/impl/ProductHkServiceImpl.java

@@ -6,12 +6,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.cdf.common.HKLanguage;
 import com.cdf.common.PageInfo;
 import com.cdf.entity.ProductHk;
+import com.cdf.entity.ProductSource;
 import com.cdf.httpClient.response.cdf.CdfProduct;
 import com.cdf.httpClient.response.cdf.CdfProductListRequest;
 import com.cdf.mapper.IProductHkMapper;
 import com.cdf.service.IProductHkService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.cdf.service.IProductSourceService;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -28,6 +31,9 @@ import java.util.List;
 @Service
 public class ProductHkServiceImpl extends ServiceImpl<IProductHkMapper, ProductHk> implements IProductHkService {
 
+    @Autowired
+    IProductSourceService productSourceService;
+
     @Override
     public Object pageList(CdfProductListRequest param) {
         LambdaQueryWrapper<ProductHk> wrapper = new LambdaQueryWrapper<>();
@@ -44,6 +50,10 @@ public class ProductHkServiceImpl extends ServiceImpl<IProductHkMapper, ProductH
         wrapper.orderByDesc(ProductHk::getCreateTime);
         Page<ProductHk> page = this.page(new Page<>(param.getPageNum(), 20L), wrapper);
         List<CdfProduct> voList =  this.convert(page.getRecords(),param.getLanguage());
+        ProductSource productSource = productSourceService.getById(5);
+        for (CdfProduct cdfProduct : voList) {
+            cdfProduct.setProductSource(productSource);
+        }
         Page<CdfProduct>  pageVo = new Page<>(param.getPageNum(),20L);
         pageVo.setTotal(page.getTotal());
         pageVo.setRecords(voList);

+ 72 - 0
src/main/java/com/cdf/service/impl/ProductSourceServiceImpl.java

@@ -0,0 +1,72 @@
+package com.cdf.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.cdf.common.PageInfo;
+import com.cdf.common.ResultData;
+import com.cdf.entity.ProductSource;
+import com.cdf.exception.BusinessException;
+import com.cdf.httpClient.client.CdfClient;
+import com.cdf.httpClient.client.CdfHKClient;
+import com.cdf.httpClient.response.cdf.*;
+import com.cdf.mapper.IProductSourceMapper;
+import com.cdf.service.IProductSourceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-01-31
+ */
+@Service
+public class ProductSourceServiceImpl extends ServiceImpl<IProductSourceMapper, ProductSource> implements IProductSourceService {
+
+    @Resource
+    private CdfHKClient cdfHKClient;
+    @Override
+    public List<ProductSource> getProductHk(String type) {
+        LambdaQueryWrapper<ProductSource> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ProductSource::getRegion,"HK");
+        return this.list(wrapper);
+    }
+
+    @Override
+    public Object getBySource(CdfProductListRequest param,ProductSource productSource) {
+        if(StringUtils.isNotBlank(param.getKeyword()) && param.getKeyword().contains(",")){
+            if(param.getPageNum() >1){
+                PageInfo pageInfo = PageInfo.PageInfo(param.getPageIndex(), 20L, 0L, new ArrayList<>());
+                return  ResultData.ok(pageInfo);
+            }
+            JSONArray ids = new JSONArray();
+            ids.addAll(Arrays.asList(param.getKeyword().split(",")));
+            CdfProductListByIdsRequest idsRequest = new CdfProductListByIdsRequest(ids);
+            CdfProductListByIdsVo vos = cdfHKClient.getProductListByIds(productSource.getCdfHost(),productSource.getCdfMchId(),idsRequest);
+            List<CdfProduct> productCardList = vos.getProductCardList();
+            for (CdfProduct cdfProduct : productCardList) {
+                cdfProduct.setProductSource(productSource);
+            }
+            PageInfo pageInfo = PageInfo.PageInfo(param.getPageIndex(), (long) productCardList.size(), (long) productCardList.size(), productCardList);
+            return ResultData.ok(pageInfo);
+        }
+        CdfProductListResponse productList = cdfHKClient.getProductList(productSource.getCdfHost(),productSource.getCdfMchId(),param);
+        if(productList.getSearchResult().getType() == 4 ){
+            throw new BusinessException(productList.getSearchResult().getType(),productList.getSearchResult().getDesc());
+        }
+        List<CdfProduct> list = productList.getList();
+        for (CdfProduct cdfProduct : list) {
+            cdfProduct.setProductSource(productSource);
+        }
+        PageInfo pageInfo = PageInfo.PageInfo(param.getPageIndex(), 20L, productList.getCount()*20, productList.getList());
+        return pageInfo;
+    }
+}

+ 5 - 0
src/main/resources/mapper/ProductSourceMapper.xml

@@ -0,0 +1,5 @@
+<?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.cdf.mapper.IProductSourceMapper">
+
+</mapper>