yumeng 2 years ago
parent
commit
76974f4136

+ 54 - 26
ruixuan-live/src/main/java/com/ruixuan/isc/controller/KuaishouItemCollectSamplesController.java

@@ -4,7 +4,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -16,9 +15,7 @@ import com.kuaidi100.sdk.core.IBaseClient;
 import com.kuaidi100.sdk.request.SubscribeParam;
 import com.kuaidi100.sdk.request.SubscribeParameters;
 import com.kuaidi100.sdk.request.SubscribeReq;
-import com.kuaidi100.sdk.response.SubscribePushParamResp;
 import com.kuaidi100.sdk.response.SubscribeResp;
-import com.kuaidi100.sdk.utils.SignUtils;
 import com.ruixuan.common.annotation.Log;
 import com.ruixuan.common.core.controller.BaseController;
 import com.ruixuan.common.core.domain.AjaxResult;
@@ -26,11 +23,14 @@ import com.ruixuan.common.core.domain.entity.SysUser;
 import com.ruixuan.common.core.page.TableDataInfo;
 import com.ruixuan.common.enums.BusinessType;
 import com.ruixuan.common.utils.Check;
+import com.ruixuan.isc.entity.KuaishouItemCollectSampleExpress;
 import com.ruixuan.isc.entity.KuaishouItemCollectSamples;
+import com.ruixuan.isc.enums.CompanyEnum;
 import com.ruixuan.isc.service.IKuaishouItemCollectSamplesService;
 import com.ruixuan.system.service.ISysDeptService;
 import com.ruixuan.system.service.ISysRoleService;
 import com.ruixuan.system.service.ISysUserService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -50,6 +50,7 @@ import org.springframework.web.bind.annotation.RestController;
  * @date 2023-02-08
  */
 @RestController
+@Slf4j
 @RequestMapping("/itemCollectSamples")
 public class KuaishouItemCollectSamplesController extends BaseController {
     @Autowired
@@ -107,10 +108,6 @@ public class KuaishouItemCollectSamplesController extends BaseController {
     }
 
 
-
-
-
-
     /**
      * 领样预览
      */
@@ -174,6 +171,13 @@ public class KuaishouItemCollectSamplesController extends BaseController {
         return returnJson;
     }
 
+
+    @GetMapping("/getCompany")
+    public List<JSONObject> getCompany() {
+        return CompanyEnum.companyList();
+    }
+
+
     /**
      * 修改【请填写功能名称】
      */
@@ -213,7 +217,7 @@ public class KuaishouItemCollectSamplesController extends BaseController {
                 kuaishouItemCollectSamples.setCollectSampleStatus(4);
                 kuaishouItemCollectSamples.setCollectSampleDesc("商品已发货");
                 // 调用快递接口
-                kuaishouItemCollectSamplesService.subscribe(id,courierNumber);
+                kuaishouItemCollectSamplesService.subscribe(id, courierNumber, kuaishouItemCollectSamples.getCompanyCode());
             }
             String taskFileUrl = kuaishouItemCollectSamples.getTaskFileUrl();
             if (Check.isNull(taskFileUrl)) { // 作业上传成功
@@ -232,9 +236,8 @@ public class KuaishouItemCollectSamplesController extends BaseController {
     }
 
 
-
     @PutMapping("/testSubscribe")
-    public JSONObject testSubscribe(String phone,String courierNumber) {
+    public JSONObject testSubscribe(String phone, String courierNumber) {
         JSONObject returnJson = new JSONObject();
         try {
             SubscribeParameters subscribeParameters = new SubscribeParameters();
@@ -249,6 +252,9 @@ public class KuaishouItemCollectSamplesController extends BaseController {
             subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA);
             subscribeReq.setParam(new Gson().toJson(subscribeParam));
             IBaseClient subscribe = new Subscribe();
+
+            JSONObject jsonObject = JSONObject.parseObject(subscribe.execute(subscribeReq).getBody());
+            System.err.println(jsonObject);
             System.out.println(subscribe.execute(subscribeReq));
             returnJson.put("code", 0);
             returnJson.put("message", "调用成功");
@@ -260,26 +266,48 @@ public class KuaishouItemCollectSamplesController extends BaseController {
     }
 
 
-
     @PostMapping("/callback")
-    public SubscribeResp callback(HttpServletRequest request){
-        String param = request.getParameter("param");
-        System.err.println("快递回调数据:" + param);
-
-        //建议记录一下这个回调的内容,方便出问题后双方排查问题
-        //log.debug("快递100订阅推送回调结果|{}|{}",param,sign);
-        //订阅时传的salt,没有可以忽略
-
+    public SubscribeResp callback(HttpServletRequest request) {
         SubscribeResp subscribeResp = new SubscribeResp();
-        subscribeResp.setResult(Boolean.TRUE);
-        subscribeResp.setReturnCode("200");
-        subscribeResp.setMessage("成功");
-        //加密如果相等,属于快递100推送;否则可以忽略掉当前请求
-
-            //TODO 业务处理
-         //   SubscribePushParamResp subscribePushParamResp = new Gson().fromJson(param, SubscribePushParamResp.class);
 
+        try {
+            String param = request.getParameter("param");
+            log.info("快递回调信息:{}", param);
+            JSONObject paramJson = JSONObject.parseObject(param);
+            if (Check.isNull(paramJson)) {
+                throw new Exception("回调信息为空");
+            }
+            JSONObject lastResult = paramJson.getJSONObject("lastResult");
+            if (!Check.isNull(lastResult)) {
+                String state = lastResult.getString("state");
+                String nu = lastResult.getString("nu");
+                String com = lastResult.getString("com");
+                if ("3".equals(state)) {
+                    KuaishouItemCollectSamples updateSample = new KuaishouItemCollectSamples();
+                    updateSample.setCourierNumber(nu);
+                    updateSample.setCollectSampleStatus(5);
+                    updateSample.setCollectSampleDesc("快递已签收,待上传作业");
+                    kuaishouItemCollectSamplesService.updateByNum(updateSample);
+                }
+                JSONArray data = lastResult.getJSONArray("data");
+                KuaishouItemCollectSampleExpress express = new KuaishouItemCollectSampleExpress();
+                express.setCourierNumber(nu);
+                express.setCom(com);
+                express.setState(state);
+                if (!Check.isNull(data)) {
+                    express.setExpressData(data.toJSONString());
+                }
+                kuaishouItemCollectSamplesService.replaceExpress(express);
+            }
+            subscribeResp.setResult(Boolean.TRUE);
+            subscribeResp.setReturnCode("200");
+            subscribeResp.setMessage("回调成功");
 
+        } catch (Exception e) {
+            subscribeResp.setResult(Boolean.FALSE);
+            subscribeResp.setReturnCode("-1");
+            subscribeResp.setMessage(e.getMessage());
+        }
         return subscribeResp;
     }
 

+ 86 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/entity/KuaishouItemCollectSampleExpress.java

@@ -0,0 +1,86 @@
+package com.ruixuan.isc.entity;
+
+
+import com.ruixuan.common.annotation.Excel;
+import com.ruixuan.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+
+/**
+ * 【请填写功能名称】对象 kuaishou_item_collect_sample_express
+ *
+ * @author ruoyi
+ * @date 2023-02-10
+ */
+public class KuaishouItemCollectSampleExpress extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    private String courierNumber;
+
+    /**
+     * 快递
+     */
+    @Excel(name = "快递")
+    private String com;
+
+    /**
+     * 状态 0在途,1揽收,2疑难,3签收,4退签,5派件,8清关,14拒签
+     */
+    @Excel(name = "状态 0在途,1揽收,2疑难,3签收,4退签,5派件,8清关,14拒签")
+    private String state;
+
+    /**
+     * 物流更新列表
+     */
+    @Excel(name = "物流更新列表")
+    private String expressData;
+
+    public void setCourierNumber(String courierNumber) {
+        this.courierNumber = courierNumber;
+    }
+
+    public String getCourierNumber() {
+        return courierNumber;
+    }
+
+    public void setCom(String com) {
+        this.com = com;
+    }
+
+    public String getCom() {
+        return com;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setExpressData(String expressData) {
+        this.expressData = expressData;
+    }
+
+    public String getExpressData() {
+        return expressData;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("courierNumber", getCourierNumber())
+                .append("com", getCom())
+                .append("state", getState())
+                .append("expressData", getExpressData())
+                .append("createTime", getCreateTime())
+                .append("updateTime", getUpdateTime())
+                .toString();
+    }
+}
+

+ 15 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/entity/KuaishouItemCollectSamples.java

@@ -5,6 +5,7 @@ import com.ruixuan.common.annotation.Excel;
 import com.ruixuan.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
+import org.springframework.data.annotation.Transient;
 
 
 /**
@@ -109,6 +110,11 @@ public class KuaishouItemCollectSamples extends BaseEntity
     @Excel(name = "状态备注")
     private String collectSampleDesc;
 
+
+    @Transient
+    private String companyCode;
+
+
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }
@@ -305,6 +311,14 @@ public class KuaishouItemCollectSamples extends BaseEntity
         this.collectSampleDesc = collectSampleDesc;
     }
 
+    public String getCompanyCode() {
+        return companyCode;
+    }
+
+    public void setCompanyCode(String companyCode) {
+        this.companyCode = companyCode;
+    }
+
     @Override
     public String toString() {
         return "KuaishouItemCollectSamples{" +
@@ -332,6 +346,7 @@ public class KuaishouItemCollectSamples extends BaseEntity
                 ", taskFileUrl='" + taskFileUrl + '\'' +
                 ", collectSampleStatus=" + collectSampleStatus +
                 ", collectSampleDesc='" + collectSampleDesc + '\'' +
+                ", companyCode='" + companyCode + '\'' +
                 '}';
     }
 }

+ 55 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/enums/CompanyEnum.java

@@ -0,0 +1,55 @@
+package com.ruixuan.isc.enums;
+
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public enum CompanyEnum {
+    yuantong("yuantong", "圆通速递"),
+    yunda("yunda", "韵达快递"),
+    zhongtong("zhongtong", "中通快递"),
+    shentong("shentong", "申通快递"),
+    jtexpress("jtexpress", "极兔速递"),
+    youzhengguonei("youzhengguonei", "邮政快递包裹"),
+    shunfeng("shunfeng", "顺丰速运"),
+    ems("ems", "EMS"),
+    jd("jd", "京东物流"),
+    youzhengbk("youzhengbk", "邮政标准快递"),
+    fengwang("fengwang", "丰网速运"),
+    debangkuaidi("debangkuaidi", "德邦快递"),
+    debangwuliu("debangwuliu", "德邦"),
+    zhongtongkuaiyun("zhongtongkuaiyun", "中通快运"),
+    jingdongkuaiyun("jingdongkuaiyun", "京东快运"),
+    tiantian("tiantian", "天天快递"),
+    huitongkuaidi("huitongkuaidi", "百世快递");
+
+
+    private String code;
+    private String name;
+
+
+    private CompanyEnum(String code, String name) {
+        this.name = name;
+        this.code = code;
+    }
+
+    public static List<JSONObject> companyList() {
+        List<JSONObject> list = new ArrayList<>();
+        for (CompanyEnum em : CompanyEnum.values()) {
+            JSONObject json = new JSONObject();
+            json.put("name", em.getName());
+            json.put("code", em.getCode());
+            list.add(json);
+        }
+        return list;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getCode() {
+        return code;
+    }
+}

+ 5 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/mapper/KuaishouItemCollectSamplesMapper.java

@@ -3,6 +3,7 @@ package com.ruixuan.isc.mapper;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.ruixuan.isc.entity.KuaishouItemCollectSampleExpress;
 import com.ruixuan.isc.entity.KuaishouItemCollectSamples;
 import org.apache.ibatis.annotations.Param;
 
@@ -73,5 +74,9 @@ public interface KuaishouItemCollectSamplesMapper
     Integer check(@Param("itemId") Long itemId,@Param("promoterId") Long promoterId);
 
     void batchAdd(@Param(value = "adds") List<KuaishouItemCollectSamples> adds);
+
+    void KuaishouItemCollectSamples(KuaishouItemCollectSamples updateSample);
+
+    void replaceExpress(KuaishouItemCollectSampleExpress express);
 }
 

+ 6 - 1
ruixuan-live/src/main/java/com/ruixuan/isc/service/IKuaishouItemCollectSamplesService.java

@@ -4,6 +4,7 @@ package com.ruixuan.isc.service;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.ruixuan.isc.entity.KuaishouItemCollectSampleExpress;
 import com.ruixuan.isc.entity.KuaishouItemCollectSamples;
 
 import java.util.List;
@@ -70,6 +71,10 @@ public interface IKuaishouItemCollectSamplesService
 
     void batchAdd(JSONArray temCollectSamples);
 
-    void subscribe(Long id, String courierNumber) throws Exception;
+    void subscribe(Long id, String courierNumber,String code) throws Exception;
+
+    void updateByNum(KuaishouItemCollectSamples updateSample);
+
+    void replaceExpress(KuaishouItemCollectSampleExpress express);
 }
 

+ 24 - 8
ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/KuaishouItemCollectSamplesServiceImpl.java

@@ -8,11 +8,13 @@ import com.kuaidi100.sdk.api.Subscribe;
 import com.kuaidi100.sdk.contant.ApiInfoConstant;
 import com.kuaidi100.sdk.contant.CompanyConstant;
 import com.kuaidi100.sdk.core.IBaseClient;
+import com.kuaidi100.sdk.pojo.HttpResult;
 import com.kuaidi100.sdk.request.SubscribeParam;
 import com.kuaidi100.sdk.request.SubscribeParameters;
 import com.kuaidi100.sdk.request.SubscribeReq;
 import com.ruixuan.common.utils.Check;
 import com.ruixuan.common.utils.DateUtils;
+import com.ruixuan.isc.entity.KuaishouItemCollectSampleExpress;
 import com.ruixuan.isc.entity.KuaishouItemCollectSamples;
 import com.ruixuan.isc.mapper.KuaishouItemCollectSamplesMapper;
 import com.ruixuan.isc.service.IKuaishouItemCollectSamplesService;
@@ -188,36 +190,50 @@ public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemColle
             sample.setCollectSampleDesc(sampleJson.getString("collect_sample_desc"));
             adds.add(sample);
         }
-        if(!Check.isNull(adds)){
+        if (!Check.isNull(adds)) {
             kuaishouItemCollectSamplesMapper.batchAdd(adds);
         }
 
     }
 
     @Override
-    public void subscribe(Long id, String courierNumber) throws Exception {
+    public void subscribe(Long id, String courierNumber, String code) throws Exception {
 
         KuaishouItemCollectSamples samples = kuaishouItemCollectSamplesMapper.selectKuaishouItemCollectSamplesById(id);
-
         SubscribeParameters subscribeParameters = new SubscribeParameters();
         subscribeParameters.setCallbackurl("http://ruixuan.api.tjyourong.com.cn/itemCollectSamples/callback");
         subscribeParameters.setPhone(samples.getPromoterPhone());
-
         SubscribeParam subscribeParam = new SubscribeParam();
         subscribeParam.setParameters(subscribeParameters);
-        subscribeParam.setCompany(CompanyConstant.ST);
+        subscribeParam.setCompany(code);
         subscribeParam.setNumber(courierNumber);
         subscribeParam.setKey("BPEQUJxB9244");
-
         SubscribeReq subscribeReq = new SubscribeReq();
         subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA);
         subscribeReq.setParam(new Gson().toJson(subscribeParam));
-
         IBaseClient subscribe = new Subscribe();
-        System.out.println(subscribe.execute(subscribeReq));
+        JSONObject jsonObject = JSONObject.parseObject(subscribe.execute(subscribeReq).getBody());
+        String returnCode = jsonObject.getString("returnCode");
+        KuaishouItemCollectSamples updateSample = new KuaishouItemCollectSamples();
+        updateSample.setId(id);
+        if ("200".equals(returnCode)) {
+            updateSample.setCollectSampleDesc("快递推送订阅成功");
+        } else {
+            updateSample.setCollectSampleStatus(3);
+            updateSample.setCollectSampleDesc("快递推送订阅失败,失败原因:" + jsonObject.getString("message"));
+        }
+        kuaishouItemCollectSamplesMapper.updateKuaishouItemCollectSamples(updateSample);
     }
 
+    @Override
+    public void updateByNum(KuaishouItemCollectSamples updateSample) {
+        kuaishouItemCollectSamplesMapper.KuaishouItemCollectSamples(updateSample);
+    }
 
+    @Override
+    public void replaceExpress(KuaishouItemCollectSampleExpress express) {
+        kuaishouItemCollectSamplesMapper.replaceExpress(express);
+    }
 
 
 }

+ 26 - 0
ruixuan-live/src/main/resources/mapper/isc/KuaishouItemCollectSamplesMapper.xml

@@ -236,6 +236,23 @@
         </foreach>
 
     </insert>
+    <insert id="replaceExpress" parameterType="com.ruixuan.isc.entity.KuaishouItemCollectSampleExpress">
+
+        replace into kuaishou_item_collect_sample_express
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            courier_number,
+            com,
+            state,
+            express_data
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            #{courier_number},
+            #{com},
+            #{state},
+            #{express_data}
+        </trim>
+
+    </insert>
 
     <update id="updateKuaishouItemCollectSamples" parameterType="com.ruixuan.isc.entity.KuaishouItemCollectSamples">
         update kuaishou_item_collect_samples
@@ -268,6 +285,15 @@
         </trim>
         where id = #{id}
     </update>
+    <update id="KuaishouItemCollectSamples" parameterType="com.ruixuan.isc.entity.KuaishouItemCollectSamples">
+        update kuaishou_item_collect_samples
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="collectSampleStatus != null">collect_sample_status = #{collectSampleStatus},</if>
+            <if test="collectSampleDesc != null">collect_sample_desc = #{collectSampleDesc}</if>
+        </trim>
+        where courier_number = #{courierNumber}
+
+    </update>
 
     <delete id="deleteKuaishouItemCollectSamplesById" parameterType="java.lang.Long">
         delete from kuaishou_item_collect_samples where id = #{id}