Procházet zdrojové kódy

优化短信跳转链接

wangqiong před 2 roky
rodič
revize
a6195fc255

+ 4
- 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/sendrecord/ShortMessageController.java Zobrazit soubor

@@ -48,10 +48,10 @@ public class ShortMessageController {
48 48
      * 查询UID好的密钥
49 49
      */
50 50
     @Anonymous
51
-    @GetMapping("/getEncryptInfoByid")
52
-    public Object getEncryptInfoByUid(@RequestParam(name = "id",required = true) String id) {
53
-        if (id != null) {
54
-            Object result = shortMessageService.getEncryptInfoByUid(id);
51
+    @GetMapping("/getMeetingInfo")
52
+    public Object getEncryptInfoByUid(@RequestParam(name = "authId", required = true) String authId) {
53
+        if (authId != null) {
54
+            Object result = shortMessageService.getMeetingInfo(authId);
55 55
             return result;
56 56
         }
57 57
         return AjaxResult.error("查询失败");

+ 0
- 1
ruoyi-admin/src/main/resources/application.yml Zobrazit soubor

@@ -218,4 +218,3 @@ BMConfig:
218 218
 beimingapihost: https://zj.odrcloud.cn
219 219
 beimingapiprefix: /onestop/sync
220 220
 beimingprivatekey: d7724e72c4be93196a35203e8379ded5
221
-shortMessageKey: 936df5fd9aba3b86adc3c1a1c52dcde1

+ 12
- 10
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java Zobrazit soubor

@@ -4,11 +4,10 @@ import io.jsonwebtoken.Claims;
4 4
 
5 5
 /**
6 6
  * 通用常量信息
7
- * 
7
+ *
8 8
  * @author ruoyi
9 9
  */
10
-public class Constants
11
-{
10
+public class Constants {
12 11
     /**
13 12
      * UTF-8 字符集
14 13
      */
@@ -71,7 +70,7 @@ public class Constants
71 70
      * 登录失败
72 71
      */
73 72
     public static final String LOGIN_FAIL = "Error";
74
- 
73
+
75 74
     /**
76 75
      * 验证码有效期(分钟)
77 76
      */
@@ -95,6 +94,10 @@ public class Constants
95 94
      * 令牌前缀
96 95
      */
97 96
     public static final String LOGIN_USER_KEY = "login_user_key";
97
+    /**
98
+     * 会议主键Id
99
+     */
100
+    public static final String MEETING_KEY = "meeting_key";
98 101
 
99 102
     /**
100 103
      * 用户ID
@@ -142,23 +145,22 @@ public class Constants
142 145
     public static final String LOOKUP_LDAPS = "ldaps:";
143 146
     public static final String DEFAULT_PASSWORD = "123456";
144 147
     // 英文逗号分隔符
145
-    public static final String SPLIT_COMMA =",";
148
+    public static final String SPLIT_COMMA = ",";
146 149
     // 中文逗号分隔符
147
-    public static final String CN_SPLIT_COMMA =",";
150
+    public static final String CN_SPLIT_COMMA = ",";
148 151
 
149 152
     /**
150 153
      * 自动识别json对象白名单配置(仅允许解析的包名,范围越小越安全)
151 154
      */
152
-    public static final String[] JSON_WHITELIST_STR = { "org.springframework", "com.ruoyi" };
155
+    public static final String[] JSON_WHITELIST_STR = {"org.springframework", "com.ruoyi"};
153 156
 
154 157
     /**
155 158
      * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加)
156 159
      */
157
-    public static final String[] JOB_WHITELIST_STR = { "com.ruoyi" };
160
+    public static final String[] JOB_WHITELIST_STR = {"com.ruoyi"};
158 161
 
159 162
     /**
160 163
      * 定时任务违规的字符
161 164
      */
162
-    public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
163
-            "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config" };
165
+    public static final String[] JOB_ERROR_STR = {"java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml", "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config"};
164 166
 }

+ 0
- 31
ruoyi-system/src/main/java/com/ruoyi/system/domain/entity/shortmessage/EncryptendInfo.java Zobrazit soubor

@@ -1,31 +0,0 @@
1
-package com.ruoyi.system.domain.entity.shortmessage;
2
-
3
-import java.util.Date;
4
-import javax.persistence.*;
5
-import lombok.Getter;
6
-import lombok.Setter;
7
-import lombok.ToString;
8
-
9
-@Getter
10
-@Setter
11
-@ToString
12
-@Table(name = "encryptend_info")
13
-public class EncryptendInfo {
14
-    /**
15
-     * 主键
16
-     */
17
-    @Id
18
-    private String uid;
19
-
20
-    /**
21
-     * 加密后的内容
22
-     */
23
-    @Column(name = "encrypted_content")
24
-    private String encryptedContent;
25
-
26
-    /**
27
-     * 创建时间
28
-     */
29
-    @Column(name = "create_time")
30
-    private Date createTime;
31
-}

+ 60
- 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/entity/shortmessage/MeetingInfo.java Zobrazit soubor

@@ -0,0 +1,60 @@
1
+package com.ruoyi.system.domain.entity.shortmessage;
2
+
3
+import lombok.AllArgsConstructor;
4
+import lombok.Builder;
5
+import lombok.Data;
6
+import lombok.NoArgsConstructor;
7
+
8
+import javax.persistence.Column;
9
+import javax.persistence.Id;
10
+import javax.persistence.Table;
11
+import java.util.Date;
12
+
13
+@Data
14
+@Builder
15
+@NoArgsConstructor
16
+@AllArgsConstructor
17
+@Table(name = "meeting_info")
18
+public class MeetingInfo {
19
+    /**
20
+     * 主键Id
21
+     */
22
+    @Id
23
+    private String uid;
24
+
25
+    /**
26
+     * 案件Id
27
+     */
28
+    @Column(name = "case_id")
29
+    private Long caseId;
30
+
31
+    /**
32
+     * 用户Id
33
+     */
34
+    @Column(name = "user_id")
35
+    private Long userId;
36
+
37
+    /**
38
+     * 用户名称
39
+     */
40
+    @Column(name = "user_name")
41
+    private String userName;
42
+
43
+    /**
44
+     * 房间Id
45
+     */
46
+    @Column(name = "room_id")
47
+    private String roomId;
48
+
49
+    /**
50
+     * 系统类型
51
+     */
52
+    @Column(name = "system_type")
53
+    private String systemType;
54
+
55
+    /**
56
+     * 创建时间
57
+     */
58
+    @Column(name = "create_time")
59
+    private Date createTime;
60
+}

+ 0
- 7
ruoyi-system/src/main/java/com/ruoyi/system/mapper/shortmessage/EncryptendInfoMapper.java Zobrazit soubor

@@ -1,7 +0,0 @@
1
-package com.ruoyi.system.mapper.shortmessage;
2
-
3
-import com.ruoyi.system.domain.entity.shortmessage.EncryptendInfo;
4
-import tk.mybatis.mapper.common.Mapper;
5
-
6
-public interface EncryptendInfoMapper extends Mapper<EncryptendInfo> {
7
-}

+ 7
- 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/shortmessage/MeetingInfoMapper.java Zobrazit soubor

@@ -0,0 +1,7 @@
1
+package com.ruoyi.system.mapper.shortmessage;
2
+
3
+import com.ruoyi.system.domain.entity.shortmessage.MeetingInfo;
4
+import tk.mybatis.mapper.common.Mapper;
5
+
6
+public interface MeetingInfoMapper extends Mapper<MeetingInfo> {
7
+}

+ 0
- 21
ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/secret/SecretInfo.java Zobrazit soubor

@@ -1,21 +0,0 @@
1
-package com.ruoyi.wisdomarbitrate.domain.vo.secret;
2
-
3
-import lombok.AllArgsConstructor;
4
-import lombok.Builder;
5
-import lombok.Data;
6
-import lombok.NoArgsConstructor;
7
-
8
-@Data
9
-@AllArgsConstructor
10
-@NoArgsConstructor
11
-@Builder
12
-public class SecretInfo {
13
-    /**
14
-     * 用户登录名、案件编号、用户id、房间号、跳转系统类型(tiaojie、zhongcai)
15
-     */
16
-    private String userName;
17
-    private String caseNo;
18
-    private String userId;
19
-    private Integer roomId;
20
-    private String systemType;
21
-}

+ 41
- 0
ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/domain/vo/shortmessage/MeetingInfoVO.java Zobrazit soubor

@@ -0,0 +1,41 @@
1
+package com.ruoyi.wisdomarbitrate.domain.vo.shortmessage;
2
+
3
+import lombok.AllArgsConstructor;
4
+import lombok.Builder;
5
+import lombok.Data;
6
+import lombok.NoArgsConstructor;
7
+
8
+@Data
9
+@Builder
10
+@NoArgsConstructor
11
+@AllArgsConstructor
12
+public class MeetingInfoVO {
13
+    /**
14
+     * 案件Id
15
+     */
16
+    private Long caseId;
17
+
18
+    /**
19
+     * 用户Id
20
+     */
21
+    private Long userId;
22
+
23
+    /**
24
+     * 用户名称
25
+     */
26
+    private String userName;
27
+
28
+    /**
29
+     * 房间Id
30
+     */
31
+    private String roomId;
32
+
33
+    /**
34
+     * 系统类型
35
+     */
36
+    private String systemType;
37
+    /**
38
+     * 登录认证令牌
39
+     */
40
+    private String token;
41
+}

+ 7
- 6
ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/shortmessage/ShortMessageService.java Zobrazit soubor

@@ -1,10 +1,8 @@
1 1
 package com.ruoyi.wisdomarbitrate.service.shortmessage;
2 2
 
3 3
 import com.ruoyi.common.core.domain.AjaxResult;
4
-import com.ruoyi.system.domain.entity.shortmessage.MsSmsSendHistoryRecord;
5
-import com.ruoyi.system.mapper.shortmessage.MsSmsSendHistoryRecordMapper;
6 4
 import com.ruoyi.wisdomarbitrate.domain.dto.sendrecord.SmsSendRecord;
7
-import com.ruoyi.wisdomarbitrate.domain.vo.secret.SecretInfo;
5
+import com.ruoyi.wisdomarbitrate.domain.vo.shortmessage.MeetingInfoVO;
8 6
 
9 7
 public interface ShortMessageService {
10 8
     /**
@@ -14,18 +12,21 @@ public interface ShortMessageService {
14 12
 
15 13
     /**
16 14
      * 重新发送短信
15
+     *
17 16
      * @param smsSendRecord
18 17
      */
19 18
     AjaxResult reSendShortMessage(SmsSendRecord smsSendRecord);
20 19
 
21 20
     /**
22 21
      * 根据信息生成加密信息记录
23
-     * @param secretInfo
22
+     *
23
+     * @param meetingInfoVO
24 24
      * @return
25 25
      */
26
-    String buildEncryptInfoRecord(SecretInfo secretInfo);
26
+    String buildMeetingInfoRecord(MeetingInfoVO meetingInfoVO);
27
+
27 28
     /**
28 29
      * 通过UID查询加密信息并解密成明文对象
29 30
      */
30
-    Object getEncryptInfoByUid(String uid);
31
+    Object getMeetingInfo(String uid);
31 32
 }

+ 38
- 30
ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/shortmessage/impl/ShortMessageServiceImpl.java Zobrazit soubor

@@ -1,36 +1,35 @@
1 1
 package com.ruoyi.wisdomarbitrate.service.shortmessage.impl;
2 2
 
3 3
 import cn.hutool.json.JSONObject;
4
-import com.fasterxml.jackson.databind.ObjectMapper;
5
-import com.fasterxml.jackson.databind.node.ObjectNode;
4
+import com.ruoyi.common.constant.Constants;
6 5
 import com.ruoyi.common.core.domain.AjaxResult;
7 6
 import com.ruoyi.common.enums.SMSStatusEnum;
8 7
 import com.ruoyi.common.utils.SmsUtils;
9
-import com.ruoyi.system.domain.entity.shortmessage.EncryptendInfo;
8
+import com.ruoyi.system.domain.entity.shortmessage.MeetingInfo;
10 9
 import com.ruoyi.system.domain.entity.shortmessage.MsSmsSendHistoryRecord;
11
-import com.ruoyi.system.mapper.shortmessage.EncryptendInfoMapper;
10
+import com.ruoyi.system.mapper.shortmessage.MeetingInfoMapper;
12 11
 import com.ruoyi.system.mapper.shortmessage.MsSmsSendHistoryRecordMapper;
13 12
 import com.ruoyi.wisdomarbitrate.domain.dto.sendrecord.SmsSendRecord;
14
-import com.ruoyi.wisdomarbitrate.domain.vo.secret.SecretInfo;
13
+import com.ruoyi.wisdomarbitrate.domain.vo.shortmessage.MeetingInfoVO;
15 14
 import com.ruoyi.wisdomarbitrate.service.shortmessage.ShortMessageService;
15
+import io.jsonwebtoken.Jwts;
16
+import io.jsonwebtoken.SignatureAlgorithm;
16 17
 import org.springframework.beans.BeanUtils;
17 18
 import org.springframework.beans.factory.annotation.Autowired;
18 19
 import org.springframework.beans.factory.annotation.Value;
19 20
 import org.springframework.stereotype.Service;
20 21
 
22
+import java.util.Date;
23
+import java.util.HashMap;
24
+import java.util.Map;
21 25
 import java.util.UUID;
22 26
 
23
-import static com.ruoyi.common.utils.EncryptUtils.sm4Decrypt;
24
-import static com.ruoyi.common.utils.EncryptUtils.sm4Encrypt;
25
-
26 27
 @Service
27 28
 public class ShortMessageServiceImpl implements ShortMessageService {
28
-    @Value("${shortMessageKey}")
29
-    private String shortMessageKey;
30 29
     @Autowired
31 30
     MsSmsSendHistoryRecordMapper msSmsSendHistoryRecordMapper;
32 31
     @Autowired
33
-    EncryptendInfoMapper encryptendInfoMapper;
32
+    MeetingInfoMapper meetingInfoMapper;
34 33
 
35 34
     /**
36 35
      * 新增发送历史记录
@@ -71,25 +70,15 @@ public class ShortMessageServiceImpl implements ShortMessageService {
71 70
     /**
72 71
      * 根据信息生成加密信息记录
73 72
      *
74
-     * @param secretInfo
73
+     * @param meetingInfoVO
75 74
      * @return
76 75
      */
77 76
     @Override
78
-    public String buildEncryptInfoRecord(SecretInfo secretInfo) {
79
-        String privateKey = shortMessageKey;
80
-        ObjectNode param = new ObjectMapper().createObjectNode();
81
-        param.put("userName", secretInfo.getUserName());
82
-        param.put("caseNo", secretInfo.getCaseNo());
83
-        param.put("userId", secretInfo.getUserId());
84
-        param.put("roomId", secretInfo.getRoomId());
85
-        param.put("systemType", secretInfo.getSystemType());
86
-        String encryptString = sm4Encrypt(param.toString(), privateKey);
77
+    public String buildMeetingInfoRecord(MeetingInfoVO meetingInfoVO) {
87 78
         String uid = UUID.randomUUID().toString().replace("-", "");
88
-        EncryptendInfo encryptendInfo = new EncryptendInfo();
89
-        encryptendInfo.setUid(uid);
90
-        encryptendInfo.setEncryptedContent(encryptString);
91
-        encryptendInfoMapper.insertSelective(encryptendInfo);
92
-        System.out.println("加密后的字符串:" + encryptString);
79
+        MeetingInfo meetingInfo = MeetingInfo.builder().userId(meetingInfoVO.getUserId()).userName(meetingInfoVO.getUserName()).caseId(meetingInfoVO.getCaseId()).roomId(meetingInfoVO.getRoomId()).systemType(meetingInfoVO.getSystemType()).createTime(new Date()).uid(uid).build();
80
+        meetingInfo.setUid(uid);
81
+        meetingInfoMapper.insertSelective(meetingInfo);
93 82
         return uid;
94 83
     }
95 84
 
@@ -99,11 +88,30 @@ public class ShortMessageServiceImpl implements ShortMessageService {
99 88
      * @param uid
100 89
      */
101 90
     @Override
102
-    public Object getEncryptInfoByUid(String uid) {
103
-        EncryptendInfo encryptendInfo = encryptendInfoMapper.selectByPrimaryKey(uid);
104
-        if (encryptendInfo != null) {
105
-            return sm4Decrypt(encryptendInfo.getEncryptedContent(), shortMessageKey);
91
+    public Object getMeetingInfo(String uid) {
92
+        MeetingInfoVO result = new MeetingInfoVO();
93
+        MeetingInfo meetingInfo = meetingInfoMapper.selectByPrimaryKey(uid);
94
+        if (meetingInfo != null) {
95
+            BeanUtils.copyProperties(meetingInfo, result);
96
+            if (result != null) {
97
+                Map<String, Object> claims = new HashMap<>();
98
+                claims.put("userName", meetingInfo.getUserName());
99
+                claims.put("userId", meetingInfo.getUserId());
100
+                claims.put(Constants.MEETING_KEY, uid);
101
+                String createToken = createToken(claims);
102
+                result.setToken(createToken);
103
+            }
104
+            return result;
106 105
         }
107 106
         return null;
108 107
     }
108
+
109
+    // 令牌秘钥
110
+    @Value("${token.secret}")
111
+    private String secret;
112
+
113
+    private String createToken(Map<String, Object> claims) {
114
+        String token = Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS512, secret).compact();
115
+        return token;
116
+    }
109 117
 }

+ 0
- 12
ruoyi-system/src/main/resources/com/ruoyi/system/mapper/shortmessage/EncryptendInfoMapper.xml Zobrazit soubor

@@ -1,12 +0,0 @@
1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
-<mapper namespace="com.ruoyi.system.mapper.shortmessage.EncryptendInfoMapper">
4
-  <resultMap id="BaseResultMap" type="com.ruoyi.system.domain.entity.shortmessage.EncryptendInfo">
5
-    <!--
6
-      WARNING - @mbg.generated
7
-    -->
8
-    <id column="uid" jdbcType="VARCHAR" property="uid" />
9
-    <result column="encrypted_content" jdbcType="VARCHAR" property="encryptedContent" />
10
-    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
11
-  </resultMap>
12
-</mapper>

+ 16
- 0
ruoyi-system/src/main/resources/com/ruoyi/system/mapper/shortmessage/MeetingInfoMapper.xml Zobrazit soubor

@@ -0,0 +1,16 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
+<mapper namespace="com.ruoyi.system.mapper.shortmessage.MeetingInfoMapper">
4
+  <resultMap id="BaseResultMap" type="com.ruoyi.system.domain.entity.shortmessage.MeetingInfo">
5
+    <!--
6
+      WARNING - @mbg.generated
7
+    -->
8
+    <id column="uid" jdbcType="VARCHAR" property="uid" />
9
+    <result column="case_id" jdbcType="BIGINT" property="caseId" />
10
+    <result column="user_id" jdbcType="BIGINT" property="userId" />
11
+    <result column="user_name" jdbcType="VARCHAR" property="userName" />
12
+    <result column="room_id" jdbcType="VARCHAR" property="roomId" />
13
+    <result column="system_type" jdbcType="VARCHAR" property="systemType" />
14
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
15
+  </resultMap>
16
+</mapper>