lyhzzz 2 éve
szülő
commit
57d2b85695

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

@@ -32,7 +32,8 @@ public enum ResultCode {
     MOVE_FOLDER_ERROR(8004,"移动文件夹错误"),
     DEL_SHOP_CATEGORY_ERROR(8004,"正在被使用,不能刪除。"),
 
-
+    PRODUCT_SOURCE_NOT_EXIST(9001,"对接系统店铺不存在"),
+    PRODUCT_SOURCE_NOT_DEL(9003,"店铺存在关联数据,不能删除。"),
     ;
 
     public int code;

+ 108 - 0
src/main/java/com/cdf/controller/back/ProductSourceController.java

@@ -0,0 +1,108 @@
+package com.cdf.controller.back;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.cdf.common.ResultCode;
+import com.cdf.common.ResultData;
+import com.cdf.entity.FdkkUser;
+import com.cdf.entity.ProductSource;
+import com.cdf.entity.SceneSource;
+import com.cdf.exception.BusinessException;
+import com.cdf.httpClient.client.FdkkClient;
+import com.cdf.httpClient.request.FdkkSceneListRequest;
+import com.cdf.request.BaseRequest;
+import com.cdf.request.ProductSourceAddParam;
+import com.cdf.request.ProductSourceListParam;
+import com.cdf.response.SceneSourceVo;
+import com.cdf.service.IProductSourceService;
+import com.cdf.service.ISceneSourceService;
+import com.cdf.service.impl.FdkkSceneService;
+import com.cdf.util.JwtUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+@RestController
+@RequestMapping("/back/productSource")
+public class ProductSourceController extends BaseLogController{
+
+    @Autowired
+    IProductSourceService productSourceService;
+    @Autowired
+    FdkkClient fdkkClient;
+    @Autowired
+    FdkkSceneService fdkkSceneService;
+    @Autowired
+    ISceneSourceService sceneSourceService;
+
+    /**
+     * 对接系统店铺来源下拉框
+     */
+    @PostMapping("/list")
+    public ResultData list(@RequestBody ProductSourceListParam param){
+        FdkkUser fdkkUser = fdkkSceneService.getFdkkUser(getToken());
+
+        LambdaQueryWrapper<ProductSource> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ProductSource::getRegion,fdkkUser.getRegion());
+
+        Page<ProductSource> page = productSourceService.page(new Page<>(param.getPageNum(), param.getPageSize()),wrapper);
+
+        HashMap<String,String> sceneTitleMap = fdkkSceneService.getSceneMap(getToken());
+
+        for (ProductSource record : page.getRecords()) {
+            List<SceneSource> sceneSources = sceneSourceService.getByProductSourceId(record.getId());
+            List<SceneSourceVo> voList = new ArrayList<>();
+            for (SceneSource sceneSource : sceneSources) {
+                SceneSourceVo sceneSourceVo = new SceneSourceVo();
+                sceneSourceVo.setSceneName(sceneTitleMap.get(sceneSource.getSceneNum()));
+                sceneSourceVo.setNum(sceneSource.getSceneNum());
+                voList.add(sceneSourceVo);
+
+            }
+            record.setSceneNumList(voList);
+        }
+        return ResultData.ok(page);
+    }
+
+    @GetMapping("allSceneList")
+    public Object allSceneList(){
+        String fdkkToken = fdkkSceneService.getFdkkToken(getToken());
+        FdkkSceneListRequest request = new FdkkSceneListRequest();
+        request.setPageNum(1);
+        request.setPageSize(1000);
+        return fdkkClient.getOnlySceneList(request, fdkkToken);
+    }
+
+    @PostMapping("/add")
+    public ResultData add(@RequestBody ProductSourceAddParam param){
+        FdkkUser fdkkUser = fdkkSceneService.getFdkkUser(getToken());
+        param.setRegion(fdkkUser.getRegion());
+        sceneSourceService.add(param);
+        return ResultData.ok();
+    }
+
+    @PostMapping("/update")
+    public ResultData update(@RequestBody ProductSourceAddParam param){
+        sceneSourceService.updateByParam(param);
+        return ResultData.ok();
+    }
+
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody ProductSourceAddParam param){
+        if(param.getId() == null){
+            throw new BusinessException(ResultCode.PARAM_MISS);
+        }
+        if(!productSourceService.checkDel(param.getId()) ){
+            throw new BusinessException(ResultCode.PRODUCT_SOURCE_NOT_DEL);
+        }
+
+        productSourceService.removeById(param.getId());
+        sceneSourceService.delByProductSourceId(param.getId());
+        return ResultData.ok();
+    }
+
+
+}

+ 5 - 1
src/main/java/com/cdf/entity/ProductSource.java

@@ -7,6 +7,9 @@ import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.time.LocalDateTime;
+import java.util.List;
+
+import com.cdf.response.SceneSourceVo;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -71,5 +74,6 @@ public class ProductSource implements Serializable {
     @TableField("update_time")
     private LocalDateTime updateTime;
 
-
+    @TableField(exist = false)
+    private List<SceneSourceVo> sceneNumList;
 }

+ 16 - 0
src/main/java/com/cdf/request/ProductSourceAddParam.java

@@ -0,0 +1,16 @@
+package com.cdf.request;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ProductSourceAddParam {
+    private Integer id;
+    private String cdfName;
+    private String cdfMchId;
+    private String cdfHost;
+    private String mchType;
+    private String region;
+    private List<String> sceneNumList;
+}

+ 9 - 0
src/main/java/com/cdf/request/ProductSourceListParam.java

@@ -0,0 +1,9 @@
+package com.cdf.request;
+
+import lombok.Data;
+
+@Data
+public class ProductSourceListParam extends BaseRequest{
+    private String region;
+    private Integer mchType;
+}

+ 9 - 0
src/main/java/com/cdf/response/SceneSourceVo.java

@@ -0,0 +1,9 @@
+package com.cdf.response;
+
+import lombok.Data;
+
+@Data
+public class SceneSourceVo {
+    private String sceneName;
+    private String num;
+}

+ 3 - 0
src/main/java/com/cdf/service/IHotRelationService.java

@@ -3,6 +3,8 @@ package com.cdf.service;
 import com.cdf.entity.HotRelation;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  *  服务类
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IHotRelationService extends IService<HotRelation> {
 
+    List<HotRelation> getByProductSourceId(Integer productSourceId);
 }

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

@@ -21,4 +21,6 @@ public interface IProductSourceService extends IService<ProductSource> {
     Object getBySource(CdfProductListRequest param,ProductSource productSource);
 
     ProductSource getByMchId(String mchId);
+
+    Boolean checkDel(Integer id);
 }

+ 3 - 0
src/main/java/com/cdf/service/ISceneSourceDataService.java

@@ -3,6 +3,8 @@ package com.cdf.service;
 import com.cdf.entity.SceneSourceData;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  *  服务类
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ISceneSourceDataService extends IService<SceneSourceData> {
 
+    List<SceneSourceData> getByProductSourceId(Integer productSourceId);
 }

+ 11 - 0
src/main/java/com/cdf/service/ISceneSourceService.java

@@ -3,6 +3,9 @@ package com.cdf.service;
 import com.cdf.entity.ProductSource;
 import com.cdf.entity.SceneSource;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.cdf.request.ProductSourceAddParam;
+
+import java.util.List;
 
 /**
  * <p>
@@ -15,4 +18,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
 public interface ISceneSourceService extends IService<SceneSource> {
 
     ProductSource getByNum(String num);
+
+    void add(ProductSourceAddParam param);
+
+    void updateByParam(ProductSourceAddParam param);
+
+    void delByProductSourceId(Integer productSourceId);
+
+    List<SceneSource> getByProductSourceId(Integer productSourceId);
 }

+ 29 - 0
src/main/java/com/cdf/service/impl/FdkkSceneService.java

@@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.HashMap;
 
 @Service
 @Slf4j
@@ -135,4 +136,32 @@ public class FdkkSceneService {
     public FdkkResponse allList(FdkkSceneListRequest param,String token) {
         return fdkkClient.getOnlySceneList(param, getFdkkToken(token));
     }
+
+    public HashMap<String, String> getSceneMap(String token) {
+        HashMap<String,String> sceneTitleMap = new HashMap<>();
+        String fdkkToken = this.getFdkkToken(token);
+        FdkkSceneListRequest request = new FdkkSceneListRequest();
+        request.setPageNum(1);
+        request.setPageSize(1000);
+        FdkkResponse fdkkResponse = fdkkClient.getOnlySceneList(request, fdkkToken);
+        if(fdkkResponse.getCode() !=0){
+            throw new BusinessException(fdkkResponse.getCode(), fdkkResponse.getMsg());
+        }
+        JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(fdkkResponse.getData()));
+        JSONArray list = jsonObject.getJSONArray("list");
+        for (Object o : list) {
+            JSONObject object = (JSONObject) o;
+            sceneTitleMap.put(object.getString("num"),object.getString("sceneName"));
+        }
+        return sceneTitleMap;
+    }
+
+    public FdkkUser getFdkkUser(String token) {
+        Integer userId = JwtUtil.getId(token);
+        User user = userService.getById(userId);
+        if(user == null || user.getFdkkUserId() == null){
+            throw new BusinessException(ResultCode.USER_NOT_EXIST);
+        }
+        return fdkkUserService.getById(user.getFdkkUserId());
+    }
 }

+ 9 - 0
src/main/java/com/cdf/service/impl/HotRelationServiceImpl.java

@@ -1,11 +1,14 @@
 package com.cdf.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.cdf.entity.HotRelation;
 import com.cdf.mapper.IHotRelationMapper;
 import com.cdf.service.IHotRelationService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +20,10 @@ import org.springframework.stereotype.Service;
 @Service
 public class HotRelationServiceImpl extends ServiceImpl<IHotRelationMapper, HotRelation> implements IHotRelationService {
 
+    @Override
+    public List<HotRelation> getByProductSourceId(Integer productSourceId) {
+        LambdaQueryWrapper<HotRelation> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(HotRelation::getProductSourceId,productSourceId);
+        return this.list(wrapper);
+    }
 }

+ 23 - 2
src/main/java/com/cdf/service/impl/ProductSourceServiceImpl.java

@@ -4,15 +4,17 @@ 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.HotRelation;
 import com.cdf.entity.ProductSource;
+import com.cdf.entity.SceneSourceData;
 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.IHotRelationService;
 import com.cdf.service.IProductSourceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.cdf.service.ISceneSourceService;
+import com.cdf.service.ISceneSourceDataService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -33,6 +35,11 @@ import java.util.List;
 @Service
 public class ProductSourceServiceImpl extends ServiceImpl<IProductSourceMapper, ProductSource> implements IProductSourceService {
 
+    @Autowired
+    ISceneSourceDataService sceneSourceDataService;
+    @Autowired
+    IHotRelationService hotRelationService;
+
     @Resource
     private CdfHKClient cdfHKClient;
     @Override
@@ -85,4 +92,18 @@ public class ProductSourceServiceImpl extends ServiceImpl<IProductSourceMapper,
         }
         return this.getById(1);
     }
+
+    @Override
+    public Boolean checkDel(Integer id) {
+        List<HotRelation> relations = hotRelationService.getByProductSourceId(id);
+        List<SceneSourceData> sceneDataList = sceneSourceDataService.getByProductSourceId(id);
+        if(relations == null && sceneDataList == null){
+            return true;
+        }
+        if(relations!=null && sceneDataList !=null &&
+                relations.size() <=0 && sceneDataList.size() <=0){
+            return true;
+        }
+        return false;
+    }
 }

+ 9 - 0
src/main/java/com/cdf/service/impl/SceneSourceDataServiceImpl.java

@@ -1,11 +1,14 @@
 package com.cdf.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.cdf.entity.SceneSourceData;
 import com.cdf.mapper.ISceneSourceDataMapper;
 import com.cdf.service.ISceneSourceDataService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +20,10 @@ import org.springframework.stereotype.Service;
 @Service
 public class SceneSourceDataServiceImpl extends ServiceImpl<ISceneSourceDataMapper, SceneSourceData> implements ISceneSourceDataService {
 
+    @Override
+    public List<SceneSourceData> getByProductSourceId(Integer productSourceId) {
+        LambdaQueryWrapper<SceneSourceData> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SceneSourceData::getProductSourceId,productSourceId);
+        return this.list(wrapper);
+    }
 }

+ 77 - 0
src/main/java/com/cdf/service/impl/SceneSourceServiceImpl.java

@@ -1,13 +1,20 @@
 package com.cdf.service.impl;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.cdf.entity.ProductHk;
+import java.time.LocalDateTime;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.cdf.common.ResultCode;
 import com.cdf.entity.ProductSource;
 import com.cdf.entity.SceneSource;
+import com.cdf.exception.BusinessException;
 import com.cdf.mapper.ISceneSourceMapper;
+import com.cdf.request.ProductSourceAddParam;
 import com.cdf.service.IProductSourceService;
 import com.cdf.service.ISceneSourceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -40,4 +47,74 @@ public class SceneSourceServiceImpl extends ServiceImpl<ISceneSourceMapper, Scen
         }
         return productSourceService.getById(list.get(0).getProductSourceId());
     }
+
+    @Override
+    public void add(ProductSourceAddParam param) {
+        if(StringUtils.isBlank(param.getCdfHost())  || StringUtils.isBlank(param.getCdfMchId())
+                || StringUtils.isBlank(param.getCdfName())){
+            throw new BusinessException(ResultCode.PARAM_MISS);
+        }
+        ProductSource productSource = new ProductSource();
+        BeanUtils.copyProperties(param,productSource);
+        productSourceService.save(productSource);
+        if(param.getSceneNumList() == null || param.getSceneNumList().size() <=0){
+            return;
+        }
+        for (String sceneNum : param.getSceneNumList()) {
+            SceneSource sceneSource = new SceneSource();
+            sceneSource.setSceneNum(sceneNum);
+            sceneSource.setProductSourceId(productSource.getId());
+            this.save(sceneSource);
+        }
+
+
+    }
+
+    @Override
+    public void updateByParam(ProductSourceAddParam param) {
+        if(param.getId() == null ){
+            throw new BusinessException(ResultCode.PARAM_MISS);
+        }
+        ProductSource productSource = productSourceService.getById(param.getId());
+        if(productSource == null){
+            throw new BusinessException(ResultCode.PRODUCT_SOURCE_NOT_EXIST);
+        }
+        if(StringUtils.isNotBlank(param.getCdfHost())){
+            productSource.setCdfHost(param.getCdfHost());
+        }
+        if(StringUtils.isNotBlank(param.getCdfMchId())){
+            productSource.setCdfMchId(param.getCdfMchId());
+        }
+        if(StringUtils.isNotBlank(param.getCdfName())){
+            productSource.setCdfName(param.getCdfName());
+        }
+        productSource.setUpdateTime(null);
+        productSourceService.updateById(productSource);
+
+        this.delByProductSourceId(param.getId());
+        if(param.getSceneNumList() == null || param.getSceneNumList().size() <=0){
+            return;
+        }
+        for (String sceneNum : param.getSceneNumList()) {
+            SceneSource sceneSource = new SceneSource();
+            sceneSource.setSceneNum(sceneNum);
+            sceneSource.setProductSourceId(productSource.getId());
+            this.save(sceneSource);
+        }
+
+    }
+
+    @Override
+    public void delByProductSourceId(Integer productSourceId) {
+        LambdaQueryWrapper<SceneSource> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SceneSource::getProductSourceId,productSourceId);
+        this.remove(wrapper);
+    }
+
+    @Override
+    public List<SceneSource> getByProductSourceId(Integer productSourceId) {
+        LambdaQueryWrapper<SceneSource> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SceneSource::getProductSourceId,productSourceId);
+        return this.list(wrapper);
+    }
 }