From a9c3679355a14ff6f3dd7f72413f8d2414f5c488 Mon Sep 17 00:00:00 2001
From: lin <sbla5888@163.com>
Date: Mon, 11 Mar 2024 11:19:59 +0800
Subject: [PATCH] 邮件发送记录优化
---
src/main/java/org/springblade/modules/system/mapper/UserMapper.xml | 4
src/main/java/org/springblade/modules/messageRecord/vo/MessageUserVO.java | 5 +
src/main/java/org/springblade/modules/messageRecord/mapper/MessageUserMapper.xml | 44 ++++++--
src/main/java/org/springblade/common/utils/SmsUtils.java | 29 +++--
src/main/java/org/springblade/modules/messageRecord/service/impl/MessageRecordServiceImpl.java | 43 ++++----
src/main/java/org/springblade/modules/resource/service/ISmsService.java | 7 +
src/main/java/org/springblade/modules/email/controller/EmailController.java | 3
src/main/java/org/springblade/modules/article/controller/ArticleController.java | 6 +
src/main/java/org/springblade/modules/messageRecord/entity/MessageUser.java | 80 +++++++++------
src/main/java/org/springblade/modules/resource/controller/SmsController.java | 14 ++
src/main/java/org/springblade/modules/resource/service/impl/SmsServiceImpl.java | 10 ++
11 files changed, 166 insertions(+), 79 deletions(-)
diff --git a/src/main/java/org/springblade/common/utils/SmsUtils.java b/src/main/java/org/springblade/common/utils/SmsUtils.java
index 5085764..14c1668 100644
--- a/src/main/java/org/springblade/common/utils/SmsUtils.java
+++ b/src/main/java/org/springblade/common/utils/SmsUtils.java
@@ -1,5 +1,6 @@
package org.springblade.common.utils;
+import org.apache.commons.lang.text.StrSubstitutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -9,6 +10,8 @@
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
public class SmsUtils {
@@ -98,6 +101,18 @@
return result;
}
+
+ public static void send(String phone, Map<String, String> content) {
+
+ StrSubstitutor strSubstitutor = new StrSubstitutor(content);
+ String url3 = "【上饶基层自治】您正在验证投票操作,验证码:${code}。如非本人操作,则密码可能已泄露,建议立即修改密码或联系客服。";
+ String context3 = strSubstitutor.replace(url3);
+ String MAS_ID = "182";
+ String PASSWORD = "bYcLgYwXOZspDzEnaGsNHAGUykKEiexknHY9H98xVTQ8Zbeya8bexQ==";
+ String reqXML = buildRequestXMLString(MAS_ID, PASSWORD, "", phone, context3);
+ postXMLSendSMSRequest("http://218.204.110.232:8080/emc/HttpSendSMSService", reqXML);
+ }
+
/**
* @param args
*/
@@ -105,18 +120,8 @@
//下面的MAS_ID、PASSWORD仅供测试使用,正式使用由移动公司分配
String MAS_ID = "182";
String PASSWORD = "bYcLgYwXOZspDzEnaGsNHAGUykKEiexknHY9H98xVTQ8Zbeya8bexQ==";
-// Map map = new HashMap<>();
-// map.put("ip", "127.0.0.1");
-// map.put("port", "3306");
-// map.put("tenantCode", "test001");
-// StrSubstitutor strSubstitutor = new StrSubstitutor(map);
-// String url3 = "jdbc:mysql://${ip}:${port}/${tenantCode}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=Asia/Shanghai";
-// String context3 = strSubstitutor.replace(url3);
-// System.out.println(context3);
-
-// String reqXML = buildRequestXMLString(MAS_ID, PASSWORD, "", "18720768376", "测试短信");
-
-// postXMLSendSMSRequest("http://218.204.110.232:8080/emc/HttpSendSMSService", reqXML);
+ String reqXML = buildRequestXMLString(MAS_ID, PASSWORD, "", "18720768376", "测试短信");
+ postXMLSendSMSRequest("http://218.204.110.232:8080/emc/HttpSendSMSService", reqXML);
}
}
diff --git a/src/main/java/org/springblade/modules/article/controller/ArticleController.java b/src/main/java/org/springblade/modules/article/controller/ArticleController.java
index 81f9d60..b9dc8ae 100644
--- a/src/main/java/org/springblade/modules/article/controller/ArticleController.java
+++ b/src/main/java/org/springblade/modules/article/controller/ArticleController.java
@@ -163,6 +163,8 @@
* @param article 资讯对象信息
*/
@PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "新增或修改资讯信息", notes = "传入article")
public R submit(@RequestBody ArticleVO article) {
if (null == article.getId()) {
if (null == article.getCreateTime()) {
@@ -190,6 +192,8 @@
* 批量修改评论区状态
*/
@PostMapping("/upcomment")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "批量修改评论区状态", notes = "传入article")
public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids, String type) {
String[] split = ids.split(",");
String strArrays = "";
@@ -208,6 +212,8 @@
* @return
*/
@GetMapping("/selectArticleG")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "查询个人资讯", notes = "传入article")
public R<IPage<Article>> selectArticleG(ArticleVO article, Query query) {
return R.data(articleService.selectArticleG(Condition.getPage(query), article));
}
diff --git a/src/main/java/org/springblade/modules/email/controller/EmailController.java b/src/main/java/org/springblade/modules/email/controller/EmailController.java
index ae47349..3394bdc 100644
--- a/src/main/java/org/springblade/modules/email/controller/EmailController.java
+++ b/src/main/java/org/springblade/modules/email/controller/EmailController.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
@@ -26,10 +27,10 @@
import static org.springblade.core.cache.constant.CacheConstant.RESOURCE_CACHE;
@NonDS
-@ApiIgnore
@RestController
@RequestMapping("/blade-email/email")
@AllArgsConstructor
+@Api(value = "邮件设置", tags = "邮件表接口")
public class EmailController extends BladeController {
private final IEmailAccountService emailAccountService;
diff --git a/src/main/java/org/springblade/modules/messageRecord/entity/MessageUser.java b/src/main/java/org/springblade/modules/messageRecord/entity/MessageUser.java
index 1ca0bb6..731261f 100644
--- a/src/main/java/org/springblade/modules/messageRecord/entity/MessageUser.java
+++ b/src/main/java/org/springblade/modules/messageRecord/entity/MessageUser.java
@@ -1,8 +1,6 @@
package org.springblade.modules.messageRecord.entity;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@@ -20,43 +18,61 @@
@TableName("blade_message_user")
public class MessageUser implements Serializable {
private static final long serialVersionUID = 1L;
- /**
- * 用户ID
- */
+
+ /** 主键 */
+ @ApiModelProperty(value = "主键ID", example = "")
@TableId(value = "id", type = IdType.ASSIGN_ID)
- private Long id;
- /**
- * 消息ID
- */
- private String messageRecordId;
+ private Long id;
- //用户id
- private String userId;
+ /** 消息记录表主键 */
+ @ApiModelProperty(value = "消息记录表主键", example = "")
+ @TableField("message_record_id")
+ private Long messageRecordId;
- //消息类型
- private String type;
-
- //邮箱
- private String email;
- //手机号
- private String phone;
-
- //是否已读(1、已读;2、未读)
+ /** 是否已读(1、已读;2、未读) */
+ @ApiModelProperty(value = "是否已读(1、已读;2、未读)", example = "")
+ @TableField("is_read")
private String isRead;
- // 1:待发送,2.:发送成功 3:发送失败
- private String sendStatus;
+ /** 用户id */
+ @ApiModelProperty(value = "用户id", example = "")
+ @TableField("user_id")
+ private String userId;
- // 重试次数
- private String retryNumber;
+ /** 消息类型 */
+ @ApiModelProperty(value = "消息类型", example = "")
+ @TableField("type")
+ private String type;
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @ApiModelProperty("创建时间")
+ /** 邮箱 */
+ @ApiModelProperty(value = "邮箱", example = "")
+ @TableField("email")
+ private String email;
+
+ /** 电话号码 */
+ @ApiModelProperty(value = "电话号码", example = "")
+ @TableField("phone")
+ private String phone;
+
+ /** 创建时间 */
+ @ApiModelProperty(value = "创建时间", example = "")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @TableField(value = "create_time",fill = FieldFill.INSERT)
private Date createTime;
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @ApiModelProperty("更新时间")
+ /** 更新时间 */
+ @ApiModelProperty(value = "更新时间", example = "")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @TableField(value = "update_time",fill = FieldFill.UPDATE)
private Date updateTime;
+
+ /** 1:待发送,2.:发送成功 3:发送失败 */
+ @ApiModelProperty(value = "1:待发送,2.:发送成功 3:发送失败", example = "")
+ @TableField("send_status")
+ private String sendStatus;
+
+ /** 重试次数 */
+ @ApiModelProperty(value = "重试次数", example = "")
+ @TableField("retry_number")
+ private Integer retryNumber;
}
diff --git a/src/main/java/org/springblade/modules/messageRecord/mapper/MessageUserMapper.xml b/src/main/java/org/springblade/modules/messageRecord/mapper/MessageUserMapper.xml
index 6cf5861..373e570 100644
--- a/src/main/java/org/springblade/modules/messageRecord/mapper/MessageUserMapper.xml
+++ b/src/main/java/org/springblade/modules/messageRecord/mapper/MessageUserMapper.xml
@@ -6,24 +6,42 @@
<select id="getPage" resultType="org.springblade.modules.messageRecord.vo.MessageUserVO">
SELECT
- bmu.*,
- bmr.title,bmr.content,bmr.create_time as sendTime,bmr.create_user as sendUserId,
- bu.real_name as sendUserName,
- bu1.real_name as receiveUserName
+ bmu.*,
+ bmr.title,bmr.content,bmr.create_time as sendTime,bmr.create_user as sendUserId,
+ bu.real_name as sendUserName,
+ bu1.real_name as receiveUserName
FROM blade_message_user bmu
LEFT JOIN blade_message_record bmr ON bmr.id = bmu.message_record_id
LEFT JOIN blade_user bu ON bu.id = bmr.create_user
LEFT JOIN blade_user bu1 ON bu1.id = bmu.user_id
where 1=1
- <if test="vo.userId != null and vo.userId !=''">
- and bmu.user_id = #{vo.userId}
- </if>
- <if test="vo.type != null and vo.type !=''">
- AND bmu.type LIKE CONCAT('%',#{vo.type},'%')
- </if>
- <if test="vo.sendUserId != null and vo.sendUserId !=''">
- AND bmr.create_user = #{vo.sendUserId}
- </if>
+ <if test="vo.userId != null and vo.userId !=''">
+ and bmu.user_id = #{vo.userId}
+ </if>
+ <if test="vo.type != null and vo.type !=''">
+ AND bmu.type LIKE CONCAT('%',#{vo.type},'%')
+ </if>
+
+ <if test="vo.title != null and vo.title !=''">
+ AND bmr.title LIKE CONCAT('%',#{vo.title},'%')
+ </if>
+
+ <if test="vo.sendStatus != null and vo.sendStatus !=''">
+ AND bmu.send_status = #{vo.sendStatus}
+ </if>
+
+ <if test="vo.content != null and vo.content !=''">
+ AND bmr.content LIKE CONCAT('%',#{vo.content},'%')
+ </if>
+ <if test="vo.sendUserId != null and vo.sendUserId !=''">
+ AND bmr.create_user = #{vo.sendUserId}
+ </if>
+ <if test="vo.sendUserName != null and vo.sendUserName !=''">
+ AND bu.real_name LIKE CONCAT('%',#{vo.sendUserName},'%')
+ </if>
+ <if test="vo.receiveUserName != null and vo.receiveUserName !=''">
+ AND bu1.real_name LIKE CONCAT('%',#{vo.receiveUserName},'%')
+ </if>
ORDER BY bmu.create_time DESC
</select>
diff --git a/src/main/java/org/springblade/modules/messageRecord/service/impl/MessageRecordServiceImpl.java b/src/main/java/org/springblade/modules/messageRecord/service/impl/MessageRecordServiceImpl.java
index 5828949..e0d0cf9 100644
--- a/src/main/java/org/springblade/modules/messageRecord/service/impl/MessageRecordServiceImpl.java
+++ b/src/main/java/org/springblade/modules/messageRecord/service/impl/MessageRecordServiceImpl.java
@@ -18,9 +18,11 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import liquibase.pro.packaged.S;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.modules.email.service.IEmailAccountService;
import org.springblade.modules.email.service.IEmailService;
@@ -64,9 +66,10 @@
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean customizeSave(MessageRecordVO messageRecord) {
-
+ if (StringUtils.isBlank(messageRecord.getType())) {
+ return false;
+ }
List<User> userList = new ArrayList();
-
if (messageRecord.getMessageResource().equals("1")) {
//系统消息(receiveUser指定的是部门,所以要通过部门去查人)
userList = userService.getUserListByDeptIds(messageRecord.getReceiver());
@@ -77,27 +80,27 @@
//保存消息记录
boolean saveRecord = save(messageRecord);
-
List<MessageUser> messageUserList = new ArrayList<>();
userList.forEach(user -> {
- MessageUser messageUser = new MessageUser();
-
- messageUser.setUserId(user.getId().toString());
- messageUser.setMessageRecordId(messageRecord.getId().toString());
- messageUser.setType(messageRecord.getType());
- messageUser.setCreateTime(DateUtil.now());
- messageUser.setUpdateTime(DateUtil.now());
- messageUser.setSendStatus("1");
- if (messageRecord.getType().indexOf("1") > -1) {
- messageUser.setSendStatus("2");
- } else if (messageRecord.getType().indexOf("2") > -1) {
- messageUser.setEmail(user.getEmail());
- } else if (messageRecord.getType().indexOf("3") > -1) {
- messageUser.setSendStatus("2");
- messageUser.setPhone(user.getPhone());
+ List<String> longs = Func.toStrList(messageRecord.getType());
+ for (String type : longs) {
+ MessageUser messageUser = new MessageUser();
+ messageUser.setUserId(user.getId().toString());
+ messageUser.setMessageRecordId(messageRecord.getId());
+ messageUser.setType(type);
+ messageUser.setCreateTime(DateUtil.now());
+ messageUser.setUpdateTime(DateUtil.now());
+ messageUser.setSendStatus("1");
+ if (messageUser.getType().indexOf("1") > -1) {
+ messageUser.setSendStatus("2");
+ } else if (messageUser.getType().indexOf("2") > -1) {
+ messageUser.setEmail(user.getEmail());
+ } else if (messageUser.getType().indexOf("3") > -1) {
+ messageUser.setSendStatus("2");
+ messageUser.setPhone(user.getPhone());
+ }
+ messageUserList.add(messageUser);
}
-
- messageUserList.add(messageUser);
});
//在message_user表里存数据
boolean saveBatch = messageUserService.saveBatch(messageUserList);
diff --git a/src/main/java/org/springblade/modules/messageRecord/vo/MessageUserVO.java b/src/main/java/org/springblade/modules/messageRecord/vo/MessageUserVO.java
index e61ea24..6bbe2d0 100644
--- a/src/main/java/org/springblade/modules/messageRecord/vo/MessageUserVO.java
+++ b/src/main/java/org/springblade/modules/messageRecord/vo/MessageUserVO.java
@@ -1,5 +1,6 @@
package org.springblade.modules.messageRecord.vo;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springblade.modules.messageRecord.entity.MessageUser;
@@ -21,6 +22,10 @@
private String startTime;
private String endTime;
+ @ApiModelProperty(value = "发送人", example = "")
+ private String sendUserName;
+ @ApiModelProperty(value = "接收人", example = "")
+ private String receiveUserName;
private Long sendUserId;
diff --git a/src/main/java/org/springblade/modules/resource/controller/SmsController.java b/src/main/java/org/springblade/modules/resource/controller/SmsController.java
index 44acf4b..f9d6c45 100644
--- a/src/main/java/org/springblade/modules/resource/controller/SmsController.java
+++ b/src/main/java/org/springblade/modules/resource/controller/SmsController.java
@@ -49,7 +49,7 @@
* @author BladeX
*/
@NonDS
-@ApiIgnore
+//@ApiIgnore
@RestController
@AllArgsConstructor
@RequestMapping(AppConstant.APPLICATION_RESOURCE_NAME + "/sms")
@@ -150,4 +150,16 @@
}
+ /**
+ * 发送短信验证码
+ */
+ @PostMapping("/smsSend")
+ @ApiOperationSupport(order = 8)
+ @ApiOperation(value = "发送短信验证码", notes = "")
+ public R smsSend( @RequestParam(value = "phone",required = false) String phone,@RequestParam(value = "type",required = false)String type) {
+
+ return R.status(smsService.smsSend(phone,type));
+ }
+
+
}
diff --git a/src/main/java/org/springblade/modules/resource/service/ISmsService.java b/src/main/java/org/springblade/modules/resource/service/ISmsService.java
index 1ac8cc0..2837e24 100644
--- a/src/main/java/org/springblade/modules/resource/service/ISmsService.java
+++ b/src/main/java/org/springblade/modules/resource/service/ISmsService.java
@@ -53,4 +53,11 @@
*/
boolean enable(Long id);
+ /**
+ * 发送验证码
+ * @param phone
+ * @param type
+ * @return
+ */
+ boolean smsSend(String phone, String type);
}
diff --git a/src/main/java/org/springblade/modules/resource/service/impl/SmsServiceImpl.java b/src/main/java/org/springblade/modules/resource/service/impl/SmsServiceImpl.java
index 148f19d..863a87a 100644
--- a/src/main/java/org/springblade/modules/resource/service/impl/SmsServiceImpl.java
+++ b/src/main/java/org/springblade/modules/resource/service/impl/SmsServiceImpl.java
@@ -19,6 +19,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.springblade.common.utils.SmsUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
@@ -26,9 +27,12 @@
import org.springblade.modules.resource.entity.Sms;
import org.springblade.modules.resource.mapper.SmsMapper;
import org.springblade.modules.resource.service.ISmsService;
+import org.springblade.modules.resource.utils.SmsUtil;
import org.springblade.modules.resource.vo.SmsVO;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Map;
/**
* 短信配置表 服务实现类
@@ -64,4 +68,10 @@
return temp1 && temp2;
}
+ @Override
+ public boolean smsSend(String phone, String type) {
+ Map<String, String> params = SmsUtil.getValidateParams();
+ SmsUtils.send(phone, params);
+ return true;
+ }
}
diff --git a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
index cf451b7..a58dc5d 100644
--- a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
@@ -84,6 +84,10 @@
<if test="user.roleId!=null and user.roleId!=''">
and role_id like concat('%',#{user.roleId},'%')
</if>
+
+ <if test="user.deptId!=null and user.deptId!=''">
+ and dept_id like concat('%',#{user.deptId},'%')
+ </if>
</select>
<select id="searchUserByDistrictId" resultType="org.springblade.modules.system.entity.User">
--
Gitblit v1.9.3