Procházet zdrojové kódy

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

huangzhiguo před 2 roky
rodič
revize
26056d9d3d

+ 2 - 1
src/main/java/com/caimei365/order/components/WeChatService.java

@@ -3,9 +3,10 @@ package com.caimei365.order.components;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.annotation.JSONType;
+
 import com.caimei365.order.model.ResponseJson;
-import com.caimei365.order.utils.JwtUtil;
 import com.caimei365.order.utils.RequestUtil;
+
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.lang.StringUtils;

+ 17 - 1
src/main/java/com/caimei365/order/controller/ReceiptApi.java

@@ -5,8 +5,10 @@ import com.caimei365.order.model.dto.ReceiptAuthDto;
 import com.caimei365.order.model.dto.ReceiptDto;
 import com.caimei365.order.model.dto.ReceiptOperateDto;
 import com.caimei365.order.model.po.ReceiptPo;
+import com.caimei365.order.model.po.cmOfflineCollectionPo;
 import com.caimei365.order.model.vo.*;
 import com.caimei365.order.service.ReceiptService;
+import com.caimei365.order.service.cmOfflineCollectionService;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -17,6 +19,7 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
 
@@ -33,6 +36,8 @@ import java.util.Map;
 public class ReceiptApi {
     private final ReceiptService receiptService;
 
+    @Resource private cmOfflineCollectionService collectionService;
+
     /**
      * 线下收款用户微信授权
      *
@@ -88,10 +93,21 @@ public class ReceiptApi {
      */
     @ApiOperation("获取收款类型")
     @GetMapping("/type")
-    public ResponseJson<List<ReceiptTypeVo>> getReceiptType() {
+    public ResponseJson<List<cmOfflineCollectionVo>> getReceiptType() {
         return receiptService.getReceiptType();
     }
 
+    /**
+     * 获取后台配置显示银行账户配置信息
+     * @return
+     */
+    @ApiOperation("获取银行账户配置信息")
+    @GetMapping("/bankData")
+    public ResponseJson<cmOfflineCollectionPo> selectData() {
+
+        return collectionService.seData();
+    }
+
     /**
      * 识别收款短信
      *

+ 1 - 1
src/main/java/com/caimei365/order/mapper/ReceiptMapper.java

@@ -55,7 +55,7 @@ public interface ReceiptMapper {
     /**
      * 获取收款类型列表
      */
-    List<ReceiptTypeVo> getReceiptType();
+    List<cmOfflineCollectionVo> getReceiptType();
 
     /**
      * 获取收款类型

+ 26 - 0
src/main/java/com/caimei365/order/mapper/cmOfflineCollectionMapper.java

@@ -0,0 +1,26 @@
+package com.caimei365.order.mapper;
+
+import com.caimei365.order.model.po.cmOfflineCollectionPo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2022/9/26
+ */
+@Mapper
+public interface cmOfflineCollectionMapper {
+    /**
+     * 获取后台配置显示的银行信息
+     * @return
+     */
+    cmOfflineCollectionPo seData();
+
+    /**
+     * 检测银行账号是否删除
+     * @return
+     */
+    cmOfflineCollectionPo detectionAccount(@Param("bankAccount") String bankAccount);
+}

+ 23 - 0
src/main/java/com/caimei365/order/model/po/cmOfflineCollectionPo.java

@@ -0,0 +1,23 @@
+package com.caimei365.order.model.po;
+
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2022/9/26
+ */
+@Data
+public class cmOfflineCollectionPo {
+
+    private Integer id;             // id
+    private Integer type;           // 银行类型
+    private String bankAccount;    // 银行账号
+    private String bankUserName;   // 银行开户名
+    private String bankOfDeposit;  // 开户行
+    private String bankCardNo;    // 银行卡号
+    private String creationTime;     // 创建时间
+    private Integer isDisplay;     // 是否为商城显示:0不显示, 1显示
+    private Integer isDisable;     // 是否禁用:0禁用,1启用
+}

+ 16 - 0
src/main/java/com/caimei365/order/model/vo/cmOfflineCollectionVo.java

@@ -0,0 +1,16 @@
+package com.caimei365.order.model.vo;
+
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2022/9/26
+ */
+@Data
+public class cmOfflineCollectionVo {
+
+    private Integer id;             // id
+    private String type;           // 银行名称
+}

+ 1 - 1
src/main/java/com/caimei365/order/service/ReceiptService.java

@@ -39,7 +39,7 @@ public interface ReceiptService {
     /**
      * 获取收款类型
      */
-    ResponseJson<List<ReceiptTypeVo>> getReceiptType();
+    ResponseJson<List<cmOfflineCollectionVo>> getReceiptType();
 
     /**
      * 识别收款短信

+ 17 - 0
src/main/java/com/caimei365/order/service/cmOfflineCollectionService.java

@@ -0,0 +1,17 @@
+package com.caimei365.order.service;
+
+import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.po.cmOfflineCollectionPo;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2022/9/26
+ */
+public interface cmOfflineCollectionService {
+    /**
+     *获取后台配置显示的银行信息
+     */
+    ResponseJson<cmOfflineCollectionPo> seData();
+}

+ 29 - 2
src/main/java/com/caimei365/order/service/impl/ReceiptServiceImpl.java

@@ -61,6 +61,9 @@ public class ReceiptServiceImpl implements ReceiptService {
     @Resource
     private BaseMapper baseMapper;
 
+    @Resource
+    private cmOfflineCollectionMapper collectionMapper;
+
     /**
      * 只有当识别出来的收款类型是广发银行-5461 ,中信银行-0897,中信银行0897-财付通 和 中信银行0897-支付宝时,才会显示手续费,并且自动勾选上手续费,默认按收款金额的千分之一计算 (收款金额 - 手续费 = 短信中收到的金额)
      */
@@ -177,8 +180,8 @@ public class ReceiptServiceImpl implements ReceiptService {
      * 获取收款类型
      */
     @Override
-    public ResponseJson<List<ReceiptTypeVo>> getReceiptType() {
-        List<ReceiptTypeVo> list = receiptMapper.getReceiptType();
+    public ResponseJson<List<cmOfflineCollectionVo>> getReceiptType() {
+        List<cmOfflineCollectionVo> list = receiptMapper.getReceiptType();
         return ResponseJson.success(list);
     }
 
@@ -200,6 +203,11 @@ public class ReceiptServiceImpl implements ReceiptService {
             // 短信已存在不需要识别
             return ResponseJson.error("短信已存在不需要重复识别", null);
         }
+        // 验证银行卡号是否已经被删除
+        String account = detectionAccount(smsContent);
+        if ("-1".equals(account)) {
+            return ResponseJson.error(-2,"该收款银行账号已被删除,请检查短信是否有误或联系管理员!", null);
+        }
         try {
             // 识别短信内容
             ResponseJson<ReceiptVo> receipt = identifyMessage(smsContent);
@@ -210,6 +218,25 @@ public class ReceiptServiceImpl implements ReceiptService {
             log.error("【线下收款】短信识别错误!", e);
         }
         return ResponseJson.error("短信识别错误!", null);
+
+    }
+
+    /**
+     * 验证银行卡号是否已经被删除
+     * @param message
+     * @return
+     */
+    private String detectionAccount(String message) {
+        if (message.length() > 10) {
+            int index = message.indexOf("尾号");
+            String account = message.substring(index + 2, index + 2 + 4);
+            cmOfflineCollectionPo collectionPo = collectionMapper.detectionAccount(account);
+            if (collectionPo.getIsDisable() == 0) {
+                return "-1";
+            }
+            return "0";
+        }
+        return "-1";
     }
 
     /**

+ 34 - 0
src/main/java/com/caimei365/order/service/impl/cmOfflineCollectionServiceImpl.java

@@ -0,0 +1,34 @@
+package com.caimei365.order.service.impl;
+
+import com.caimei365.order.mapper.cmOfflineCollectionMapper;
+import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.po.cmOfflineCollectionPo;
+import com.caimei365.order.service.cmOfflineCollectionService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2022/9/26
+ */
+@Service
+public class cmOfflineCollectionServiceImpl implements cmOfflineCollectionService {
+
+    @Resource private cmOfflineCollectionMapper cmOfflineCollectionMapper;
+
+    /**
+     * 获取后台配置显示的银行信息
+     * @return
+     */
+    @Override
+    public ResponseJson<cmOfflineCollectionPo> seData() {
+        cmOfflineCollectionPo collectionPo = cmOfflineCollectionMapper.seData();
+        if (collectionPo.getId() == null) {
+            return ResponseJson.error("银行账户查询失败,请联系管理员");
+        }
+        return ResponseJson.success(collectionPo);
+    }
+}

+ 2 - 0
src/main/java/com/caimei365/order/utils/RequestUtil.java

@@ -1,5 +1,6 @@
 package com.caimei365.order.utils;
 
+import lombok.Data;
 import org.springframework.util.StringUtils;
 
 import javax.net.ssl.HttpsURLConnection;
@@ -20,6 +21,7 @@ import java.util.Map;
  * @author : Charles
  * @date : 2021/3/8
  */
+@Data
 public class RequestUtil {
 
     /**

+ 85 - 0
src/main/java/com/caimei365/order/utils/ResponseJson.java

@@ -0,0 +1,85 @@
+package com.caimei365.order.utils;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 全局API返回值
+ *
+ * @author : Charles
+ * @date : 2021/3/4
+ */
+@Data
+public class ResponseJson<T> implements Serializable {
+    /** 状态码 */
+    @ApiModelProperty("状态码")
+    private int code;
+    /** 提示信息 */
+    @ApiModelProperty("提示信息")
+    private String msg;
+    /** 返回的数据 */
+    @ApiModelProperty("响应数据")
+    private T data;
+
+    private ResponseJson() {}
+
+    private ResponseJson(int code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    private ResponseJson(int code, String msg, T data) {
+        this.code = code;
+        this.msg = msg;
+        this.data = data;
+    }
+
+    public static ResponseJson success() {
+        return new ResponseJson<>(0, "操作成功");
+    }
+
+    public static<T> ResponseJson<T> success(T data) {
+        return new ResponseJson<>(0, "操作成功", data);
+    }
+
+    public static<T> ResponseJson<T> success(String msg, T data) {
+        return new ResponseJson<>(0, msg, data);
+    }
+
+    public static<T> ResponseJson<T> success(int code, String msg, T data) {
+        return new ResponseJson<>(code, msg, data);
+    }
+
+    public static ResponseJson error() {
+        return new ResponseJson<>(-1, "操作失败");
+    }
+
+    public static ResponseJson error(String msg) {
+        return new ResponseJson<>(-1, msg);
+    }
+
+    public static ResponseJson error(int code, String msg) {
+        return new ResponseJson<>(code, msg);
+    }
+
+    public static<T> ResponseJson<T> error(T data) {
+        return new ResponseJson<>(-1, "操作失败", data);
+    }
+
+    public static<T> ResponseJson<T> error(String msg, T data) {
+        return new ResponseJson<>(-1, msg, data);
+    }
+
+    public static<T> ResponseJson<T> error(int code, String msg, T data) {
+        return new ResponseJson<>(code, msg, data);
+    }
+
+    @Override
+    public String toString() {
+        return "ResponseJson{" + "code=" + code + ", msg='" + msg + '\'' + ", data=" + data + '}';
+    }
+
+    private static final long serialVersionUID = 1L;
+}

+ 2 - 4
src/main/resources/mapper/ReceiptMapper.xml

@@ -181,10 +181,8 @@
         FROM cm_receipt_user_permission
         WHERE user_id = #{userId}
     </select>
-    <select id="getReceiptType" resultType="com.caimei365.order.model.vo.ReceiptTypeVo">
-        SELECT `id`, `type`
-        FROM cm_receipt_type
-        ORDER BY id
+    <select id="getReceiptType" resultType="com.caimei365.order.model.vo.cmOfflineCollectionVo">
+        SELECT TYPE AS id, bankAccount AS TYPE FROM  cm_offline_collection WHERE isDisable != 0 ORDER BY id
     </select>
     <select id="getReceiptTypeById" resultType="com.caimei365.order.model.vo.ReceiptTypeVo">
         SELECT `id`, `type`

+ 11 - 0
src/main/resources/mapper/cmOfflineCollectionMapper.xml

@@ -0,0 +1,11 @@
+<?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.caimei365.order.mapper.cmOfflineCollectionMapper">
+    <select id="seData" resultType="com.caimei365.order.model.po.cmOfflineCollectionPo">
+        select id, type, bankAccount, bankUserName, bankOfDeposit, bankCardNo
+        from cm_offline_collection where isDisplay = 1
+    </select>
+    <select id="detectionAccount" resultType="com.caimei365.order.model.po.cmOfflineCollectionPo">
+        SELECT * FROM cm_offline_collection WHERE bankAccount LIKE concat('%',#{bankAccount},'%')
+    </select>
+</mapper>