ソースを参照

add jpush sms

Mr.qian 4 日 前
コミット
f2cc853491

+ 18 - 0
cif-api/src/main/java/com/txz/cif/dto/jpush/JPushSmsDTO.java

@@ -0,0 +1,18 @@
+package com.txz.cif.dto.jpush;
+
+import lombok.Data;
+
+/**
+ *
+ * @author: MTD®️
+ * @date: 2025/11/13
+ */
+@Data
+public class JPushSmsDTO {
+    
+    private String to;
+    
+    private String code;
+    
+    private JPushTemplateDTO template;
+}

+ 22 - 0
cif-api/src/main/java/com/txz/cif/dto/jpush/JPushTemplateDTO.java

@@ -0,0 +1,22 @@
+package com.txz.cif.dto.jpush;
+
+import cn.hutool.json.JSONObject;
+import lombok.Data;
+
+/**
+ *
+ * @author: MTD®️
+ * @date: 2025/11/13
+ */
+@Data
+public class JPushTemplateDTO {
+    
+    // 缺省模板
+    private String id = "UNIFIED_TEMPLATE";
+    
+    // 确认默认语言
+    private String language = "default";
+    
+    private JSONObject params;
+    
+}

+ 28 - 0
cif-service/src/main/java/com/txz/cif/configurer/jpush/JPushConf.java

@@ -0,0 +1,28 @@
+package com.txz.cif.configurer.jpush;
+
+import cn.hutool.core.codec.Base64;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ *
+ * @author: MTD®️
+ * @date: 2025/11/13
+ */
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "jpush")
+public class JPushConf {
+    
+    private String appKey;
+    
+    private String masterSecret;
+    
+    private String reqUrl;
+    
+    public String getAuth() {
+        return "Basic " + Base64.encode((this.appKey + ":" + this.masterSecret));
+    }
+}

+ 12 - 0
cif-service/src/main/java/com/txz/cif/service/JPushService.java

@@ -0,0 +1,12 @@
+package com.txz.cif.service;
+
+/**
+ *
+ * @author: MTD®️
+ * @date: 2025/11/13
+ */
+
+public interface JPushService {
+    
+    boolean sendSms(String mobile, String code);
+}

+ 66 - 0
cif-service/src/main/java/com/txz/cif/service/impl/JPushServiceImpl.java

@@ -0,0 +1,66 @@
+package com.txz.cif.service.impl;
+
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.txz.cif.configurer.jpush.JPushConf;
+import com.txz.cif.dto.jpush.JPushSmsDTO;
+import com.txz.cif.dto.jpush.JPushTemplateDTO;
+import com.txz.cif.service.JPushService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * @author: MTD®️
+ * @date: 2025/11/13
+ */
+@Service
+@Slf4j
+@AllArgsConstructor
+public class JPushServiceImpl implements JPushService {
+    
+    private final JPushConf jPushConf;
+    
+    @Override
+    public boolean sendSms(String mobile, String code) {
+        // {
+        //     "to": "+8618701235678",
+        //     "code": "398210",
+        //     "template": {
+        //         "id": "test-template-1",
+        //         "language": "default",
+        //         "params": {
+        //             "key1": "value1",
+        //             "key2": "value2"
+        //         }
+        //     }
+        // }
+        
+        log.info("开始发送短信--->" + mobile + ",--->" + code);
+        
+        JPushTemplateDTO templateDTO = new JPushTemplateDTO();
+        
+        JPushSmsDTO pushSmsDTO = new JPushSmsDTO();
+        pushSmsDTO.setTo("+" + mobile);
+        pushSmsDTO.setCode(code);
+        pushSmsDTO.setTemplate(templateDTO);
+        
+        String body = HttpUtil.createPost(jPushConf.getReqUrl())
+                .contentType("application/json")
+                .auth(jPushConf.getAuth())
+                .body(JSONUtil.toJsonStr(pushSmsDTO))
+                .execute()
+                .body();
+        
+        log.info("jpush-sms-result:{}", body);
+        // "{\"code\":\"200\",\"message\":\"success\"}"
+        JSONObject resultJson = JSONUtil.parseObj(body);
+        
+        if (resultJson.getInt("code") == 200) {
+            return true;
+        }
+        return false;
+    }
+}

+ 6 - 1
cif-service/src/main/java/com/txz/cif/service/impl/UserServiceImpl.java

@@ -16,6 +16,7 @@ import com.txz.cif.model.Account;
 import com.txz.cif.model.User;
 import com.txz.cif.service.AccountService;
 import com.txz.cif.service.CSHuaGuService;
+import com.txz.cif.service.JPushService;
 import com.txz.cif.service.UserService;
 import com.txz.cif.web.para.UserAddParam;
 import org.slf4j.Logger;
@@ -60,6 +61,9 @@ public class UserServiceImpl extends AbstractService<User> implements UserServic
     @Resource
     private CSHuaGuService csHuaGuService;
     
+    @Resource
+    private JPushService jPushService;
+    
     @Override
     public Boolean checkMail(String email) {
         User user = findBy("email", email);
@@ -85,7 +89,8 @@ public class UserServiceImpl extends AbstractService<User> implements UserServic
             return Result.success();
         }
         String code = RandomUtil.randomNumbers(6);
-        if (csHuaGuService.sendSmsValidCode(phoneNo, String.format(SMS_MESSAGE, code))) {
+        // if (csHuaGuService.sendSmsValidCode(phoneNo, String.format(SMS_MESSAGE, code))) {
+        if (jPushService.sendSms(phoneNo, code)) {
             redisClient.set(key, code, 60 * 5);
             return Result.fail();
         }

+ 26 - 0
cif-service/src/test/java/com/txz/cif/CifLocalTest.java

@@ -0,0 +1,26 @@
+package com.txz.cif;
+
+import cn.hutool.json.JSONUtil;
+import com.txz.cif.dto.jpush.JPushSmsDTO;
+import com.txz.cif.dto.jpush.JPushTemplateDTO;
+import org.junit.jupiter.api.Test;
+
+/**
+ *
+ * @author: MTD®️
+ * @date: 2025/11/13
+ */
+
+public class CifLocalTest {
+    
+    @Test
+    public void test() {
+        
+        JPushSmsDTO pushSmsDTO = new JPushSmsDTO();
+        pushSmsDTO.setTo("+" + "01998549097");
+        pushSmsDTO.setCode("123456");
+        pushSmsDTO.setTemplate(new JPushTemplateDTO());
+        
+        System.out.println(JSONUtil.toJsonStr(pushSmsDTO));
+    }
+}