ソースを参照

feature: 微信充值及测试修改
1.生成收款码时创建微信订单
2.增加了定时刷新短信token功能
3.全量和增量时身份证的加解密

luoyb 1 年間 前
コミット
aeaace443d

+ 90 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/PayStatusEnum.java

@@ -0,0 +1,90 @@
+package org.dromara.common.core.enums;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * name: PayStyleEnum
+ * package: com.zd.api.standard.core.enums
+ * description: 第三方订单支付状态枚举值
+ * date: 2021-08-06 18:28
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+public enum PayStatusEnum {
+    /**
+     * 待支付
+     */
+    UNPAID(10, "待支付"),
+    /**
+     * 已支付
+     */
+    SUCCESS(11, "已支付"),
+    /**
+     * 支付失败
+     */
+    FAILURE(20, "支付失败");
+
+    private final Integer code;
+    private final String message;
+
+    PayStatusEnum(Integer code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+    public Integer code() {
+        return this.code;
+    }
+
+    public String message() {
+        return this.message;
+    }
+
+    public static String getMessage(String name) {
+        for (PayStatusEnum item : PayStatusEnum.values()) {
+            if (item.name().equals(name)) {
+                return item.message;
+            }
+        }
+        return name;
+    }
+
+    public static String getMessage(int code) {
+        for (PayStatusEnum item : PayStatusEnum.values()) {
+            if (item.code().equals(code)) {
+                return item.message;
+            }
+        }
+        return "未知";
+    }
+
+    public static Integer getCode(String name) {
+        for (PayStatusEnum item : PayStatusEnum.values()) {
+            if (item.name().equals(name)) {
+                return item.code;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public String toString() {
+        return this.name();
+    }
+
+    /***
+     * 校验重复的code值
+     */
+     public static void main(String[] args) {
+        PayStatusEnum[] thisEnums = PayStatusEnum.values();
+        List<Integer> codeList = new ArrayList<>();
+        for (PayStatusEnum thisEnum : thisEnums) {
+            if (!codeList.contains(thisEnum.code)) {
+                codeList.add(thisEnum.code());
+            }
+        }
+    }
+}

+ 15 - 2
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/payments/ThirdPayBusiness.java

@@ -14,6 +14,8 @@ import org.dromara.common.core.enums.CreditTypeEnum;
 import org.springframework.stereotype.Service;
 
 import java.text.MessageFormat;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * name: ThirdPayBusiness
@@ -32,14 +34,25 @@ public class ThirdPayBusiness {
     private final IPayOrderService payOrderService;
     private final PayOrderBusiness payOrderBusiness;
 
-    public R<String> createWechatQrCode(PayOrderBo bo) {
+    public R<Map<String,String>> createCollectQrCode(PayOrderBo bo){
         R<PayOrderVo> result = createThirdPayOrder(bo);
         if (R.isError(result)) {
             return R.fail(result.getMsg());
         }
+        Map<String, String> mapCode = new HashMap<>();
         // TODO 2025-01-13 19:36:29 luoyibo 生成微信收款码
-        return R.ok();
+        mapCode.put("qrCode", "");
+        mapCode.put("orderSn", "");
+        return R.ok(mapCode);
     }
+    //public R<String> createWechatQrCode(PayOrderBo bo) {
+    //    R<PayOrderVo> result = createThirdPayOrder(bo);
+    //    if (R.isError(result)) {
+    //        return R.fail(result.getMsg());
+    //    }
+    //    // TODO 2025-01-13 19:36:29 luoyibo 生成微信收款码
+    //    return R.ok();
+    //}
     public R<String> payCallBackHandler(PayOrderBo bo){
         // TODO 2025-01-13 19:38:22 luoyibo 根据支付成功与否处理
         R<Void> postResult = postThirdPayOrder(bo);

+ 30 - 11
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/self/SelfBusiness.java

@@ -1,5 +1,7 @@
 package org.dromara.backstage.business.self;
 
+import cn.hutool.core.date.DateUtil;
+
 import cn.hutool.core.codec.Base64;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -9,6 +11,7 @@ import cn.hutool.http.HttpUtil;
 import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.backstage.business.payments.ThirdPayBusiness;
 import org.dromara.backstage.consumption.domain.bo.XfCreditAccountBackBo;
 import org.dromara.backstage.consumption.domain.vo.XfCreditAccountBackVo;
 import org.dromara.backstage.consumption.service.IXfCreditAccountBackService;
@@ -18,9 +21,8 @@ import org.dromara.backstage.payment.domain.vo.PayOrderVo;
 import org.dromara.backstage.payment.service.IPayOrderService;
 import org.dromara.backstage.task.AsyncTaskService;
 import org.dromara.common.core.api.ReturnResult;
-import org.dromara.common.core.enums.CreditStatusEnum;
-import org.dromara.common.core.enums.CreditTypeEnum;
-import org.dromara.common.core.enums.ResultCodeEnum;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.enums.*;
 import org.dromara.common.core.exception.ApiException;
 import org.dromara.common.redis.utils.RedisUtils;
 import org.springframework.beans.factory.annotation.Value;
@@ -63,6 +65,7 @@ public class SelfBusiness {
     private final AsyncTaskService asyncTaskService;
     private final IPayOrderService wxOrderService;
     private final IXfCreditAccountBackService creditAccountBackService;
+    private final ThirdPayBusiness thirdPayBusiness;
 
     /**
      * 获取短信平台token
@@ -119,10 +122,7 @@ public class SelfBusiness {
     public void sendSmsNoRoom(String phone,String realName,String className){
         sendSms(phone, String.format(messageNoRoom.replace("rn", "\r\n"), realName, className));
     }
-    public ReturnResult getWechatRechargeQrCode(Map<String, String> mapParams){
-        long cardNo = Long.parseLong(mapParams.get("cardNo"));
-        int termNo = Integer.parseInt(mapParams.get("termNo"));
-        int bagCode = Integer.parseInt(mapParams.get("bagCode"));
+    public R<Map<String, String>> getWechatRechargeQrCode(Map<String, String> mapParams){
         int workStationNumb = Integer.parseInt(mapParams.get("workStationNumb"));
         String userId = mapParams.get("userId");
         String userXm = mapParams.get("userXm");
@@ -130,12 +130,31 @@ public class SelfBusiness {
         String deptId = mapParams.get("deptId");
         String mobile = mapParams.get("mobile");
         BigDecimal dealValue = new BigDecimal(mapParams.get("dealValue"));
-        String dealDate = mapParams.get("dealDate");
-        String operatorId = mapParams.get("operatorId");
 
-        CreditTypeEnum creditType = CreditTypeEnum.WECHAT_RECHARGE;
         String callBackUrl = rechargeBackUrl + "/teacher/recharge/" + userId + "/" + dealValue + "/" + workStationNumb + "/";
-        return createQrCode(creditType, userId, userXm, deptId, deptName, mobile, dealValue, callBackUrl);
+        PayOrderBo payOrderBo = new PayOrderBo();
+        payOrderBo.setCreditTime(DateUtil.date());
+        payOrderBo.setCreditType(CreditTypeEnum.WECHAT_RECHARGE.code().toString());
+        payOrderBo.setPayStyle(PayStyleEnum.WECHAT.code().toString());
+        payOrderBo.setPayStatus(PayStatusEnum.UNPAID.code().toString());
+        payOrderBo.setReceiptMoney(dealValue);
+        payOrderBo.setCreditStatus(CreditStatusEnum.CREATE.code().toString());
+        payOrderBo.setTitle("");
+        payOrderBo.setBackUrl(callBackUrl);
+        payOrderBo.setRealName(userXm);
+        payOrderBo.setUserId(Long.parseLong(userId));
+        payOrderBo.setPhone(mobile);
+        payOrderBo.setDeptName(deptName);
+        payOrderBo.setDeptId(Long.parseLong(deptId));
+        payOrderBo.setCreateBy(Long.parseLong(userId));
+        payOrderBo.setCreateTime(DateUtil.date());
+
+        R<Map<String,String>> getResult = thirdPayBusiness.createCollectQrCode(payOrderBo);
+        if (R.isSuccess(getResult)) {
+            return getResult;
+        }
+        return R.fail(getResult.getMsg());
+        //return createQrCode(creditType, userId, userXm, deptId, deptName, mobile, dealValue, callBackUrl);
     }
 
     /**

+ 8 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/controller/self/SelfController.java

@@ -39,6 +39,14 @@ public class SelfController {
         selfBusiness.sendSms(mobile, message);
     }
 
+    /**
+     * 短信系统登录
+     */
+    @GetMapping(value = "/api/v1/sms/login")
+    public void loginSms(){
+        selfBusiness.loginSms();
+    }
+
     @GetMapping("/api/v1/wechat/result/{deptId}/{userId}")
     public ReturnResult queryWxPayResult(@PathVariable("deptId") String deptId, @PathVariable("userId") String userId) {
         ReturnResult result = selfBusiness.queryPayResultByUserAndDept(Long.parseLong(deptId), Long.parseLong(userId));

+ 5 - 6
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/controller/self/TeacherController.java

@@ -88,12 +88,11 @@ public class TeacherController {
      */
     @PostMapping("/api/v1/wechat/recharge/qrcode")
     public ReturnResult getWeChatRechargeCode(@RequestBody Map<String, String> mapParams) {
-        ReturnResult result = selfBusiness.getWechatRechargeQrCode(mapParams);
-        Map<String, String> mapReturn = new HashMap<>(2);
-        mapReturn.put("qrCode", result.getData().toString());
-        mapReturn.put("orderSn", result.getMessage());
-
-        return ReturnResult.success(mapReturn);
+        R<Map<String,String>> result = selfBusiness.getWechatRechargeQrCode(mapParams);
+        if (R.isSuccess(result)) {
+            return ReturnResult.success(result.getData());
+        }
+        return ReturnResult.failure(ResultCodeEnum.SPECIFIED_QUESTIONED_USER_NOT_EXIST.code(),result.getMsg());
     }
 
     /**

+ 10 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/task/ScheduledTasks.java

@@ -2,6 +2,7 @@ package org.dromara.backstage.task;
 
 import lombok.RequiredArgsConstructor;
 import org.dromara.backstage.business.lock.LockBusiness;
+import org.dromara.backstage.business.self.SelfBusiness;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -19,6 +20,15 @@ import org.springframework.stereotype.Component;
 @RequiredArgsConstructor
 public class ScheduledTasks {
     private final LockBusiness lockBusiness;
+    private final SelfBusiness selfBusiness;
+
+    /**
+     * 定时刷新短信token
+     */
+    @Scheduled(cron = "0 5 1 * * *")
+    public void refreshSmsToken(){
+        selfBusiness.loginSms();
+    }
     /**
      * 定时同步门锁电量
      */

+ 1 - 1
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/dept/strategy/impl/TrainClassStrategyImpl.java

@@ -248,7 +248,7 @@ public class TrainClassStrategyImpl implements ISyncDeptStrategy {
         }
         remoteTeamBo.setOperatorId(DefaultConstants.FULL_SYNC_ADMIN);
         remoteTeamBo.setName(resourceDept.getDept_name());
-        remoteTeamBo.setStartTime(resourceDept.getBeginDate());
+        remoteTeamBo.setStartTime(resourceDept.getCheckDate());
         remoteTeamBo.setEndTime(resourceDept.getEndDate());
         remoteTeamBo.setPlanQuantity(resourceDept.getPlanCount().longValue());
         remoteTeamBo.setRemark("");

+ 3 - 2
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/user/SyncRemoteUserService.java

@@ -19,6 +19,7 @@ import org.dromara.hotel.api.domain.vo.RemoteGuestVo;
 import org.dromara.hotel.api.domain.vo.RemoteTeamVo;
 import org.dromara.hotel.api.service.RemoteGuestService;
 import org.dromara.hotel.api.service.RemoteTeamService;
+import org.dromara.server.base.util.EncryptorUtil;
 import org.dromara.server.common.domain.bo.ResourcePerson;
 import org.dromara.server.common.domain.bo.ResourcePersonDept;
 import org.dromara.system.api.RemoteDeptService;
@@ -221,8 +222,8 @@ public class SyncRemoteUserService {
      * @return 解密后身份证号
      */
     private String getUserIdNumber(String sourceIdNumb) {
-        //return ObjectUtil.isEmpty(sourceIdNumb) ? null : EncryptorUtil.decode(sourceIdNumb);
-        return ObjectUtil.isEmpty(sourceIdNumb) ? null : sourceIdNumb;
+        return ObjectUtil.isEmpty(sourceIdNumb) ? null : EncryptorUtil.decode(sourceIdNumb);
+        //return ObjectUtil.isEmpty(sourceIdNumb) ? null : sourceIdNumb;
     }
 
     /**

+ 3 - 0
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/util/TeacherUtils.java

@@ -47,6 +47,9 @@ public class TeacherUtils {
         } else {
             person.setTenantId(defaultConfig.getTenantId());
         }
+        if(ObjectUtil.isNotEmpty(data.getStr("idCard"))) {
+            person.setIdNumber(data.getStr("idCard"));
+        }
         person.setCategory(DefaultConstants.CATEGORY_TEACHER);
         person.setPostCode(DefaultConstants.TEACHER_CODE);
         person.setOperatorId(DefaultConstants.KAFKA_SYNC_ADMIN);