feat(sms):平台短信功能

yun-zuoyi
汪云昊 4 years ago
parent cb0460cf7b
commit 7222a53840

@ -58,4 +58,7 @@ public interface ISystemInitService {
@ApiOperation(value = "定时任务日志等级") @ApiOperation(value = "定时任务日志等级")
void reloadBarcodeRule(); void reloadBarcodeRule();
@ApiOperation(value = "重启短信状态同步线程")
void createSmsSyncThread();
} }

@ -5,7 +5,6 @@ import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.platform.bean.SysConfig; import cn.estsh.i3plus.pojo.platform.bean.SysConfig;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -92,6 +91,6 @@ public interface ISysConfigService {
* @return * @return
*/ */
@ApiOperation(value = "根据系统参数组来查找系统参数") @ApiOperation(value = "根据系统参数组来查找系统参数")
List findSysConfigByGroup(Integer group); List<SysConfig> findSysConfigByGroup(Integer group);
} }

@ -0,0 +1,17 @@
package cn.estsh.i3plus.core.api.iservice.busi;
import cn.estsh.i3plus.pojo.platform.bean.SysSmsSendRecord;
import cn.estsh.impp.framework.base.service.ICrudService;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-12-14 20:14
* @Modify:
**/
public interface ISysSmsSendRecordService extends ICrudService<SysSmsSendRecord> {
}

@ -0,0 +1,31 @@
package cn.estsh.i3plus.core.api.iservice.busi;
import cn.estsh.i3plus.pojo.platform.bean.SysSmsSign;
import cn.estsh.impp.framework.base.service.ICrudService;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-12-14 20:13
* @Modify:
**/
public interface ISysSmsSignService extends ICrudService<SysSmsSign> {
/**
*
*
* @param sysSmsSign
* @return
*/
boolean checkSysSignOnly(SysSmsSign sysSmsSign);
/**
*
*
* @param code
* @return
*/
SysSmsSign getSysSmsSignByCode(String code);
}

@ -0,0 +1,31 @@
package cn.estsh.i3plus.core.api.iservice.busi;
import cn.estsh.i3plus.pojo.platform.bean.SysSmsTemplate;
import cn.estsh.impp.framework.base.service.ICrudService;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-12-14 20:14
* @Modify:
**/
public interface ISysSmsTemplateService extends ICrudService<SysSmsTemplate> {
/**
*
*
* @param smsTemplate
* @return
*/
boolean checkSysSmsTemplateOnly(SysSmsTemplate smsTemplate);
/**
* code
*
* @param code
* @return
*/
SysSmsTemplate getSysSmsTemplateByCode(String code);
}

@ -87,6 +87,11 @@
<artifactId>i3plus-sdk-wechat</artifactId> <artifactId>i3plus-sdk-wechat</artifactId>
</dependency> </dependency>
<dependency>
<groupId>i3plus.sdk</groupId>
<artifactId>i3plus-sdk-sms</artifactId>
</dependency>
<!-- impp framework --> <!-- impp framework -->
<dependency> <dependency>
<groupId>impp.framework</groupId> <groupId>impp.framework</groupId>

@ -13,6 +13,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.MailConfig; import cn.estsh.i3plus.pojo.platform.bean.MailConfig;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser; import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.sdk.sms.base.pojo.SmsConfig;
import cn.estsh.i3plus.pojo.platform.bean.SysConfig; import cn.estsh.i3plus.pojo.platform.bean.SysConfig;
import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.auth.AuthUtil;
@ -29,6 +30,8 @@ import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import static cn.estsh.i3plus.platform.common.util.CommonConstWords.*;
/** /**
* @Description : * @Description :
* @Reference : * @Reference :
@ -38,7 +41,7 @@ import java.util.List;
**/ **/
@RestController @RestController
@Api(tags = "系统参数管理服务") @Api(tags = "系统参数管理服务")
@RequestMapping(PlatformConstWords.BASE_URL +"/sys-config") @RequestMapping(PlatformConstWords.BASE_URL + "/sys-config")
public class SysConfigController extends CoreBaseController { public class SysConfigController extends CoreBaseController {
public static final Logger LOGGER = LoggerFactory.getLogger(SysConfigController.class); public static final Logger LOGGER = LoggerFactory.getLogger(SysConfigController.class);
@ -53,11 +56,12 @@ public class SysConfigController extends CoreBaseController {
/** /**
* *
*
* @param sysConfig * @param sysConfig
* @return * @return
*/ */
@PostMapping("/insert") @PostMapping("/insert")
@ApiOperation(value = "添加系统参数",notes = "添加系统参数") @ApiOperation(value = "添加系统参数", notes = "添加系统参数")
public ResultBean insertSysConfig(SysConfig sysConfig) { public ResultBean insertSysConfig(SysConfig sysConfig) {
try { try {
// 登录用户 // 登录用户
@ -65,26 +69,27 @@ public class SysConfigController extends CoreBaseController {
// 条件验证 // 条件验证
ValidatorBean.beginValid(sysConfig) ValidatorBean.beginValid(sysConfig)
.notNull("name",sysConfig.getName()) .notNull("name", sysConfig.getName())
.notNull("configCode",sysConfig.getConfigCode()) .notNull("configCode", sysConfig.getConfigCode())
.notNull("configType",sysConfig.getConfigType()) .notNull("configType", sysConfig.getConfigType())
.notNull("configValue",sysConfig.getConfigValue()); .notNull("configValue", sysConfig.getConfigValue());
//修改初始化 //修改初始化
ConvertBean.modelInitialize(sysConfig,user); ConvertBean.modelInitialize(sysConfig, user);
sysConfigService.insertSysConfig(sysConfig); sysConfigService.insertSysConfig(sysConfig);
systemInitService.putAndLoadSysConfig(); systemInitService.putAndLoadSysConfig();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){ } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
}catch(Exception e){ } catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
/** /**
* id * id
*
* @param idStr id * @param idStr id
* @return * @return
*/ */
@ -95,8 +100,8 @@ public class SysConfigController extends CoreBaseController {
startMultiService(); startMultiService();
// 条件验证 // 条件验证
ValidatorBean.checkNotNull(idStr,"id不能为空"); ValidatorBean.checkNotNull(idStr, "id不能为空");
if(sysConfigService.getSysConfigById(Long.parseLong(idStr)) == null){ if (sysConfigService.getSysConfigById(Long.parseLong(idStr)) == null) {
throw ImppExceptionBuilder.newInstance() throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
@ -108,41 +113,42 @@ public class SysConfigController extends CoreBaseController {
sysConfigService.deleteSysConfigById(Long.parseLong(idStr)); sysConfigService.deleteSysConfigById(Long.parseLong(idStr));
systemInitService.putAndLoadSysConfig(); systemInitService.putAndLoadSysConfig();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){ } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
}catch(Exception e){ } catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
/** /**
* *
*
* @param sysConfig * @param sysConfig
* @return * @return
*/ */
@PutMapping(value = "/update") @PutMapping(value = "/update")
@ApiOperation(value = "修改系统参数",notes = "修改系统参数") @ApiOperation(value = "修改系统参数", notes = "修改系统参数")
public ResultBean updateSysConfig(SysConfig sysConfig){ public ResultBean updateSysConfig(SysConfig sysConfig) {
try { try {
// 登录用户 // 登录用户
SessionUser user = AuthUtil.getSessionUser(); SessionUser user = AuthUtil.getSessionUser();
// 条件验证 // 条件验证
ValidatorBean.beginValid(sysConfig) ValidatorBean.beginValid(sysConfig)
.notNull("name",sysConfig.getName()) .notNull("name", sysConfig.getName())
.notNull("configCode",sysConfig.getConfigCode()) .notNull("configCode", sysConfig.getConfigCode())
.notNull("configType",sysConfig.getConfigType()) .notNull("configType", sysConfig.getConfigType())
.notNull("configValue",sysConfig.getConfigValue()); .notNull("configValue", sysConfig.getConfigValue());
//添加初始化 //添加初始化
ConvertBean.modelUpdate(sysConfig,user); ConvertBean.modelUpdate(sysConfig, user);
sysConfigService.updateSysConfig(sysConfig); sysConfigService.updateSysConfig(sysConfig);
systemInitService.putAndLoadSysConfig(); systemInitService.putAndLoadSysConfig();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){ } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
}catch(Exception e){ } catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
@ -150,139 +156,144 @@ public class SysConfigController extends CoreBaseController {
/** /**
* *
*
* @param bean * @param bean
* @return * @return
*/ */
@PutMapping(value = "/update-value") @PutMapping(value = "/update-value")
@ApiOperation(value = "修改系统参数内容",notes = "修改系统参数内容") @ApiOperation(value = "修改系统参数内容", notes = "修改系统参数内容")
public ResultBean updateSysConfigValue(SysConfig bean){ public ResultBean updateSysConfigValue(SysConfig bean) {
try { try {
// 条件验证 // 条件验证
ValidatorBean.beginValid(bean) ValidatorBean.beginValid(bean)
.notNull("configCode",bean.getConfigCode()); .notNull("configCode", bean.getConfigCode());
SysConfig config = sysConfigService.getSysConfigByCode(bean.getConfigCode()); SysConfig config = sysConfigService.getSysConfigByCode(bean.getConfigCode());
ValidatorBean.checkNotNull(config,"不存在的配置信息"); ValidatorBean.checkNotNull(config, "不存在的配置信息");
config.setConfigValue(bean.getConfigValue()); config.setConfigValue(bean.getConfigValue());
ConvertBean.modelUpdate(config,getSessionUser()); ConvertBean.modelUpdate(config, getSessionUser());
sysConfigService.updateSysConfig(config); sysConfigService.updateSysConfig(config);
systemInitService.putAndLoadSysConfig(); systemInitService.putAndLoadSysConfig();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){ } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
}catch(Exception e){ } catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
/** /**
* *
*
* @return * @return
*/ */
@GetMapping(value = "/list") @GetMapping(value = "/list")
@ApiOperation(value = "查询全部系统参数",notes = "查询全部系统参数") @ApiOperation(value = "查询全部系统参数", notes = "查询全部系统参数")
public ResultBean findSysConfigAll(){ public ResultBean findSysConfigAll() {
try { try {
List<SysConfig> sysConfigList = sysConfigService.ListSysConfig(); List<SysConfig> sysConfigList = sysConfigService.ListSysConfig();
return ResultBean.success("操作成功") return ResultBean.success("操作成功")
.setResultList(sysConfigList) .setResultList(sysConfigList)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){ } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
}catch(Exception e){ } catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
/** /**
* id * id
*
* @param id id * @param id id
* @return * @return
*/ */
@GetMapping(value = "/get/{id}") @GetMapping(value = "/get/{id}")
@ApiOperation(value = "根据id查询系统参数",notes = "根据id查询系统参数") @ApiOperation(value = "根据id查询系统参数", notes = "根据id查询系统参数")
public ResultBean getSysConfigById(@PathVariable("id") String id){ public ResultBean getSysConfigById(@PathVariable("id") String id) {
try { try {
ValidatorBean.checkNotNull(id,"id不能为空"); ValidatorBean.checkNotNull(id, "id不能为空");
SysConfig sysConfig = sysConfigService.getSysConfigById(Long.parseLong(id)); SysConfig sysConfig = sysConfigService.getSysConfigById(Long.parseLong(id));
if (sysConfig != null) { if (sysConfig != null) {
return ResultBean.success("操作成功") return ResultBean.success("操作成功")
.setResultObject(sysConfig).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); .setResultObject(sysConfig).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}else { } else {
return ResultBean.fail("数据不存在").setCode(ResourceEnumUtil.MESSAGE.EMPTY.getCode()); return ResultBean.fail("数据不存在").setCode(ResourceEnumUtil.MESSAGE.EMPTY.getCode());
} }
}catch(ImppBusiException busExcep){ } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
}catch(Exception e){ } catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
/** /**
* *
*
* @param sysConfig * @param sysConfig
* @param pager * @param pager
* @return * @return
*/ */
@GetMapping("/query") @GetMapping("/query")
@ApiOperation(value = "系统参数复杂查询,分页,排序",notes = "系统参数复杂查询,分页,排序") @ApiOperation(value = "系统参数复杂查询,分页,排序", notes = "系统参数复杂查询,分页,排序")
public ResultBean querySysConfigByPager(SysConfig sysConfig,Pager pager) { public ResultBean querySysConfigByPager(SysConfig sysConfig, Pager pager) {
try { try {
ListPager sysConfigListPager = sysConfigService.querySysConfigByPager(sysConfig,pager); ListPager sysConfigListPager = sysConfigService.querySysConfigByPager(sysConfig, pager);
return ResultBean.success("操作成功").setListPager(sysConfigListPager).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); return ResultBean.success("操作成功").setListPager(sysConfigListPager).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){ } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
}catch(Exception e){ } catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
/** /**
* *
*
* @param code * @param code
* @return * @return
*/ */
@GetMapping(value = "/get-code/{code}") @GetMapping(value = "/get-code/{code}")
@ApiOperation(value = "根据代码获取系统配置") @ApiOperation(value = "根据代码获取系统配置")
public ResultBean getSysConfigByCode(@PathVariable("code") String code){ public ResultBean getSysConfigByCode(@PathVariable("code") String code) {
try { try {
ValidatorBean.checkNotNull(code,"配置项代码不能为空"); ValidatorBean.checkNotNull(code, "配置项代码不能为空");
SysConfig sysConfig = sysConfigService.getSysConfigByCode(code); SysConfig sysConfig = sysConfigService.getSysConfigByCode(code);
if(sysConfig == null){ if (sysConfig == null) {
return ResultBean.fail("数据不存在").setCode(ResourceEnumUtil.MESSAGE.EMPTY.getCode()); return ResultBean.fail("数据不存在").setCode(ResourceEnumUtil.MESSAGE.EMPTY.getCode());
} else{ } else {
return ResultBean.success("操作成功").setResultObject(sysConfig).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); return ResultBean.success("操作成功").setResultObject(sysConfig).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} }
}catch(ImppBusiException busExcep){ } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
}catch(Exception e){ } catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
/** /**
* *
*
* @return * @return
*/ */
@GetMapping("/find-mail") @GetMapping("/find-mail")
@ApiOperation(value = "查询邮件配置") @ApiOperation(value = "查询邮件配置")
public ResultBean findMailSysConfig(){ public ResultBean findMailSysConfig() {
try { try {
List sysConfig = sysConfigService.findMailConfig(); List sysConfig = sysConfigService.findMailConfig();
if(sysConfig == null){ if (sysConfig == null) {
return ResultBean.fail("数据不存在").setCode(ResourceEnumUtil.MESSAGE.EMPTY.getCode()); return ResultBean.fail("数据不存在").setCode(ResourceEnumUtil.MESSAGE.EMPTY.getCode());
} else{ } else {
return ResultBean.success("操作成功").setResultList(sysConfig).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); return ResultBean.success("操作成功").setResultList(sysConfig).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} }
}catch(ImppBusiException busExcep){ } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
}catch(Exception e){ } catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
@ -291,6 +302,7 @@ public class SysConfigController extends CoreBaseController {
* *
* wei.peng : * wei.peng :
* 使 SysConfigController.updateSysConfigValue() * 使 SysConfigController.updateSysConfigValue()
*
* @param code * @param code
* @param value * @param value
* @return * @return
@ -298,41 +310,42 @@ public class SysConfigController extends CoreBaseController {
@Deprecated @Deprecated
@PostMapping("/update-code/{code}/{value}") @PostMapping("/update-code/{code}/{value}")
@ApiOperation(value = "根据code修改系统配置") @ApiOperation(value = "根据code修改系统配置")
public ResultBean updateSysConfigByCode(@PathVariable("code") String code,@PathVariable("value") String value){ public ResultBean updateSysConfigByCode(@PathVariable("code") String code, @PathVariable("value") String value) {
try{ try {
ValidatorBean.checkNotNull(code,"配置项代码不能为空"); ValidatorBean.checkNotNull(code, "配置项代码不能为空");
ValidatorBean.checkNotNull(value,"值不能为空"); ValidatorBean.checkNotNull(value, "值不能为空");
sysConfigService.updateSysConfigByCode(code,value); sysConfigService.updateSysConfigByCode(code, value);
systemInitService.putAndLoadSysConfig(); systemInitService.putAndLoadSysConfig();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){ } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
}catch(Exception e){ } catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
/** /**
* *
*
* @param mailConfig * @param mailConfig
* @return * @return
*/ */
@GetMapping("/send-test-mail") @GetMapping("/send-test-mail")
@ApiOperation(value = "邮件测试") @ApiOperation(value = "邮件测试")
public ResultBean sendTestMail(MailConfig mailConfig){ public ResultBean sendTestMail(MailConfig mailConfig) {
try { try {
ValidatorBean.beginValid(mailConfig) ValidatorBean.beginValid(mailConfig)
.notNull("mailSwitch",mailConfig.getMailSwitch()) .notNull("mailSwitch", mailConfig.getMailSwitch())
.notNull("mailHost",mailConfig.getMailHost()) .notNull("mailHost", mailConfig.getMailHost())
.notNull("mailPort",mailConfig.getMailPort()) .notNull("mailPort", mailConfig.getMailPort())
.notNull("mailUser",mailConfig.getMailUser()) .notNull("mailUser", mailConfig.getMailUser())
.notNull("mailPassword",mailConfig.getMailPassword()) .notNull("mailPassword", mailConfig.getMailPassword())
.notNull("mailNick",mailConfig.getMailNick()) .notNull("mailNick", mailConfig.getMailNick())
.notNull("testTo",mailConfig.getTestTo()); .notNull("testTo", mailConfig.getTestTo());
// 是否开启邮件服务器 // 是否开启邮件服务器
if(mailConfig.getMailSwitch() != CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){ if (mailConfig.getMailSwitch() != CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) {
throw ImppExceptionBuilder.newInstance() throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.MAIL_SERVER_NOT_OPEN_ERROR.getCode()) .setErrorCode(ImppExceptionEnum.MAIL_SERVER_NOT_OPEN_ERROR.getCode())
@ -349,29 +362,108 @@ public class SysConfigController extends CoreBaseController {
mailUtil.send(); mailUtil.send();
return ResultBean.success("测试邮件已发送").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); return ResultBean.success("测试邮件已发送").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch(ImppBusiException busExcep){ } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
}catch(Exception e){ } catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
/** /**
* *
*
* @param group * @param group
* @return * @return
*/ */
@GetMapping("/find-group/{group}") @GetMapping("/find-group/{group}")
@ApiOperation(value = "根据参数组查询系统参数") @ApiOperation(value = "根据参数组查询系统参数")
public ResultBean findSysConfigByGroup(@PathVariable("group") Integer group){ public ResultBean findSysConfigByGroup(@PathVariable("group") Integer group) {
try { try {
ValidatorBean.checkNotNull(group,"参数组不能为空"); ValidatorBean.checkNotNull(group, "参数组不能为空");
List<SysConfig> sysConfigList = sysConfigService.findSysConfigByGroup(group); List<SysConfig> sysConfigList = sysConfigService.findSysConfigByGroup(group);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(sysConfigList); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(sysConfigList);
}catch(ImppBusiException busExcep){ } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
**/
@GetMapping("/find-sms")
@ApiOperation(value = "查询短信配置")
public ResultBean<SmsConfig> findSmsConfig() {
try {
SmsConfig smsConfig = new SmsConfig();
smsConfig.setSmsSwitch(getConfigIntValByCode(CONFIG_SMS_SWITCH));
smsConfig.setSmsSupplier(getConfigIntValByCode(CONFIG_SMS_SUPPLIER));
smsConfig.setSmsAccessKeyId(getConfigStrValByCode(CONFIG_SMS_ACCESS_KEY_ID));
smsConfig.setSmsSecret(getConfigStrValByCode(CONFIG_SMS_SECRET));
smsConfig.setSmsEndpoint(getConfigStrValByCode(CONFIG_SMS_ENDPOINT));
smsConfig.setSmsRegionId(getConfigStrValByCode(CONFIG_SMS_REGION_ID));
return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultObject(smsConfig);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
**/
@GetMapping("/save-sms")
@ApiOperation(value = "查询短信配置")
public ResultBean saveSmsConfig(@RequestBody SmsConfig smsConfig) {
try {
ValidatorBean.beginValid(smsConfig)
.notNull("smsSwitch", smsConfig.getSmsSwitch())
.notNull("smsSupplier", smsConfig.getSmsSupplier())
.notNull("smsAccessKeyId", smsConfig.getSmsAccessKeyId())
.notNull("smsSecret", smsConfig.getSmsSecret())
.notNull("smsEndpoint", smsConfig.getSmsEndpoint())
.notNull("smsRegionId", smsConfig.getSmsRegionId());
sysConfigService.updateSysConfigByCode(CONFIG_SMS_SWITCH, smsConfig.getSmsSwitch().toString());
sysConfigService.updateSysConfigByCode(CONFIG_SMS_SUPPLIER, smsConfig.getSmsSupplier().toString());
sysConfigService.updateSysConfigByCode(CONFIG_SMS_ACCESS_KEY_ID, smsConfig.getSmsAccessKeyId());
sysConfigService.updateSysConfigByCode(CONFIG_SMS_SECRET, smsConfig.getSmsSecret());
sysConfigService.updateSysConfigByCode(CONFIG_SMS_ENDPOINT, smsConfig.getSmsEndpoint());
sysConfigService.updateSysConfigByCode(CONFIG_SMS_REGION_ID, smsConfig.getSmsRegionId());
systemInitService.putAndLoadSysConfig();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);
}catch(Exception e){ } catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
/**
*
*
* @param code
* @return
*/
public String getConfigStrValByCode(String code) {
SysConfig sysConfig = sysConfigService.getSysConfigByCode(code);
return sysConfig != null ? sysConfig.getConfigValue() : null;
}
/**
*
*
* @param code
* @return
*/
public int getConfigIntValByCode(String code) {
SysConfig sysConfig = sysConfigService.getSysConfigByCode(code);
return sysConfig != null ? Integer.parseInt(sysConfig.getConfigValue()) : -1;
}
} }

@ -392,4 +392,52 @@ public class SysEnumController extends CoreBaseController {
return new ResultBean(true, "操作成功", return new ResultBean(true, "操作成功",
LocaleUtils.getEnumLocaleResValuesToList(CommonEnumUtil.USER_LOGIN_STATUS.values())); LocaleUtils.getEnumLocaleResValuesToList(CommonEnumUtil.USER_LOGIN_STATUS.values()));
} }
/**
*
*
* @return
*/
@GetMapping("/sms-supplier")
@ApiOperation(value = "用户登录状态", notes = "用户登录状态")
public ResultBean getSmsSupplier() {
return new ResultBean(true, "操作成功",
LocaleUtils.getEnumLocaleResValuesToList(ImppEnumUtil.SMS_SUPPLIER.values()));
}
/**
*
*
* @return
*/
@GetMapping("/sms-template-status")
@ApiOperation(value = "用户登录状态", notes = "用户登录状态")
public ResultBean getSmsTemplateStatus() {
return new ResultBean(true, "操作成功",
LocaleUtils.getEnumLocaleResValuesToList(ImppEnumUtil.SMS_TEMPLATE_STATUS.values()));
}
/**
*
*
* @return
*/
@GetMapping("/sms-template-type")
@ApiOperation(value = "用户登录状态", notes = "用户登录状态")
public ResultBean getSmsTemplateType() {
return new ResultBean(true, "操作成功",
LocaleUtils.getEnumLocaleResValuesToList(ImppEnumUtil.SMS_TEMPLATE_TYPE.values()));
}
/**
*
*
* @return
*/
@GetMapping("/sms-send-status")
@ApiOperation(value = "用户登录状态", notes = "用户登录状态")
public ResultBean getSmsSendStatus() {
return new ResultBean(true, "操作成功",
LocaleUtils.getEnumLocaleResValuesToList(ImppEnumUtil.SMS_SEND_STATUS.values()));
}
} }

@ -415,7 +415,7 @@ public class SysLocaleResourceController extends CoreBaseController {
public ResultBean incrementImportSysLocaleResource(@RequestParam("file") MultipartFile file){ public ResultBean incrementImportSysLocaleResource(@RequestParam("file") MultipartFile file){
try { try {
// 重新加载资源 // 重新加载资源
systemInitService.putAndLoadSysLocaleLanguage(); // systemInitService.putAndLoadSysLocaleLanguage();
Long startTime = System.currentTimeMillis(); Long startTime = System.currentTimeMillis();
// 提取Excel数据 // 提取Excel数据
@ -427,15 +427,27 @@ public class SysLocaleResourceController extends CoreBaseController {
long excelToolExecuteTime = System.currentTimeMillis(); long excelToolExecuteTime = System.currentTimeMillis();
LOGGER.info("增量导入 数据量 {}, ExcelTool耗时 {}", sysLocaleResourceList.size(), excelToolExecuteTime - startTime); LOGGER.info("增量导入 数据量 {}, ExcelTool耗时 {}", sysLocaleResourceList.size(), excelToolExecuteTime - startTime);
// 数据去重并初始化
// 初始化数据,资源去重 // 初始化数据,资源去重
Map<String, SysLocaleResource> itemMap = new HashMap<>(); Map<String, SysLocaleResource> itemMap = new HashMap<>();
String resourceKey; String resourceKey;
String userName = AuthUtil.getSessionUser().getUserName(); String userName = AuthUtil.getSessionUser().getUserName();
List<SysLocaleResource> tempList;
SysLocaleResource temp;
for (SysLocaleResource localeResource : sysLocaleResourceList) { for (SysLocaleResource localeResource : sysLocaleResourceList) {
tempList = sysLocaleResourceService.findSysLocaleResourceByResKey(localeResource.getResourceKey());
if (!tempList.isEmpty()) {
temp = tempList.get(0);
localeResource.setResourceType(temp.getResourceType());
localeResource.setSoftType(temp.getSoftType());
}
if (localeResource.getResourceType() == null
&& localeResource.getResourceKey().indexOf(CommonConstWords.RESOURCE_PREFIX_MENU) == 0) {
localeResource.setResourceType(CommonEnumUtil.SYS_LOCALE_RESOURCE_TYPE.MENU.getValue());
}
// 系统功能key添加指定前缀避免与其他资源重复 // 系统功能key添加指定前缀避免与其他资源重复
if (localeResource.getResourceType().equals(CommonEnumUtil.SYS_LOCALE_RESOURCE_TYPE.MENU.getValue()) if (localeResource.getResourceType() != null
&& localeResource.getResourceType().equals(CommonEnumUtil.SYS_LOCALE_RESOURCE_TYPE.MENU.getValue())
&& localeResource.getResourceKey().indexOf(CommonConstWords.RESOURCE_PREFIX_MENU) != 0) { && localeResource.getResourceKey().indexOf(CommonConstWords.RESOURCE_PREFIX_MENU) != 0) {
localeResource.setResourceKey(CommonConstWords.RESOURCE_PREFIX_MENU+localeResource.getResourceKey()); localeResource.setResourceKey(CommonConstWords.RESOURCE_PREFIX_MENU+localeResource.getResourceKey());
} }
@ -457,15 +469,12 @@ public class SysLocaleResourceController extends CoreBaseController {
// 分批导入 // 分批导入
int size = 1000; int size = 1000;
for (List<SysLocaleResource> resourceList : ListUtils.partition(importDataList, size)) { for (List<SysLocaleResource> resourceList : ListUtils.partition(importDataList, size)) {
new Thread(){ new Thread(() -> {
@Override long startTime1 = System.currentTimeMillis();
public void run() {
super.run();
long startTime = System.currentTimeMillis();
sysLocaleResourceService.saveSysLocaleResource(resourceList); sysLocaleResourceService.saveSysLocaleResource(resourceList);
LOGGER.info("增量导入完毕, 导入耗时{}",System.currentTimeMillis() - startTime); LOGGER.info("{}增量导入完毕, 导入耗时{}", Thread.currentThread().getName(),
} System.currentTimeMillis() - startTime1);
}.start(); }).start();
} }
return ResultBean.success("数据导入中...").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); return ResultBean.success("数据导入中...").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());

@ -0,0 +1,228 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysSmsSendRecordService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysSmsSignService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysSmsTemplateService;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.JsonUtilTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.model.common.ImppSmsContent;
import cn.estsh.i3plus.pojo.platform.bean.SysSmsSendRecord;
import cn.estsh.i3plus.pojo.platform.bean.SysSmsSign;
import cn.estsh.i3plus.pojo.platform.bean.SysSmsTemplate;
import cn.estsh.i3plus.sdk.sms.base.SmsUtilFactory;
import cn.estsh.i3plus.sdk.sms.base.pojo.SmsContent;
import cn.estsh.i3plus.sdk.sms.base.pojo.SmsResult;
import cn.estsh.impp.framework.base.controller.CrudBaseController;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import static cn.estsh.i3plus.platform.common.util.CommonConstWords.CONFIG_SMS_SWITCH;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-12-14 20:25
* @Modify:
**/
@RestController
@Api(tags = "短信发送记录")
@RequestMapping(PlatformConstWords.BASE_URL + "/sys-sms-send-record")
public class SysSmsSendRecordController extends CrudBaseController<SysSmsSendRecord> {
private static final Logger LOGGER = LoggerFactory.getLogger(SysSmsSendRecordController.class);
@Autowired
private ISysSmsSignService sysSmsSignService;
@Autowired
private ISysSmsSendRecordService sysSmsSendRecordService;
@Autowired
private ISysSmsTemplateService sysSmsTemplateService;
@Resource(name = CommonConstWords.IMPP_REDIS_RES)
private ImppRedis resRedis;
@PostMapping("/send")
@ApiOperation("发送短信")
public ResultBean send(@RequestBody ImppSmsContent imppSmsContent) {
try {
if (!RedisCacheTool.getSysConfigBooleanVal(CONFIG_SMS_SWITCH)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION.getCode())
.setErrorDetail("短信开关未启用")
.setErrorSolution("在系统配置中启用短信通知")
.build();
}
ValidatorBean.beginValid(imppSmsContent)
.notNull("receivePhoneNumber",imppSmsContent.getReceivePhoneNumber())
.notNull("smsSignCode",imppSmsContent.getSmsSignCode())
.notNull("templateCode",imppSmsContent.getTemplateCode());
SysSmsSign sysSmsSign = sysSmsSignService.getSysSmsSignByCode(imppSmsContent.getSmsSignCode());
ValidatorBean.checkNotNull(sysSmsSign, "短信签名不存在!");
SysSmsTemplate smsTemplate = sysSmsTemplateService.getSysSmsTemplateByCode(imppSmsContent.getTemplateCode());
ValidatorBean.checkNotNull(smsTemplate, "短信模板不存在!");
// 发送短信内容
SmsContent smsContent = new SmsContent();
smsContent.setSmsPhoneNumber(imppSmsContent.getReceivePhoneNumber());
smsContent.setSmsTemplateCode(smsTemplate.getSupplierTemplateCode());
smsContent.setSmsSignName(sysSmsSign.getSignName());
smsContent.setSmsParam(imppSmsContent.getParamMap());
SmsResult<SmsContent> smsResult = SmsUtilFactory.getSmsUtil().sendSms(smsContent);
// 持久化发送记录
SysSmsSendRecord sysSmsSendRecord = new SysSmsSendRecord();
sysSmsSendRecord.setReceivePhoneNumber(imppSmsContent.getReceivePhoneNumber());
sysSmsSendRecord.setTemplateCode(smsTemplate.getTemplateCode());
sysSmsSendRecord.setSmsSignCode(sysSmsSign.getSignCode());
sysSmsSendRecord.setSmsSign(sysSmsSign.getSignName());
sysSmsSendRecord.setSmsParam(JsonUtilTool.encode(imppSmsContent.getParamMap()));
sysSmsSendRecord.setSmsSendStatus(ImppEnumUtil.SMS_SEND_STATUS.WAIT_RECEIPT.getValue());
sysSmsSendRecord.setSendDateTime(TimeTool.getNowTime(true));
sysSmsSendRecord.setBizId(smsResult.getResultData().getBizId());
sysSmsSendRecordService.insert(sysSmsSendRecord);
if (!smsResult.isSuccess()) {
sysSmsSendRecord.setSendErrMsg(smsResult.getErrMsg());
sysSmsSendRecord.setSmsSendStatus(ImppEnumUtil.SMS_SEND_STATUS.WAIT_RECEIPT.getValue());
sysSmsSendRecordService.update(sysSmsSendRecord);
return ResultBean.fail().setErrorMsg(smsResult.getMsg()).setResultObject(smsResult);
}
// 推送redis延时队列处理持久化发送记录
resRedis.pushDelayQueue("SMS_STATUS_SYNC", JsonUtilTool.encode(sysSmsSendRecord),10L);
return ResultBean.success().setResultObject(smsResult);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
*/
public static class SyncSmsInfo implements Runnable {
private ISysSmsSendRecordService sysSmsSendRecordService;
private ImppRedis redisRes;
public SyncSmsInfo() {
}
public SyncSmsInfo(ISysSmsSendRecordService sysSmsSendRecordService, ImppRedis redisRes) {
this.sysSmsSendRecordService = sysSmsSendRecordService;
this.redisRes = redisRes;
}
@Override
public void run() {
while (true) {
try {
Set<Object> dataSet =
redisRes.pullAndRemoveDelayQueueData("SMS_STATUS_SYNC", System.currentTimeMillis());
if (dataSet.isEmpty()) {
TimeUnit.MINUTES.sleep(3);
continue;
}
LOGGER.info("【SMS】 短信同步触发");
for (Object obj : dataSet) {
boolean isRetry = true;
SysSmsSendRecord smsSendRecord = null;
try {
smsSendRecord = JsonUtilTool.decode(String.valueOf(obj), SysSmsSendRecord.class);
SmsContent smsContent = new SmsContent();
smsContent.setSmsPhoneNumber(smsSendRecord.getReceivePhoneNumber());
smsContent.setSendDate(smsSendRecord.getSendDateTime());
smsContent.setBizId(smsSendRecord.getBizId());
// 查询并同步供应商的状态信息
SmsResult<SmsContent> smsResult =
SmsUtilFactory.getSmsUtil().getSendSmsDetailByCondition(smsContent);
smsSendRecord.setSendErrMsg(smsResult.getErrMsg());
if (smsResult.isSuccess() && smsResult.getResultData() != null) {
smsContent = smsResult.getResultData();
smsSendRecord.setSmsSendStatus(smsContent.getSmsStatus());
smsSendRecord.setReceiveDateTime(smsContent.getReceiveDate());
smsSendRecord.setSmsContent(smsContent.getSmsContent());
}
if (smsSendRecord.getSmsSendStatus() != ImppEnumUtil.SMS_SEND_STATUS.WAIT_RECEIPT.getValue()) {
isRetry = false;
}
} catch (Exception e) {
LOGGER.error("【SMS】 短信状态同步异常", e);
if (smsSendRecord != null) {
smsSendRecord.setSendErrMsg(ExceptionUtils.getStackTrace(e));
}
}
if (smsSendRecord != null) {
sysSmsSendRecordService.update(smsSendRecord);
}
if (isRetry) {
redisRes.pushDelayQueue("SMS_STATUS_SYNC", JsonUtilTool.encode(smsSendRecord), 30L);
}
}
} catch (Exception e) {
LOGGER.error("【SMS】 短信状态同步异常", e);
} finally {
try {
TimeUnit.SECONDS.sleep(5);
} catch (InterruptedException ignored) {
}
}
}
}
}
public static void main(String[] args) {
Map<String ,Object> paramMap = new HashMap<>();
paramMap.put("center","莘松线");
paramMap.put("cell","OP-01");
paramMap.put("name","张三");
paramMap.put("acName","一级异常");
ImppSmsContent smsContent = new ImppSmsContent();
smsContent.setSmsSignCode("ESTSH");
smsContent.setTemplateCode("TEST");
smsContent.setReceivePhoneNumber("18917078316");
smsContent.setParamMap(paramMap);
System.out.println(JsonUtilTool.encode(smsContent));
}
}

@ -0,0 +1,36 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.platform.bean.SysSmsSign;
import cn.estsh.impp.framework.base.controller.CrudBaseController;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-12-13 16:08
* @Modify:
**/
@RestController
@Api(tags = "短信签名")
@RequestMapping(PlatformConstWords.BASE_URL + "/sys-sms-sign")
public class SysSmsSignController extends CrudBaseController<SysSmsSign> {
/**
*
*
* @param bean
* @return
*/
@Override
public SysSmsSign validatorInsertBean(SysSmsSign bean) throws Exception {
ValidatorBean.beginValid(bean)
.notNull("signCode", bean.getSignCode())
.notNull("signName", bean.getSignName());
return bean;
}
}

@ -0,0 +1,239 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysSmsTemplateService;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysSmsTemplate;
import cn.estsh.i3plus.sdk.sms.base.SmsUtilFactory;
import cn.estsh.i3plus.sdk.sms.base.pojo.SmsResult;
import cn.estsh.impp.framework.base.controller.BaseController;
import cn.estsh.impp.framework.base.controller.CrudBaseController;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-12-14 20:21
* @Modify:
**/
@RestController
@Api(tags = "短信模板")
@RequestMapping(PlatformConstWords.BASE_URL + "/sys-sms-template")
public class SysSmsTemplateController extends CrudBaseController<SysSmsTemplate> {
private static final Logger LOGGER = LoggerFactory.getLogger(BaseController.class);
@Autowired
private ISysSmsTemplateService sysSmsTemplateService;
/**
*
*
* @param bean
* @return
*/
@Override
public ResultBean insert(SysSmsTemplate bean) {
try {
ValidatorBean.beginValid(bean)
.notNull("templateCode", bean.getTemplateCode())
.notNull("templateType", bean.getTemplateType())
.notNull("templateName", bean.getTemplateName())
.notNull("templateContent", bean.getTemplateContent());
bean.setTemplateStatus(ImppEnumUtil.SMS_TEMPLATE_STATUS.NOTICE_SMS.getValue());
// 唯一校验
if (!sysSmsTemplateService.checkSysSmsTemplateOnly(bean)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION.getCode())
.setErrorDetail("模板代码已存在")
.setErrorSolution("请重新操作")
.build();
}
bean = getCrudService().insert(bean);
SmsResult<SysSmsTemplate> smsResult = SmsUtilFactory.getSmsTemplateUtil().insertSmsTemplate(bean);
if (!smsResult.isSuccess()) {
LOGGER.error("【SMS】 短信模板保存失败!{}", smsResult);
return ResultBean.fail(smsResult.getErrMsg()).setResultObject(smsResult);
} else {
getCrudService().update(bean);
}
return ResultBean.success("操作成功")
.setResultObject(bean)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
*
* @param bean
* @return
*/
@Override
public ResultBean update(SysSmsTemplate bean) {
try {
ValidatorBean.beginValid(bean)
.notNull("id", bean.getId())
.notNull("templateCode", bean.getTemplateCode())
.notNull("templateType", bean.getTemplateType())
.notNull("templateName", bean.getTemplateName())
.notNull("templateContent", bean.getTemplateContent());
// 唯一校验
if (!sysSmsTemplateService.checkSysSmsTemplateOnly(bean)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION.getCode())
.setErrorDetail("模板代码已存在")
.setErrorSolution("请重新操作")
.build();
}
bean = getCrudService().update(bean);
SmsResult<SysSmsTemplate> smsResult = SmsUtilFactory.getSmsTemplateUtil().updateSmsTemplate(bean);
if (!smsResult.isSuccess()) {
LOGGER.error("【SMS】 短信模板保存失败!{}", smsResult);
return ResultBean.fail(smsResult.getErrMsg()).setResultObject(smsResult);
}
return ResultBean.success("操作成功")
.setResultObject(bean)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
* id
*
* @param id id
* @return
*/
@Override
public ResultBean delete(Long id) {
try {
ValidatorBean.checkNotNull(id, "请选需要删除短信模板!");
SysSmsTemplate smsTemplate = getCrudService().get(id);
ValidatorBean.checkNotNull(smsTemplate, "短信模板不存在!");
// 调用供应商api
SmsResult<SysSmsTemplate> smsResult = SmsUtilFactory.getSmsTemplateUtil()
.deleteSmsTemplateByCode(smsTemplate.getSupplierTemplateCode());
if (!smsResult.isSuccess()) {
LOGGER.error("【SMS】 短信模板删除失败!{}", smsResult);
return ResultBean.fail(smsResult.getErrMsg()).setResultObject(smsResult);
}
getCrudService().delete(id);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@Override
public ResultBean getById(Long id) {
try {
ValidatorBean.checkNotNull(id, "请选需要查询短信模板!");
SysSmsTemplate smsTemplate = getCrudService().get(id);
// 调用供应商api
SmsResult<SysSmsTemplate> smsResult = SmsUtilFactory.getSmsTemplateUtil()
.getSmsTemplateByCode(smsTemplate.getSupplierTemplateCode());
if (!smsResult.isSuccess()) {
LOGGER.error("【SMS】 短信模板查询失败!{}", smsResult);
return ResultBean.fail(smsResult.getErrMsg()).setResultObject(smsResult);
} else if (smsResult.isSuccess() && smsResult.getResultData() != null) {
smsTemplate.setReason(smsResult.getResultData().getReason());
}
return ResultBean.success("操作成功")
.setResultObject(smsTemplate)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping("/sync-supplier-template")
@ApiOperation("同步供应商模板信息")
public ResultBean syncSupplierTemplate(String supplierTemplateCode, String templateCode) {
try {
ValidatorBean.checkNotNull(supplierTemplateCode, "请输入需要同步的供应商模板代码!");
ValidatorBean.checkNotNull(templateCode, "请输入模板代码!");
SysSmsTemplate smsTemplate = new SysSmsTemplate();
smsTemplate.setTemplateCode(templateCode);
// 唯一校验
if (!sysSmsTemplateService.checkSysSmsTemplateOnly(smsTemplate)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION.getCode())
.setErrorDetail("模板代码已存在")
.setErrorSolution("请重新操作")
.build();
}
// 调用供应商api
SmsResult<SysSmsTemplate> smsResult = SmsUtilFactory.getSmsTemplateUtil()
.getSmsTemplateByCode(supplierTemplateCode);
if (!smsResult.isSuccess()) {
LOGGER.error("【SMS】 短信模板查询失败!{}", smsResult);
return ResultBean.fail(smsResult.getErrMsg()).setResultObject(smsResult);
} else if (smsResult.isSuccess() && smsResult.getResultData() == null) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION.getCode())
.setErrorDetail("模板代码已存在")
.setErrorSolution("请重新操作")
.build();
}
smsTemplate = smsResult.getResultData();
smsTemplate.setTemplateCode(templateCode);
sysSmsTemplateService.insert(smsTemplate);
return ResultBean.success("操作成功")
.setResultObject(smsTemplate)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.base;
import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService;
import cn.estsh.i3plus.core.api.iservice.busi.*; import cn.estsh.i3plus.core.api.iservice.busi.*;
import cn.estsh.i3plus.core.apiservice.controller.busi.SysSmsSendRecordController;
import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
@ -72,6 +73,9 @@ public class SystemInitService implements ISystemInitService {
@Autowired @Autowired
private ISysBarcodeRuleService sysBarcodeRuleService; private ISysBarcodeRuleService sysBarcodeRuleService;
@Autowired
private ISysSmsSendRecordService sysSmsSendRecordService;
@Resource(name= CommonConstWords.IMPP_REDIS_RES) @Resource(name= CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes; private ImppRedis redisRes;
@ -111,6 +115,10 @@ public class SystemInitService implements ISystemInitService {
LOGGER.info("加载 条码规则"); LOGGER.info("加载 条码规则");
reloadBarcodeRule(); reloadBarcodeRule();
LOGGER.info("加载 条码规则 信息完成"); LOGGER.info("加载 条码规则 信息完成");
LOGGER.info("创建 短信同步线程");
createSmsSyncThread();
LOGGER.info("创建 短信同步线程 完成");
}catch (Exception e){ }catch (Exception e){
e.printStackTrace(); e.printStackTrace();
} }
@ -446,4 +454,10 @@ public class SystemInitService implements ISystemInitService {
} }
} }
} }
@Override
public void createSmsSyncThread() {
Thread syncSmsThread = new Thread(new SysSmsSendRecordController.SyncSmsInfo(sysSmsSendRecordService,redisRes));
syncSmsThread.start();
}
} }

@ -121,7 +121,7 @@ public class SysConfigService implements ISysConfigService {
@Override @Override
@ApiOperation(value = "根据系统参数组来查找系统参数") @ApiOperation(value = "根据系统参数组来查找系统参数")
public List findSysConfigByGroup(Integer group) { public List<SysConfig> findSysConfigByGroup(Integer group) {
return SysConfigRDao.findByProperty("configGroup",group); return SysConfigRDao.findByProperty("configGroup",group);
} }

@ -0,0 +1,24 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysSmsSendRecordService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.platform.bean.SysSmsSendRecord;
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import cn.estsh.impp.framework.base.service.CrudService;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-12-14 20:17
* @Modify:
**/
@Service
public class SysSmsSendRecordService extends CrudService<SysSmsSendRecord> implements ISysSmsSendRecordService {
@Override
public DdlPackBean getFindPagerPackBean(SysSmsSendRecord bean) {
return CoreHqlPack.packHqlFindSysSmsSendRecord(bean);
}
}

@ -0,0 +1,55 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysSmsSignService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysSmsSign;
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import cn.estsh.impp.framework.base.service.CrudService;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-12-14 20:19
* @Modify:
**/
@Service
public class SysSmsSignService extends CrudService<SysSmsSign> implements ISysSmsSignService {
@Override
public DdlPackBean getFindPagerPackBean(SysSmsSign bean) {
return CoreHqlPack.packHqlFindSysSmsSign(bean);
}
/**
*
*
* @param sysSmsSign
* @return
*/
@Override
public boolean checkSysSignOnly(SysSmsSign sysSmsSign) {
return baseRepository.isExitByHql(CoreHqlPack.packHqlCheckSysSmsSignOnly(sysSmsSign));
}
/**
*
*
* @param code
* @return
*/
@Override
public SysSmsSign getSysSmsSignByCode(String code) {
return baseRepository.getByProperty(
new String[]{"isValid", "isDeleted", "signCode"},
new Object[]{
CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),
CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
code
}
);
}
}

@ -0,0 +1,54 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysSmsTemplateService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysSmsTemplate;
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import cn.estsh.impp.framework.base.service.CrudService;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-12-14 20:20
* @Modify:
**/
@Service
public class SysSmsTemplateService extends CrudService<SysSmsTemplate> implements ISysSmsTemplateService {
@Override
public DdlPackBean getFindPagerPackBean(SysSmsTemplate bean) {
return CoreHqlPack.packHqlFindSysSmsTemplate(bean);
}
/**
*
*
* @param smsTemplate
* @return
*/
@Override
public boolean checkSysSmsTemplateOnly(SysSmsTemplate smsTemplate) {
return !baseRepository.isExitByHql(CoreHqlPack.packHqlCheckSysSmsTemplateOnly(smsTemplate));
}
/**
* code
*
* @param code
* @return
*/
@Override
public SysSmsTemplate getSysSmsTemplateByCode(String code) {
return baseRepository.getByProperty(
new String[]{"isValid", "isDeleted", "templateCode"},
new Object[]{
CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),
CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
code
}
);
}
}

@ -75,7 +75,7 @@ public class MailUtil {
this.attachmentList.clear(); this.attachmentList.clear();
return this; return this;
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("邮箱配置初始化失败!", e.getMessage()); LOGGER.error("邮箱配置初始化失败!", e);
return new MailUtil(); return new MailUtil();
} }
@ -100,7 +100,7 @@ public class MailUtil {
return this; return this;
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("邮箱配置初始化失败!", e.getMessage()); LOGGER.error("邮箱配置初始化失败!", e);
return new MailUtil(); return new MailUtil();
} }
} }

@ -134,6 +134,12 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>i3plus.sdk</groupId>
<artifactId>i3plus-sdk-sms</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>i3plus.platform</groupId> <groupId>i3plus.platform</groupId>
<artifactId>i3plus-platform-common</artifactId> <artifactId>i3plus-platform-common</artifactId>
<version>${project.version}</version> <version>${project.version}</version>

Loading…
Cancel
Save