调整代码结构

This commit is contained in:
wanggeng 2022-04-23 19:21:45 +08:00
parent cc943e2d2f
commit d24cbb6dd5
17 changed files with 262 additions and 150 deletions

View File

@ -1,33 +0,0 @@
package ink.wgink.properties.form;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.io.File;
/**
* @ClassName: FormProperties
* @Description: 表单属性
* @Author: wanggeng
* @Date: 2022/3/10 4:17 PM
* @Version: 1.0
*/
@Component
@ConfigurationProperties(prefix = "form")
public class FormProperties {
private String templatePath;
public String getTemplatePath() {
templatePath = templatePath == null ? "" : templatePath.trim();
if (!StringUtils.isEmpty(templatePath) && !templatePath.endsWith(File.separator)) {
templatePath += File.separator;
}
return templatePath;
}
public void setTemplatePath(String templatePath) {
this.templatePath = templatePath;
}
}

View File

@ -170,7 +170,8 @@ public class MediaManager {
return null;
}
LinkedList<String> ffmpegCmds = new LinkedList<>(commonds);
ffmpegCmds.addFirst(FFMPEG_PATH); // 设置ffmpeg程序所在路径
// 设置ffmpeg程序所在路径
ffmpegCmds.addFirst(FFMPEG_PATH);
LOG.info("--- 待执行的FFmpeg指令为---" + ffmpegCmds);
Runtime runtime = Runtime.getRuntime();

View File

@ -68,6 +68,13 @@ public class FormReportController extends DefaultBaseController {
return formReportService.listPage(formCode, formVersion, page);
}
@GetMapping("listpage-all-fields/code/{formCode}/version/{formVersion}")
public SuccessResultList<List<Map<String, Object>>> listPageAllField(@PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, ListPage page) {
Map<String, Object> params = requestParams();
page.setParams(params);
return formReportService.listPageAllField(formCode, formVersion, page);
}
@GetMapping("list-show-field/code/{formCode}/version/{formVersion}")
public List<String> listShowField(@PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion) {
return formReportService.listShowField(formCode, formVersion);

View File

@ -20,13 +20,13 @@ public class FormDesignRouteController {
@GetMapping("save")
public ModelAndView save() {
ModelAndView mv = new ModelAndView("/form-design/save");
ModelAndView mv = new ModelAndView("form-design/save");
return mv;
}
@GetMapping("update")
public ModelAndView update() {
ModelAndView mv = new ModelAndView("/form-design/update");
ModelAndView mv = new ModelAndView("form-design/update");
return mv;
}

View File

@ -1,6 +1,10 @@
package ink.wgink.module.form.controller.route.report;
import ink.wgink.exceptions.SearchException;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.form.pojo.pos.design.FormPO;
import ink.wgink.module.form.service.design.IFormFieldService;
import ink.wgink.module.form.service.design.IFormService;
import ink.wgink.module.form.service.report.IFormReportRouteService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
@ -8,10 +12,15 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @ClassName: FormReportRouteController
@ -25,6 +34,10 @@ import javax.servlet.http.HttpSession;
@RequestMapping(ISystemConstant.ROUTE_PREFIX + "/form-report")
public class FormReportRouteController {
@Autowired
private IFormService formService;
@Autowired
private IFormFieldService formFieldService;
@Autowired
private IFormReportRouteService formReportService;
@ -39,20 +52,44 @@ public class FormReportRouteController {
@GetMapping("update/code/{formCode}/version/{formVersion}")
public void update(@PathVariable("formCode") String formCode,
@PathVariable("formVersion") Integer formVersion,
HttpSession httpSession,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
@PathVariable("formVersion") Integer formVersion,
HttpSession httpSession,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
formReportService.update(formCode, formVersion, httpSession, httpServletRequest, httpServletResponse);
}
@GetMapping("show/code/{formCode}/version/{formVersion}")
public void show(@PathVariable("formCode") String formCode,
@PathVariable("formVersion") Integer formVersion,
HttpSession httpSession,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
@PathVariable("formVersion") Integer formVersion,
HttpSession httpSession,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
formReportService.show(formCode, formVersion, httpSession, httpServletRequest, httpServletResponse);
}
@GetMapping("list/code/{formCode}/version/{formVersion}")
public ModelAndView list(@PathVariable("formCode") String formCode,
@PathVariable("formVersion") Integer formVersion) {
FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion);
if (formPO == null) {
throw new SearchException("表单不存在");
}
List<Map<String, String>> showFields = formFieldService.listByFormId(formPO.getFormId()).stream().map(
formFieldDTO -> {
Map<String, String> showField = new HashMap<>();
showField.put("fieldName", formFieldDTO.getFieldName());
showField.put("fieldExplain", formFieldDTO.getFieldExplain());
showField.put("fieldTag", formFieldDTO.getFieldTag());
return showField;
}
).collect(Collectors.toList());
ModelAndView mv = new ModelAndView("form-report/list");
mv.addObject("formCode", formCode);
mv.addObject("formVersion", formVersion);
mv.addObject("formType", formPO.getFormType());
mv.addObject("showFields", showFields);
return mv;
}
}

View File

@ -127,8 +127,8 @@ public interface IFormFieldService {
* 字段名列表
*
* @param formId 表单ID
* @param listShow 列表显示状态
* @param isListShow 列表显示状态
* @return
*/
List<String> listFieldNameByFormIdAndListShow(String formId, String listShow);
List<String> listFieldNameByFormIdAndListShow(String formId, Boolean isListShow);
}

View File

@ -8,7 +8,6 @@ import freemarker.template.Template;
import freemarker.template.TemplateException;
import ink.wgink.common.base.DefaultBaseService;
import ink.wgink.exceptions.ParamsException;
import ink.wgink.exceptions.PropertiesException;
import ink.wgink.exceptions.base.SystemException;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.form.consts.IFormDesignConst;
@ -21,7 +20,6 @@ import ink.wgink.module.form.pojo.vos.design.FormVO;
import ink.wgink.module.form.service.design.IFormDesignService;
import ink.wgink.module.form.service.design.IFormFieldService;
import ink.wgink.module.form.service.design.IFormService;
import ink.wgink.properties.form.FormProperties;
import ink.wgink.util.HtmlHelper;
import ink.wgink.util.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
@ -45,8 +43,6 @@ import java.util.Map;
@Service
public class FormDesignServiceImpl extends DefaultBaseService implements IFormDesignService {
@Autowired
private FormProperties formProperties;
@Autowired
private IFormService formService;
@Autowired
@ -60,9 +56,6 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe
@Override
public void save(FormDesignVO formDesignVO) throws IOException {
if (StringUtils.isBlank(formProperties.getTemplatePath())) {
throw new PropertiesException("未配置模板路径");
}
List<FormFieldVO> formFields = new ArrayList<>();
setFormFieldList(formFields, formDesignVO.getData());
if (formFields.isEmpty()) {

View File

@ -3,6 +3,7 @@ package ink.wgink.module.form.service.design.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import ink.wgink.common.base.DefaultBaseService;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.form.dao.design.IFormFieldDao;
import ink.wgink.module.form.pojo.dtos.design.FormFieldDTO;
import ink.wgink.module.form.pojo.pos.design.FormFieldPO;
@ -121,10 +122,12 @@ public class FormFieldServiceImpl extends DefaultBaseService implements IFormFie
}
@Override
public List<String> listFieldNameByFormIdAndListShow(String formId, String listShow) {
public List<String> listFieldNameByFormIdAndListShow(String formId, Boolean isListShow) {
Map<String, Object> params = getHashMap(2);
params.put("formId", formId);
params.put("listShow", listShow);
params.put("listShow", isListShow ? ISystemConstant.IS_TRUE : ISystemConstant.IS_FALSE);
return listFieldName(params);
}
}

View File

@ -43,7 +43,10 @@ public interface IFormReportService {
SuccessResultList<List<Map<String, Object>>> listPage(String formCode, Integer formVersion, ListPage page);
SuccessResultList<List<Map<String, Object>>> listPageAllField(String formCode, Integer formVersion, ListPage page);
List<String> listShowField(String formCode, Integer formVersion);
Integer count(String tableName);
}

View File

@ -4,7 +4,6 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import ink.wgink.common.base.DefaultBaseService;
import ink.wgink.exceptions.SearchException;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.form.dao.formreport.IFormReportDao;
import ink.wgink.module.form.enums.design.FormStatusEnum;
import ink.wgink.module.form.pojo.pos.design.FormPO;
@ -20,10 +19,8 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.sql.Timestamp;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -201,20 +198,52 @@ public class FormReportServiceImpl extends DefaultBaseService implements IFormRe
public SuccessResultList<List<Map<String, Object>>> listPage(String formCode, Integer formVersion, ListPage page) {
FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion);
checkForm(formPO);
List<String> queryList = conditionList(page.getParams());
Map<String, Object> queryParams = getHashMap(6);
queryParams.put(IFormDesignService.PARAM_FORM_CODE, formCode);
queryParams.put(IFormDesignService.PARAM_FORM_VERSION, formVersion);
queryParams.put(IFormDesignService.PARAM_QUERY_LIST, queryList);
Map<String, Object> queryParams = getListQueryParams(formPO, queryList);
queryParams.put(IFormDesignService.PARAM_LIST_SHOW_FIELD, listShowField(formPO));
return listPage(page, queryParams);
}
@Override
public SuccessResultList<List<Map<String, Object>>> listPageAllField(String formCode, Integer formVersion, ListPage page) {
FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion);
checkForm(formPO);
List<String> queryList = conditionList(page.getParams());
Map<String, Object> queryParams = getListQueryParams(formPO, queryList);
return listPage(page, queryParams);
}
private SuccessResultList<List<Map<String, Object>>> listPage(ListPage page, Map<String, Object> queryParams) {
PageHelper.startPage(page.getPage(), page.getRows());
List<Map<String, Object>> mapList = formReportDao.list(queryParams);
mapList.forEach(map -> {
if (map.containsKey(IFormDesignService.FIELD_GMT_CREATE) && map.get(IFormDesignService.FIELD_GMT_CREATE) != null) {
map.put(IFormDesignService.FIELD_GMT_CREATE, DateUtil.getDateTime(new Date(((Timestamp) map.get(IFormDesignService.FIELD_GMT_CREATE)).getTime())));
}
if (map.containsKey(IFormDesignService.FIELD_GMT_MODIFIED) && map.get(IFormDesignService.FIELD_GMT_MODIFIED) != null) {
map.put(IFormDesignService.FIELD_GMT_MODIFIED, DateUtil.getDateTime(new Date(((Timestamp) map.get(IFormDesignService.FIELD_GMT_MODIFIED)).getTime())));
}
});
PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(mapList);
return new SuccessResultList<>(mapList, pageInfo.getPageNum(), pageInfo.getTotal());
}
/**
* 获取列表查询参数
*
* @param formCode
* @param formVersion
* @param queryList
* @return
*/
private Map<String, Object> getListQueryParams(FormPO formPO, List<String> queryList) {
Map<String, Object> queryParams = getHashMap(6);
queryParams.put(IFormDesignService.PARAM_FORM_CODE, formPO.getFormCode());
queryParams.put(IFormDesignService.PARAM_FORM_VERSION, formPO.getFormVersion());
queryParams.put(IFormDesignService.PARAM_QUERY_LIST, queryList);
return queryParams;
}
@Override
public List<String> listShowField(String formCode, Integer formVersion) {
FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion);
@ -249,7 +278,7 @@ public class FormReportServiceImpl extends DefaultBaseService implements IFormRe
* @return
*/
private List<String> listShowField(FormPO formPO) {
return formFieldService.listFieldNameByFormIdAndListShow(formPO.getFormId(), ISystemConstant.IS_TRUE);
return formFieldService.listFieldNameByFormIdAndListShow(formPO.getFormId(), true);
}
/**

View File

@ -66,10 +66,17 @@
<!-- 列表 -->
<select id="list" parameterType="map" resultType="map">
SELECT
<foreach collection="listShowField" index="item" separator=",">
<choose>
<when test="listShowField != null and listShowField.size > 0">
<foreach collection="listShowField" index="item" separator=",">
${item}
</foreach>
</foreach>
uid
</when>
<otherwise>
*
</otherwise>
</choose>
FROM
df_${formCode}_v${formVersion}
WHERE

View File

@ -11,7 +11,7 @@
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
</head>
<body>
<div class="layui-fluid layui-anim layui-anim-fadein">
<div class="layui-anim layui-anim-fadein">
<div class="layui-row">
<div class="layui-col-md12">
<div class="layui-card">
@ -45,27 +45,100 @@
</div>
</div>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script type="text/javascript">
<script type="text/javascript" th:inline="javascript">
layui.config({
base: 'assets/layuiadmin/'
}).extend({
index: 'lib/index'
}).use(['index', 'table', 'laydate', 'ztree'], function() {
}).use(['index', 'table', 'laydate', 'ztree', 'common'], function() {
var $ = layui.$;
var $win = $(window);
var form = layui.form;
var table = layui.table;
var admin = layui.admin;
var laydate = layui.laydate;
var common = layui.common;
var formCode = [[${formCode}]];
var formVersion = [[${formVersion}]];
var showFields = [[${showFields}]];
// 初始化表格
function initTable() {
console.log(showFields);
var cols = [
{type:'checkbox', fixed: 'left'},
{field:'rowNum', width:80, title: '序号', fixed: 'left', align:'center', templet: '<span>{{d.LAY_INDEX}}</span>'},
{field:'MAIN_TITLE', width:200, title: '主标题', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(!rowData) {
return '-';
}
return rowData;
}
},
];
for(var i = 0, showField; showField = showFields[i++];) {
cols.push(
{
field: showField.fieldName,
width:200,
title: showField.fieldExplain,
align:'center',
templet: function(row) {
var rowData = row[this.field];
if(!rowData) {
return '-';
}
return rowData;
}
}
)
}
cols.push(
{field:'creator', width: 200, title: '创建人', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(!rowData) {
return '-';
}
return rowData;
}
},
{field:'gmt_create', width: 180, title: '创建时间', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(!rowData) {
return '-';
}
return rowData;
}
},
{field:'modifier', width: 200, title: '修改人', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(!rowData) {
return '-';
}
return rowData;
}
},
{field:'gmt_modified', width: 180, title: '修改时间', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(!rowData) {
return '-';
}
return rowData;
}
},
)
table.render({
elem: '#dataTable',
id: 'dataTable',
url: top.restAjax.path('api/form/listpage', []),
url: top.restAjax.path('api/form-report/listpage-all-fields/code/{formCode}/version/{formVersion}', [formCode, formVersion]),
width: admin.screen() > 1 ? '100%' : '',
height: $win.height() - 90,
height: $win.height() - 60,
limit: 20,
limits: [20, 40, 60, 80, 100, 200],
toolbar: '#headerToolBar',
@ -73,12 +146,7 @@
pageName: 'page',
limitName: 'rows'
},
cols: [
[
{type:'checkbox', fixed: 'left'},
{field:'rowNum', width:80, title: '序号', fixed: 'left', align:'center', templet: '<span>{{d.LAY_INDEX}}</span>'},
]
],
cols: [cols],
page: true,
parseData: function(data) {
return {

View File

@ -143,7 +143,7 @@
{field:'opition', width:210, title: '操作', fixed:'right', align:'center',
templet: function(item) {
return '<div class="layui-btn-group">' +
'<button type="button" class="layui-btn layui-btn-xs" lay-event="showFormEvent">数据列表</button>'+
'<button type="button" class="layui-btn layui-btn-xs" lay-event="reportListEvent">数据列表</button>'+
'<button type="button" class="layui-btn layui-btn-xs layui-btn-normal" lay-event="formFieldEvent">字段列表</button>'+
'<button type="button" class="layui-btn layui-btn-xs layui-btn-danger" lay-event="deleteEvent" title="该操作将连同物理表(无数据)一并删除">物理删除</button>'+
'</div>';
@ -321,8 +321,8 @@
} else if(event === 'showFormEvent') {
top.dialog.open({
title: '预览',
url: top.restAjax.path('route/form-report/save/code/{formCode}/version/{formVersion}', [data.formCode, data.formVersion]),
width: '50%',
url: top.restAjax.path('route/form-report/list?formCode={formCode}&formVersion={formVersion}', [data.formCode, data.formVersion]),
width: '80%',
height: '80%',
onClose: function () {
}
@ -330,8 +330,8 @@
} else if(event === 'reportListEvent') {
top.dialog.open({
title: '上报列表',
url: top.restAjax.path('route/form-report?formCode={formCode}&version={formVersion}', [data.formCode, data.formVersion]),
width: '50%',
url: top.restAjax.path('route/form-report/list/code/{formCode}/version/{formVersion}', [data.formCode, data.formVersion]),
width: '70%',
height: '80%',
onClose: function () {
}

View File

@ -1,6 +1,5 @@
package ink.wgink.module.sms.pojo.vos.sms;
import ink.wgink.annotation.CheckEmptyAnnotation;
import ink.wgink.annotation.CheckListAnnotation;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -15,23 +14,11 @@ import java.util.List;
* @Version: 1.0
**/
@ApiModel
public class SmsPhoneSendVO {
public class SmsPhoneSendVO extends SmsSendBaseVO {
@ApiModelProperty(name = "phones", value = "手机列表", required = true)
@CheckListAnnotation(name = "手机列表")
private List<String> phones;
@ApiModelProperty(name = "content", value = "发送内容", required = true)
@CheckEmptyAnnotation(name = "发送内容")
private String content;
@ApiModelProperty(name = "sendUserId", value = "发送人用户ID", required = true)
@CheckEmptyAnnotation(name = "发送人用户ID")
private String sendUserId;
@ApiModelProperty(name = "sendUserUsername", value = "发送人用户名", required = true)
@CheckEmptyAnnotation(name = "发送人用户名")
private String sendUserUsername;
@ApiModelProperty(name = "sendUserName", value = "发送人昵称", required = true)
@CheckEmptyAnnotation(name = "发送人昵称")
private String sendUserName;
public List<String> getPhones() {
return phones;
@ -41,35 +28,4 @@ public class SmsPhoneSendVO {
this.phones = phones;
}
public String getContent() {
return content == null ? "" : content.trim();
}
public void setContent(String content) {
this.content = content;
}
public String getSendUserId() {
return sendUserId == null ? "" : sendUserId.trim();
}
public void setSendUserId(String sendUserId) {
this.sendUserId = sendUserId;
}
public String getSendUserUsername() {
return sendUserUsername == null ? "" : sendUserUsername.trim();
}
public void setSendUserUsername(String sendUserUsername) {
this.sendUserUsername = sendUserUsername;
}
public String getSendUserName() {
return sendUserName == null ? "" : sendUserName.trim();
}
public void setSendUserName(String sendUserName) {
this.sendUserName = sendUserName;
}
}

View File

@ -0,0 +1,37 @@
package ink.wgink.module.sms.pojo.vos.sms;
import ink.wgink.annotation.CheckEmptyAnnotation;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* @ClassName: SmsSendBaseVO
* @Description: 消息发送
* @Author: wanggeng
* @Date: 2022/4/23 11:51
* @Version: 1.0
*/
@ApiModel
public class SmsSendBaseVO {
@ApiModelProperty(name = "content", value = "发送内容", required = true)
@CheckEmptyAnnotation(name = "发送内容")
private String content;
public String getContent() {
return content == null ? "" : content.trim();
}
public void setContent(String content) {
this.content = content;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("{");
sb.append("\"content\":\"")
.append(content).append('\"');
sb.append('}');
return sb.toString();
}
}

View File

@ -12,14 +12,12 @@ import io.swagger.annotations.ApiModelProperty;
* @Version: 1.0
**/
@ApiModel
public class SmsSendVO {
public class SmsSendVO extends SmsSendBaseVO {
@ApiModelProperty(name = "userIds", value = "用户ID列表下划线分割", required = true)
@CheckEmptyAnnotation(name = "用户ID列表")
private String userIds;
@ApiModelProperty(name = "content", value = "发送内容", required = true)
@CheckEmptyAnnotation(name = "发送内容")
private String content;
public String getUserIds() {
return userIds == null ? "" : userIds.trim();
@ -29,12 +27,4 @@ public class SmsSendVO {
this.userIds = userIds;
}
public String getContent() {
return content == null ? "" : content;
}
public void setContent(String content) {
this.content = content;
}
}

View File

@ -12,6 +12,7 @@ import ink.wgink.module.sms.manager.VerifyCodeManager;
import ink.wgink.module.sms.pojo.dtos.sms.SmsDTO;
import ink.wgink.module.sms.pojo.pos.sms.SmsPO;
import ink.wgink.module.sms.pojo.vos.sms.SmsPhoneSendVO;
import ink.wgink.module.sms.pojo.vos.sms.SmsSendBaseVO;
import ink.wgink.module.sms.pojo.vos.sms.SmsSendVO;
import ink.wgink.module.sms.pojo.vos.sms.SmsVO;
import ink.wgink.module.sms.service.sms.ISmsService;
@ -160,15 +161,8 @@ public class SmsServiceImpl extends DefaultBaseService implements ISmsService {
public void send(SmsSendVO smsSendVO) {
List<String> userIds = Arrays.asList(smsSendVO.getUserIds().split("\\_"));
List<UserDTO> userDTOs = userBaseService.listByUserIds(userIds);
for (UserDTO userDTO : userDTOs) {
if (!RegexUtil.isPhone(userDTO.getUserUsername())) {
throw new ParamsException(userDTO.getUserName() + " 的用户名不是手机号");
}
}
scheduledExecutorService.schedule(() -> {
for (UserDTO userDTO : userDTOs) {
sendContentByUserIdAndPhoneAndUserName(userDTO.getUserId(), userDTO.getUserUsername(), userDTO.getUserName(), smsSendVO.getContent());
}
sendSms(userDTOs, smsSendVO);
}, 3, TimeUnit.SECONDS);
}
@ -179,11 +173,31 @@ public class SmsServiceImpl extends DefaultBaseService implements ISmsService {
throw new ParamsException(phone + " 不是手机号");
}
}
List<UserDTO> userDTOs = userBaseService.listByUserPhones(smsPhoneSendVO.getPhones());
scheduledExecutorService.schedule(() -> {
sendContentByUserIdAndPhoneAndUserName(smsPhoneSendVO.getSendUserId(), smsPhoneSendVO.getSendUserUsername(), smsPhoneSendVO.getSendUserName(), smsPhoneSendVO.getContent());
sendSms(userDTOs, smsPhoneSendVO);
}, 3, TimeUnit.SECONDS);
}
/**
* 发送短信
*
* @param userDTOs
*/
private void sendSms(List<UserDTO> userDTOs, SmsSendBaseVO smsSendBaseVO) {
userDTOs.forEach(userDTO -> {
if (StringUtils.isBlank(userDTO.getUserPhone())) {
LOG.info("用户 {}:{} 手机号为空", userDTO.getUserId(), userDTO.getUserUsername());
return;
}
if (!RegexUtil.isPhone(userDTO.getUserPhone())) {
LOG.info("用户 {}:{} 手机号格式错误", userDTO.getUserId(), userDTO.getUserUsername());
return;
}
sendContentByUserIdAndPhoneAndUserName(userDTO.getUserId(), userDTO.getUserPhone(), userDTO.getUserName(), smsSendBaseVO.getContent());
});
}
@Override
public List<SmsPO> listPO(Map<String, Object> params) {
return smsDao.listPO(params);