feat(sms):平台短信功能
parent
cb0460cf7b
commit
7222a53840
@ -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);
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue