Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
2bd40cfb
提交
2bd40cfb
authored
6月 17, 2022
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新增 `yudao-spring-boot-starter-biz-error-code` 错误码组件
上级
ca28d791
隐藏空白字符变更
内嵌
并排
正在显示
114 个修改的文件
包含
118 行增加
和
6114 行删除
+118
-6114
pom.xml
...ramework/yudao-spring-boot-starter-biz-error-code/pom.xml
+56
-0
ErrorCodeProperties.java
...yudao/framework/errorcode/config/ErrorCodeProperties.java
+1
-1
YudaoErrorCodeAutoConfiguration.java
...ork/errorcode/config/YudaoErrorCodeAutoConfiguration.java
+13
-13
YudaoErrorCodeRpcAutoConfiguration.java
.../errorcode/config/YudaoErrorCodeRpcAutoConfiguration.java
+15
-0
ErrorCodeAutoGenerator.java
...work/errorcode/core/generator/ErrorCodeAutoGenerator.java
+1
-1
ErrorCodeAutoGeneratorImpl.java
.../errorcode/core/generator/ErrorCodeAutoGeneratorImpl.java
+6
-6
ErrorCodeLoader.java
...udao/framework/errorcode/core/loader/ErrorCodeLoader.java
+1
-1
ErrorCodeLoaderImpl.java
.../framework/errorcode/core/loader/ErrorCodeLoaderImpl.java
+6
-6
package-info.java
...va/cn/iocoder/yudao/framework/errorcode/package-info.java
+10
-0
spring.factories
...z-error-code/src/main/resources/META-INF/spring.factories
+3
-0
pom.xml
yudao-module-infra/yudao-module-infra-biz/pom.xml
+4
-0
ErrorCodeApi.java
...coder/yudao/module/system/api/errorcode/ErrorCodeApi.java
+1
-1
application.yaml
...dao-module-system-biz/src/main/resources/application.yaml
+1
-0
spring.factories
...m-error-code/src/main/resources/META-INF/spring.factories
+0
-2
pom.xml
归档/moved/system/system-biz/pom.xml
+0
-106
ListSmsSignBO.java
.../cn/iocoder/mall/system/biz/bo/smsSign/ListSmsSignBO.java
+0
-53
SmsSignBO.java
...java/cn/iocoder/mall/system/biz/bo/smsSign/SmsSignBO.java
+0
-40
ListSmsTemplateBO.java
...der/mall/system/biz/bo/smsTemplate/ListSmsTemplateBO.java
+0
-103
SmsTemplateBO.java
...iocoder/mall/system/biz/bo/smsTemplate/SmsTemplateBO.java
+0
-44
QiniuConfiguration.java
...cn/iocoder/mall/system/biz/config/QiniuConfiguration.java
+0
-21
SmsSignConvert.java
...va/cn/iocoder/mall/system/biz/convert/SmsSignConvert.java
+0
-29
SmsTemplateConvert.java
...n/iocoder/mall/system/biz/convert/SmsTemplateConvert.java
+0
-32
SmsSendMapper.java
...ava/cn/iocoder/mall/system/biz/dao/sms/SmsSendMapper.java
+0
-15
SmsSignMapper.java
...ava/cn/iocoder/mall/system/biz/dao/sms/SmsSignMapper.java
+0
-39
SmsTemplateMapper.java
...cn/iocoder/mall/system/biz/dao/sms/SmsTemplateMapper.java
+0
-42
SmsSendLogDO.java
.../iocoder/mall/system/biz/dataobject/sms/SmsSendLogDO.java
+0
-37
SmsSignDO.java
.../cn/iocoder/mall/system/biz/dataobject/sms/SmsSignDO.java
+0
-48
SmsTemplateDO.java
...iocoder/mall/system/biz/dataobject/sms/SmsTemplateDO.java
+0
-59
AddSignDTO.java
...va/cn/iocoder/mall/system/biz/dto/smsSign/AddSignDTO.java
+0
-21
ListSmsSignDTO.java
...n/iocoder/mall/system/biz/dto/smsSign/ListSmsSignDTO.java
+0
-29
UpdateSignDTO.java
...cn/iocoder/mall/system/biz/dto/smsSign/UpdateSignDTO.java
+0
-24
ListSmsTemplateDTO.java
...r/mall/system/biz/dto/smsTemplate/ListSmsTemplateDTO.java
+0
-30
SmsApplyStatusEnum.java
...iocoder/mall/system/biz/enums/sms/SmsApplyStatusEnum.java
+0
-31
SmsPlatformEnum.java
...cn/iocoder/mall/system/biz/enums/sms/SmsPlatformEnum.java
+0
-41
SmsTypeEnum.java
...ava/cn/iocoder/mall/system/biz/enums/sms/SmsTypeEnum.java
+0
-42
OperationLogging.java
...system/biz/log/operation/annotation/OperationLogging.java
+0
-20
OperationLogAspect.java
...l/system/biz/log/operation/aspect/OperationLogAspect.java
+0
-118
LogStatus.java
...ocoder/mall/system/biz/log/operation/enums/LogStatus.java
+0
-27
OperationLogEvent.java
...all/system/biz/log/operation/event/OperationLogEvent.java
+0
-15
OperationLogListener.java
.../system/biz/log/operation/event/OperationLogListener.java
+0
-26
OperationLogDTO.java
...l/system/biz/log/operation/model/dto/OperationLogDTO.java
+0
-87
OperationLogPO.java
...all/system/biz/log/operation/model/po/OperationLogPO.java
+0
-89
OperationLogSaveService.java
...em/biz/log/operation/service/OperationLogSaveService.java
+0
-20
AliYunSmsClient.java
.../iocoder/mall/system/biz/service/sms/AliYunSmsClient.java
+0
-155
SmsClient.java
...ava/cn/iocoder/mall/system/biz/service/sms/SmsClient.java
+0
-64
SmsService.java
...va/cn/iocoder/mall/system/biz/service/sms/SmsService.java
+0
-117
SmsServiceImpl.java
...n/iocoder/mall/system/biz/service/sms/SmsServiceImpl.java
+0
-364
YunPianSmsClient.java
...iocoder/mall/system/biz/service/sms/YunPianSmsClient.java
+0
-232
pom.xml
归档/moved/system/system-rest/pom.xml
+0
-41
AdminsFileController.java
...all/system/rest/controller/file/AdminsFileController.java
+0
-38
AdminsSmsSignController.java
...l/system/rest/controller/sms/AdminsSmsSignController.java
+0
-57
AdminsSmsTemplateController.java
...stem/rest/controller/sms/AdminsSmsTemplateController.java
+0
-67
AdminsSmsConvert.java
...ocoder/mall/system/rest/convert/sms/AdminsSmsConvert.java
+0
-32
AdminsUserUpdateRequest.java
...ll/system/rest/request/admin/AdminsUserUpdateRequest.java
+0
-29
AddSignRequest.java
.../iocoder/mall/system/rest/request/sms/AddSignRequest.java
+0
-21
AddSmsTemplateRequest.java
...r/mall/system/rest/request/sms/AddSmsTemplateRequest.java
+0
-49
ListSmsTemplateRequest.java
.../mall/system/rest/request/sms/ListSmsTemplateRequest.java
+0
-30
UpdateSignRequest.java
...coder/mall/system/rest/request/sms/UpdateSignRequest.java
+0
-23
UpdateSmsTemplateRequest.java
...all/system/rest/request/sms/UpdateSmsTemplateRequest.java
+0
-53
rest.yaml
归档/moved/system/system-rest/src/main/resources/rest.yaml
+0
-12
pom.xml
归档/moved/system/system-service-api/pom.xml
+0
-44
DataDictService.java
...main/java/cn/iocoder/mall/system/api/DataDictService.java
+0
-44
SmsService.java
.../src/main/java/cn/iocoder/mall/system/api/SmsService.java
+0
-116
PageSmsSignBO.java
...java/cn/iocoder/mall/system/api/bo/sms/PageSmsSignBO.java
+0
-68
PageSmsTemplateBO.java
.../cn/iocoder/mall/system/api/bo/sms/PageSmsTemplateBO.java
+0
-117
SmsSignBO.java
...ain/java/cn/iocoder/mall/system/api/bo/sms/SmsSignBO.java
+0
-40
SmsTemplateBO.java
...java/cn/iocoder/mall/system/api/bo/sms/SmsTemplateBO.java
+0
-44
SmsApplyStatusEnum.java
.../iocoder/mall/system/api/constant/SmsApplyStatusEnum.java
+0
-31
SmsPlatformEnum.java
.../cn/iocoder/mall/system/api/constant/SmsPlatformEnum.java
+0
-41
SmsTypeEnum.java
...java/cn/iocoder/mall/system/api/constant/SmsTypeEnum.java
+0
-42
PageQuerySmsSignDTO.java
.../iocoder/mall/system/api/dto/sms/PageQuerySmsSignDTO.java
+0
-38
PageQuerySmsTemplateDTO.java
...oder/mall/system/api/dto/sms/PageQuerySmsTemplateDTO.java
+0
-36
pom.xml
归档/moved/system/system-service-impl/pom.xml
+0
-95
SmsAliYunClient.java
...in/java/cn/iocoder/mall/admin/client/SmsAliYunClient.java
+0
-162
SmsClient.java
...src/main/java/cn/iocoder/mall/admin/client/SmsClient.java
+0
-66
SmsYunPianClient.java
...n/java/cn/iocoder/mall/admin/client/SmsYunPianClient.java
+0
-241
SmsSignConvert.java
...in/java/cn/iocoder/mall/admin/convert/SmsSignConvert.java
+0
-29
SmsTemplateConvert.java
...ava/cn/iocoder/mall/admin/convert/SmsTemplateConvert.java
+0
-32
SmsSendMapper.java
...rc/main/java/cn/iocoder/mall/admin/dao/SmsSendMapper.java
+0
-15
SmsSignMapper.java
...rc/main/java/cn/iocoder/mall/admin/dao/SmsSignMapper.java
+0
-15
SmsTemplateMapper.java
...ain/java/cn/iocoder/mall/admin/dao/SmsTemplateMapper.java
+0
-16
SmsSendLogDO.java
...n/java/cn/iocoder/mall/admin/dataobject/SmsSendLogDO.java
+0
-37
SmsSignDO.java
...main/java/cn/iocoder/mall/admin/dataobject/SmsSignDO.java
+0
-48
SmsTemplateDO.java
.../java/cn/iocoder/mall/admin/dataobject/SmsTemplateDO.java
+0
-59
SmsServiceImpl.java
...in/java/cn/iocoder/mall/admin/service/SmsServiceImpl.java
+0
-436
application.yaml
...m-service-impl/src/main/resources/config/application.yaml
+0
-73
SystemApplicationTest.java
...est/java/cn/iocoder/mall/admin/SystemApplicationTest.java
+0
-20
SmsAliYunClientTest.java
...ava/cn/iocoder/mall/admin/client/SmsAliYunClientTest.java
+0
-33
SmsYunPianClientTest.java
...va/cn/iocoder/mall/admin/client/SmsYunPianClientTest.java
+0
-48
SmsServiceImplTest.java
...ava/cn/iocoder/mall/admin/service/SmsServiceImplTest.java
+0
-87
SystemLogServiceImplTest.java
.../iocoder/mall/admin/service/SystemLogServiceImplTest.java
+0
-35
pom.xml
归档/moved/system/system-start/pom.xml
+0
-107
FileController.java
.../system/application/controller/admins/FileController.java
+0
-33
SmsSignController.java
...stem/application/controller/admins/SmsSignController.java
+0
-56
SmsTemplateController.java
.../application/controller/admins/SmsTemplateController.java
+0
-65
application.yaml
...d/system/system-start/src/main/resources/application.yaml
+0
-34
pom.xml
归档/system-service-project/pom.xml
+0
-46
ErrorCodeFeign.java
...oder/mall/systemservice/rpc/errorcode/ErrorCodeFeign.java
+0
-49
ErrorCodeAutoGenerateDTO.java
...emservice/rpc/errorcode/dto/ErrorCodeAutoGenerateDTO.java
+0
-33
ErrorCodeCreateDTO.java
...l/systemservice/rpc/errorcode/dto/ErrorCodeCreateDTO.java
+0
-45
ErrorCodePageDTO.java
...all/systemservice/rpc/errorcode/dto/ErrorCodePageDTO.java
+0
-33
ErrorCodeUpdateDTO.java
...l/systemservice/rpc/errorcode/dto/ErrorCodeUpdateDTO.java
+0
-46
ErrorCodeVO.java
...oder/mall/systemservice/rpc/errorcode/vo/ErrorCodeVO.java
+0
-49
AdminController.java
...ocoder/mall/systemservice/controller/AdminController.java
+0
-57
DataDictController.java
...der/mall/systemservice/controller/DataDictController.java
+0
-60
DepartmentController.java
...r/mall/systemservice/controller/DepartmentController.java
+0
-61
ErrorCodeController.java
...er/mall/systemservice/controller/ErrorCodeController.java
+0
-74
OAuthController.java
...ocoder/mall/systemservice/controller/OAuthController.java
+0
-48
PermissionController.java
...r/mall/systemservice/controller/PermissionController.java
+0
-62
ResourceController.java
...der/mall/systemservice/controller/ResourceController.java
+0
-67
RoleController.java
...iocoder/mall/systemservice/controller/RoleController.java
+0
-75
SystemAccessLogController.java
...l/systemservice/controller/SystemAccessLogController.java
+0
-41
SystemExceptionLogController.java
...ystemservice/controller/SystemExceptionLogController.java
+0
-49
UserErrorCodeConstants.java
...ocoder/mall/userservice/enums/UserErrorCodeConstants.java
+0
-13
没有找到文件。
yudao-framework/yudao-spring-boot-starter-biz-error-code/pom.xml
0 → 100644
浏览文件 @
2bd40cfb
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
yudao-framework
</artifactId>
<groupId>
cn.iocoder.cloud
</groupId>
<version>
${revision}
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
yudao-spring-boot-starter-biz-error-code
</artifactId>
<packaging>
jar
</packaging>
<name>
${project.artifactId}
</name>
<description>
错误码 ErrorCode 的自动配置功能,提供如下功能:
1. 远程读取:项目启动时,从 system-server 服务,读取数据库中的 ErrorCode 错误码,实现错误码的提水可配置;
2. 自动更新:管理员在管理后台修数据库中的 ErrorCode 错误码时,项目自动从 system-server 服务加载最新的 ErrorCode 错误码;
3. 自动写入:项目启动时,将项目本地的错误码写到 system-server 服务中,方便管理员在管理后台编辑;
</description>
<url>
https://github.com/YunaiV/ruoyi-vue-pro
</url>
<dependencies>
<dependency>
<groupId>
cn.iocoder.cloud
</groupId>
<artifactId>
yudao-common
</artifactId>
</dependency>
<!-- Spring 核心 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
</dependency>
<!-- RPC 远程调用相关 -->
<dependency>
<groupId>
cn.iocoder.cloud
</groupId>
<artifactId>
yudao-spring-boot-starter-rpc
</artifactId>
<optional>
true
</optional>
</dependency>
<!-- 业务组件 -->
<dependency>
<groupId>
cn.iocoder.cloud
</groupId>
<artifactId>
yudao-module-system-api
</artifactId>
<!-- 需要使用它,进行操作日志的记录 -->
<version>
${revision}
</version>
</dependency>
<dependency>
<groupId>
jakarta.validation
</groupId>
<artifactId>
jakarta.validation-api
</artifactId>
<scope>
provided
</scope>
<!-- 设置为 provided,主要是 ErrorCodeProperties 使用到 -->
</dependency>
</dependencies>
</project>
yudao-
module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system
/framework/errorcode/config/ErrorCodeProperties.java
→
yudao-
framework/yudao-spring-boot-starter-biz-error-code/src/main/java/cn/iocoder/yudao
/framework/errorcode/config/ErrorCodeProperties.java
浏览文件 @
2bd40cfb
package
cn
.
iocoder
.
yudao
.
module
.
system
.
framework
.
errorcode
.
config
;
package
cn
.
iocoder
.
yudao
.
framework
.
errorcode
.
config
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
...
...
yudao-
module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/config/ErrorCode
Configuration.java
→
yudao-
framework/yudao-spring-boot-starter-biz-error-code/src/main/java/cn/iocoder/yudao/framework/errorcode/config/YudaoErrorCodeAuto
Configuration.java
浏览文件 @
2bd40cfb
package
cn
.
iocoder
.
yudao
.
module
.
system
.
framework
.
errorcode
.
config
;
package
cn
.
iocoder
.
yudao
.
framework
.
errorcode
.
config
;
import
cn.iocoder.yudao.
module.system.
framework.errorcode.core.generator.ErrorCodeAutoGenerator
;
import
cn.iocoder.yudao.
module.system.framework.errorcode.core.loader.ErrorCodeLoader
;
import
cn.iocoder.yudao.
module.system.framework.errorcode.core.service.ErrorCodeFrameworkService
;
import
cn.iocoder.yudao.
module.system.
framework.errorcode.core.loader.ErrorCodeLoaderImpl
;
import
cn.iocoder.yudao.module.system.
framework.errorcode.core.generator.ErrorCodeAutoGeneratorImpl
;
import
cn.iocoder.yudao.framework.errorcode.core.generator.ErrorCodeAutoGenerator
;
import
cn.iocoder.yudao.
framework.errorcode.core.generator.ErrorCodeAutoGeneratorImpl
;
import
cn.iocoder.yudao.
framework.errorcode.core.loader.ErrorCodeLoader
;
import
cn.iocoder.yudao.framework.errorcode.core.loader.ErrorCodeLoaderImpl
;
import
cn.iocoder.yudao.module.system.
api.errorcode.ErrorCodeApi
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
// TODO 芋艿:貌似放的位置有问题
/**
* 错误码配置类
*
* @author 芋道源码
*/
@Configuration
@EnableConfigurationProperties
(
ErrorCodeProperties
.
class
)
@EnableScheduling
// 开启调度任务的功能,因为 ErrorCodeRemoteLoader 通过定时刷新错误码
public
class
ErrorCode
Configuration
{
public
class
YudaoErrorCodeAuto
Configuration
{
@Bean
public
ErrorCodeAutoGenerator
errorCodeAutoGenerator
(
@Value
(
"${spring.application.name}"
)
String
applicationName
,
ErrorCodeProperties
errorCodeProperties
,
ErrorCodeFrameworkService
errorCodeFrameworkService
)
{
return
new
ErrorCodeAutoGeneratorImpl
(
applicationName
,
errorCodeProperties
.
getConstantsClassList
(),
errorCodeFrameworkService
);
ErrorCodeApi
errorCodeApi
)
{
return
new
ErrorCodeAutoGeneratorImpl
(
applicationName
,
errorCodeProperties
.
getConstantsClassList
(),
errorCodeApi
);
}
@Bean
public
ErrorCodeLoader
errorCodeLoader
(
@Value
(
"${spring.application.name}"
)
String
applicationName
,
ErrorCode
FrameworkService
errorCodeFrameworkService
)
{
return
new
ErrorCodeLoaderImpl
(
applicationName
,
errorCode
FrameworkService
);
ErrorCode
Api
errorCodeApi
)
{
return
new
ErrorCodeLoaderImpl
(
applicationName
,
errorCode
Api
);
}
}
yudao-framework/yudao-spring-boot-starter-biz-error-code/src/main/java/cn/iocoder/yudao/framework/errorcode/config/YudaoErrorCodeRpcAutoConfiguration.java
0 → 100644
浏览文件 @
2bd40cfb
package
cn
.
iocoder
.
yudao
.
framework
.
errorcode
.
config
;
import
cn.iocoder.yudao.module.system.api.errorcode.ErrorCodeApi
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
import
org.springframework.context.annotation.Configuration
;
/**
* 错误码用到 Feign 的配置项
*
* @author 芋道源码
*/
@Configuration
(
proxyBeanMethods
=
false
)
@EnableFeignClients
(
clients
=
ErrorCodeApi
.
class
)
// 主要是引入相关的 API 服务
public
class
YudaoErrorCodeRpcAutoConfiguration
{
}
yudao-
module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system
/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java
→
yudao-
framework/yudao-spring-boot-starter-biz-error-code/src/main/java/cn/iocoder/yudao
/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java
浏览文件 @
2bd40cfb
package
cn
.
iocoder
.
yudao
.
module
.
system
.
framework
.
errorcode
.
core
.
generator
;
package
cn
.
iocoder
.
yudao
.
framework
.
errorcode
.
core
.
generator
;
/**
* 错误码的自动生成器
...
...
yudao-
module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system
/framework/errorcode/core/generator/ErrorCodeAutoGeneratorImpl.java
→
yudao-
framework/yudao-spring-boot-starter-biz-error-code/src/main/java/cn/iocoder/yudao
/framework/errorcode/core/generator/ErrorCodeAutoGeneratorImpl.java
浏览文件 @
2bd40cfb
package
cn
.
iocoder
.
yudao
.
module
.
system
.
framework
.
errorcode
.
core
.
generator
;
package
cn
.
iocoder
.
yudao
.
framework
.
errorcode
.
core
.
generator
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.exceptions.ExceptionUtil
;
import
cn.hutool.core.util.ClassUtil
;
import
cn.hutool.core.util.ReflectUtil
;
import
cn.iocoder.yudao.framework.common.exception.ErrorCode
;
import
cn.iocoder.yudao.module.system.
framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO
;
import
cn.iocoder.yudao.module.system.
framework.errorcode.core.service.ErrorCodeFrameworkService
;
import
cn.iocoder.yudao.module.system.
api.errorcode.ErrorCodeApi
;
import
cn.iocoder.yudao.module.system.
api.errorcode.dto.ErrorCodeAutoGenerateReqDTO
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.boot.context.event.ApplicationReadyEvent
;
...
...
@@ -36,9 +36,9 @@ public class ErrorCodeAutoGeneratorImpl implements ErrorCodeAutoGenerator {
*/
private
final
List
<
String
>
constantsClassList
;
/**
* 错误码
Service
* 错误码
Api
*/
private
final
ErrorCode
FrameworkService
errorCodeService
;
private
final
ErrorCode
Api
errorCodeApi
;
@Override
@EventListener
(
ApplicationReadyEvent
.
class
)
...
...
@@ -49,7 +49,7 @@ public class ErrorCodeAutoGeneratorImpl implements ErrorCodeAutoGenerator {
log
.
info
(
"[execute][解析到错误码数量为 ({}) 个]"
,
autoGenerateDTOs
.
size
());
// 第二步,写入到 system 服务
errorCode
Service
.
autoGenerateErrorCodes
(
autoGenerateDTOs
);
errorCode
Api
.
autoGenerateErrorCodes
(
autoGenerateDTOs
).
checkError
(
);
log
.
info
(
"[execute][写入到 system 组件完成]"
);
}
...
...
yudao-
module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system
/framework/errorcode/core/loader/ErrorCodeLoader.java
→
yudao-
framework/yudao-spring-boot-starter-biz-error-code/src/main/java/cn/iocoder/yudao
/framework/errorcode/core/loader/ErrorCodeLoader.java
浏览文件 @
2bd40cfb
package
cn
.
iocoder
.
yudao
.
module
.
system
.
framework
.
errorcode
.
core
.
loader
;
package
cn
.
iocoder
.
yudao
.
framework
.
errorcode
.
core
.
loader
;
import
cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil
;
...
...
yudao-
module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system
/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java
→
yudao-
framework/yudao-spring-boot-starter-biz-error-code/src/main/java/cn/iocoder/yudao
/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java
浏览文件 @
2bd40cfb
package
cn
.
iocoder
.
yudao
.
module
.
system
.
framework
.
errorcode
.
core
.
loader
;
package
cn
.
iocoder
.
yudao
.
framework
.
errorcode
.
core
.
loader
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeRespDTO
;
import
cn.iocoder.yudao.module.system.framework.errorcode.core.service.ErrorCodeFrameworkService
;
import
cn.iocoder.yudao.framework.common.util.date.DateUtils
;
import
cn.iocoder.yudao.module.system.api.errorcode.ErrorCodeApi
;
import
cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeRespDTO
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.boot.context.event.ApplicationReadyEvent
;
...
...
@@ -34,9 +34,9 @@ public class ErrorCodeLoaderImpl implements ErrorCodeLoader {
*/
private
final
String
applicationName
;
/**
* 错误码
Service
* 错误码
Api
*/
private
final
ErrorCode
FrameworkService
errorCodeService
;
private
final
ErrorCode
Api
errorCodeApi
;
/**
* 缓存错误码的最大更新时间,用于后续的增量轮询,判断是否有更新
...
...
@@ -55,7 +55,7 @@ public class ErrorCodeLoaderImpl implements ErrorCodeLoader {
private
void
loadErrorCodes0
()
{
// 加载错误码
List
<
ErrorCodeRespDTO
>
errorCodeRespDTOs
=
errorCode
Service
.
getErrorCodeList
(
applicationName
,
maxUpdateTime
);
List
<
ErrorCodeRespDTO
>
errorCodeRespDTOs
=
errorCode
Api
.
getErrorCodeList
(
applicationName
,
maxUpdateTime
).
getCheckedData
(
);
if
(
CollUtil
.
isEmpty
(
errorCodeRespDTOs
))
{
return
;
}
...
...
yudao-framework/yudao-spring-boot-starter-biz-error-code/src/main/java/cn/iocoder/yudao/framework/errorcode/package-info.java
0 → 100644
浏览文件 @
2bd40cfb
/**
* 错误码 ErrorCode 的自动配置功能,提供如下功能:
*
* 1. 远程读取:项目启动时,从 system-service 服务,读取数据库中的 ErrorCode 错误码,实现错误码的提水可配置;
* 2. 自动更新:管理员在管理后台修数据库中的 ErrorCode 错误码时,项目自动从 system-service 服务加载最新的 ErrorCode 错误码;
* 3. 自动写入:项目启动时,将项目本地的错误码写到 system-server 服务中,方便管理员在管理后台编辑;
*
* @author 芋道源码
*/
package
cn
.
iocoder
.
yudao
.
framework
.
errorcode
;
yudao-framework/yudao-spring-boot-starter-biz-error-code/src/main/resources/META-INF/spring.factories
0 → 100644
浏览文件 @
2bd40cfb
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cn.iocoder.yudao.framework.errorcode.config.YudaoErrorCodeRpcAutoConfiguration,\
cn.iocoder.yudao.framework.errorcode.config.YudaoErrorCodeAutoConfiguration
yudao-module-infra/yudao-module-infra-biz/pom.xml
浏览文件 @
2bd40cfb
...
...
@@ -46,6 +46,10 @@
<groupId>
cn.iocoder.cloud
</groupId>
<artifactId>
yudao-spring-boot-starter-biz-tenant
</artifactId>
</dependency>
<dependency>
<groupId>
cn.iocoder.cloud
</groupId>
<artifactId>
yudao-spring-boot-starter-biz-error-code
</artifactId>
</dependency>
<!-- Web 相关 -->
<dependency>
...
...
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/errorcode/ErrorCodeApi.java
浏览文件 @
2bd40cfb
...
...
@@ -22,7 +22,7 @@ import java.util.List;
@Api
(
tags
=
"RPC 服务 - 错误码"
)
public
interface
ErrorCodeApi
{
String
PREFIX
=
ApiConstants
.
PREFIX
+
"/
oauth2/token
"
;
String
PREFIX
=
ApiConstants
.
PREFIX
+
"/
error-code
"
;
@PostMapping
(
PREFIX
+
"/auto-generate"
)
@ApiOperation
(
"自动创建错误码"
)
...
...
yudao-module-system/yudao-module-system-biz/src/main/resources/application.yaml
浏览文件 @
2bd40cfb
...
...
@@ -78,6 +78,7 @@ yudao:
-
/admin-api/system/captcha/get-image
# 获取图片验证码,和租户无关
-
/admin-api/system/sms/callback/*
# 短信回调接口,无法带上租户编号
-
/rpc-api/system/tenant/valid
# 防止递归。避免调用 /rpc-api/system/tenant/valid 接口时,又去触发 /rpc-api/system/tenant/valid 去校验
-
/rpc-api/system/error-code/*
# 错误码的自动创建与下载的接口,无法带上租户编号
ignore-tables
:
-
system_tenant
-
system_tenant_package
...
...
归档/common/mall-spring-boot-starter-system-error-code/src/main/resources/META-INF/spring.factories
deleted
100644 → 0
浏览文件 @
ca28d791
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cn.iocoder.mall.system.errorcode.config.ErrorCodeAutoConfiguration
归档/moved/system/system-biz/pom.xml
deleted
100644 → 0
浏览文件 @
ca28d791
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
system
</artifactId>
<groupId>
cn.iocoder.mall
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
system-biz
</artifactId>
<dependencies>
<!-- Mall 相关 -->
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
system-biz-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<!-- Spring 核心 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
</dependency>
<!-- DB 相关 -->
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-tx
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-jdbc
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
mall-spring-boot-starter-mybatis
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<!-- 短信平台 阿里云、云片 -->
<dependency>
<groupId>
com.yunpian.sdk
</groupId>
<artifactId>
yunpian-java-sdk
</artifactId>
</dependency>
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
aliyun-java-sdk-core
</artifactId>
</dependency>
<!-- 文件服务商 -->
<dependency>
<groupId>
com.qiniu
</groupId>
<artifactId>
qiniu-java-sdk
</artifactId>
</dependency>
<!-- 工具类相关 -->
<dependency>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct
</artifactId>
<!-- use mapstruct-jdk8 for Java 8 or higher -->
</dependency>
<dependency>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct-jdk8
</artifactId>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-aop
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-webmvc
</artifactId>
<scope>
compile
</scope>
</dependency>
<dependency>
<groupId>
javax.servlet
</groupId>
<artifactId>
servlet-api
</artifactId>
<scope>
compile
</scope>
</dependency>
</dependencies>
</project>
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/bo/smsSign/ListSmsSignBO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
bo
.
smsSign
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
/**
* sms page
*
* @author Sin
* @time 2019/5/19 4:23 PM
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ListSmsSignBO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 短信平台
*/
private
Integer
platform
;
/**
* 签名名称
*/
private
String
sign
;
/**
* 审核状态
* <p>
* - 1、审核中
* - 2、审核成功
* - 3、审核失败
*/
private
Integer
applyStatus
;
/**
* 审核信息
*/
private
String
applyMessage
;
/**
* 更新时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
updateTime
;
/**
* 创建时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/bo/smsSign/SmsSignBO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
bo
.
smsSign
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 短信签名
*
* @author Sin
* @time 2019/5/16 6:30 PM
*/
@Data
@Accessors
(
chain
=
true
)
public
class
SmsSignBO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 签名id 这个是第三方的
*/
private
Integer
signId
;
/**
* 签名名称
*/
private
String
sign
;
/**
* 审核状态
*
* - 1、审核中
* - 2、审核成功
* - 3、审核失败
*/
private
Integer
applyStatus
;
/**
* 审核信息
*/
private
String
applyMessage
;
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/bo/smsTemplate/ListSmsTemplateBO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
bo
.
smsTemplate
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
/**
* sms page
*
* @author Sin
* @time 2019/5/19 4:23 PM
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ListSmsTemplateBO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 模板编号 (第三方的)
*/
private
Integer
smsSignId
;
/**
* 短信签名 id
*/
private
String
platform
;
/**
* 短信模板 Code
*/
private
String
templateCode
;
/**
* 短信模板
*/
private
String
template
;
/**
* 短信类型
*/
private
Integer
smsType
;
/**
* 审核状态
* <p>
* 1、审核中
* 2、审核成功
* 3、审核失败
*/
private
Integer
applyStatus
;
/**
* 审核信息
*/
private
String
applyMessage
;
/**
* 更新时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
updateTime
;
/**
* 创建时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
///
/// 关联字段
/**
* 签名信息
*/
private
Sign
sign
;
@Data
@Accessors
(
chain
=
true
)
public
static
class
Sign
{
/**
* 编号
*/
private
Integer
id
;
/**
* 签名id 这个是第三方的
*/
private
String
platformId
;
/**
* 签名名称
*/
private
String
sign
;
/**
* 审核状态
* <p>
* - 1、审核中
* - 2、审核成功
* - 3、审核失败
*/
private
Integer
applyStatus
;
/**
* 审核信息
*/
private
String
applyMessage
;
}
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/bo/smsTemplate/SmsTemplateBO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
bo
.
smsTemplate
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 短信 template
*
* @author Sin
* @time 2019/5/16 7:41 PM
*/
@Data
@Accessors
(
chain
=
true
)
public
class
SmsTemplateBO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 模板编号 (第三方的)
*/
private
Integer
smsSignId
;
/**
* 短信签名 id
*/
private
String
platformId
;
/**
* 短信模板
*/
private
String
template
;
/**
* 审核状态
*
* 1、审核中
* 2、审核成功
* 3、审核失败
*/
private
Integer
applyStatus
;
/**
* 审核信息
*/
private
String
applyMessage
;
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/config/QiniuConfiguration.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
config
;
import
com.qiniu.util.Auth
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
@Configuration
public
class
QiniuConfiguration
{
@Value
(
"${qiniu.access-key}"
)
private
String
accessKey
;
@Value
(
"${qiniu.secret-key}"
)
private
String
secretKey
;
@Bean
public
Auth
auth
()
{
return
Auth
.
create
(
accessKey
,
secretKey
);
}
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/convert/SmsSignConvert.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
convert
;
import
cn.iocoder.mall.system.biz.bo.smsSign.ListSmsSignBO
;
import
cn.iocoder.mall.system.biz.bo.smsSign.SmsSignBO
;
import
cn.iocoder.mall.system.biz.dataobject.sms.SmsSignDO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.factory.Mappers
;
import
java.util.List
;
/**
* 短信 签名
*
* @author Sin
* @time 2019/5/16 6:31 PM
*/
@Mapper
public
interface
SmsSignConvert
{
SmsSignConvert
INSTANCE
=
Mappers
.
getMapper
(
SmsSignConvert
.
class
);
@Mappings
({})
SmsSignBO
convert
(
SmsSignDO
bean
);
@Mappings
({})
List
<
ListSmsSignBO
>
convert
(
List
<
SmsSignDO
>
beans
);
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/convert/SmsTemplateConvert.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
convert
;
import
cn.iocoder.mall.system.biz.bo.smsTemplate.ListSmsTemplateBO
;
import
cn.iocoder.mall.system.biz.bo.smsTemplate.SmsTemplateBO
;
import
cn.iocoder.mall.system.biz.dataobject.sms.SmsSignDO
;
import
cn.iocoder.mall.system.biz.dataobject.sms.SmsTemplateDO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.factory.Mappers
;
import
java.util.List
;
/**
* 短信 template
*
* @author Sin
* @time 2019/5/16 7:43 PM
*/
@Mapper
public
interface
SmsTemplateConvert
{
SmsTemplateConvert
INSTANCE
=
Mappers
.
getMapper
(
SmsTemplateConvert
.
class
);
@Mappings
({})
SmsTemplateBO
convert
(
SmsTemplateDO
smsTemplateDO
);
@Mappings
({})
List
<
ListSmsTemplateBO
>
convert
(
List
<
SmsTemplateDO
>
smsTemplateDOList
);
@Mappings
({})
List
<
ListSmsTemplateBO
.
Sign
>
convertTemplateSign
(
List
<
SmsSignDO
>
smsSignDOList
);
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dao/sms/SmsSendMapper.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dao
.
sms
;
import
cn.iocoder.mall.system.biz.dataobject.sms.SmsSendLogDO
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.springframework.stereotype.Repository
;
/**
* 短信
*
* @author Sin
* @time 2019/5/16 6:18 PM
*/
@Repository
public
interface
SmsSendMapper
extends
BaseMapper
<
SmsSendLogDO
>
{
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dao/sms/SmsSignMapper.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dao
.
sms
;
import
cn.iocoder.mall.system.biz.dataobject.sms.SmsSignDO
;
import
cn.iocoder.mall.system.biz.dto.smsSign.ListSmsSignDTO
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.util.StringUtils
;
/**
* 短信
*
* @author Sin
* @time 2019/5/16 6:18 PM
*/
@Repository
public
interface
SmsSignMapper
extends
BaseMapper
<
SmsSignDO
>
{
default
IPage
<
SmsSignDO
>
listSmsSign
(
ListSmsSignDTO
queryDTO
)
{
LambdaQueryWrapper
<
SmsSignDO
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
if
(
queryDTO
.
getApplyStatus
()
!=
null
)
{
queryWrapper
.
eq
(
SmsSignDO:
:
getApplyStatus
,
queryDTO
.
getApplyStatus
());
}
if
(!
StringUtils
.
isEmpty
(
queryDTO
.
getSign
()))
{
queryWrapper
.
like
(
SmsSignDO:
:
getSign
,
queryDTO
.
getSign
());
}
if
(!
StringUtils
.
isEmpty
(
queryDTO
.
getId
()))
{
queryWrapper
.
eq
(
SmsSignDO:
:
getId
,
queryDTO
.
getId
());
}
Page
<
SmsSignDO
>
page
=
new
Page
<
SmsSignDO
>()
.
setSize
(
queryDTO
.
getPageSize
())
.
setCurrent
(
queryDTO
.
getPageNo
())
.
setDesc
(
"create_time"
);
return
selectPage
(
page
,
queryWrapper
);
}
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dao/sms/SmsTemplateMapper.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dao
.
sms
;
import
cn.iocoder.mall.system.biz.dataobject.sms.SmsTemplateDO
;
import
cn.iocoder.mall.system.biz.dto.smsTemplate.ListSmsTemplateDTO
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.util.StringUtils
;
/**
* 短信 template
*
* @author Sin
* @time 2019/5/16 6:18 PM
*/
@Repository
public
interface
SmsTemplateMapper
extends
BaseMapper
<
SmsTemplateDO
>
{
default
IPage
<
SmsTemplateDO
>
listSmsTemplate
(
ListSmsTemplateDTO
listSmsTemplateDTO
)
{
QueryWrapper
<
SmsTemplateDO
>
queryWrapper
=
new
QueryWrapper
<>();
if
(
listSmsTemplateDTO
.
getApplyStatus
()
!=
null
)
{
queryWrapper
.
eq
(
"apply_status"
,
listSmsTemplateDTO
.
getApplyStatus
());
}
if
(
listSmsTemplateDTO
.
getSmsSignId
()
!=
null
)
{
queryWrapper
.
eq
(
"sms_sign_id"
,
listSmsTemplateDTO
.
getSmsSignId
());
}
if
(!
StringUtils
.
isEmpty
(
listSmsTemplateDTO
.
getTemplate
()))
{
queryWrapper
.
like
(
"template"
,
listSmsTemplateDTO
.
getTemplate
());
}
if
(!
StringUtils
.
isEmpty
(
listSmsTemplateDTO
.
getId
()))
{
queryWrapper
.
eq
(
"id"
,
listSmsTemplateDTO
.
getId
());
}
Page
<
SmsTemplateDO
>
page
=
new
Page
<
SmsTemplateDO
>()
.
setSize
(
listSmsTemplateDTO
.
getPageSize
())
.
setCurrent
(
listSmsTemplateDTO
.
getPageNo
())
.
setDesc
(
"create_time"
);
return
selectPage
(
page
,
queryWrapper
);
}
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dataobject/sms/SmsSendLogDO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dataobject
.
sms
;
import
cn.iocoder.mall.mybatis.core.dataobject.BaseDO
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 短信 client log
*
* @author Sin
* @time 2019/5/25 12:36 PM
*/
@Data
@Accessors
(
chain
=
true
)
public
class
SmsSendLogDO
extends
BaseDO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 短信模板
*/
private
Integer
templateId
;
/**
* 短信
*/
private
String
template
;
/**
* 参数
*/
private
String
params
;
/**
* 发送信息
*/
private
String
message
;
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dataobject/sms/SmsSignDO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dataobject
.
sms
;
import
cn.iocoder.mall.mybatis.core.dataobject.DeletableDO
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 短信签名
*
* 签名是短信发送前缀 如:【阿里云】、【小红书】
*
* @author Sin
* @time 2019/5/16 12:28 PM
*/
@Data
@Accessors
(
chain
=
true
)
@TableName
(
"sms_sign"
)
public
class
SmsSignDO
extends
DeletableDO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 签名名称
*/
private
String
sign
;
/**
* 平台
*
* 1、云片
* 2、阿里云
*/
private
Integer
platform
;
/**
* 审核状态
*
* - 1、审核中
* - 2、审核成功
* - 10、审核失败
*/
private
Integer
applyStatus
;
/**
* 审核信息
*/
private
String
applyMessage
;
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dataobject/sms/SmsTemplateDO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dataobject
.
sms
;
import
cn.iocoder.mall.mybatis.core.dataobject.DeletableDO
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 短信 模板
*
* @author Sin
* @time 2019/5/16 12:31 PM
*/
@Data
@Accessors
(
chain
=
true
)
@TableName
(
"sms_template"
)
public
class
SmsTemplateDO
extends
DeletableDO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 模板编号 (第三方的)
*/
private
Integer
smsSignId
;
/**
* 模板 code(第三方平台 code)
*/
private
String
templateCode
;
/**
* 短信签名 id
*/
private
Integer
platform
;
/**
* 短信模板
*/
private
String
template
;
/**
* 短信类型
*
* - 验证码类
* - 通知类
* - 营销类
*/
private
Integer
smsType
;
/**
* 审核状态
*
* 1、审核中
* 2、审核成功
* 10、审核失败
*/
private
Integer
applyStatus
;
/**
* 审核信息
*/
private
String
applyMessage
;
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dto/smsSign/AddSignDTO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dto
.
smsSign
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* 添加 sign
*
* author: sin
* time: 2020/4/20 11:10 上午
*/
@Data
@Accessors
(
chain
=
true
)
public
class
AddSignDTO
implements
Serializable
{
private
String
sign
;
private
Integer
platform
;
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dto/smsSign/ListSmsSignDTO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dto
.
smsSign
;
import
cn.iocoder.common.framework.vo.PageParam
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* page 短信模板 query
*
* @author Sin
* @time 2019/5/19 4:32 PM
*/
@Data
@Accessors
(
chain
=
true
)
@ApiModel
(
"短信服务查询"
)
public
class
ListSmsSignDTO
extends
PageParam
{
@ApiModelProperty
(
"编号"
)
private
Integer
id
;
@ApiModelProperty
(
"签名"
)
private
String
sign
;
@ApiModelProperty
(
"申请状态"
)
private
Integer
applyStatus
;
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dto/smsSign/UpdateSignDTO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dto
.
smsSign
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* 更新签名
* <p>
* author: sin
* time: 2020/4/20 11:05 上午
*/
@Data
@Accessors
(
chain
=
true
)
public
class
UpdateSignDTO
implements
Serializable
{
private
Integer
id
;
private
String
sign
;
private
Integer
platform
;
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dto/smsTemplate/ListSmsTemplateDTO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dto
.
smsTemplate
;
import
cn.iocoder.common.framework.vo.PageParam
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
/**
* page 短信模板 query
*
* @author Sin
* @time 2019/5/19 4:32 PM
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ListSmsTemplateDTO
extends
PageParam
{
@NotNull
private
String
id
;
@NotNull
private
Integer
smsSignId
;
@NotNull
private
String
template
;
@NotNull
private
String
applyStatus
;
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/enums/sms/SmsApplyStatusEnum.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
enums
.
sms
;
/**
* 短信审核状态
*
* @author Sin
* @time 2019/5/16 12:48 PM
*/
public
enum
SmsApplyStatusEnum
{
CHECKING
(
1
,
"审核中"
),
SUCCESS
(
2
,
"审核成功"
),
FAIL
(
10
,
"审核失败"
),
;
private
final
Integer
value
;
private
final
String
name
;
SmsApplyStatusEnum
(
int
code
,
String
message
)
{
this
.
value
=
code
;
this
.
name
=
message
;
}
public
int
getValue
()
{
return
value
;
}
public
String
getName
()
{
return
name
;
}
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/enums/sms/SmsPlatformEnum.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
enums
.
sms
;
import
cn.iocoder.common.framework.core.IntArrayValuable
;
import
java.util.Arrays
;
/**
* 短信审核状态
*
* @author Sin
* @time 2019/5/16 12:48 PM
*/
public
enum
SmsPlatformEnum
implements
IntArrayValuable
{
YunPian
(
1
,
"云片"
),
AliYun
(
2
,
"阿里云"
),
;
public
static
final
int
[]
ARRAYS
=
Arrays
.
stream
(
values
()).
mapToInt
(
SmsPlatformEnum:
:
getValue
).
toArray
();
private
final
Integer
value
;
private
final
String
name
;
SmsPlatformEnum
(
Integer
code
,
String
message
)
{
this
.
value
=
code
;
this
.
name
=
message
;
}
public
Integer
getValue
()
{
return
value
;
}
public
String
getName
()
{
return
name
;
}
@Override
public
int
[]
array
()
{
return
ARRAYS
;
}
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/enums/sms/SmsTypeEnum.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
enums
.
sms
;
import
cn.iocoder.common.framework.core.IntArrayValuable
;
import
java.util.Arrays
;
/**
* 短信审核状态
*
* @author Sin
* @time 2019/5/16 12:48 PM
*/
public
enum
SmsTypeEnum
implements
IntArrayValuable
{
VERIFICATION_CODE
(
1
,
"验证码"
),
NOTICE
(
2
,
"通知"
),
MARKETING
(
3
,
"营销"
),
;
public
static
final
int
[]
ARRAYS
=
Arrays
.
stream
(
values
()).
mapToInt
(
SmsTypeEnum:
:
getValue
).
toArray
();
private
final
Integer
value
;
private
final
String
name
;
SmsTypeEnum
(
Integer
code
,
String
message
)
{
this
.
value
=
code
;
this
.
name
=
message
;
}
public
Integer
getValue
()
{
return
value
;
}
public
String
getName
()
{
return
name
;
}
@Override
public
int
[]
array
()
{
return
ARRAYS
;
}
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/log/operation/annotation/OperationLogging.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
log
.
operation
.
annotation
;
import
java.lang.annotation.*
;
/**
* @author Hccake
* @version 1.0
* @date 2019/10/15 18:09
*/
@Target
(
ElementType
.
METHOD
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
public
@interface
OperationLogging
{
/**
* 日志信息
* @return
*/
String
value
();
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/log/operation/aspect/OperationLogAspect.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
log
.
operation
.
aspect
;
import
cn.hutool.core.util.ArrayUtil
;
import
cn.hutool.core.util.URLUtil
;
import
cn.hutool.json.JSONUtil
;
import
cn.iocoder.common.framework.util.HttpUtil
;
import
cn.iocoder.common.framework.util.MallUtils
;
import
cn.iocoder.mall.system.biz.log.operation.annotation.OperationLogging
;
import
cn.iocoder.mall.system.biz.log.operation.enums.LogStatus
;
import
cn.iocoder.mall.system.biz.log.operation.event.OperationLogEvent
;
import
cn.iocoder.mall.system.biz.log.operation.model.dto.OperationLogDTO
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.Signature
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.reflect.MethodSignature
;
import
org.springframework.context.ApplicationEventPublisher
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Objects
;
/**
* @author Hccake
* @version 1.0
* @date 2019/10/15 18:16
*/
@Slf4j
@Aspect
@Order
(
0
)
@RequiredArgsConstructor
public
class
OperationLogAspect
{
private
final
ApplicationEventPublisher
publisher
;
@Around
(
"@annotation(operationLogging)"
)
public
Object
around
(
ProceedingJoinPoint
joinPoint
,
OperationLogging
operationLogging
)
throws
Throwable
{
Signature
signature
=
joinPoint
.
getSignature
();
String
strClassName
=
joinPoint
.
getTarget
().
getClass
().
getName
();
String
strMethodName
=
signature
.
getName
();
log
.
debug
(
"[类名]:{},[方法]:{}"
,
strClassName
,
strMethodName
);
// 获取日志
OperationLogDTO
operationLogDTO
=
prodOperationLog
();
operationLogDTO
.
setMsg
(
operationLogging
.
value
());
// 记录参数
MethodSignature
methodSignature
=
(
MethodSignature
)
signature
;
operationLogDTO
.
setParams
(
getParams
(
joinPoint
,
methodSignature
));
// 开始时间
long
startTime
=
System
.
currentTimeMillis
();
Object
result
;
try
{
result
=
joinPoint
.
proceed
();
}
catch
(
Throwable
throwable
)
{
operationLogDTO
.
setStatus
(
LogStatus
.
FAIL
.
getValue
());
throw
throwable
;
}
// 结束时间
operationLogDTO
.
setResponseTime
((
int
)
(
System
.
currentTimeMillis
()
-
startTime
));
// 发布事件
publisher
.
publishEvent
(
new
OperationLogEvent
(
operationLogDTO
));
return
result
;
}
/**
* 获取方法参数
* @param joinPoint joinPoint
* @param methodSignature 方法签名
* @return 方法参数的Json字符串形式
*/
private
String
getParams
(
ProceedingJoinPoint
joinPoint
,
MethodSignature
methodSignature
)
{
String
[]
parameterNames
=
methodSignature
.
getParameterNames
();
Object
[]
args
=
joinPoint
.
getArgs
();
if
(
ArrayUtil
.
isEmpty
(
parameterNames
)){
return
null
;
}
Map
<
String
,
Object
>
paramsMap
=
new
HashMap
<>();
for
(
int
i
=
0
;
i
<
parameterNames
.
length
;
i
++)
{
paramsMap
.
put
(
parameterNames
[
i
],
args
[
i
]);
}
return
JSONUtil
.
toJsonStr
(
paramsMap
);
}
/**
* 根据请求生成操作日志
* @return 操作日志DTO
*/
private
OperationLogDTO
prodOperationLog
()
{
HttpServletRequest
request
=
((
ServletRequestAttributes
)
Objects
.
requireNonNull
(
RequestContextHolder
.
getRequestAttributes
())).
getRequest
();
return
new
OperationLogDTO
()
.
setTraceId
(
MallUtils
.
getTraceId
())
.
setUri
(
URLUtil
.
getPath
(
request
.
getRequestURI
()))
.
setUserAgent
(
HttpUtil
.
getUserAgent
(
request
))
.
setIp
(
HttpUtil
.
getIp
(
request
))
.
setMethod
(
request
.
getMethod
())
// TODO 获取管理员用户名 或者 用户ID
// .setOperator(Objects.requireNonNull(LogUtils.getUsername()))
.
setStatus
(
LogStatus
.
SUCCESS
.
getValue
());
}
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/log/operation/enums/LogStatus.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
log
.
operation
.
enums
;
/**
* @author Hccake
* @version 1.0
* @date 2020/5/15 14:47
*/
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* 操作状态
*/
@Getter
@AllArgsConstructor
public
enum
LogStatus
{
/**
* 成功
*/
SUCCESS
(
1
),
/**
* 失败
*/
FAIL
(
0
);
private
final
int
value
;
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/log/operation/event/OperationLogEvent.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
log
.
operation
.
event
;
import
cn.iocoder.mall.system.biz.log.operation.model.dto.OperationLogDTO
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* @author
* 系统日志事件
*/
@Getter
@AllArgsConstructor
public
class
OperationLogEvent
{
private
final
OperationLogDTO
operationLogDTO
;
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/log/operation/event/OperationLogListener.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
log
.
operation
.
event
;
import
cn.iocoder.mall.system.biz.log.operation.service.OperationLogSaveService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.event.EventListener
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.scheduling.annotation.Async
;
/**
* @author
* 异步监听日志事件
*/
@Slf4j
public
class
OperationLogListener
{
@Autowired
private
OperationLogSaveService
operationLogSaveService
;
@Async
@Order
@EventListener
(
OperationLogEvent
.
class
)
public
void
saveSysLog
(
OperationLogEvent
event
)
{
operationLogSaveService
.
saveLog
(
event
.
getOperationLogDTO
());
}
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/log/operation/model/dto/OperationLogDTO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
log
.
operation
.
model
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.time.LocalDateTime
;
/**
* 操作日志
*
* @author hccake
* @date 2020-05-15 15:12:53
*/
@Data
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"操作日志"
)
public
class
OperationLogDTO
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 链路追踪编号
*/
@ApiModelProperty
(
value
=
"链路追踪编号"
)
private
String
traceId
;
/**
* 账号编号
*/
@ApiModelProperty
(
value
=
"账号编号"
)
private
Integer
accountId
;
/**
* 应用名
*/
@ApiModelProperty
(
value
=
"应用名"
)
private
String
applicationName
;
/**
* 访问地址
*/
@ApiModelProperty
(
value
=
"访问地址"
)
private
String
uri
;
/**
* 参数
*/
@ApiModelProperty
(
value
=
"参数"
)
private
String
params
;
/**
* http 方法
*/
@ApiModelProperty
(
value
=
"http 方法"
)
private
String
method
;
/**
* userAgent
*/
@ApiModelProperty
(
value
=
"userAgent"
)
private
String
userAgent
;
/**
* ip
*/
@ApiModelProperty
(
value
=
"ip"
)
private
String
ip
;
/**
* 请求时间
*/
@ApiModelProperty
(
value
=
"请求时间"
)
private
LocalDateTime
startTime
;
/**
* 响应时长 -- 毫秒级
*/
@ApiModelProperty
(
value
=
"响应时长 -- 毫秒级"
)
private
Integer
responseTime
;
/**
* 日志消息
*/
@ApiModelProperty
(
value
=
"日志消息"
)
private
String
msg
;
/**
* 操作状态
*/
@ApiModelProperty
(
value
=
"操作状态"
)
private
Integer
status
;
/**
* 创建者
*/
@ApiModelProperty
(
value
=
"创建者"
)
private
String
operator
;
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/log/operation/model/po/OperationLogPO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
log
.
operation
.
model
.
po
;
import
com.baomidou.mybatisplus.annotation.FieldFill
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
io.swagger.annotations.ApiModel
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.time.LocalDateTime
;
/**
* 操作日志
*
* @author hccake
* @date 2020-05-15 15:12:53
*/
@Data
@TableName
(
"operation_log"
)
@EqualsAndHashCode
(
callSuper
=
true
)
@ApiModel
(
value
=
"操作日志"
)
public
class
OperationLogPO
extends
Model
<
OperationLogPO
>
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 编号
*/
@TableId
private
Integer
id
;
/**
* 链路追踪编号
*/
private
String
traceId
;
/**
* 账号编号
*/
private
Integer
accountId
;
/**
* 应用名
*/
private
String
applicationName
;
/**
* 访问地址
*/
private
String
uri
;
/**
* 参数
*/
private
String
params
;
/**
* http 方法
*/
private
String
method
;
/**
* userAgent
*/
private
String
userAgent
;
/**
* ip
*/
private
String
ip
;
/**
* 请求时间
*/
private
LocalDateTime
startTime
;
/**
* 响应时长 -- 毫秒级
*/
private
Integer
responseTime
;
/**
* 日志消息
*/
private
String
msg
;
/**
* 操作状态
*/
private
Integer
status
;
/**
* 创建者
*/
private
String
operator
;
/**
* 创建时间
*/
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
LocalDateTime
createTime
;
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/log/operation/service/OperationLogSaveService.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
log
.
operation
.
service
;
import
cn.iocoder.mall.system.biz.log.operation.model.dto.OperationLogDTO
;
/**
* 操作日志业务类
* @author Hccake
* @version 1.0
* @date 2019/10/15 19:57
*/
public
interface
OperationLogSaveService
{
/**
* 保存操作日志
* @param operationLogDTO
* @return true/false
*/
boolean
saveLog
(
OperationLogDTO
operationLogDTO
);
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/sms/AliYunSmsClient.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
service
.
sms
;
import
com.alibaba.fastjson.JSON
;
import
com.aliyuncs.CommonRequest
;
import
com.aliyuncs.CommonResponse
;
import
com.aliyuncs.DefaultAcsClient
;
import
com.aliyuncs.IAcsClient
;
import
com.aliyuncs.exceptions.ClientException
;
import
com.aliyuncs.http.MethodType
;
import
com.aliyuncs.profile.DefaultProfile
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
org.apache.commons.lang3.exception.ExceptionUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
/**
* 短信 AliYun client
*
* @author Sin
* @time 2019/5/25 12:28 PM
*/
@Component
// TODO DOME FROM 芋艿 to 小范:建议类名改成 AliYunSmsClient
public
class
AliYunSmsClient
implements
SmsClient
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
AliYunSmsClient
.
class
);
private
static
final
String
DOMAIN
=
"dysmsapi.aliyuncs.com"
;
private
static
final
String
SUCCESS_CODE
=
"OK"
;
private
static
final
String
SUCCESS_MESSAGE
=
"OK"
;
/**
* 阿里云短信 - 批量推送最大数 500,支持 1000
*/
private
static
final
int
MAX_BATCH_SIZE
=
500
;
@Value
(
"${sms.aliYun.accessKeyId?:'default_value'}"
)
private
String
accessKeyId
;
@Value
(
"${sms.aliYun.accessSecret?:'default_value'}"
)
private
String
accessSecret
;
@Data
@Accessors
(
chain
=
true
)
public
static
class
Result
{
/**
* 发送回执ID,可根据该ID在接口QuerySendDetails中查询具体的发送状态。
*/
private
String
BizId
;
/**
* 请求状态码。
*
* - OK 蔡成功
*/
private
String
Code
;
/**
* 状态码的描述。
*/
private
String
Message
;
/**
* 请求ID。
*/
private
String
RequestId
;
}
@Override
public
SendResult
singleSend
(
String
mobile
,
String
sign
,
String
templateCode
,
String
template
,
Map
<
String
,
String
>
templateParams
)
{
// params
CommonRequest
request
=
new
CommonRequest
();
request
.
setMethod
(
MethodType
.
POST
);
request
.
setDomain
(
DOMAIN
);
request
.
setVersion
(
"2017-05-25"
);
request
.
setAction
(
"SendSms"
);
request
.
putQueryParameter
(
"PhoneNumbers"
,
mobile
);
request
.
putQueryParameter
(
"SignName"
,
sign
);
request
.
putQueryParameter
(
"TemplateCode"
,
templateCode
);
request
.
putQueryParameter
(
"TemplateParam"
,
JSON
.
toJSONString
(
templateParams
));
// 发送请求
return
doSend
(
request
);
}
@Override
public
SendResult
batchSend
(
List
<
String
>
mobileList
,
String
sign
,
String
templateCode
,
String
template
,
Map
<
String
,
String
>
templateParams
)
{
// 最大发送数为 1000,我们设置为 500 个, 分段发送
int
maxSendSize
=
MAX_BATCH_SIZE
;
int
maxSendSizeCount
=
mobileList
.
size
()
%
maxSendSize
==
0
?
mobileList
.
size
()
/
maxSendSize
:
mobileList
.
size
()
/
maxSendSize
+
1
;
// 处理批量
SendResult
sendResult
=
null
;
for
(
int
i
=
0
;
i
<
maxSendSizeCount
;
i
++)
{
// 分批发送
List
<
String
>
batchSendMobile
=
mobileList
.
subList
(
i
*
maxSendSize
,
(
i
+
1
)
*
maxSendSize
);
// params
CommonRequest
request
=
new
CommonRequest
();
request
.
setMethod
(
MethodType
.
POST
);
request
.
setDomain
(
DOMAIN
);
request
.
setVersion
(
"2017-05-25"
);
request
.
setAction
(
"SendBatchSms"
);
request
.
putQueryParameter
(
"PhoneNumberJson"
,
JSON
.
toJSONString
(
batchSendMobile
));
request
.
putQueryParameter
(
"SignNameJson"
,
JSON
.
toJSONString
(
Collections
.
singletonList
(
sign
)));
request
.
putQueryParameter
(
"TemplateCode"
,
templateCode
);
request
.
putQueryParameter
(
"TemplateParamJson"
,
JSON
.
toJSONString
(
Collections
.
singletonList
(
templateParams
)));
// 发送请求
sendResult
=
doSend
(
request
);
}
return
sendResult
;
}
private
SendResult
doSend
(
CommonRequest
request
)
{
// 获取 client
IAcsClient
client
=
getClient
();
try
{
CommonResponse
response
=
client
.
getCommonResponse
(
request
);
Result
result
=
JSON
.
parseObject
(
response
.
getData
(),
Result
.
class
);
if
(!
SUCCESS_CODE
.
equals
(
result
.
getCode
()))
{
LOGGER
.
info
(
"发送验证码失败 params {} res {}"
,
JSON
.
toJSON
(
request
),
JSON
.
toJSON
(
result
));
// 错误发送失败
return
new
SendResult
()
.
setIsSuccess
(
false
)
.
setCode
(
SendResult
.
ERROR_CODE
)
.
setMessage
(
result
.
getMessage
());
}
else
{
LOGGER
.
info
(
"发送验证码失败 params {} res"
,
JSON
.
toJSON
(
request
),
JSON
.
toJSON
(
result
));
// 发送成功
return
new
SendResult
()
.
setIsSuccess
(
true
)
.
setCode
(
SendResult
.
SUCCESS_CODE
)
.
setMessage
(
result
.
getMessage
());
}
}
catch
(
ClientException
e
)
{
LOGGER
.
error
(
"发送验证码异常 {}"
,
ExceptionUtils
.
getMessage
(
e
));
return
new
SendResult
()
.
setIsSuccess
(
false
)
.
setCode
(
SendResult
.
ERROR_CODE
)
.
setMessage
(
ExceptionUtils
.
getMessage
(
e
));
}
}
/**
* 获取 client
*
* @return
*/
private
IAcsClient
getClient
()
{
return
new
DefaultAcsClient
(
DefaultProfile
.
getProfile
(
"default"
,
accessKeyId
,
accessSecret
));
}
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/sms/SmsClient.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
service
.
sms
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.List
;
import
java.util.Map
;
/**
* 短信平台
*
* @author Sin
* @time 2019/5/16 6:33 PM
*/
public
interface
SmsClient
{
/**
* 短信发送 - 单个
*
* @param mobile 手机号
* @param sign 签名
* @param templateCode 短信模板code
* @param template 短信模板
* @param templateParams 短信模板 params
* @return 发送后信息
*/
SendResult
singleSend
(
String
mobile
,
String
sign
,
String
templateCode
,
String
template
,
Map
<
String
,
String
>
templateParams
);
/**
* 短信发送 - 批量
*
* @param mobileList 手机号
* @param sign 签名
* @param templateCode 短信模板 code
* @param template 短信模板
* @param templateParams 短信模板params
* @return 发送后信息
*/
SendResult
batchSend
(
List
<
String
>
mobileList
,
String
sign
,
String
templateCode
,
String
template
,
Map
<
String
,
String
>
templateParams
);
@Data
@Accessors
(
chain
=
true
)
class
SendResult
{
public
static
final
int
SUCCESS_CODE
=
0
;
public
static
final
int
ERROR_CODE
=
1
;
public
static
final
String
SUCCESS_MESSAGE
=
"SUCCESS"
;
/**
* 错误码
*/
private
Integer
code
;
/**
* 错误信息
*/
private
String
message
;
/**
* 是否成功
*/
private
Boolean
isSuccess
;
}
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/sms/SmsService.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
service
.
sms
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.system.biz.bo.smsSign.ListSmsSignBO
;
import
cn.iocoder.mall.system.biz.bo.smsTemplate.ListSmsTemplateBO
;
import
cn.iocoder.mall.system.biz.bo.smsSign.SmsSignBO
;
import
cn.iocoder.mall.system.biz.bo.smsTemplate.SmsTemplateBO
;
import
cn.iocoder.mall.system.biz.dto.smsSign.AddSignDTO
;
import
cn.iocoder.mall.system.biz.dto.smsSign.ListSmsSignDTO
;
import
cn.iocoder.mall.system.biz.dto.smsTemplate.ListSmsTemplateDTO
;
import
cn.iocoder.mall.system.biz.dto.smsSign.UpdateSignDTO
;
import
java.util.List
;
import
java.util.Map
;
/**
* 短信服务
*
* @author Sin
* @time 2019/5/16 9:54 AM
*/
public
interface
SmsService
{
/**
* 短信模板 - 分页
*
* @param listSmsSignDTO
* @return
*/
PageResult
<
ListSmsSignBO
>
listSmsSign
(
ListSmsSignDTO
listSmsSignDTO
);
/**
* 短信模板 - 分页
*
* @param listSmsTemplateDTO
* @return
*/
PageResult
<
ListSmsTemplateBO
>
listSmsTemplate
(
ListSmsTemplateDTO
listSmsTemplateDTO
);
/**
* 签名 - 创建
*
* @param addSignDTO
*/
void
addSign
(
AddSignDTO
addSignDTO
);
/**
* 签名 - 获取
*
* @param id
*/
SmsSignBO
getSign
(
Integer
id
);
/**
* 签名 - 更新
*
* @param updateSignDTO
*/
void
updateSign
(
UpdateSignDTO
updateSignDTO
);
/**
* 签名 - 更新
*
* @param id
*/
void
deleteSign
(
Integer
id
);
/**
* 模板 - 创建
*
* @param smsSignId 选用的哪个签名
* @param templateCode 模板code
* @param template 模板内容
* @param platform 平台
*/
void
addTemplate
(
Integer
smsSignId
,
String
templateCode
,
String
template
,
Integer
platform
,
Integer
smsType
);
/**
* 模板 - 获取
*
* @param id
*/
SmsTemplateBO
getTemplate
(
Integer
id
,
Integer
platform
);
/**
* 模板 - 更新
*
* @param id 模板id
* @param smsSignId 短期签名
* @param template 模板内容
* @param platform 短信平台
*/
void
updateTemplate
(
Integer
id
,
Integer
smsSignId
,
String
templateCode
,
String
template
,
Integer
platform
,
Integer
smsType
);
/**
* 模板 - 删除
*
* @param id
*/
void
deleteTemplate
(
Integer
id
);
/**
* 短信发送 - 单个
*
* @return
*/
void
singleSend
(
String
mobile
,
Integer
smsTemplateId
,
Map
<
String
,
String
>
params
);
/**
* 短信发送 - 批量
*
* @return
*/
void
batchSend
(
List
<
String
>
mobileList
,
Integer
smsTemplateId
,
Map
<
String
,
String
>
params
);
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/sms/SmsServiceImpl.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
service
.
sms
;
import
cn.iocoder.common.framework.exception.ServiceException
;
import
cn.iocoder.common.framework.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.mybatis.core.enums.DeletedStatusEnum
;
import
cn.iocoder.mall.system.biz.bo.smsSign.ListSmsSignBO
;
import
cn.iocoder.mall.system.biz.bo.smsSign.SmsSignBO
;
import
cn.iocoder.mall.system.biz.bo.smsTemplate.ListSmsTemplateBO
;
import
cn.iocoder.mall.system.biz.bo.smsTemplate.SmsTemplateBO
;
import
cn.iocoder.mall.system.biz.convert.SmsSignConvert
;
import
cn.iocoder.mall.system.biz.convert.SmsTemplateConvert
;
import
cn.iocoder.mall.system.biz.dao.sms.SmsSendMapper
;
import
cn.iocoder.mall.system.biz.dao.sms.SmsSignMapper
;
import
cn.iocoder.mall.system.biz.dao.sms.SmsTemplateMapper
;
import
cn.iocoder.mall.system.biz.dataobject.sms.SmsSendLogDO
;
import
cn.iocoder.mall.system.biz.dataobject.sms.SmsSignDO
;
import
cn.iocoder.mall.system.biz.dataobject.sms.SmsTemplateDO
;
import
cn.iocoder.mall.system.biz.dto.smsSign.AddSignDTO
;
import
cn.iocoder.mall.system.biz.dto.smsSign.ListSmsSignDTO
;
import
cn.iocoder.mall.system.biz.dto.smsSign.UpdateSignDTO
;
import
cn.iocoder.mall.system.biz.dto.smsTemplate.ListSmsTemplateDTO
;
import
cn.iocoder.mall.system.biz.enums.SystemErrorCodeEnum
;
import
cn.iocoder.mall.system.biz.enums.sms.SmsApplyStatusEnum
;
import
cn.iocoder.mall.system.biz.enums.sms.SmsPlatformEnum
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* 短信
*
* @author Sin
* @time 2019/5/16 10:30 AM
*/
@Service
public
class
SmsServiceImpl
implements
SmsService
{
@Autowired
private
SmsSignMapper
smsSignMapper
;
@Autowired
private
SmsTemplateMapper
smsTemplateMapper
;
@Autowired
private
SmsSendMapper
smsSendMapper
;
@Autowired
@Qualifier
(
"yunPianSmsClient"
)
private
SmsClient
smsYunPianClient
;
@Autowired
@Qualifier
(
"aliYunSmsClient"
)
private
SmsClient
smsAliYunClient
;
@Override
public
PageResult
<
ListSmsSignBO
>
listSmsSign
(
ListSmsSignDTO
queryDTO
)
{
// TODO DOME FROM 芋艿 to 小范:mybatis-plus 的 QueryWrapper 不要到 Service 层,可以抽 Dao 方法里哈。其它的类似可以瞅瞅噢
IPage
<
SmsSignDO
>
signPage
=
smsSignMapper
.
listSmsSign
(
queryDTO
);
List
<
ListSmsSignBO
>
signList
=
SmsSignConvert
.
INSTANCE
.
convert
(
signPage
.
getRecords
());
return
new
PageResult
<
ListSmsSignBO
>().
setList
(
signList
).
setTotal
(
signPage
.
getTotal
());
}
@Override
public
PageResult
<
ListSmsTemplateBO
>
listSmsTemplate
(
ListSmsTemplateDTO
listSmsTemplateDTO
)
{
// 获取 template
IPage
<
SmsTemplateDO
>
signPage
=
smsTemplateMapper
.
listSmsTemplate
(
listSmsTemplateDTO
);
if
(
CollectionUtils
.
isEmpty
(
signPage
.
getRecords
()))
{
// TODO DOME FROM 芋艿 to 小范,Collections.EMPTY_LIST =》Collections.emptyList();另外,可以考虑直接 Convert 哈
return
new
PageResult
<
ListSmsTemplateBO
>().
setList
(
Collections
.
emptyList
()).
setTotal
(
signPage
.
getTotal
());
}
// 转换bo
List
<
ListSmsTemplateBO
>
templateList
=
SmsTemplateConvert
.
INSTANCE
.
convert
(
signPage
.
getRecords
());
// 获取 sign
Set
<
Integer
>
smsSignIds
=
templateList
.
stream
().
map
(
ListSmsTemplateBO:
:
getSmsSignId
).
collect
(
Collectors
.
toSet
());
List
<
SmsSignDO
>
smsSignDOList
=
smsSignMapper
.
selectList
(
new
QueryWrapper
<
SmsSignDO
>().
in
(
"id"
,
smsSignIds
));
List
<
ListSmsTemplateBO
.
Sign
>
signList
=
SmsTemplateConvert
.
INSTANCE
.
convertTemplateSign
(
smsSignDOList
);
// sign 转换为 map
Map
<
Integer
,
ListSmsTemplateBO
.
Sign
>
smsSignDOMap
=
signList
.
stream
().
collect
(
Collectors
.
toMap
(
ListSmsTemplateBO
.
Sign
::
getId
,
o
->
o
));
// 设置 sign
templateList
.
forEach
(
template
->
{
if
(
smsSignDOMap
.
containsKey
(
template
.
getSmsSignId
()))
{
template
.
setSign
(
smsSignDOMap
.
get
(
template
.
getSmsSignId
()));
}
});
return
new
PageResult
<
ListSmsTemplateBO
>().
setList
(
templateList
).
setTotal
(
signPage
.
getTotal
());
}
@Override
@Transactional
public
void
addSign
(
AddSignDTO
addSignDTO
)
{
// 避免重复
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectOne
(
new
QueryWrapper
<
SmsSignDO
>()
.
eq
(
"platform"
,
addSignDTO
.
getPlatform
())
.
eq
(
"sign"
,
addSignDTO
.
getSign
())
);
// 处理 null 情况
if
(
smsSignDO
!=
null
)
{
// TODO DOME FROM 芋艿 to 小范:可以使用 ServiceExceptionUtil.exception(SystemErrorCodeEnum.SMS_SIGN_IS_EXISTENT);
throw
ServiceExceptionUtil
.
exception
(
SystemErrorCodeEnum
.
SMS_SIGN_IS_EXISTENT
);
}
// 保存数据库
smsSignMapper
.
insert
(
(
SmsSignDO
)
new
SmsSignDO
()
.
setSign
(
addSignDTO
.
getSign
())
.
setPlatform
(
addSignDTO
.
getPlatform
())
.
setApplyStatus
(
SmsApplyStatusEnum
.
SUCCESS
.
getValue
())
.
setDeleted
(
DeletedStatusEnum
.
DELETED_NO
.
getValue
())
.
setUpdateTime
(
new
Date
())
.
setCreateTime
(
new
Date
())
);
}
@Override
public
SmsSignBO
getSign
(
Integer
signId
)
{
// 查询数据库
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectOne
(
new
QueryWrapper
<
SmsSignDO
>()
.
eq
(
"id"
,
signId
)
.
eq
(
"deleted"
,
DeletedStatusEnum
.
DELETED_NO
.
getValue
()));
// 处理 null
if
(
smsSignDO
==
null
)
{
throw
new
ServiceException
(
SystemErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getCode
(),
SystemErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getMessage
());
}
// 转换vo返回
return
SmsSignConvert
.
INSTANCE
.
convert
(
smsSignDO
);
}
@Override
@Transactional
public
void
updateSign
(
UpdateSignDTO
updateSignDTO
)
{
// 避免重复
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectOne
(
new
QueryWrapper
<
SmsSignDO
>()
.
eq
(
"sign"
,
updateSignDTO
.
getSign
())
.
eq
(
"platform"
,
updateSignDTO
.
getPlatform
()));
// 处理 null
if
(
smsSignDO
!=
null
)
{
throw
new
ServiceException
(
SystemErrorCodeEnum
.
SMS_SIGN_IS_EXISTENT
.
getCode
(),
SystemErrorCodeEnum
.
SMS_SIGN_IS_EXISTENT
.
getMessage
());
}
// 更新
smsSignMapper
.
update
(
(
SmsSignDO
)
new
SmsSignDO
()
.
setSign
(
updateSignDTO
.
getSign
())
.
setPlatform
(
updateSignDTO
.
getPlatform
())
.
setUpdateTime
(
new
Date
()),
new
QueryWrapper
<
SmsSignDO
>().
eq
(
"id"
,
updateSignDTO
.
getId
())
);
}
@Override
public
void
deleteSign
(
Integer
id
)
{
// 根据id查询
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectById
(
id
);
// 处理 null
if
(
smsSignDO
==
null
)
{
throw
new
ServiceException
(
SystemErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getCode
(),
SystemErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getMessage
());
}
// 更新 deleted 为 YES
smsSignMapper
.
delete
(
new
UpdateWrapper
<
SmsSignDO
>()
.
set
(
"deleted"
,
DeletedStatusEnum
.
DELETED_YES
.
getName
())
.
eq
(
"id"
,
id
)
);
}
@Override
@Transactional
public
void
addTemplate
(
Integer
smsSignId
,
String
templateCode
,
String
template
,
Integer
platform
,
Integer
smsType
)
{
// 根据id查询
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectById
(
smsSignId
);
// 处理 null
if
(
smsSignDO
==
null
)
{
throw
new
ServiceException
(
SystemErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getCode
(),
SystemErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getMessage
());
}
// 保存数据库
smsTemplateMapper
.
insert
(
(
SmsTemplateDO
)
new
SmsTemplateDO
()
.
setId
(
null
)
.
setSmsSignId
(
smsSignId
)
.
setTemplateCode
(
templateCode
)
.
setTemplate
(
template
)
.
setPlatform
(
platform
)
.
setSmsType
(
smsType
)
.
setApplyStatus
(
SmsApplyStatusEnum
.
SUCCESS
.
getValue
())
.
setApplyMessage
(
""
)
.
setDeleted
(
DeletedStatusEnum
.
DELETED_NO
.
getValue
())
.
setCreateTime
(
new
Date
())
);
}
@Override
public
SmsTemplateBO
getTemplate
(
Integer
id
,
Integer
platform
)
{
// 获取数据
SmsTemplateDO
smsTemplateDO
=
smsTemplateMapper
.
selectOne
(
new
QueryWrapper
<
SmsTemplateDO
>()
.
eq
(
"platform"
,
platform
)
.
eq
(
"id"
,
id
));
// 处理 null
if
(
smsTemplateDO
==
null
)
{
throw
new
ServiceException
(
SystemErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getCode
(),
SystemErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getMessage
());
}
// 转换bo返回
return
SmsTemplateConvert
.
INSTANCE
.
convert
(
smsTemplateDO
);
}
@Override
@Transactional
public
void
updateTemplate
(
Integer
id
,
Integer
smsSignId
,
String
templateCode
,
String
template
,
Integer
platform
,
Integer
smsType
)
{
// 获取 template
SmsTemplateDO
smsTemplateDO
=
smsTemplateMapper
.
selectById
(
id
);
if
(
smsTemplateDO
==
null
)
{
throw
new
ServiceException
(
SystemErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getCode
(),
SystemErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getMessage
());
}
// 获取 sign
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectOne
(
new
QueryWrapper
<
SmsSignDO
>().
eq
(
"id"
,
smsTemplateDO
.
getSmsSignId
()));
if
(
smsSignDO
==
null
)
{
throw
new
ServiceException
(
SystemErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getCode
(),
SystemErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getMessage
());
}
// 更新数据库
smsTemplateMapper
.
update
(
(
SmsTemplateDO
)
new
SmsTemplateDO
()
.
setSmsSignId
(
smsSignId
)
.
setTemplateCode
(
templateCode
)
.
setTemplate
(
template
)
.
setPlatform
(
platform
)
.
setSmsType
(
smsType
)
.
setUpdateTime
(
new
Date
()),
new
QueryWrapper
<
SmsTemplateDO
>().
eq
(
"id"
,
id
)
);
}
@Override
@Transactional
public
void
deleteTemplate
(
Integer
id
)
{
SmsTemplateDO
smsTemplateDO
=
smsTemplateMapper
.
selectOne
(
new
QueryWrapper
<
SmsTemplateDO
>().
eq
(
"id"
,
id
));
// 处理不存在情况
if
(
smsTemplateDO
==
null
||
smsTemplateDO
.
getDeleted
().
equals
(
DeletedStatusEnum
.
DELETED_YES
.
getValue
()))
{
throw
new
ServiceException
(
SystemErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getCode
(),
SystemErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getMessage
());
}
// 删除 数据库模板
SmsTemplateDO
updateTemplate
=
new
SmsTemplateDO
();
updateTemplate
.
setDeleted
(
DeletedStatusEnum
.
DELETED_YES
.
getValue
());
smsTemplateMapper
.
delete
(
new
UpdateWrapper
<
SmsTemplateDO
>()
.
set
(
"deleted"
,
DeletedStatusEnum
.
DELETED_YES
)
.
eq
(
"id"
,
id
));
}
@Override
public
void
singleSend
(
String
mobile
,
Integer
smsTemplateId
,
Map
<
String
,
String
>
params
)
{
// 获取 template
SmsTemplateDO
smsTemplateDO
=
smsTemplateMapper
.
selectById
(
smsTemplateId
);
if
(
smsTemplateDO
==
null
||
smsTemplateDO
.
getDeleted
().
equals
(
DeletedStatusEnum
.
DELETED_YES
.
getValue
()))
{
throw
new
ServiceException
(
SystemErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getCode
(),
SystemErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getMessage
());
}
// 获取 sign
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectById
(
smsTemplateDO
.
getSmsSignId
());
if
(
smsSignDO
==
null
)
{
throw
new
ServiceException
(
SystemErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getCode
(),
SystemErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getMessage
());
}
// 获取 client
SmsClient
smsClient
=
getSmsClient
(
smsTemplateDO
.
getPlatform
());
// 发送短信
SmsClient
.
SendResult
sendResult
=
smsClient
.
singleSend
(
mobile
,
smsSignDO
.
getSign
(),
smsTemplateDO
.
getTemplateCode
(),
smsTemplateDO
.
getTemplate
(),
params
);
// 添加日志
smsSendMapper
.
insert
(
(
SmsSendLogDO
)
new
SmsSendLogDO
()
.
setTemplateId
(
smsTemplateDO
.
getId
())
.
setTemplate
(
smsTemplateDO
.
getTemplate
())
.
setMessage
(
sendResult
.
getMessage
())
.
setCreateTime
(
new
Date
())
);
}
@Override
public
void
batchSend
(
List
<
String
>
mobileList
,
Integer
smsTemplateId
,
Map
<
String
,
String
>
params
)
{
// 获取 template
SmsTemplateDO
smsTemplateDO
=
smsTemplateMapper
.
selectById
(
smsTemplateId
);
if
(
smsTemplateDO
==
null
||
smsTemplateDO
.
getDeleted
().
equals
(
DeletedStatusEnum
.
DELETED_YES
.
getValue
()))
{
throw
new
ServiceException
(
SystemErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getCode
(),
SystemErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getMessage
());
}
// 获取 sign
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectById
(
smsTemplateDO
.
getSmsSignId
());
if
(
smsSignDO
==
null
)
{
// 添加日志
smsSendMapper
.
insert
(
(
SmsSendLogDO
)
new
SmsSendLogDO
()
.
setTemplateId
(
smsTemplateDO
.
getId
())
.
setTemplate
(
smsTemplateDO
.
getTemplate
())
.
setMessage
(
"发送成功!"
)
.
setCreateTime
(
new
Date
())
);
throw
new
ServiceException
(
SystemErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getCode
(),
SystemErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getMessage
());
}
// 获取 client
SmsClient
smsClient
=
getSmsClient
(
smsTemplateDO
.
getPlatform
());
// 发送短信
SmsClient
.
SendResult
sendResult
=
smsClient
.
batchSend
(
mobileList
,
smsSignDO
.
getSign
(),
smsTemplateDO
.
getTemplateCode
(),
smsTemplateDO
.
getTemplate
(),
params
);
// 添加日志
smsSendMapper
.
insert
(
(
SmsSendLogDO
)
new
SmsSendLogDO
()
.
setTemplateId
(
smsTemplateDO
.
getId
())
.
setTemplate
(
smsTemplateDO
.
getTemplate
())
.
setMessage
(
sendResult
.
getMessage
())
.
setCreateTime
(
new
Date
())
);
}
/**
* 获取 sms 对于的 client
*
* @param platform
* @return
*/
private
SmsClient
getSmsClient
(
Integer
platform
)
{
SmsClient
smsClient
=
null
;
// 阿里云和云片
if
(
SmsPlatformEnum
.
YunPian
.
getValue
().
equals
(
platform
))
{
smsClient
=
smsYunPianClient
;
}
else
if
(
SmsPlatformEnum
.
AliYun
.
getValue
().
equals
(
platform
))
{
smsClient
=
smsAliYunClient
;
}
// 没有支持的平台
if
(
smsClient
==
null
)
{
throw
new
ServiceException
(
SystemErrorCodeEnum
.
SMS_NOT_SEND_CLIENT
.
getCode
(),
SystemErrorCodeEnum
.
SMS_NOT_SEND_CLIENT
.
getMessage
());
}
return
smsClient
;
}
}
归档/moved/system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/sms/YunPianSmsClient.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
biz
.
service
.
sms
;
import
cn.iocoder.common.framework.exception.ServiceException
;
import
cn.iocoder.mall.system.biz.enums.SystemErrorCodeEnum
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.NameValuePair
;
import
org.apache.http.client.entity.UrlEncodedFormEntity
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.message.BasicNameValuePair
;
import
org.apache.http.util.EntityUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
java.util.ArrayList
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* 云片 短信平台
*
* @author Sin
* @time 2019/5/16 6:34 PM
*/
@Component
public
class
YunPianSmsClient
implements
SmsClient
{
protected
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
YunPianSmsClient
.
class
);
private
static
final
int
SUCCESS_CODE
=
0
;
private
static
final
String
SUCCESS_MESSAGE
=
"SUCCESS"
;
/**
* 云片短信 - 批量推送最大数 500,支持 1000
*/
private
static
final
int
MAX_BATCH_SIZE
=
500
;
/**
* 模板 - 参数拼接
*/
private
static
final
String
PARAM_TEMPLATE
=
"#%s#"
;
/**
* 模板 - 签名拼接
*/
private
static
final
String
SIGN_TEMPLATE
=
"【%s】%s"
;
/**
* 签名 - 添加
*/
private
static
final
String
URL_SIGN_ADD
=
"https://sms.yunpian.com/v2/sign/add.json"
;
/**
* 签名 - 获取
*/
private
static
final
String
URL_SIGN_GET
=
"https://sms.yunpian.com/v2/sign/get.json"
;
/**
* 签名 - 更新
*/
private
static
final
String
URL_SIGN_UPDATE
=
"https://sms.yunpian.com/v2/sign/update.json"
;
/**
* 模板 - 添加
*/
private
static
final
String
URL_TEMPLATE_ADD
=
"https://sms.yunpian.com/v2/tpl/add.json"
;
/**
* 模板 - 获取
*/
private
static
final
String
URL_TEMPLATE_GET
=
"https://sms.yunpian.com/v2/tpl/get.json"
;
/**
* 模板 - 更新
*/
private
static
final
String
URL_TEMPLATE_UPDATE
=
"https://sms.yunpian.com/v2/tpl/update.json"
;
/**
* 模板 - 删除
*/
private
static
final
String
URL_TEMPLATE_DELETE
=
"https://sms.yunpian.com/v2/tpl/del.json"
;
/**
* 短信发送 - 单个
*/
private
static
final
String
URL_SEND_SINGLE
=
"https://sms.yunpian.com/v2/sms/single_send.json"
;
/**
* 短信发送 - 批量
*/
private
static
final
String
URL_SEND_BATCH
=
"https://sms.yunpian.com/v2/sms/batch_send.json"
;
//编码格式。发送编码格式统一用UTF-8
private
static
String
ENCODING
=
"UTF-8"
;
@Value
(
"${sms.yunPian.apiKey?:'default_value'}"
)
private
String
apiKey
;
@Override
public
SendResult
singleSend
(
String
mobile
,
String
sign
,
String
templateCode
,
String
template
,
Map
<
String
,
String
>
templateParams
)
{
// build 模板
template
=
buildTemplate
(
sign
,
template
,
templateParams
);
// 请求参数
Map
<
String
,
String
>
params
=
new
LinkedHashMap
<>();
params
.
put
(
"apikey"
,
apiKey
);
params
.
put
(
"mobile"
,
mobile
);
params
.
put
(
"text"
,
template
);
// TODO: 2019/5/19 sin 运营商发送报告 回调
// params.put("callback_url", template);
String
result
=
post
(
URL_SEND_SINGLE
,
params
);
JSONObject
jsonObject
=
JSON
.
parseObject
(
result
);
if
(
jsonObject
.
containsKey
(
"code"
)
&&
!(
jsonObject
.
getInteger
(
"code"
)
==
SUCCESS_CODE
))
{
throw
new
ServiceException
(
SystemErrorCodeEnum
.
SMS_PLATFORM_FAIL
.
getCode
(),
jsonObject
.
getString
(
"detail"
));
}
// 转换 result
return
new
SendResult
()
.
setIsSuccess
(
SUCCESS_CODE
==
jsonObject
.
getInteger
(
"code"
))
.
setCode
(
jsonObject
.
getInteger
(
"code"
))
.
setMessage
(
jsonObject
.
getString
(
"detail"
));
}
@Override
public
SendResult
batchSend
(
List
<
String
>
mobileList
,
String
sign
,
String
templateCode
,
String
template
,
Map
<
String
,
String
>
templateParams
)
{
// build 模板
template
=
buildTemplate
(
sign
,
template
,
templateParams
);
// 最大发送数为 1000,我们设置为 500 个, 分段发送
int
maxSendSize
=
MAX_BATCH_SIZE
;
int
maxSendSizeCount
=
mobileList
.
size
()
%
maxSendSize
==
0
?
mobileList
.
size
()
/
maxSendSize
:
mobileList
.
size
()
/
maxSendSize
+
1
;
int
j
=
0
;
int
j2
=
mobileList
.
size
();
for
(
int
i
=
0
;
i
<
maxSendSizeCount
;
i
++)
{
StringBuffer
sendMobileStr
=
new
StringBuffer
();
for
(
int
k
=
j
;
k
<
j2
;
k
++)
{
sendMobileStr
.
append
(
","
);
sendMobileStr
.
append
(
mobileList
.
get
(
k
));
}
String
dividedMobile
=
sendMobileStr
.
toString
().
substring
(
1
);
// 发送手机号
Map
<
String
,
String
>
params
=
new
LinkedHashMap
<>();
params
.
put
(
"apikey"
,
apiKey
);
params
.
put
(
"mobile"
,
dividedMobile
);
params
.
put
(
"text"
,
template
);
// TODO: 2019/5/19 sin 运营商发送报告 回调
// params.put("callback_url", template);
String
result
=
post
(
URL_SEND_BATCH
,
params
);
JSONObject
jsonObject
=
JSON
.
parseObject
(
result
);
if
(
jsonObject
.
containsKey
(
"code"
)
&&
!(
jsonObject
.
getInteger
(
"code"
)
==
SUCCESS_CODE
))
{
throw
new
ServiceException
(
SystemErrorCodeEnum
.
SMS_PLATFORM_FAIL
.
getCode
(),
jsonObject
.
getString
(
"detail"
));
}
// 用于递增 maxSendSize
j
=
j2
;
j2
=
j
+
maxSendSize
;
}
return
new
SendResult
()
.
setIsSuccess
(
true
)
.
setCode
(
SUCCESS_CODE
)
.
setMessage
(
SUCCESS_MESSAGE
);
}
/**
* 构建模板
*
* @param sign
* @param template
* @param templateParams
* @return
*/
private
static
String
buildTemplate
(
String
sign
,
String
template
,
Map
<
String
,
String
>
templateParams
)
{
// 不处理 empty 数据
if
(
CollectionUtils
.
isEmpty
(
templateParams
))
{
return
template
;
}
// 处理template参数
for
(
Map
.
Entry
<
String
,
String
>
entry
:
templateParams
.
entrySet
())
{
String
paramsKey
=
entry
.
getKey
();
String
value
=
entry
.
getValue
();
String
paramPlace
=
String
.
format
(
PARAM_TEMPLATE
,
paramsKey
);
template
=
template
.
replaceAll
(
paramPlace
,
value
);
}
template
=
String
.
format
(
SIGN_TEMPLATE
,
sign
,
template
);
return
template
;
}
/**
* 基于HttpClient 4.3的通用POST方法
*
* @param url 提交的URL
* @param paramsMap 提交<参数,值>Map
* @return 提交响应
*/
public
static
String
post
(
String
url
,
Map
<
String
,
String
>
paramsMap
)
{
CloseableHttpClient
client
=
HttpClients
.
createDefault
();
String
responseText
=
""
;
CloseableHttpResponse
response
=
null
;
try
{
HttpPost
method
=
new
HttpPost
(
url
);
if
(
paramsMap
!=
null
)
{
List
<
NameValuePair
>
paramList
=
new
ArrayList
<>();
for
(
Map
.
Entry
<
String
,
String
>
param
:
paramsMap
.
entrySet
())
{
NameValuePair
pair
=
new
BasicNameValuePair
(
param
.
getKey
(),
param
.
getValue
());
paramList
.
add
(
pair
);
}
method
.
setEntity
(
new
UrlEncodedFormEntity
(
paramList
,
ENCODING
));
}
response
=
client
.
execute
(
method
);
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
{
responseText
=
EntityUtils
.
toString
(
entity
,
ENCODING
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
response
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
LOGGER
.
debug
(
"云片短信平台 res: {}"
,
responseText
);
return
responseText
;
}
}
归档/moved/system/system-rest/pom.xml
deleted
100644 → 0
浏览文件 @
ca28d791
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
system
</artifactId>
<groupId>
cn.iocoder.mall
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
system-rest
</artifactId>
<description>
提供 system 服务的 Rest 接口的实现,提供对外调用
</description>
<dependencies>
<!-- Mall 相关 -->
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
system-biz
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<!-- Web 相关 -->
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
mall-spring-boot-starter-web
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
mall-spring-boot-starter-security
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
mall-spring-boot-starter-swagger
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
</dependencies>
</project>
归档/moved/system/system-rest/src/main/java/cn/iocoder/mall/system/rest/controller/file/AdminsFileController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
rest
.
controller
.
file
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
com.qiniu.util.Auth
;
import
io.swagger.annotations.Api
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 文件模块(Admins API)
*
* author: sin
* time: 2020/4/20 9:41 上午
*/
@RestController
@RequestMapping
(
"admins/file"
)
@Api
(
tags
=
"文件模块"
)
public
class
AdminsFileController
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
getClass
());
@Autowired
private
Auth
auth
;
@Value
(
"${qiniu.bucket}"
)
private
String
bucket
;
@GetMapping
(
"/get-qiniu-token"
)
public
CommonResult
<
String
>
getQiniuToken
()
{
String
token
=
auth
.
uploadToken
(
bucket
);
logger
.
info
(
"[qiniu_token][token({}) get]"
,
token
);
return
CommonResult
.
success
(
token
);
}
}
归档/moved/system/system-rest/src/main/java/cn/iocoder/mall/system/rest/controller/sms/AdminsSmsSignController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
rest
.
controller
.
sms
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.system.biz.bo.smsSign.ListSmsSignBO
;
import
cn.iocoder.mall.system.biz.dto.smsSign.ListSmsSignDTO
;
import
cn.iocoder.mall.system.biz.service.sms.SmsService
;
import
cn.iocoder.mall.system.rest.convert.sms.AdminsSmsConvert
;
import
cn.iocoder.mall.system.rest.request.sms.AddSignRequest
;
import
cn.iocoder.mall.system.rest.request.sms.UpdateSignRequest
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
/**
* 短信服务
*
* @author Sin
* @time 2019/5/26 12:26 PM
*/
@RestController
@RequestMapping
(
"admins/sms/sign"
)
@Api
(
"短信服务(签名)"
)
public
class
AdminsSmsSignController
{
@Autowired
private
SmsService
smsService
;
@GetMapping
(
"page"
)
@ApiOperation
(
"签名-page"
)
public
CommonResult
<
PageResult
<
ListSmsSignBO
>>
pageSign
(
@Validated
ListSmsSignDTO
listSmsSignDTO
)
{
return
CommonResult
.
success
(
smsService
.
listSmsSign
(
listSmsSignDTO
));
}
@PostMapping
(
"add"
)
@ApiOperation
(
"签名-添加"
)
public
CommonResult
<?>
addSign
(
@RequestBody
AddSignRequest
addSignRequest
)
{
smsService
.
addSign
(
AdminsSmsConvert
.
INSTANCE
.
convert
(
addSignRequest
));
return
CommonResult
.
success
(
null
);
}
@PutMapping
(
"update"
)
@ApiOperation
(
"签名-更新"
)
public
CommonResult
<?>
updateSign
(
@RequestBody
UpdateSignRequest
updateSignRequest
)
{
smsService
.
updateSign
(
AdminsSmsConvert
.
INSTANCE
.
convert
(
updateSignRequest
));
return
CommonResult
.
success
(
null
);
}
@DeleteMapping
(
"deleted"
)
@ApiOperation
(
"签名-删除"
)
public
CommonResult
<?>
deletedSign
(
@RequestParam
(
"id"
)
Integer
id
)
{
smsService
.
deleteSign
(
id
);
return
CommonResult
.
success
(
null
);
}
}
归档/moved/system/system-rest/src/main/java/cn/iocoder/mall/system/rest/controller/sms/AdminsSmsTemplateController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
rest
.
controller
.
sms
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.system.biz.bo.smsTemplate.ListSmsTemplateBO
;
import
cn.iocoder.mall.system.biz.service.sms.SmsService
;
import
cn.iocoder.mall.system.rest.convert.sms.AdminsSmsConvert
;
import
cn.iocoder.mall.system.rest.request.sms.AddSmsTemplateRequest
;
import
cn.iocoder.mall.system.rest.request.sms.ListSmsTemplateRequest
;
import
cn.iocoder.mall.system.rest.request.sms.UpdateSmsTemplateRequest
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
/**
* 短信服务
*
* @author Sin
* @time 2019/5/26 12:26 PM
*/
@RestController
@RequestMapping
(
"admins/sms/template"
)
@Api
(
"短信服务(短信模板)"
)
public
class
AdminsSmsTemplateController
{
@Autowired
private
SmsService
smsService
;
@PostMapping
(
"page"
)
@ApiOperation
(
"短信模板-page"
)
public
CommonResult
<
PageResult
<
ListSmsTemplateBO
>>
pageSign
(
@RequestBody
ListSmsTemplateRequest
request
)
{
return
CommonResult
.
success
(
smsService
.
listSmsTemplate
(
AdminsSmsConvert
.
INSTANCE
.
convert
(
request
)));
}
@PostMapping
(
"add"
)
@ApiOperation
(
"短信模板-添加"
)
public
CommonResult
addSign
(
@RequestBody
AddSmsTemplateRequest
smsTemplateAddPO
)
{
smsService
.
addTemplate
(
smsTemplateAddPO
.
getSmsSignId
(),
smsTemplateAddPO
.
getTemplateCode
(),
smsTemplateAddPO
.
getTemplate
(),
smsTemplateAddPO
.
getPlatform
(),
smsTemplateAddPO
.
getSmsType
());
return
CommonResult
.
success
(
null
);
}
@PutMapping
(
"update"
)
@ApiOperation
(
"短信模板-更新"
)
public
CommonResult
updateSign
(
@RequestBody
UpdateSmsTemplateRequest
smsTemplateUpdatePO
)
{
smsService
.
updateTemplate
(
smsTemplateUpdatePO
.
getId
(),
smsTemplateUpdatePO
.
getSmsSignId
(),
smsTemplateUpdatePO
.
getTemplateCode
(),
smsTemplateUpdatePO
.
getTemplate
(),
smsTemplateUpdatePO
.
getPlatform
(),
smsTemplateUpdatePO
.
getSmsType
());
return
CommonResult
.
success
(
null
);
}
@DeleteMapping
(
"deleted"
)
@ApiOperation
(
"短信模板-删除"
)
public
CommonResult
deletedSign
(
@RequestParam
(
"id"
)
Integer
id
)
{
smsService
.
deleteTemplate
(
id
);
return
CommonResult
.
success
(
null
);
}
}
归档/moved/system/system-rest/src/main/java/cn/iocoder/mall/system/rest/convert/sms/AdminsSmsConvert.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
rest
.
convert
.
sms
;
import
cn.iocoder.mall.system.biz.dto.smsSign.AddSignDTO
;
import
cn.iocoder.mall.system.biz.dto.smsSign.UpdateSignDTO
;
import
cn.iocoder.mall.system.biz.dto.smsTemplate.ListSmsTemplateDTO
;
import
cn.iocoder.mall.system.rest.request.sms.AddSignRequest
;
import
cn.iocoder.mall.system.rest.request.sms.UpdateSignRequest
;
import
cn.iocoder.mall.system.rest.request.sms.ListSmsTemplateRequest
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.factory.Mappers
;
/**
* sms admins convert
*
* author: sin
* time: 2020/4/20 11:07 上午
*/
@Mapper
public
interface
AdminsSmsConvert
{
AdminsSmsConvert
INSTANCE
=
Mappers
.
getMapper
(
AdminsSmsConvert
.
class
);
@Mappings
({})
AddSignDTO
convert
(
AddSignRequest
bean
);
@Mappings
({})
UpdateSignDTO
convert
(
UpdateSignRequest
bean
);
@Mappings
({})
ListSmsTemplateDTO
convert
(
ListSmsTemplateRequest
bean
);
}
归档/moved/system/system-rest/src/main/java/cn/iocoder/mall/system/rest/request/admin/AdminsUserUpdateRequest.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
rest
.
request
.
admin
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
/**
* @Author: jiangweifan
* @Date: 2020/5/12
* @Description: 管理员 - 用户信息 - 更新用户信息
*/
@ApiModel
(
"更新用户信息Request"
)
@Data
@Accessors
(
chain
=
true
)
public
class
AdminsUserUpdateRequest
{
@ApiModelProperty
(
name
=
"id"
,
value
=
"用户编号"
,
required
=
true
,
example
=
"1"
)
@NotNull
(
message
=
"用户编号不能为空"
)
private
Integer
id
;
@ApiModelProperty
(
name
=
"nickname"
,
value
=
"昵称"
,
required
=
true
,
example
=
"小王"
)
private
String
nickname
;
@ApiModelProperty
(
name
=
"avatar"
,
value
=
"头像"
,
required
=
true
,
example
=
"http://www.iocoder.cn/xxx.jpg"
)
private
String
avatar
;
}
归档/moved/system/system-rest/src/main/java/cn/iocoder/mall/system/rest/request/sms/AddSignRequest.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
rest
.
request
.
sms
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* 添加 sign
*
* author: sin
* time: 2020/4/20 11:10 上午
*/
@Data
@Accessors
(
chain
=
true
)
public
class
AddSignRequest
implements
Serializable
{
private
String
sign
;
private
Integer
platform
;
}
归档/moved/system/system-rest/src/main/java/cn/iocoder/mall/system/rest/request/sms/AddSmsTemplateRequest.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
rest
.
request
.
sms
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
cn.iocoder.mall.system.biz.enums.sms.SmsPlatformEnum
;
import
cn.iocoder.mall.system.biz.enums.sms.SmsTypeEnum
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Size
;
import
java.io.Serializable
;
/**
* 短信模板 add
*
* @author Sin
* @time 2019/5/26 12:37 PM
*/
@ApiModel
(
"短信模板-添加"
)
@Data
@Accessors
(
chain
=
true
)
public
class
AddSmsTemplateRequest
implements
Serializable
{
@ApiModelProperty
(
"短信签名id"
)
@NotNull
(
message
=
"短信短信签名id不能为空!"
)
private
Integer
smsSignId
;
@ApiModelProperty
(
"短信模板code"
)
@NotNull
@Size
(
min
=
3
,
max
=
50
,
message
=
"短信code在 3-50 之间"
)
private
String
templateCode
;
@ApiModelProperty
(
"短信模板"
)
@NotNull
@Size
(
min
=
3
,
max
=
255
,
message
=
"短信在 3-255 之间"
)
private
String
template
;
@ApiModelProperty
(
"短信模板-平台"
)
@NotNull
@InEnum
(
value
=
SmsPlatformEnum
.
class
)
private
Integer
platform
;
@ApiModelProperty
(
"短信模板-平台"
)
@NotNull
@InEnum
(
value
=
SmsTypeEnum
.
class
)
private
Integer
smsType
;
}
归档/moved/system/system-rest/src/main/java/cn/iocoder/mall/system/rest/request/sms/ListSmsTemplateRequest.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
rest
.
request
.
sms
;
import
cn.iocoder.common.framework.vo.PageParam
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
/**
* page 短信模板 query
*
* @author Sin
* @time 2019/5/19 4:32 PM
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ListSmsTemplateRequest
extends
PageParam
{
@NotNull
private
String
id
;
@NotNull
private
Integer
smsSignId
;
@NotNull
private
String
template
;
@NotNull
private
String
applyStatus
;
}
归档/moved/system/system-rest/src/main/java/cn/iocoder/mall/system/rest/request/sms/UpdateSignRequest.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
rest
.
request
.
sms
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* 更新签名
* <p>
* author: sin
* time: 2020/4/20 11:02 上午
*/
@Data
@Accessors
(
chain
=
true
)
public
class
UpdateSignRequest
implements
Serializable
{
private
Integer
id
;
private
String
sign
;
private
Integer
platform
;
}
归档/moved/system/system-rest/src/main/java/cn/iocoder/mall/system/rest/request/sms/UpdateSmsTemplateRequest.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
rest
.
request
.
sms
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
cn.iocoder.mall.system.biz.enums.sms.SmsPlatformEnum
;
import
cn.iocoder.mall.system.biz.enums.sms.SmsTypeEnum
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Size
;
import
java.io.Serializable
;
/**
* 短信模板 add
*
* @author Sin
* @time 2019/5/26 12:37 PM
*/
@ApiModel
(
"短信模板-添加"
)
@Data
@Accessors
(
chain
=
true
)
public
class
UpdateSmsTemplateRequest
implements
Serializable
{
@ApiModelProperty
(
"短信模板id"
)
@NotNull
(
message
=
"短信模板不能为空!"
)
private
Integer
id
;
@ApiModelProperty
(
"短信签名id"
)
@NotNull
(
message
=
"短信短信签名id不能为空!"
)
private
Integer
smsSignId
;
@ApiModelProperty
(
"短信模板code"
)
@NotNull
@Size
(
min
=
3
,
max
=
50
,
message
=
"短信code在 3-50 之间"
)
private
String
templateCode
;
@ApiModelProperty
(
"短信模板"
)
@NotNull
@Size
(
min
=
3
,
max
=
255
,
message
=
"短信在 3-255 之间"
)
private
String
template
;
@ApiModelProperty
(
"短信模板-平台"
)
@NotNull
@InEnum
(
value
=
SmsPlatformEnum
.
class
)
private
Integer
platform
;
@ApiModelProperty
(
"短信模板-平台"
)
@NotNull
@InEnum
(
value
=
SmsTypeEnum
.
class
)
private
Integer
smsType
;
}
归档/moved/system/system-rest/src/main/resources/rest.yaml
deleted
100644 → 0
浏览文件 @
ca28d791
# 服务器的配置项
server
:
port
:
18083
servlet
:
context-path
:
/system-api/
# Swagger 配置项
swagger
:
title
:
管理员子系统
description
:
管理员子系统
version
:
1.0.0
base-package
:
cn.iocoder.mall.system.rest.controller
归档/moved/system/system-service-api/pom.xml
deleted
100644 → 0
浏览文件 @
ca28d791
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
system
</artifactId>
<groupId>
cn.iocoder.mall
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<packaging>
jar
</packaging>
<artifactId>
system-service-api
</artifactId>
<dependencies>
<!-- Mall 相关 -->
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
common-framework
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<!-- Web 相关 -->
<dependency>
<groupId>
io.swagger
</groupId>
<artifactId>
swagger-annotations
</artifactId>
</dependency>
<!-- 工具类相关 -->
<dependency>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct
</artifactId>
<!-- use mapstruct-jdk8 for Java 8 or higher -->
</dependency>
<dependency>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct-jdk8
</artifactId>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</dependency>
</dependencies>
</project>
归档/moved/system/system-service-api/src/main/java/cn/iocoder/mall/system/api/DataDictService.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
api
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.system.api.bo.datadict.DataDictBO
;
import
cn.iocoder.mall.system.api.dto.datadict.DataDictAddDTO
;
import
cn.iocoder.mall.system.api.dto.datadict.DataDictUpdateDTO
;
import
java.util.Collection
;
import
java.util.List
;
public
interface
DataDictService
{
List
<
DataDictBO
>
selectDataDictList
();
DataDictBO
addDataDict
(
Integer
adminId
,
DataDictAddDTO
dataDictAddDTO
);
Boolean
updateDataDict
(
Integer
adminId
,
DataDictUpdateDTO
dataDictUpdateDTO
);
Boolean
deleteDataDict
(
Integer
adminId
,
Integer
dataDictId
);
/**
* 获取字典值 - 单个
*
* 注意: dictValue:Object 为了方便调用,会自动转换为 dictValue:String
*
* @param dictKey
* @param dictValue
* @return
*/
CommonResult
<
DataDictBO
>
getDataDict
(
String
dictKey
,
Object
dictValue
);
CommonResult
<
List
<
DataDictBO
>>
getDataDict
(
String
dictKey
);
/**
* 获取字典值 - 多个
*
* 注意:dictValueList:? 为了方便调用,会自动转换为 Set:String
*
* @param dictKey
* @param dictValueList
* @return
*/
CommonResult
<
List
<
DataDictBO
>>
getDataDictList
(
String
dictKey
,
Collection
<?>
dictValueList
);
}
归档/moved/system/system-service-api/src/main/java/cn/iocoder/mall/system/api/SmsService.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
api
;
import
cn.iocoder.mall.system.api.bo.sms.SmsSignBO
;
import
cn.iocoder.mall.system.api.bo.sms.PageSmsSignBO
;
import
cn.iocoder.mall.system.api.bo.sms.SmsTemplateBO
;
import
cn.iocoder.mall.system.api.bo.sms.PageSmsTemplateBO
;
import
cn.iocoder.mall.system.api.dto.sms.PageQuerySmsSignDTO
;
import
cn.iocoder.mall.system.api.dto.sms.PageQuerySmsTemplateDTO
;
import
java.util.List
;
import
java.util.Map
;
/**
* 短信服务
*
* @author Sin
* @time 2019/5/16 9:54 AM
*/
public
interface
SmsService
{
/**
* 短信模板 - 分页
*
* @param queryDTO
* @return
*/
PageSmsSignBO
pageSmsSign
(
PageQuerySmsSignDTO
queryDTO
);
/**
* 短信模板 - 分页
*
* @param queryDTO
* @return
*/
PageSmsTemplateBO
pageSmsTemplate
(
PageQuerySmsTemplateDTO
queryDTO
);
/**
* 签名 - 创建
*
* @param sign
*/
void
addSign
(
String
sign
,
Integer
platform
);
/**
* 签名 - 获取
*
* @param id
*/
SmsSignBO
getSign
(
Integer
id
);
/**
* 签名 - 更新
*
* @param id
* @param newSign
* @param platform
*/
void
updateSign
(
Integer
id
,
String
newSign
,
Integer
platform
);
/**
* 签名 - 更新
*
* @param id
*/
void
deleteSign
(
Integer
id
);
/**
* 模板 - 创建
*
* @param smsSignId 选用的哪个签名
* @param templateCode 模板code
* @param template 模板内容
* @param platform 平台
*/
void
addTemplate
(
Integer
smsSignId
,
String
templateCode
,
String
template
,
Integer
platform
,
Integer
smsType
);
/**
* 模板 - 获取
*
* @param id
*/
SmsTemplateBO
getTemplate
(
Integer
id
,
Integer
platform
);
/**
* 模板 - 更新
*
* @param id 模板id
* @param smsSignId 短期签名
* @param template 模板内容
* @param platform 短信平台
*/
void
updateTemplate
(
Integer
id
,
Integer
smsSignId
,
String
templateCode
,
String
template
,
Integer
platform
,
Integer
smsType
);
/**
* 模板 - 删除
*
* @param id
*/
void
deleteTemplate
(
Integer
id
);
/**
* 短信发送 - 单个
*
* @return
*/
void
singleSend
(
String
mobile
,
Integer
smsTemplateId
,
Map
<
String
,
String
>
params
);
/**
* 短信发送 - 批量
*
* @return
*/
void
batchSend
(
List
<
String
>
mobileList
,
Integer
smsTemplateId
,
Map
<
String
,
String
>
params
);
}
归档/moved/system/system-service-api/src/main/java/cn/iocoder/mall/system/api/bo/sms/PageSmsSignBO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
api
.
bo
.
sms
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
import
java.util.List
;
/**
* sms page
*
* @author Sin
* @time 2019/5/19 4:23 PM
*/
@Data
@Accessors
(
chain
=
true
)
public
class
PageSmsSignBO
{
private
Integer
count
;
private
Long
current
;
private
Long
size
;
private
Long
total
;
private
List
<
Sign
>
data
;
@Data
@Accessors
(
chain
=
true
)
public
static
class
Sign
{
/**
* 编号
*/
private
Integer
id
;
/**
* 短信平台
*/
private
Integer
platform
;
/**
* 签名名称
*/
private
String
sign
;
/**
* 审核状态
* <p>
* - 1、审核中
* - 2、审核成功
* - 3、审核失败
*/
private
Integer
applyStatus
;
/**
* 审核信息
*/
private
String
applyMessage
;
/**
* 更新时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
updateTime
;
/**
* 创建时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
}
}
归档/moved/system/system-service-api/src/main/java/cn/iocoder/mall/system/api/bo/sms/PageSmsTemplateBO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
api
.
bo
.
sms
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.util.Date
;
import
java.util.List
;
/**
* sms page
*
* @author Sin
* @time 2019/5/19 4:23 PM
*/
@Data
@Accessors
(
chain
=
true
)
public
class
PageSmsTemplateBO
{
private
Long
total
;
private
Long
current
;
private
Long
size
;
private
List
<
Template
>
data
;
@Data
@Accessors
(
chain
=
true
)
public
static
class
Template
{
/**
* 编号
*/
private
Integer
id
;
/**
* 模板编号 (第三方的)
*/
private
Integer
smsSignId
;
/**
* 短信签名 id
*/
private
String
platform
;
/**
* 短信模板 Code
*/
private
String
templateCode
;
/**
* 短信模板
*/
private
String
template
;
/**
* 短信类型
*/
private
Integer
smsType
;
/**
* 审核状态
*
* 1、审核中
* 2、审核成功
* 3、审核失败
*/
private
Integer
applyStatus
;
/**
* 审核信息
*/
private
String
applyMessage
;
/**
* 更新时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
updateTime
;
/**
* 创建时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
///
/// 关联字段
/**
* 签名信息
*/
private
Sign
sign
;
}
@Data
@Accessors
(
chain
=
true
)
public
static
class
Sign
{
/**
* 编号
*/
private
Integer
id
;
/**
* 签名id 这个是第三方的
*/
private
String
platformId
;
/**
* 签名名称
*/
private
String
sign
;
/**
* 审核状态
*
* - 1、审核中
* - 2、审核成功
* - 3、审核失败
*/
private
Integer
applyStatus
;
/**
* 审核信息
*/
private
String
applyMessage
;
}
}
归档/moved/system/system-service-api/src/main/java/cn/iocoder/mall/system/api/bo/sms/SmsSignBO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
api
.
bo
.
sms
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 短信签名
*
* @author Sin
* @time 2019/5/16 6:30 PM
*/
@Data
@Accessors
(
chain
=
true
)
public
class
SmsSignBO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 签名id 这个是第三方的
*/
private
Integer
signId
;
/**
* 签名名称
*/
private
String
sign
;
/**
* 审核状态
*
* - 1、审核中
* - 2、审核成功
* - 3、审核失败
*/
private
Integer
applyStatus
;
/**
* 审核信息
*/
private
String
applyMessage
;
}
归档/moved/system/system-service-api/src/main/java/cn/iocoder/mall/system/api/bo/sms/SmsTemplateBO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
api
.
bo
.
sms
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 短信 template
*
* @author Sin
* @time 2019/5/16 7:41 PM
*/
@Data
@Accessors
(
chain
=
true
)
public
class
SmsTemplateBO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 模板编号 (第三方的)
*/
private
Integer
smsSignId
;
/**
* 短信签名 id
*/
private
String
platformId
;
/**
* 短信模板
*/
private
String
template
;
/**
* 审核状态
*
* 1、审核中
* 2、审核成功
* 3、审核失败
*/
private
Integer
applyStatus
;
/**
* 审核信息
*/
private
String
applyMessage
;
}
归档/moved/system/system-service-api/src/main/java/cn/iocoder/mall/system/api/constant/SmsApplyStatusEnum.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
api
.
constant
;
/**
* 短信审核状态
*
* @author Sin
* @time 2019/5/16 12:48 PM
*/
public
enum
SmsApplyStatusEnum
{
CHECKING
(
1
,
"审核中"
),
SUCCESS
(
2
,
"审核成功"
),
FAIL
(
10
,
"审核失败"
),
;
private
final
Integer
value
;
private
final
String
name
;
SmsApplyStatusEnum
(
int
code
,
String
message
)
{
this
.
value
=
code
;
this
.
name
=
message
;
}
public
int
getValue
()
{
return
value
;
}
public
String
getName
()
{
return
name
;
}
}
归档/moved/system/system-service-api/src/main/java/cn/iocoder/mall/system/api/constant/SmsPlatformEnum.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
api
.
constant
;
import
cn.iocoder.common.framework.core.IntArrayValuable
;
import
java.util.Arrays
;
/**
* 短信审核状态
*
* @author Sin
* @time 2019/5/16 12:48 PM
*/
public
enum
SmsPlatformEnum
implements
IntArrayValuable
{
YunPian
(
1
,
"云片"
),
AliYun
(
2
,
"阿里云"
),
;
public
static
final
int
[]
ARRAYS
=
Arrays
.
stream
(
values
()).
mapToInt
(
SmsPlatformEnum:
:
getValue
).
toArray
();
private
final
Integer
value
;
private
final
String
name
;
SmsPlatformEnum
(
Integer
code
,
String
message
)
{
this
.
value
=
code
;
this
.
name
=
message
;
}
public
Integer
getValue
()
{
return
value
;
}
public
String
getName
()
{
return
name
;
}
@Override
public
int
[]
array
()
{
return
ARRAYS
;
}
}
归档/moved/system/system-service-api/src/main/java/cn/iocoder/mall/system/api/constant/SmsTypeEnum.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
api
.
constant
;
import
cn.iocoder.common.framework.core.IntArrayValuable
;
import
java.util.Arrays
;
/**
* 短信审核状态
*
* @author Sin
* @time 2019/5/16 12:48 PM
*/
public
enum
SmsTypeEnum
implements
IntArrayValuable
{
VERIFICATION_CODE
(
1
,
"验证码"
),
NOTICE
(
2
,
"通知"
),
MARKETING
(
3
,
"营销"
),
;
public
static
final
int
[]
ARRAYS
=
Arrays
.
stream
(
values
()).
mapToInt
(
SmsTypeEnum:
:
getValue
).
toArray
();
private
final
Integer
value
;
private
final
String
name
;
SmsTypeEnum
(
Integer
code
,
String
message
)
{
this
.
value
=
code
;
this
.
name
=
message
;
}
public
Integer
getValue
()
{
return
value
;
}
public
String
getName
()
{
return
name
;
}
@Override
public
int
[]
array
()
{
return
ARRAYS
;
}
}
归档/moved/system/system-service-api/src/main/java/cn/iocoder/mall/system/api/dto/sms/PageQuerySmsSignDTO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
api
.
dto
.
sms
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* page 短信模板 query
*
* @author Sin
* @time 2019/5/19 4:32 PM
*/
@Data
@Accessors
(
chain
=
true
)
@ApiModel
(
"短信服务查询"
)
public
class
PageQuerySmsSignDTO
implements
Serializable
{
@ApiModelProperty
(
"每页大小"
)
@NotNull
private
Integer
size
;
@ApiModelProperty
(
"当前页"
)
@NotNull
private
Integer
current
;
@ApiModelProperty
(
"编号"
)
private
Integer
id
;
@ApiModelProperty
(
"签名"
)
private
String
sign
;
@ApiModelProperty
(
"申请状态"
)
private
Integer
applyStatus
;
}
归档/moved/system/system-service-api/src/main/java/cn/iocoder/mall/system/api/dto/sms/PageQuerySmsTemplateDTO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
api
.
dto
.
sms
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* page 短信模板 query
*
* @author Sin
* @time 2019/5/19 4:32 PM
*/
@Data
@Accessors
(
chain
=
true
)
public
class
PageQuerySmsTemplateDTO
implements
Serializable
{
@NotNull
private
Long
current
;
@NotNull
private
Long
size
;
@NotNull
private
String
id
;
@NotNull
private
Integer
smsSignId
;
@NotNull
private
String
template
;
@NotNull
private
String
applyStatus
;
}
归档/moved/system/system-service-impl/pom.xml
deleted
100644 → 0
浏览文件 @
ca28d791
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
system
</artifactId>
<groupId>
cn.iocoder.mall
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
system-service-impl
</artifactId>
<dependencies>
<!-- Mall 相关 -->
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
system-service-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<!-- DB 相关 -->
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-tx
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-jdbc
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
</dependency>
<!-- RPC 相关 -->
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-starter-dubbo
</artifactId>
</dependency>
<!-- Registry 和 Config 相关 -->
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-starter-alibaba-nacos-discovery
</artifactId>
</dependency>
<!-- 工具类相关 -->
<dependency>
<groupId>
com.google.guava
</groupId>
<artifactId>
guava
</artifactId>
</dependency>
<dependency>
<groupId>
com.yunpian.sdk
</groupId>
<artifactId>
yunpian-java-sdk
</artifactId>
<version>
1.2.7
</version>
</dependency>
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
aliyun-java-sdk-core
</artifactId>
<version>
4.1.0
</version>
</dependency>
<!-- test -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
</dependency>
<dependency>
<groupId>
org.junit.jupiter
</groupId>
<artifactId>
junit-jupiter-api
</artifactId>
<version>
5.4.0
</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 提供给 mapstruct 使用 -->
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
</plugin>
</plugins>
</build>
</project>
归档/moved/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/client/SmsAliYunClient.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
client
;
import
com.alibaba.fastjson.JSON
;
import
com.aliyuncs.CommonRequest
;
import
com.aliyuncs.CommonResponse
;
import
com.aliyuncs.DefaultAcsClient
;
import
com.aliyuncs.IAcsClient
;
import
com.aliyuncs.exceptions.ClientException
;
import
com.aliyuncs.http.MethodType
;
import
com.aliyuncs.profile.DefaultProfile
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
org.apache.commons.lang3.exception.ExceptionUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
/**
* 短信 AliYun client
*
* @author Sin
* @time 2019/5/25 12:28 PM
*/
@Component
public
class
SmsAliYunClient
implements
SmsClient
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
SmsAliYunClient
.
class
);
private
static
final
String
DOMAIN
=
"dysmsapi.aliyuncs.com"
;
private
static
final
String
SUCCESS_CODE
=
"OK"
;
private
static
final
String
SUCCESS_MESSAGE
=
"OK"
;
/**
* 阿里云短信 - 批量推送最大数 500,支持 1000
*/
private
static
final
int
MAX_BATCH_SIZE
=
500
;
@Value
(
"${sms.aliYun.accessKeyId?:'default_value'}"
)
private
String
accessKeyId
;
@Value
(
"${sms.aliYun.accessSecret?:'default_value'}"
)
private
String
accessSecret
;
@Data
@Accessors
(
chain
=
true
)
public
static
class
Result
{
/**
* 发送回执ID,可根据该ID在接口QuerySendDetails中查询具体的发送状态。
*/
private
String
BizId
;
/**
* 请求状态码。
*
* - OK 蔡成功
*/
private
String
Code
;
/**
* 状态码的描述。
*/
private
String
Message
;
/**
* 请求ID。
*/
private
String
RequestId
;
}
@Override
public
SendResult
singleSend
(
String
mobile
,
String
sign
,
String
templateCode
,
String
template
,
Map
<
String
,
String
>
templateParams
)
{
// params
CommonRequest
request
=
new
CommonRequest
();
request
.
setMethod
(
MethodType
.
POST
);
request
.
setDomain
(
DOMAIN
);
request
.
setVersion
(
"2017-05-25"
);
request
.
setAction
(
"SendSms"
);
request
.
putQueryParameter
(
"PhoneNumbers"
,
mobile
);
request
.
putQueryParameter
(
"SignName"
,
sign
);
request
.
putQueryParameter
(
"TemplateCode"
,
templateCode
);
request
.
putQueryParameter
(
"TemplateParam"
,
JSON
.
toJSONString
(
templateParams
));
// 发送请求
return
doSend
(
request
);
}
@Override
public
SendResult
batchSend
(
List
<
String
>
mobileList
,
String
sign
,
String
templateCode
,
String
template
,
Map
<
String
,
String
>
templateParams
)
{
// 最大发送数为 1000,我们设置为 500 个, 分段发送
int
maxSendSize
=
MAX_BATCH_SIZE
;
int
maxSendSizeCount
=
mobileList
.
size
()
%
maxSendSize
==
0
?
mobileList
.
size
()
/
maxSendSize
:
mobileList
.
size
()
/
maxSendSize
+
1
;
SendResult
sendResult
=
null
;
for
(
int
i
=
0
;
i
<
maxSendSizeCount
;
i
++)
{
// 分批发送
List
<
String
>
batchSendMobile
=
mobileList
.
subList
(
i
*
maxSendSize
,
(
i
+
1
)
*
maxSendSize
);
// params
CommonRequest
request
=
new
CommonRequest
();
request
.
setMethod
(
MethodType
.
POST
);
request
.
setDomain
(
DOMAIN
);
request
.
setVersion
(
"2017-05-25"
);
request
.
setAction
(
"SendBatchSms"
);
request
.
putQueryParameter
(
"PhoneNumberJson"
,
JSON
.
toJSONString
(
batchSendMobile
));
request
.
putQueryParameter
(
"SignNameJson"
,
JSON
.
toJSONString
(
Collections
.
singletonList
(
sign
)));
request
.
putQueryParameter
(
"TemplateCode"
,
templateCode
);
request
.
putQueryParameter
(
"TemplateParamJson"
,
JSON
.
toJSONString
(
Collections
.
singletonList
(
templateParams
)));
// 发送请求
sendResult
=
doSend
(
request
);
}
return
sendResult
;
}
private
SendResult
doSend
(
CommonRequest
request
)
{
// 获取 client
IAcsClient
client
=
getClient
();
try
{
CommonResponse
response
=
client
.
getCommonResponse
(
request
);
Result
result
=
JSON
.
parseObject
(
response
.
getData
(),
Result
.
class
);
if
(!
SUCCESS_CODE
.
equals
(
result
.
getCode
()))
{
LOGGER
.
info
(
"发送验证码失败 params {} res {}"
,
JSON
.
toJSON
(
request
),
JSON
.
toJSON
(
result
));
// 错误发送失败
return
new
SendResult
()
.
setIsSuccess
(
false
)
.
setCode
(
SendResult
.
ERROR_CODE
)
.
setMessage
(
result
.
getMessage
());
}
else
{
LOGGER
.
info
(
"发送验证码失败 params {} res"
,
JSON
.
toJSON
(
request
),
JSON
.
toJSON
(
result
));
// 发送成功
return
new
SendResult
()
.
setIsSuccess
(
true
)
.
setCode
(
SendResult
.
SUCCESS_CODE
)
.
setMessage
(
result
.
getMessage
());
}
}
catch
(
ClientException
e
)
{
LOGGER
.
error
(
"发送验证码异常 {}"
,
ExceptionUtils
.
getMessage
(
e
));
return
new
SendResult
()
.
setIsSuccess
(
false
)
.
setCode
(
SendResult
.
ERROR_CODE
)
.
setMessage
(
ExceptionUtils
.
getMessage
(
e
));
}
}
/**
* 获取 client
*
* @return
*/
private
IAcsClient
getClient
()
{
return
new
DefaultAcsClient
(
DefaultProfile
.
getProfile
(
"default"
,
accessKeyId
,
accessSecret
));
}
}
归档/moved/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/client/SmsClient.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
client
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.List
;
import
java.util.Map
;
/**
* 短信平台
*
* @author Sin
* @time 2019/5/16 6:33 PM
*/
public
interface
SmsClient
{
@Data
@Accessors
(
chain
=
true
)
class
SendResult
{
public
static
final
int
SUCCESS_CODE
=
0
;
public
static
final
int
ERROR_CODE
=
1
;
public
static
final
String
SUCCESS_MESSAGE
=
"SUCCESS"
;
/**
* 错误码
*/
private
Integer
code
;
/**
* 错误信息
*/
private
String
message
;
/**
* 是否成功
*/
private
Boolean
isSuccess
;
}
/**
* 短信发送 - 单个
*
* @param mobile 手机号
* @param sign 签名
* @param templateCode 短信模板code
* @param template 短信模板
* @param templateParams 短信模板 params
* @return 发送后信息
*/
SendResult
singleSend
(
String
mobile
,
String
sign
,
String
templateCode
,
String
template
,
Map
<
String
,
String
>
templateParams
);
/**
* 短信发送 - 批量
*
* @param mobileList 手机号
* @param sign 签名
* @param templateCode 短信模板 code
* @param template 短信模板
* @param templateParams 短信模板params
* @return 发送后信息
*/
SendResult
batchSend
(
List
<
String
>
mobileList
,
String
sign
,
String
templateCode
,
String
template
,
Map
<
String
,
String
>
templateParams
);
}
归档/moved/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/client/SmsYunPianClient.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
client
;
import
cn.iocoder.common.framework.exception.ServiceException
;
import
cn.iocoder.mall.system.api.constant.AdminErrorCodeEnum
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.NameValuePair
;
import
org.apache.http.client.entity.UrlEncodedFormEntity
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.message.BasicNameValuePair
;
import
org.apache.http.util.EntityUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
java.util.ArrayList
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* 云片 短信平台
*
* @author Sin
* @time 2019/5/16 6:34 PM
*/
@Component
public
class
SmsYunPianClient
implements
SmsClient
{
protected
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
SmsYunPianClient
.
class
);
private
static
final
int
SUCCESS_CODE
=
0
;
private
static
final
String
SUCCESS_MESSAGE
=
"SUCCESS"
;
/**
* 云片短信 - 批量推送最大数 500,支持 1000
*/
private
static
final
int
MAX_BATCH_SIZE
=
500
;
/**
* 模板 - 参数拼接
*/
private
static
final
String
PARAM_TEMPLATE
=
"#%s#"
;
/**
* 模板 - 签名拼接
*/
private
static
final
String
SIGN_TEMPLATE
=
"【%s】%s"
;
/**
* 签名 - 添加
*/
private
static
final
String
URL_SIGN_ADD
=
"https://sms.yunpian.com/v2/sign/add.json"
;
/**
* 签名 - 获取
*/
private
static
final
String
URL_SIGN_GET
=
"https://sms.yunpian.com/v2/sign/get.json"
;
/**
* 签名 - 更新
*/
private
static
final
String
URL_SIGN_UPDATE
=
"https://sms.yunpian.com/v2/sign/update.json"
;
/**
* 模板 - 添加
*/
private
static
final
String
URL_TEMPLATE_ADD
=
"https://sms.yunpian.com/v2/tpl/add.json"
;
/**
* 模板 - 获取
*/
private
static
final
String
URL_TEMPLATE_GET
=
"https://sms.yunpian.com/v2/tpl/get.json"
;
/**
* 模板 - 更新
*/
private
static
final
String
URL_TEMPLATE_UPDATE
=
"https://sms.yunpian.com/v2/tpl/update.json"
;
/**
* 模板 - 删除
*/
private
static
final
String
URL_TEMPLATE_DELETE
=
"https://sms.yunpian.com/v2/tpl/del.json"
;
/**
* 短信发送 - 单个
*/
private
static
final
String
URL_SEND_SINGLE
=
"https://sms.yunpian.com/v2/sms/single_send.json"
;
/**
* 短信发送 - 批量
*/
private
static
final
String
URL_SEND_BATCH
=
"https://sms.yunpian.com/v2/sms/batch_send.json"
;
//编码格式。发送编码格式统一用UTF-8
private
static
String
ENCODING
=
"UTF-8"
;
@Value
(
"${sms.yunPian.apiKey?:'default_value'}"
)
private
String
apiKey
;
@Override
public
SendResult
singleSend
(
String
mobile
,
String
sign
,
String
templateCode
,
String
template
,
Map
<
String
,
String
>
templateParams
)
{
// build 模板
template
=
buildTemplate
(
sign
,
template
,
templateParams
);
// 请求参数
Map
<
String
,
String
>
params
=
new
LinkedHashMap
<>();
params
.
put
(
"apikey"
,
apiKey
);
params
.
put
(
"mobile"
,
mobile
);
params
.
put
(
"text"
,
template
);
// TODO: 2019/5/19 sin 运营商发送报告 回调
// params.put("callback_url", template);
String
result
=
post
(
URL_SEND_SINGLE
,
params
);
JSONObject
jsonObject
=
JSON
.
parseObject
(
result
);
if
(
jsonObject
.
containsKey
(
"code"
)
&&
!(
jsonObject
.
getInteger
(
"code"
)
==
SUCCESS_CODE
))
{
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_PLATFORM_FAIL
.
getCode
(),
jsonObject
.
getString
(
"detail"
));
}
return
new
SendResult
()
.
setIsSuccess
(
SUCCESS_CODE
==
jsonObject
.
getInteger
(
"code"
))
.
setCode
(
jsonObject
.
getInteger
(
"code"
))
.
setMessage
(
jsonObject
.
getString
(
"detail"
));
}
@Override
public
SendResult
batchSend
(
List
<
String
>
mobileList
,
String
sign
,
String
templateCode
,
String
template
,
Map
<
String
,
String
>
templateParams
)
{
// build 模板
template
=
buildTemplate
(
sign
,
template
,
templateParams
);
// 最大发送数为 1000,我们设置为 500 个, 分段发送
int
maxSendSize
=
MAX_BATCH_SIZE
;
int
maxSendSizeCount
=
mobileList
.
size
()
%
maxSendSize
==
0
?
mobileList
.
size
()
/
maxSendSize
:
mobileList
.
size
()
/
maxSendSize
+
1
;
int
j
=
0
;
int
j2
=
mobileList
.
size
();
for
(
int
i
=
0
;
i
<
maxSendSizeCount
;
i
++)
{
StringBuffer
sendMobileStr
=
new
StringBuffer
();
for
(
int
k
=
j
;
k
<
j2
;
k
++)
{
sendMobileStr
.
append
(
","
);
sendMobileStr
.
append
(
mobileList
.
get
(
k
));
}
String
dividedMobile
=
sendMobileStr
.
toString
().
substring
(
1
);
// 发送手机号
Map
<
String
,
String
>
params
=
new
LinkedHashMap
<>();
params
.
put
(
"apikey"
,
apiKey
);
params
.
put
(
"mobile"
,
dividedMobile
);
params
.
put
(
"text"
,
template
);
// TODO: 2019/5/19 sin 运营商发送报告 回调
// params.put("callback_url", template);
String
result
=
post
(
URL_SEND_BATCH
,
params
);
JSONObject
jsonObject
=
JSON
.
parseObject
(
result
);
if
(
jsonObject
.
containsKey
(
"code"
)
&&
!(
jsonObject
.
getInteger
(
"code"
)
==
SUCCESS_CODE
))
{
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_PLATFORM_FAIL
.
getCode
(),
jsonObject
.
getString
(
"detail"
));
}
// 用于递增 maxSendSize
j
=
j2
;
j2
=
j
+
maxSendSize
;
}
return
new
SendResult
()
.
setIsSuccess
(
true
)
.
setCode
(
SUCCESS_CODE
)
.
setMessage
(
SUCCESS_MESSAGE
);
}
/**
* 构建模板
*
* @param sign
* @param template
* @param templateParams
* @return
*/
private
static
String
buildTemplate
(
String
sign
,
String
template
,
Map
<
String
,
String
>
templateParams
)
{
if
(
CollectionUtils
.
isEmpty
(
templateParams
))
{
return
template
;
}
for
(
Map
.
Entry
<
String
,
String
>
entry
:
templateParams
.
entrySet
())
{
String
paramsKey
=
entry
.
getKey
();
String
value
=
entry
.
getValue
();
String
paramPlace
=
String
.
format
(
PARAM_TEMPLATE
,
paramsKey
);
template
=
template
.
replaceAll
(
paramPlace
,
value
);
}
template
=
String
.
format
(
SIGN_TEMPLATE
,
sign
,
template
);
return
template
;
}
/**
* 基于HttpClient 4.3的通用POST方法
*
* @param url 提交的URL
* @param paramsMap 提交<参数,值>Map
* @return 提交响应
*/
public
static
String
post
(
String
url
,
Map
<
String
,
String
>
paramsMap
)
{
CloseableHttpClient
client
=
HttpClients
.
createDefault
();
String
responseText
=
""
;
CloseableHttpResponse
response
=
null
;
try
{
HttpPost
method
=
new
HttpPost
(
url
);
if
(
paramsMap
!=
null
)
{
List
<
NameValuePair
>
paramList
=
new
ArrayList
<>();
for
(
Map
.
Entry
<
String
,
String
>
param
:
paramsMap
.
entrySet
())
{
NameValuePair
pair
=
new
BasicNameValuePair
(
param
.
getKey
(),
param
.
getValue
());
paramList
.
add
(
pair
);
}
method
.
setEntity
(
new
UrlEncodedFormEntity
(
paramList
,
ENCODING
));
}
response
=
client
.
execute
(
method
);
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
{
responseText
=
EntityUtils
.
toString
(
entity
,
ENCODING
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
response
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
LOGGER
.
debug
(
"云片短信平台 res: {}"
,
responseText
);
return
responseText
;
}
}
归档/moved/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/convert/SmsSignConvert.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
convert
;
import
cn.iocoder.mall.system.api.bo.sms.PageSmsSignBO
;
import
cn.iocoder.mall.system.api.bo.sms.SmsSignBO
;
import
cn.iocoder.mall.admin.dataobject.SmsSignDO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.factory.Mappers
;
import
java.util.List
;
/**
* 短信 签名
*
* @author Sin
* @time 2019/5/16 6:31 PM
*/
@Mapper
public
interface
SmsSignConvert
{
SmsSignConvert
INSTANCE
=
Mappers
.
getMapper
(
SmsSignConvert
.
class
);
@Mappings
({})
SmsSignBO
convert
(
SmsSignDO
smsSignDO
);
@Mappings
({})
List
<
PageSmsSignBO
.
Sign
>
convert
(
List
<
SmsSignDO
>
smsSignDOList
);
}
归档/moved/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/convert/SmsTemplateConvert.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
convert
;
import
cn.iocoder.mall.system.api.bo.sms.PageSmsTemplateBO
;
import
cn.iocoder.mall.system.api.bo.sms.SmsTemplateBO
;
import
cn.iocoder.mall.admin.dataobject.SmsSignDO
;
import
cn.iocoder.mall.admin.dataobject.SmsTemplateDO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.factory.Mappers
;
import
java.util.List
;
/**
* 短信 template
*
* @author Sin
* @time 2019/5/16 7:43 PM
*/
@Mapper
public
interface
SmsTemplateConvert
{
SmsTemplateConvert
INSTANCE
=
Mappers
.
getMapper
(
SmsTemplateConvert
.
class
);
@Mappings
({})
SmsTemplateBO
convert
(
SmsTemplateDO
smsTemplateDO
);
@Mappings
({})
List
<
PageSmsTemplateBO
.
Template
>
convert
(
List
<
SmsTemplateDO
>
smsTemplateDOList
);
@Mappings
({})
List
<
PageSmsTemplateBO
.
Sign
>
convertTemplateSign
(
List
<
SmsSignDO
>
smsSignDOList
);
}
归档/moved/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/dao/SmsSendMapper.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
dao
;
import
cn.iocoder.mall.admin.dataobject.SmsSendLogDO
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.springframework.stereotype.Repository
;
/**
* 短信
*
* @author Sin
* @time 2019/5/16 6:18 PM
*/
@Repository
public
interface
SmsSendMapper
extends
BaseMapper
<
SmsSendLogDO
>
{
}
归档/moved/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/dao/SmsSignMapper.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
dao
;
import
cn.iocoder.mall.admin.dataobject.SmsSignDO
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.springframework.stereotype.Repository
;
/**
* 短信
*
* @author Sin
* @time 2019/5/16 6:18 PM
*/
@Repository
public
interface
SmsSignMapper
extends
BaseMapper
<
SmsSignDO
>
{
}
归档/moved/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/dao/SmsTemplateMapper.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
dao
;
import
cn.iocoder.common.framework.dataobject.BaseDO
;
import
cn.iocoder.mall.admin.dataobject.SmsTemplateDO
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.springframework.stereotype.Repository
;
/**
* 短信 template
*
* @author Sin
* @time 2019/5/16 6:18 PM
*/
@Repository
public
interface
SmsTemplateMapper
extends
BaseMapper
<
SmsTemplateDO
>
{
}
归档/moved/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/dataobject/SmsSendLogDO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
dataobject
;
import
cn.iocoder.common.framework.dataobject.BaseDO
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 短信 client log
*
* @author Sin
* @time 2019/5/25 12:36 PM
*/
@Data
@Accessors
(
chain
=
true
)
public
class
SmsSendLogDO
extends
BaseDO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 短信模板
*/
private
Integer
templateId
;
/**
* 短信
*/
private
String
template
;
/**
* 参数
*/
private
String
params
;
/**
* 发送信息
*/
private
String
message
;
}
归档/moved/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/dataobject/SmsSignDO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
dataobject
;
import
cn.iocoder.common.framework.dataobject.DeletableDO
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 短信签名
*
* 签名是短信发送前缀 如:【阿里云】、【小红书】
*
* @author Sin
* @time 2019/5/16 12:28 PM
*/
@Data
@Accessors
(
chain
=
true
)
@TableName
(
"sms_sign"
)
public
class
SmsSignDO
extends
DeletableDO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 签名名称
*/
private
String
sign
;
/**
* 平台
*
* 1、云片
* 2、阿里云
*/
private
Integer
platform
;
/**
* 审核状态
*
* - 1、审核中
* - 2、审核成功
* - 10、审核失败
*/
private
Integer
applyStatus
;
/**
* 审核信息
*/
private
String
applyMessage
;
}
归档/moved/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/dataobject/SmsTemplateDO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
dataobject
;
import
cn.iocoder.common.framework.dataobject.DeletableDO
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 短信 模板
*
* @author Sin
* @time 2019/5/16 12:31 PM
*/
@Data
@Accessors
(
chain
=
true
)
@TableName
(
"sms_template"
)
public
class
SmsTemplateDO
extends
DeletableDO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 模板编号 (第三方的)
*/
private
Integer
smsSignId
;
/**
* 模板 code(第三方平台 code)
*/
private
String
templateCode
;
/**
* 短信签名 id
*/
private
Integer
platform
;
/**
* 短信模板
*/
private
String
template
;
/**
* 短信类型
*
* - 验证码类
* - 通知类
* - 营销类
*/
private
Integer
smsType
;
/**
* 审核状态
*
* 1、审核中
* 2、审核成功
* 10、审核失败
*/
private
Integer
applyStatus
;
/**
* 审核信息
*/
private
String
applyMessage
;
}
归档/moved/system/system-service-impl/src/main/java/cn/iocoder/mall/admin/service/SmsServiceImpl.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
service
;
import
cn.iocoder.common.framework.enums.DeletedStatusEnum
;
import
cn.iocoder.common.framework.exception.ServiceException
;
import
cn.iocoder.mall.system.api.SmsService
;
import
cn.iocoder.mall.system.api.bo.sms.PageSmsSignBO
;
import
cn.iocoder.mall.system.api.bo.sms.PageSmsTemplateBO
;
import
cn.iocoder.mall.system.api.bo.sms.SmsSignBO
;
import
cn.iocoder.mall.system.api.bo.sms.SmsTemplateBO
;
import
cn.iocoder.mall.system.api.constant.AdminErrorCodeEnum
;
import
cn.iocoder.mall.system.api.constant.SmsApplyStatusEnum
;
import
cn.iocoder.mall.system.api.constant.SmsPlatformEnum
;
import
cn.iocoder.mall.system.api.dto.sms.PageQuerySmsSignDTO
;
import
cn.iocoder.mall.system.api.dto.sms.PageQuerySmsTemplateDTO
;
import
cn.iocoder.mall.admin.client.SmsClient
;
import
cn.iocoder.mall.admin.convert.SmsSignConvert
;
import
cn.iocoder.mall.admin.convert.SmsTemplateConvert
;
import
cn.iocoder.mall.admin.dao.SmsSendMapper
;
import
cn.iocoder.mall.admin.dao.SmsSignMapper
;
import
cn.iocoder.mall.admin.dao.SmsTemplateMapper
;
import
cn.iocoder.mall.admin.dataobject.SmsSendLogDO
;
import
cn.iocoder.mall.admin.dataobject.SmsSignDO
;
import
cn.iocoder.mall.admin.dataobject.SmsTemplateDO
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.StringUtils
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* 短信
*
* @author Sin
* @time 2019/5/16 10:30 AM
*/
@Service
@org
.
apache
.
dubbo
.
config
.
annotation
.
Service
(
validation
=
"true"
,
version
=
"${dubbo.provider.SmsService.version}"
)
public
class
SmsServiceImpl
implements
SmsService
{
@Autowired
private
SmsSignMapper
smsSignMapper
;
@Autowired
private
SmsTemplateMapper
smsTemplateMapper
;
@Autowired
private
SmsSendMapper
smsSendMapper
;
@Autowired
@Qualifier
(
"smsYunPianClient"
)
private
SmsClient
smsYunPianClient
;
@Autowired
@Qualifier
(
"smsAliYunClient"
)
private
SmsClient
smsAliYunClient
;
@Override
public
PageSmsSignBO
pageSmsSign
(
PageQuerySmsSignDTO
queryDTO
)
{
QueryWrapper
<
SmsSignDO
>
queryWrapper
=
new
QueryWrapper
<>();
if
(
queryDTO
.
getApplyStatus
()
!=
null
)
{
queryWrapper
.
eq
(
"apply_status"
,
queryDTO
.
getApplyStatus
());
}
if
(!
StringUtils
.
isEmpty
(
queryDTO
.
getSign
()))
{
queryWrapper
.
like
(
"sign"
,
queryDTO
.
getSign
());
}
if
(!
StringUtils
.
isEmpty
(
queryDTO
.
getId
()))
{
queryWrapper
.
eq
(
"id"
,
queryDTO
.
getId
());
}
Page
<
SmsSignDO
>
page
=
new
Page
<
SmsSignDO
>()
.
setSize
(
queryDTO
.
getSize
())
.
setCurrent
(
queryDTO
.
getCurrent
())
.
setDesc
(
"create_time"
);
IPage
<
SmsSignDO
>
signPage
=
smsSignMapper
.
selectPage
(
page
,
queryWrapper
);
List
<
PageSmsSignBO
.
Sign
>
signList
=
SmsSignConvert
.
INSTANCE
.
convert
(
signPage
.
getRecords
());
return
new
PageSmsSignBO
()
.
setData
(
signList
)
.
setCurrent
(
signPage
.
getCurrent
())
.
setSize
(
signPage
.
getSize
())
.
setTotal
(
signPage
.
getTotal
());
}
@Override
public
PageSmsTemplateBO
pageSmsTemplate
(
PageQuerySmsTemplateDTO
queryDTO
)
{
QueryWrapper
<
SmsTemplateDO
>
queryWrapper
=
new
QueryWrapper
<>();
if
(
queryDTO
.
getApplyStatus
()
!=
null
)
{
queryWrapper
.
eq
(
"apply_status"
,
queryDTO
.
getApplyStatus
());
}
if
(
queryDTO
.
getSmsSignId
()
!=
null
)
{
queryWrapper
.
eq
(
"sms_sign_id"
,
queryDTO
.
getSmsSignId
());
}
if
(!
StringUtils
.
isEmpty
(
queryDTO
.
getTemplate
()))
{
queryWrapper
.
like
(
"template"
,
queryDTO
.
getTemplate
());
}
if
(!
StringUtils
.
isEmpty
(
queryDTO
.
getId
()))
{
queryWrapper
.
eq
(
"id"
,
queryDTO
.
getId
());
}
Page
<
SmsTemplateDO
>
page
=
new
Page
<
SmsTemplateDO
>()
.
setSize
(
queryDTO
.
getSize
())
.
setCurrent
(
queryDTO
.
getCurrent
())
.
setDesc
(
"create_time"
);
IPage
<
SmsTemplateDO
>
signPage
=
smsTemplateMapper
.
selectPage
(
page
,
queryWrapper
);
List
<
PageSmsTemplateBO
.
Template
>
templateList
=
SmsTemplateConvert
.
INSTANCE
.
convert
(
signPage
.
getRecords
());
if
(
CollectionUtils
.
isEmpty
(
templateList
))
{
return
new
PageSmsTemplateBO
()
.
setData
(
Collections
.
EMPTY_LIST
)
.
setCurrent
(
signPage
.
getCurrent
())
.
setSize
(
signPage
.
getSize
())
.
setTotal
(
signPage
.
getTotal
());
}
// 获取 sign
Set
<
Integer
>
smsSignIds
=
templateList
.
stream
().
map
(
PageSmsTemplateBO
.
Template
::
getSmsSignId
).
collect
(
Collectors
.
toSet
());
List
<
SmsSignDO
>
smsSignDOList
=
smsSignMapper
.
selectList
(
new
QueryWrapper
<
SmsSignDO
>().
in
(
"id"
,
smsSignIds
));
List
<
PageSmsTemplateBO
.
Sign
>
signList
=
SmsTemplateConvert
.
INSTANCE
.
convertTemplateSign
(
smsSignDOList
);
Map
<
Integer
,
PageSmsTemplateBO
.
Sign
>
smsSignDOMap
=
signList
.
stream
().
collect
(
Collectors
.
toMap
(
PageSmsTemplateBO
.
Sign
::
getId
,
o
->
o
));
// 设置 sign
templateList
.
forEach
(
template
->
{
if
(
smsSignDOMap
.
containsKey
(
template
.
getSmsSignId
()))
{
template
.
setSign
(
smsSignDOMap
.
get
(
template
.
getSmsSignId
()));
}
});
return
new
PageSmsTemplateBO
()
.
setData
(
templateList
)
.
setCurrent
(
signPage
.
getCurrent
())
.
setSize
(
signPage
.
getSize
())
.
setTotal
(
signPage
.
getTotal
());
}
@Override
@Transactional
public
void
addSign
(
String
sign
,
Integer
platform
)
{
// 避免重复
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectOne
(
new
QueryWrapper
<
SmsSignDO
>()
.
eq
(
"platform"
,
platform
)
.
eq
(
"sign"
,
sign
)
);
if
(
smsSignDO
!=
null
)
{
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_SIGN_IS_EXISTENT
.
getCode
(),
AdminErrorCodeEnum
.
SMS_SIGN_IS_EXISTENT
.
getMessage
());
}
// 保存数据库
smsSignMapper
.
insert
(
(
SmsSignDO
)
new
SmsSignDO
()
.
setSign
(
sign
)
.
setPlatform
(
platform
)
.
setApplyStatus
(
SmsApplyStatusEnum
.
SUCCESS
.
getValue
())
.
setDeleted
(
DeletedStatusEnum
.
DELETED_NO
.
getValue
())
.
setUpdateTime
(
new
Date
())
.
setCreateTime
(
new
Date
())
);
}
@Override
public
SmsSignBO
getSign
(
Integer
signId
)
{
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectOne
(
new
QueryWrapper
<
SmsSignDO
>()
.
eq
(
"id"
,
signId
)
.
eq
(
"deleted"
,
DeletedStatusEnum
.
DELETED_NO
.
getValue
()));
if
(
smsSignDO
==
null
)
{
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getCode
(),
AdminErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getMessage
());
}
return
SmsSignConvert
.
INSTANCE
.
convert
(
smsSignDO
);
}
@Override
@Transactional
public
void
updateSign
(
Integer
id
,
String
newSign
,
Integer
platform
)
{
// 避免重复
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectOne
(
new
QueryWrapper
<
SmsSignDO
>()
.
eq
(
"sign"
,
newSign
)
.
eq
(
"platform"
,
platform
));
if
(
smsSignDO
!=
null
)
{
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_SIGN_IS_EXISTENT
.
getCode
(),
AdminErrorCodeEnum
.
SMS_SIGN_IS_EXISTENT
.
getMessage
());
}
// 更新
smsSignMapper
.
update
(
(
SmsSignDO
)
new
SmsSignDO
()
.
setSign
(
newSign
)
.
setPlatform
(
platform
)
.
setUpdateTime
(
new
Date
()),
new
QueryWrapper
<
SmsSignDO
>().
eq
(
"id"
,
id
)
);
}
@Override
public
void
deleteSign
(
Integer
id
)
{
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectOne
(
new
QueryWrapper
<
SmsSignDO
>()
.
eq
(
"id"
,
id
));
if
(
smsSignDO
==
null
)
{
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getCode
(),
AdminErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getMessage
());
}
// 更新 deleted 为 YES
smsSignMapper
.
delete
(
new
UpdateWrapper
<
SmsSignDO
>()
.
set
(
"deleted"
,
DeletedStatusEnum
.
DELETED_YES
.
getName
())
.
eq
(
"id"
,
id
)
);
}
@Override
@Transactional
public
void
addTemplate
(
Integer
smsSignId
,
String
templateCode
,
String
template
,
Integer
platform
,
Integer
smsType
)
{
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectOne
(
new
QueryWrapper
<
SmsSignDO
>().
eq
(
"id"
,
smsSignId
));
if
(
smsSignDO
==
null
)
{
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getCode
(),
AdminErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getMessage
());
}
// 保存数据库
smsTemplateMapper
.
insert
(
(
SmsTemplateDO
)
new
SmsTemplateDO
()
.
setId
(
null
)
.
setSmsSignId
(
smsSignId
)
.
setTemplateCode
(
templateCode
)
.
setTemplate
(
template
)
.
setPlatform
(
platform
)
.
setSmsType
(
smsType
)
.
setApplyStatus
(
SmsApplyStatusEnum
.
SUCCESS
.
getValue
())
.
setApplyMessage
(
""
)
.
setDeleted
(
DeletedStatusEnum
.
DELETED_NO
.
getValue
())
.
setCreateTime
(
new
Date
())
);
}
@Override
public
SmsTemplateBO
getTemplate
(
Integer
id
,
Integer
platform
)
{
SmsTemplateDO
smsTemplateDO
=
smsTemplateMapper
.
selectOne
(
new
QueryWrapper
<
SmsTemplateDO
>()
.
eq
(
"platform"
,
platform
)
.
eq
(
"id"
,
id
));
if
(
smsTemplateDO
==
null
)
{
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getCode
(),
AdminErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getMessage
());
}
return
SmsTemplateConvert
.
INSTANCE
.
convert
(
smsTemplateDO
);
}
@Override
@Transactional
public
void
updateTemplate
(
Integer
id
,
Integer
smsSignId
,
String
templateCode
,
String
template
,
Integer
platform
,
Integer
smsType
)
{
SmsTemplateDO
smsTemplateDO
=
smsTemplateMapper
.
selectOne
(
new
QueryWrapper
<
SmsTemplateDO
>().
eq
(
"id"
,
id
));
if
(
smsTemplateDO
==
null
)
{
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getCode
(),
AdminErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getMessage
());
}
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectOne
(
new
QueryWrapper
<
SmsSignDO
>().
eq
(
"id"
,
smsTemplateDO
.
getSmsSignId
()));
if
(
smsSignDO
==
null
)
{
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getCode
(),
AdminErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getMessage
());
}
smsTemplateMapper
.
update
(
(
SmsTemplateDO
)
new
SmsTemplateDO
()
.
setSmsSignId
(
smsSignId
)
.
setTemplateCode
(
templateCode
)
.
setTemplate
(
template
)
.
setPlatform
(
platform
)
.
setSmsType
(
smsType
)
.
setUpdateTime
(
new
Date
()),
new
QueryWrapper
<
SmsTemplateDO
>().
eq
(
"id"
,
id
)
);
}
@Override
@Transactional
public
void
deleteTemplate
(
Integer
id
)
{
SmsTemplateDO
smsTemplateDO
=
smsTemplateMapper
.
selectOne
(
new
QueryWrapper
<
SmsTemplateDO
>().
eq
(
"id"
,
id
));
if
(
smsTemplateDO
==
null
||
smsTemplateDO
.
getDeleted
().
equals
(
DeletedStatusEnum
.
DELETED_YES
.
getValue
()))
{
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getCode
(),
AdminErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getMessage
());
}
// 删除 数据库模板
SmsTemplateDO
updateTemplate
=
new
SmsTemplateDO
();
updateTemplate
.
setDeleted
(
DeletedStatusEnum
.
DELETED_YES
.
getValue
());
smsTemplateMapper
.
delete
(
new
UpdateWrapper
<
SmsTemplateDO
>()
.
set
(
"deleted"
,
DeletedStatusEnum
.
DELETED_YES
)
.
eq
(
"id"
,
id
));
}
@Override
public
void
singleSend
(
String
mobile
,
Integer
smsTemplateId
,
Map
<
String
,
String
>
params
)
{
SmsTemplateDO
smsTemplateDO
=
smsTemplateMapper
.
selectOne
(
new
QueryWrapper
<
SmsTemplateDO
>().
eq
(
"id"
,
smsTemplateId
));
if
(
smsTemplateDO
==
null
||
smsTemplateDO
.
getDeleted
().
equals
(
DeletedStatusEnum
.
DELETED_YES
.
getValue
()))
{
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getCode
(),
AdminErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getMessage
());
}
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectOne
(
new
QueryWrapper
<
SmsSignDO
>().
eq
(
"id"
,
smsTemplateDO
.
getSmsSignId
()));
if
(
smsSignDO
==
null
)
{
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getCode
(),
AdminErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getMessage
());
}
// 获取 client
SmsClient
smsClient
=
getSmsClient
(
smsTemplateDO
.
getPlatform
());
// 发送短信
SmsClient
.
SendResult
sendResult
=
smsClient
.
singleSend
(
mobile
,
smsSignDO
.
getSign
(),
smsTemplateDO
.
getTemplateCode
(),
smsTemplateDO
.
getTemplate
(),
params
);
// 添加日志
smsSendMapper
.
insert
(
(
SmsSendLogDO
)
new
SmsSendLogDO
()
.
setTemplateId
(
smsTemplateDO
.
getId
())
.
setTemplate
(
smsTemplateDO
.
getTemplate
())
.
setMessage
(
sendResult
.
getMessage
())
.
setCreateTime
(
new
Date
())
);
}
@Override
public
void
batchSend
(
List
<
String
>
mobileList
,
Integer
smsTemplateId
,
Map
<
String
,
String
>
params
)
{
SmsTemplateDO
smsTemplateDO
=
smsTemplateMapper
.
selectOne
(
new
QueryWrapper
<
SmsTemplateDO
>().
eq
(
"id"
,
smsTemplateId
));
if
(
smsTemplateDO
==
null
||
smsTemplateDO
.
getDeleted
().
equals
(
DeletedStatusEnum
.
DELETED_YES
.
getValue
()))
{
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getCode
(),
AdminErrorCodeEnum
.
SMS_TEMPLATE_NOT_EXISTENT
.
getMessage
());
}
SmsSignDO
smsSignDO
=
smsSignMapper
.
selectOne
(
new
QueryWrapper
<
SmsSignDO
>().
eq
(
"id"
,
smsTemplateDO
.
getSmsSignId
()));
if
(
smsSignDO
==
null
)
{
// 添加日志
smsSendMapper
.
insert
(
(
SmsSendLogDO
)
new
SmsSendLogDO
()
.
setTemplateId
(
smsTemplateDO
.
getId
())
.
setTemplate
(
smsTemplateDO
.
getTemplate
())
.
setMessage
(
"发送成功!"
)
.
setCreateTime
(
new
Date
())
);
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getCode
(),
AdminErrorCodeEnum
.
SMS_SIGN_NOT_EXISTENT
.
getMessage
());
}
// 获取 client
SmsClient
smsClient
=
getSmsClient
(
smsTemplateDO
.
getPlatform
());
// 发送短信
SmsClient
.
SendResult
sendResult
=
smsClient
.
batchSend
(
mobileList
,
smsSignDO
.
getSign
(),
smsTemplateDO
.
getTemplateCode
(),
smsTemplateDO
.
getTemplate
(),
params
);
// 添加日志
smsSendMapper
.
insert
(
(
SmsSendLogDO
)
new
SmsSendLogDO
()
.
setTemplateId
(
smsTemplateDO
.
getId
())
.
setTemplate
(
smsTemplateDO
.
getTemplate
())
.
setMessage
(
sendResult
.
getMessage
())
.
setCreateTime
(
new
Date
())
);
}
/**
* 获取 sms 对于的 client
*
* @param platform
* @return
*/
private
SmsClient
getSmsClient
(
Integer
platform
)
{
SmsClient
smsClient
=
null
;
if
(
SmsPlatformEnum
.
YunPian
.
getValue
().
equals
(
platform
))
{
smsClient
=
smsYunPianClient
;
}
else
if
(
SmsPlatformEnum
.
AliYun
.
getValue
().
equals
(
platform
))
{
smsClient
=
smsAliYunClient
;
}
if
(
smsClient
==
null
)
{
throw
new
ServiceException
(
AdminErrorCodeEnum
.
SMS_NOT_SEND_CLIENT
.
getCode
(),
AdminErrorCodeEnum
.
SMS_NOT_SEND_CLIENT
.
getMessage
());
}
return
smsClient
;
}
}
归档/moved/system/system-service-impl/src/main/resources/config/application.yaml
deleted
100644 → 0
浏览文件 @
ca28d791
spring
:
# datasource
datasource
:
url
:
jdbc:mysql://s1.iocoder.cn:3306/mall_admin?useSSL=false&useUnicode=true&characterEncoding=UTF-8
driver-class-name
:
com.mysql.jdbc.Driver
username
:
root
password
:
zhuyang
# Spring Cloud 配置项
cloud
:
nacos
:
# Spring Cloud Nacos Discovery 配置项
discovery
:
server-addr
:
s1.iocoder.cn:8848
# Nacos 服务器地址
# mybatis-plus
mybatis-plus
:
configuration
:
map-underscore-to-camel-case
:
true
# 虽然默认为 true ,但是还是显示去指定下。
global-config
:
db-config
:
id-type
:
auto
logic-delete-value
:
1
# 逻辑已删除值(默认为 1)
logic-not-delete-value
:
0
# 逻辑未删除值(默认为 0)
mapper-locations
:
classpath*:mapper/*.xml
type-aliases-package
:
cn.iocoder.mall.admin.dataobject
# sms
sms
:
yunPian
:
apiKey
:
aliYun
:
accessKeyId
:
accessSecret
:
# Dubbo 配置项
dubbo
:
# Dubbo 注册中心
registry
:
address
:
spring-cloud://s1.iocoder.cn:8848
# 指定 Dubbo 服务注册中心的地址
# Spring Cloud Alibaba Dubbo 专属配置
cloud
:
subscribed-services
:
'
'
# 设置订阅的应用列表,默认为 * 订阅所有应用
# Dubbo 提供者的协议
protocol
:
name
:
dubbo
port
:
-1
# Dubbo 提供服务的扫描基础包
scan
:
base-packages
:
cn.iocoder.mall.admin.service
# Dubbo 服务提供者的配置
provider
:
filter
:
-exception
AdminAccessLogService
:
version
:
1.0.0
AdminService
:
version
:
1.0.0
DataDictService
:
version
:
1.0.0
OAuth2Service
:
version
:
1.0.0
ResourceService
:
version
:
1.0.0
RoleService
:
version
:
1.0.0
SmsService
:
version
:
1.0.0
# logging
logging
:
level
:
# dao 开启 debug 模式 mybatis 输入 sql
cn.iocoder.mall.admin.dao
:
debug
归档/moved/system/system-service-impl/src/test/java/cn/iocoder/mall/admin/SystemApplicationTest.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.scheduling.annotation.EnableAsync
;
/**
* 短信 application (test)
*
* @author Sin
* @time 2019/5/16 10:53 AM
*/
@SpringBootApplication
(
scanBasePackages
=
{
"cn.iocoder.mall.admin"
})
@EnableAsync
(
proxyTargetClass
=
true
)
public
class
SystemApplicationTest
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
SystemApplicationTest
.
class
);
}
}
归档/moved/system/system-service-impl/src/test/java/cn/iocoder/mall/admin/client/SmsAliYunClientTest.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
client
;
import
cn.iocoder.mall.admin.SystemApplicationTest
;
import
com.google.common.collect.ImmutableMap
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
/**
* 阿里云 短信 test
*
* @author Sin
* @time 2019/5/26 10:08 AM
*/
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
SystemApplicationTest
.
class
)
public
class
SmsAliYunClientTest
{
@Autowired
private
SmsAliYunClient
smsAliYunClient
;
@Test
public
void
singleSendTest
()
{
String
sign
=
"阿里云短信测试专用"
;
String
mobile
=
"13302926050"
;
String
templateCode
=
"SMS_137110043"
;
String
template
=
"验证码#code#,您正在进行身份验证,打死不要告诉别人哦!"
;
smsAliYunClient
.
singleSend
(
mobile
,
sign
,
templateCode
,
template
,
ImmutableMap
.
of
(
"code"
,
"8888"
));
}
}
归档/moved/system/system-service-impl/src/test/java/cn/iocoder/mall/admin/client/SmsYunPianClientTest.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
client
;
import
cn.iocoder.mall.admin.SystemApplicationTest
;
import
com.google.common.collect.ImmutableMap
;
import
org.assertj.core.util.Lists
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
/**
* 短信 sms client test
*
* @author Sin
* @time 2019/5/25 12:46 PM
*/
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
SystemApplicationTest
.
class
)
public
class
SmsYunPianClientTest
{
@Autowired
private
SmsYunPianClient
smsYunPianClient
;
private
String
sign
=
null
;
@Before
public
void
setup
()
{
sign
=
"悦跑运动"
;
}
@Test
public
void
sendMobileTest
()
{
String
mobile
=
"13302926050"
;
String
template
=
"您的验证码是#code#,打死也不告诉别人哦。"
;
smsYunPianClient
.
singleSend
(
mobile
,
sign
,
null
,
template
,
ImmutableMap
.
of
(
"code"
,
"1111"
));
}
@Test
public
void
batchSendTest
()
{
String
mobile
=
"13302926050"
;
String
template
=
"您的验证码是#code#,打死也不告诉别人哦。"
;
smsYunPianClient
.
batchSend
(
Lists
.
newArrayList
(
mobile
),
sign
,
null
,
template
,
ImmutableMap
.
of
(
"code"
,
"2222"
));
}
}
归档/moved/system/system-service-impl/src/test/java/cn/iocoder/mall/admin/service/SmsServiceImplTest.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
service
;
import
cn.iocoder.common.framework.exception.ServiceException
;
import
cn.iocoder.mall.admin.SystemApplicationTest
;
import
cn.iocoder.mall.system.api.SmsService
;
import
cn.iocoder.mall.system.api.bo.sms.SmsSignBO
;
import
cn.iocoder.mall.system.api.constant.SmsPlatformEnum
;
import
cn.iocoder.mall.system.api.constant.SmsTypeEnum
;
import
com.google.common.collect.ImmutableMap
;
import
org.assertj.core.util.Lists
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.junit.jupiter.api.Assertions
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
/**
* 短信 test
*
* @author Sin
* @time 2019/5/16 10:52 AM
*/
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
SystemApplicationTest
.
class
)
public
class
SmsServiceImplTest
{
@Autowired
private
SmsService
smsService
;
@Test
public
void
createSignTest
()
{
// smsService.addSign("悦跑运动", SmsPlatformEnum.YunPian.getValue());
smsService
.
addSign
(
"登录确认验证码"
,
SmsPlatformEnum
.
AliYun
.
getValue
());
}
@Test
public
void
getSignTest
()
{
SmsSignBO
smsSignBO
=
smsService
.
getSign
(
3
);
Assert
.
assertNotNull
(
"不能为空!"
,
smsSignBO
);
}
@Test
public
void
updateSignTest
()
{
String
oldSign
=
"悦跑运动2"
;
String
newSign
=
"悦跑运动"
;
smsService
.
updateSign
(
3
,
newSign
,
SmsPlatformEnum
.
YunPian
.
getValue
());
SmsSignBO
smsSignBO
=
smsService
.
getSign
(
3
);
Assert
.
assertTrue
(
"更新不成功!"
,
smsSignBO
.
getSign
().
equals
(
newSign
));
}
@Test
public
void
deletedSignTest
()
{
smsService
.
deleteSign
(
3
);
Assertions
.
assertThrows
(
ServiceException
.
class
,
()
->
{
smsService
.
getSign
(
3
);
});
}
@Test
public
void
createTemplateTest
()
{
Integer
sign
=
4
;
String
templateCode
=
"SMS_137110043"
;
String
template
=
"验证码#code#,您正在登录,若非本人操作,请勿泄露。"
;
smsService
.
addTemplate
(
sign
,
templateCode
,
template
,
SmsPlatformEnum
.
AliYun
.
getValue
(),
SmsTypeEnum
.
VERIFICATION_CODE
.
getValue
());
}
@Test
public
void
singleSendTest
()
{
String
mobile
=
"13302926050"
;
Integer
templateId
=
7
;
smsService
.
singleSend
(
mobile
,
templateId
,
ImmutableMap
.
of
(
"code"
,
"8888"
));
}
@Test
public
void
batchSendTest
()
{
String
mobile
=
"13302926050"
;
Integer
templateId
=
7
;
smsService
.
batchSend
(
Lists
.
newArrayList
(
mobile
),
templateId
,
ImmutableMap
.
of
(
"code"
,
"8888"
));
}
}
归档/moved/system/system-service-impl/src/test/java/cn/iocoder/mall/admin/service/SystemLogServiceImplTest.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
admin
.
service
;
import
cn.iocoder.mall.system.api.SystemLogService
;
import
cn.iocoder.mall.system.api.bo.systemlog.AccessLogPageBO
;
import
cn.iocoder.mall.system.api.dto.systemlog.AccessLogPageDTO
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
/**
* @author:ycjx
* @descriptio
* @create:2019-06-23 18:08
*/
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
SystemLogServiceImplTest
.
class
)
public
class
SystemLogServiceImplTest
{
@Autowired
private
SystemLogService
systemLogService
;
@Test
public
void
getAccessLogPageTest
(){
AccessLogPageDTO
accessLogPageDTO
=
new
AccessLogPageDTO
();
accessLogPageDTO
.
setPageNo
(
1
);
accessLogPageDTO
.
setPageSize
(
10
);
AccessLogPageBO
accessLogPage
=
systemLogService
.
getAccessLogPage
(
accessLogPageDTO
);
System
.
out
.
println
(
accessLogPage
.
getTotal
());
}
}
归档/moved/system/system-start/pom.xml
deleted
100644 → 0
浏览文件 @
ca28d791
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
system
</artifactId>
<groupId>
cn.iocoder.mall
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
system-start
</artifactId>
<dependencies>
<!-- Mall 相关 -->
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
common-framework
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
mall-spring-boot
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
system-service-impl
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
system-sdk
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<!-- Web 相关 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
</dependency>
<dependency>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
swagger-bootstrap-ui
</artifactId>
</dependency>
<!-- 云服务相关 -->
<dependency>
<groupId>
com.qiniu
</groupId>
<artifactId>
qiniu-java-sdk
</artifactId>
</dependency>
<!-- 服务保障相关 -->
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-starter-alibaba-sentinel
</artifactId>
</dependency>
<!-- 监控相关 -->
<dependency>
<groupId>
de.codecentric
</groupId>
<artifactId>
spring-boot-admin-starter-client
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-actuator
</artifactId>
</dependency>
<dependency>
<groupId>
io.micrometer
</groupId>
<artifactId>
micrometer-registry-prometheus
</artifactId>
</dependency>
<!-- 测试相关 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 提供给 mapstruct 使用 -->
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
</plugin>
<!-- 打包 -->
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
</plugins>
</build>
</project>
归档/moved/system/system-start/src/main/java/cn/iocoder/mall/system/application/controller/admins/FileController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
application
.
controller
.
admins
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
com.qiniu.util.Auth
;
import
io.swagger.annotations.Api
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@RestController
@RequestMapping
(
"admins/file"
)
@Api
(
"文件模块"
)
public
class
FileController
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
getClass
());
@Autowired
private
Auth
auth
;
@Value
(
"${qiniu.bucket}"
)
private
String
bucket
;
@GetMapping
(
"/get-qiniu-token"
)
public
CommonResult
<
String
>
getQiniuToken
()
{
String
token
=
auth
.
uploadToken
(
bucket
);
logger
.
info
(
"[qiniu_token][token({}) get]"
,
token
);
return
CommonResult
.
success
(
token
);
}
}
归档/moved/system/system-start/src/main/java/cn/iocoder/mall/system/application/controller/admins/SmsSignController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
application
.
controller
.
admins
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.system.api.SmsService
;
import
cn.iocoder.mall.system.api.bo.sms.PageSmsSignBO
;
import
cn.iocoder.mall.system.api.dto.sms.PageQuerySmsSignDTO
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
/**
* 短信服务
*
* @author Sin
* @time 2019/5/26 12:26 PM
*/
@RestController
@RequestMapping
(
"admins/sms/sign"
)
@Api
(
"短信服务(签名)"
)
public
class
SmsSignController
{
@Autowired
private
SmsService
smsService
;
@GetMapping
(
"page"
)
@ApiOperation
(
"签名-page"
)
public
CommonResult
<
PageSmsSignBO
>
pageSign
(
@Validated
PageQuerySmsSignDTO
querySmsSignDTO
)
{
return
CommonResult
.
success
(
smsService
.
pageSmsSign
(
querySmsSignDTO
));
}
@PostMapping
(
"add"
)
@ApiOperation
(
"签名-添加"
)
public
CommonResult
addSign
(
@RequestParam
(
"sign"
)
String
sign
,
@RequestParam
(
"platform"
)
Integer
platform
)
{
smsService
.
addSign
(
sign
,
platform
);
return
CommonResult
.
success
(
null
);
}
@PutMapping
(
"update"
)
@ApiOperation
(
"签名-更新"
)
public
CommonResult
updateSign
(
@RequestParam
(
"id"
)
Integer
id
,
@RequestParam
(
"sign"
)
String
sign
,
@RequestParam
(
"platform"
)
Integer
platform
)
{
smsService
.
updateSign
(
id
,
sign
,
platform
);
return
CommonResult
.
success
(
null
);
}
@DeleteMapping
(
"deleted"
)
@ApiOperation
(
"签名-删除"
)
public
CommonResult
deletedSign
(
@RequestParam
(
"id"
)
Integer
id
)
{
smsService
.
deleteSign
(
id
);
return
CommonResult
.
success
(
null
);
}
}
归档/moved/system/system-start/src/main/java/cn/iocoder/mall/system/application/controller/admins/SmsTemplateController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
system
.
application
.
controller
.
admins
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.system.api.SmsService
;
import
cn.iocoder.mall.system.api.bo.sms.PageSmsTemplateBO
;
import
cn.iocoder.mall.system.api.dto.sms.PageQuerySmsTemplateDTO
;
import
cn.iocoder.mall.system.application.po.sms.SmsTemplateAddPO
;
import
cn.iocoder.mall.system.application.po.sms.SmsTemplateUpdatePO
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
/**
* 短信服务
*
* @author Sin
* @time 2019/5/26 12:26 PM
*/
@RestController
@RequestMapping
(
"admins/sms/template"
)
@Api
(
"短信服务(短信模板)"
)
public
class
SmsTemplateController
{
@Autowired
private
SmsService
smsService
;
@GetMapping
(
"page"
)
@ApiOperation
(
"短信模板-page"
)
public
CommonResult
<
PageSmsTemplateBO
>
pageSign
(
PageQuerySmsTemplateDTO
pageQuerySmsTemplateDTO
)
{
return
CommonResult
.
success
(
smsService
.
pageSmsTemplate
(
pageQuerySmsTemplateDTO
));
}
@PostMapping
(
"add"
)
@ApiOperation
(
"短信模板-添加"
)
public
CommonResult
addSign
(
SmsTemplateAddPO
smsTemplateAddPO
)
{
smsService
.
addTemplate
(
smsTemplateAddPO
.
getSmsSignId
(),
smsTemplateAddPO
.
getTemplateCode
(),
smsTemplateAddPO
.
getTemplate
(),
smsTemplateAddPO
.
getPlatform
(),
smsTemplateAddPO
.
getSmsType
());
return
CommonResult
.
success
(
null
);
}
@PutMapping
(
"update"
)
@ApiOperation
(
"短信模板-更新"
)
public
CommonResult
updateSign
(
SmsTemplateUpdatePO
smsTemplateUpdatePO
)
{
smsService
.
updateTemplate
(
smsTemplateUpdatePO
.
getId
(),
smsTemplateUpdatePO
.
getSmsSignId
(),
smsTemplateUpdatePO
.
getTemplateCode
(),
smsTemplateUpdatePO
.
getTemplate
(),
smsTemplateUpdatePO
.
getPlatform
(),
smsTemplateUpdatePO
.
getSmsType
());
return
CommonResult
.
success
(
null
);
}
@DeleteMapping
(
"deleted"
)
@ApiOperation
(
"短信模板-删除"
)
public
CommonResult
deletedSign
(
@RequestParam
(
"id"
)
Integer
id
)
{
smsService
.
deleteTemplate
(
id
);
return
CommonResult
.
success
(
null
);
}
}
归档/moved/system/system-start/src/main/resources/application.yaml
deleted
100644 → 0
浏览文件 @
ca28d791
spring
:
application
:
name
:
admin-application
# Spring Cloud 配置项
cloud
:
# Spring Cloud Sentinel 配置项
sentinel
:
transport
:
dashboard
:
s1.iocoder.cn:12088
# Sentinel Dashboard 服务地址
eager
:
true
# 项目启动时,直接连接到 Sentinel
# server
server
:
port
:
18083
servlet
:
context-path
:
/admin-api/
admins
:
security
:
ignore_urls
:
/admin-api/admins/passport/login, /admin-api/admins/file/get-qiniu-token
# qiniu
qiniu
:
access-key
:
YldfyUC7OewoWM63TPYTairqnq8GMJvNek9EGoID
secret-key
:
zZ7Q8wwZRyaklVvkyLmVydA4WygOBqtc_gTYzalS
bucket
:
onemall
swagger
:
enable
:
true
# 暂时不去掉
title
:
管理员子系统
description
:
管理员子系统
version
:
1.0.0
base-package
:
cn.iocoder.mall.admin.application.controller
归档/system-service-project/pom.xml
deleted
100644 → 0
浏览文件 @
ca28d791
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
onemall
</artifactId>
<groupId>
cn.iocoder.mall
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
system-service-project
</artifactId>
<packaging>
pom
</packaging>
<modules>
<module>
system-service-api
</module>
<module>
system-service-app
</module>
<module>
system-service-integration-test
</module>
</modules>
<dependencyManagement>
<dependencies>
<!-- onemall 基础 bom 文件 -->
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
mall-dependencies
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<type>
pom
</type>
<scope>
import
</scope>
</dependency>
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
common-framework
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<!-- 自身项目 -->
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
system-service-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
归档/system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/errorcode/ErrorCodeFeign.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
errorcode
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeAutoGenerateDTO
;
import
cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeCreateDTO
;
import
cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodePageDTO
;
import
cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeUpdateDTO
;
import
cn.iocoder.mall.systemservice.rpc.errorcode.vo.ErrorCodeVO
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
java.util.Date
;
import
java.util.List
;
/**
* 部门 Rpc 接口
*/
@FeignClient
(
"system-service"
)
public
interface
ErrorCodeFeign
{
@GetMapping
(
"/system/errorcode/listErrorCodes"
)
public
CommonResult
<
List
<
ErrorCodeVO
>>
listErrorCodes
(
@RequestParam
(
"group"
)
String
group
,
@RequestParam
(
"minUpdateTime"
)
Date
minUpdateTime
)
;
@PostMapping
(
"/system/errorcode/autoGenerateErrorCodes"
)
public
CommonResult
<
Boolean
>
autoGenerateErrorCodes
(
@RequestBody
List
<
ErrorCodeAutoGenerateDTO
>
autoGenerateDTOs
);
@PostMapping
(
"/system/errorcode/createErrorCode"
)
public
CommonResult
<
Integer
>
createErrorCode
(
@RequestBody
ErrorCodeCreateDTO
createDTO
)
;
@PostMapping
(
"/system/errorcode/updateErrorCode"
)
public
CommonResult
<
Boolean
>
updateErrorCode
(
@RequestBody
ErrorCodeUpdateDTO
updateDTO
)
;
@GetMapping
(
"/system/errorcode/deleteErrorCode"
)
public
CommonResult
<
Boolean
>
deleteErrorCode
(
@RequestParam
(
"errorCodeId"
)
Integer
errorCodeId
)
;
@GetMapping
(
"/system/errorcode/getErrorCode"
)
public
CommonResult
<
ErrorCodeVO
>
getErrorCode
(
@RequestParam
(
"errorCodeId"
)
Integer
errorCodeId
)
;
@GetMapping
(
"/system/errorcode/listErrorCodesByIds"
)
public
CommonResult
<
List
<
ErrorCodeVO
>>
listErrorCodes
(
@RequestParam
(
"errorCodeIds"
)
List
<
Integer
>
errorCodeIds
)
;
@PostMapping
(
"/system/errorcode/pageErrorCode"
)
public
CommonResult
<
PageResult
<
ErrorCodeVO
>>
pageErrorCode
(
@RequestBody
ErrorCodePageDTO
pageDTO
);
}
归档/system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/errorcode/dto/ErrorCodeAutoGenerateDTO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
errorcode
.
dto
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* 错误码自动生成 DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ErrorCodeAutoGenerateDTO
implements
Serializable
{
/**
* 错误码编码
*/
@NotNull
(
message
=
"错误码编码不能为空"
)
private
Integer
code
;
/**
* 错误码错误提示
*/
@NotEmpty
(
message
=
"错误码错误提示不能为空"
)
private
String
message
;
/**
* 错误码分组
*/
@NotNull
(
message
=
"错误码分组不能为空"
)
private
String
group
;
}
归档/system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/errorcode/dto/ErrorCodeCreateDTO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
errorcode
.
dto
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
cn.iocoder.mall.systemservice.enums.errorcode.ErrorCodeTypeEnum
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* 错误码创建 DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ErrorCodeCreateDTO
implements
Serializable
{
/**
* 错误码编码
*/
@NotNull
(
message
=
"错误码编码不能为空"
)
private
Integer
code
;
/**
* 错误码错误提示
*/
@NotEmpty
(
message
=
"错误码错误提示不能为空"
)
private
String
message
;
/**
* 错误码类型
*/
@NotNull
(
message
=
"错误码类型不能为空"
)
@InEnum
(
value
=
ErrorCodeTypeEnum
.
class
,
message
=
"错误码类型必须是 {value}"
)
private
Integer
type
;
/**
* 错误码分组
*/
@NotNull
(
message
=
"错误码分组不能为空"
)
private
String
group
;
/**
* 错误码备注
*/
private
String
memo
;
}
归档/system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/errorcode/dto/ErrorCodePageDTO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
errorcode
.
dto
;
import
cn.iocoder.common.framework.vo.PageParam
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* 错误码分页 DTO
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
public
class
ErrorCodePageDTO
extends
PageParam
{
/**
* 错误码编码
*/
private
Integer
code
;
/**
* 错误码错误提示
*
* 模糊匹配
*/
private
String
message
;
/**
* 错误码分组
*
* 模糊匹配
*/
private
String
group
;
}
归档/system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/errorcode/dto/ErrorCodeUpdateDTO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
errorcode
.
dto
;
import
cn.iocoder.common.framework.validator.InEnum
;
import
cn.iocoder.mall.systemservice.enums.errorcode.ErrorCodeTypeEnum
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* 错误码更新 DTO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ErrorCodeUpdateDTO
implements
Serializable
{
/**
* 错误码编号
*/
@NotNull
(
message
=
"错误码编号不能为空"
)
private
Integer
id
;
/**
* 错误码编码
*/
@NotNull
(
message
=
"错误码编码不能为空"
)
private
Integer
code
;
/**
* 错误码错误提示
*/
private
String
message
;
/**
* 错误码类型
*/
@InEnum
(
value
=
ErrorCodeTypeEnum
.
class
,
message
=
"错误码类型必须是 {value}"
)
private
Integer
type
;
/**
* 错误码分组
*/
private
String
group
;
/**
* 错误码备注
*/
private
String
memo
;
}
归档/system-service-project/system-service-api/src/main/java/cn/iocoder/mall/systemservice/rpc/errorcode/vo/ErrorCodeVO.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
errorcode
.
vo
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 错误码 VO
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ErrorCodeVO
implements
Serializable
{
/**
* 错误码编号
*/
private
Integer
id
;
/**
* 错误码编码
*/
private
Integer
code
;
/**
* 错误码错误提示
*/
private
String
message
;
/**
* 错误码类型
*/
private
Integer
type
;
/**
* 错误码分组
*/
private
String
group
;
/**
* 错误码备注
*/
private
String
memo
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 最后更新时间
*/
private
Date
updateTime
;
}
归档/system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/controller/AdminController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
controller
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.systemservice.manager.admin.AdminManager
;
import
cn.iocoder.mall.systemservice.rpc.admin.dto.AdminCreateDTO
;
import
cn.iocoder.mall.systemservice.rpc.admin.dto.AdminPageDTO
;
import
cn.iocoder.mall.systemservice.rpc.admin.dto.AdminUpdateDTO
;
import
cn.iocoder.mall.systemservice.rpc.admin.dto.AdminVerifyPasswordDTO
;
import
cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
/**
* Title:
* Description:
*
* @author zhuyang
* @version 1.0 2021/10/11
*/
@RestController
@RequestMapping
(
"/system/admin"
)
public
class
AdminController
{
@Autowired
private
AdminManager
adminManager
;
@PostMapping
(
"verifyPassword"
)
public
CommonResult
<
AdminVO
>
verifyPassword
(
@RequestBody
AdminVerifyPasswordDTO
verifyPasswordDTO
)
{
return
success
(
adminManager
.
verifyPassword
(
verifyPasswordDTO
));
}
@PostMapping
(
"createAdmin"
)
public
CommonResult
<
Integer
>
createAdmin
(
@RequestBody
AdminCreateDTO
createDTO
)
{
AdminVO
adminVO
=
adminManager
.
createAdmin
(
createDTO
);
return
success
(
adminVO
.
getId
());
}
@PostMapping
(
"updateAdmin"
)
public
CommonResult
<
Boolean
>
updateAdmin
(
@RequestBody
AdminUpdateDTO
updateDTO
)
{
adminManager
.
updateAdmin
(
updateDTO
);
return
success
(
true
);
}
@PostMapping
(
"pageAdmin"
)
public
CommonResult
<
PageResult
<
AdminVO
>>
pageAdmin
(
@RequestBody
AdminPageDTO
pageDTO
)
{
return
success
(
adminManager
.
pageAdmin
(
pageDTO
));
}
@GetMapping
(
"getAdmin"
)
public
CommonResult
<
AdminVO
>
getAdmin
(
@RequestParam
(
"adminId"
)
Integer
adminId
)
{
return
success
(
adminManager
.
getAdmin
(
adminId
));
}
}
归档/system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/controller/DataDictController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
controller
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.systemservice.manager.datadict.DataDictManager
;
import
cn.iocoder.mall.systemservice.rpc.datadict.dto.DataDictCreateDTO
;
import
cn.iocoder.mall.systemservice.rpc.datadict.dto.DataDictUpdateDTO
;
import
cn.iocoder.mall.systemservice.rpc.datadict.vo.DataDictVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
/**
* Title:
* Description:
*
* @author zhuyang
* @version 1.0 2021/10/11
*/
@RestController
@RequestMapping
(
"/system/datadict"
)
public
class
DataDictController
{
@Autowired
private
DataDictManager
dataDictManager
;
@PostMapping
(
"createDataDict"
)
public
CommonResult
<
Integer
>
createDataDict
(
@RequestBody
DataDictCreateDTO
createDTO
)
{
return
success
(
dataDictManager
.
createDataDict
(
createDTO
));
}
@PostMapping
(
"updateDataDict"
)
public
CommonResult
<
Boolean
>
updateDataDict
(
@RequestBody
DataDictUpdateDTO
updateDTO
)
{
dataDictManager
.
updateDataDict
(
updateDTO
);
return
success
(
true
);
}
@GetMapping
(
"deleteDataDict"
)
public
CommonResult
<
Boolean
>
deleteDataDict
(
@RequestParam
(
"dataDictId"
)
Integer
dataDictId
)
{
dataDictManager
.
deleteDataDict
(
dataDictId
);
return
success
(
true
);
}
@GetMapping
(
"getDataDict"
)
public
CommonResult
<
DataDictVO
>
getDataDict
(
@RequestParam
(
"dataDictId"
)
Integer
dataDictId
)
{
return
success
(
dataDictManager
.
getDataDict
(
dataDictId
));
}
@GetMapping
(
"listAllDataDicts"
)
public
CommonResult
<
List
<
DataDictVO
>>
listDataDicts
()
{
return
success
(
dataDictManager
.
listDataDicts
());
}
@GetMapping
(
"listDataDicts"
)
public
CommonResult
<
List
<
DataDictVO
>>
listDataDicts
(
@RequestParam
(
"dataDictIds"
)
List
<
Integer
>
dataDictIds
)
{
return
success
(
dataDictManager
.
listDataDicts
(
dataDictIds
));
}
}
归档/system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/controller/DepartmentController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
controller
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.systemservice.manager.admin.DepartmentManager
;
import
cn.iocoder.mall.systemservice.rpc.admin.dto.*
;
import
cn.iocoder.mall.systemservice.rpc.admin.vo.DepartmentVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Collection
;
import
java.util.List
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
/**
* Title:
* Description:
*
* @author zhuyang
* @version 1.0 2021/10/11
*/
@RestController
@RequestMapping
(
"/system/department"
)
public
class
DepartmentController
{
@Autowired
private
DepartmentManager
departmentManager
;
@PostMapping
(
"createDepartment"
)
public
CommonResult
<
Integer
>
createDepartment
(
@RequestBody
DepartmentCreateDTO
createDTO
)
{
return
success
(
departmentManager
.
createDepartment
(
createDTO
));
}
@PostMapping
(
"updateDepartment"
)
public
CommonResult
<
Boolean
>
updateDepartment
(
@RequestBody
DepartmentUpdateDTO
updateDTO
)
{
departmentManager
.
updateDepartment
(
updateDTO
);
return
success
(
true
);
}
@GetMapping
(
"deleteDepartment"
)
public
CommonResult
<
Boolean
>
deleteDepartment
(
@RequestParam
(
"departmentId"
)
Integer
departmentId
)
{
departmentManager
.
deleteDepartment
(
departmentId
);
return
success
(
true
);
}
@GetMapping
(
"getDepartment"
)
public
CommonResult
<
DepartmentVO
>
getDepartment
(
@RequestParam
(
"departmentId"
)
Integer
departmentId
)
{
return
success
(
departmentManager
.
getDepartment
(
departmentId
));
}
@GetMapping
(
"listDepartments"
)
public
CommonResult
<
List
<
DepartmentVO
>>
listDepartments
(
@RequestParam
(
"departmentIds"
)
Collection
<
Integer
>
departmentIds
)
{
return
success
(
departmentManager
.
listDepartments
(
departmentIds
));
}
@GetMapping
(
"listAllDepartments"
)
public
CommonResult
<
List
<
DepartmentVO
>>
listDepartments
()
{
return
success
(
departmentManager
.
listDepartments
());
}
}
归档/system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/controller/ErrorCodeController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
controller
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.systemservice.manager.errorcode.ErrorCodeManager
;
import
cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeAutoGenerateDTO
;
import
cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeCreateDTO
;
import
cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodePageDTO
;
import
cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeUpdateDTO
;
import
cn.iocoder.mall.systemservice.rpc.errorcode.vo.ErrorCodeVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Date
;
import
java.util.List
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
/**
* Title:
* Description:
*
* @author zhuyang
* @version 1.0 2021/10/11
*/
@RestController
@RequestMapping
(
"/system/errorcode"
)
public
class
ErrorCodeController
{
@Autowired
private
ErrorCodeManager
errorCodeManager
;
@GetMapping
(
"listErrorCodes"
)
public
CommonResult
<
List
<
ErrorCodeVO
>>
listErrorCodes
(
@RequestParam
(
"group"
)
String
group
,
@RequestParam
(
"minUpdateTime"
)
Date
minUpdateTime
)
{
return
success
(
errorCodeManager
.
listErrorCodes
(
group
,
minUpdateTime
));
}
@PostMapping
(
"autoGenerateErrorCodes"
)
public
CommonResult
<
Boolean
>
autoGenerateErrorCodes
(
@RequestBody
List
<
ErrorCodeAutoGenerateDTO
>
autoGenerateDTOs
)
{
errorCodeManager
.
autoGenerateErrorCodes
(
autoGenerateDTOs
);
return
success
(
true
);
}
@PostMapping
(
"createErrorCode"
)
public
CommonResult
<
Integer
>
createErrorCode
(
@RequestBody
ErrorCodeCreateDTO
createDTO
)
{
return
success
(
errorCodeManager
.
createErrorCode
(
createDTO
));
}
@PostMapping
(
"updateErrorCode"
)
public
CommonResult
<
Boolean
>
updateErrorCode
(
@RequestBody
ErrorCodeUpdateDTO
updateDTO
)
{
errorCodeManager
.
updateErrorCode
(
updateDTO
);
return
success
(
true
);
}
@GetMapping
(
"deleteErrorCode"
)
public
CommonResult
<
Boolean
>
deleteErrorCode
(
@RequestParam
(
"errorCodeId"
)
Integer
errorCodeId
)
{
errorCodeManager
.
deleteErrorCode
(
errorCodeId
);
return
success
(
true
);
}
@GetMapping
(
"getErrorCode"
)
public
CommonResult
<
ErrorCodeVO
>
getErrorCode
(
@RequestParam
(
"errorCodeId"
)
Integer
errorCodeId
)
{
return
success
(
errorCodeManager
.
getErrorCode
(
errorCodeId
));
}
@GetMapping
(
"listErrorCodesByIds"
)
public
CommonResult
<
List
<
ErrorCodeVO
>>
listErrorCodes
(
@RequestParam
(
"errorCodeIds"
)
List
<
Integer
>
errorCodeIds
)
{
return
success
(
errorCodeManager
.
listErrorCodes
(
errorCodeIds
));
}
@PostMapping
(
"pageErrorCode"
)
public
CommonResult
<
PageResult
<
ErrorCodeVO
>>
pageErrorCode
(
@RequestBody
ErrorCodePageDTO
pageDTO
)
{
return
success
(
errorCodeManager
.
pageErrorCode
(
pageDTO
));
}
}
归档/system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/controller/OAuthController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
controller
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenReqDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RefreshAccessTokenReqDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RemoveTokenByUserReqDTO
;
import
cn.iocoder.mall.systemservice.service.oauth.OAuth2Service
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
/**
* Title:
* Description:
*
* @author zhuyang
* @version 1.0 2021/10/11
*/
@RestController
@RequestMapping
(
"/system/oauth"
)
public
class
OAuthController
{
@Autowired
private
OAuth2Service
oAuth2Service
;
@PostMapping
(
"createAccessToken"
)
public
CommonResult
<
OAuth2AccessTokenRespDTO
>
createAccessToken
(
@RequestBody
OAuth2CreateAccessTokenReqDTO
createAccessTokenDTO
)
{
return
success
(
oAuth2Service
.
createAccessToken
(
createAccessTokenDTO
));
}
@GetMapping
(
"checkAccessToken"
)
public
CommonResult
<
OAuth2AccessTokenRespDTO
>
checkAccessToken
(
@RequestParam
(
"accessToken"
)
String
accessToken
)
{
return
success
(
oAuth2Service
.
checkAccessToken
(
accessToken
));
}
@PostMapping
(
"refreshAccessToken"
)
public
CommonResult
<
OAuth2AccessTokenRespDTO
>
refreshAccessToken
(
@RequestBody
OAuth2RefreshAccessTokenReqDTO
refreshAccessTokenDTO
)
{
return
success
(
oAuth2Service
.
refreshAccessToken
(
refreshAccessTokenDTO
));
}
@PostMapping
(
"removeToken"
)
public
CommonResult
<
Boolean
>
removeToken
(
@RequestBody
OAuth2RemoveTokenByUserReqDTO
removeTokenDTO
)
{
oAuth2Service
.
removeToken
(
removeTokenDTO
);
return
success
(
true
);
}
}
归档/system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/controller/PermissionController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
controller
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.systemservice.manager.permission.PermissionManager
;
import
cn.iocoder.mall.systemservice.rpc.permission.dto.PermissionAssignAdminRoleDTO
;
import
cn.iocoder.mall.systemservice.rpc.permission.dto.PermissionAssignRoleResourceDTO
;
import
cn.iocoder.mall.systemservice.rpc.permission.dto.PermissionCheckDTO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Collection
;
import
java.util.Map
;
import
java.util.Set
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
/**
* Title:
* Description:
*
* @author zhuyang
* @version 1.0 2021/10/11
*/
@RestController
@RequestMapping
(
"/system/permission"
)
public
class
PermissionController
{
@Autowired
private
PermissionManager
permissionManager
;
@GetMapping
(
"listRoleResourceIds"
)
public
CommonResult
<
Set
<
Integer
>>
listRoleResourceIds
(
@RequestParam
(
"roleId"
)
Integer
roleId
)
{
return
success
(
permissionManager
.
listRoleResourceIds
(
roleId
));
}
@PostMapping
(
"assignRoleResource"
)
public
CommonResult
<
Boolean
>
assignRoleResource
(
@RequestBody
PermissionAssignRoleResourceDTO
assignRoleResourceDTO
)
{
permissionManager
.
assignRoleResource
(
assignRoleResourceDTO
);
return
success
(
true
);
}
@GetMapping
(
"listAdminRoleIds"
)
public
CommonResult
<
Set
<
Integer
>>
listAdminRoleIds
(
@RequestParam
(
"adminId"
)
Integer
adminId
)
{
return
success
(
permissionManager
.
listAdminRoleIds
(
adminId
));
}
@GetMapping
(
"mapAdminRoleIds"
)
public
CommonResult
<
Map
<
Integer
,
Set
<
Integer
>>>
mapAdminRoleIds
(
@RequestParam
(
"adminIds"
)
Collection
<
Integer
>
adminIds
)
{
return
success
(
permissionManager
.
mapAdminRoleIds
(
adminIds
));
}
@PostMapping
(
"assignAdminRole"
)
public
CommonResult
<
Boolean
>
assignAdminRole
(
@RequestBody
PermissionAssignAdminRoleDTO
assignAdminRoleDTO
)
{
permissionManager
.
assignAdminRole
(
assignAdminRoleDTO
);
return
success
(
true
);
}
@PostMapping
(
"checkPermission"
)
public
CommonResult
<
Boolean
>
checkPermission
(
@RequestBody
PermissionCheckDTO
checkDTO
)
{
permissionManager
.
checkPermission
(
checkDTO
);
return
success
(
true
);
}
}
归档/system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/controller/ResourceController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
controller
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.systemservice.manager.permission.ResourceManager
;
import
cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceCreateDTO
;
import
cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceUpdateDTO
;
import
cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Collection
;
import
java.util.List
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
/**
* Title:
* Description:
*
* @author zhuyang
* @version 1.0 2021/10/11
*/
@RestController
@RequestMapping
(
"/system/resource"
)
public
class
ResourceController
{
@Autowired
private
ResourceManager
resourceManager
;
@PostMapping
(
"createResource"
)
public
CommonResult
<
Integer
>
createResource
(
@RequestBody
ResourceCreateDTO
createDTO
)
{
return
success
(
resourceManager
.
createResource
(
createDTO
));
}
@PostMapping
(
"updateResource"
)
public
CommonResult
<
Boolean
>
updateResource
(
@RequestBody
ResourceUpdateDTO
updateDTO
)
{
resourceManager
.
updateResource
(
updateDTO
);
return
success
(
true
);
}
@GetMapping
(
"deleteResource"
)
public
CommonResult
<
Boolean
>
deleteResource
(
@RequestParam
(
"resourceId"
)
Integer
resourceId
)
{
resourceManager
.
deleteResource
(
resourceId
);
return
success
(
true
);
}
@GetMapping
(
"getResource"
)
public
CommonResult
<
ResourceVO
>
getResource
(
@RequestParam
(
"resourceId"
)
Integer
resourceId
)
{
return
success
(
resourceManager
.
getResource
(
resourceId
));
}
@GetMapping
(
"listAllResource"
)
public
CommonResult
<
List
<
ResourceVO
>>
listResource
()
{
return
success
(
resourceManager
.
listResources
());
}
@GetMapping
(
"listResource"
)
public
CommonResult
<
List
<
ResourceVO
>>
listResource
(
@RequestParam
(
"resourceIds"
)
List
<
Integer
>
resourceIds
)
{
return
success
(
resourceManager
.
listResources
(
resourceIds
));
}
@GetMapping
(
"listRoleResource"
)
public
CommonResult
<
List
<
ResourceVO
>>
listRoleResource
(
@RequestParam
(
"roleIds"
)
Collection
<
Integer
>
roleIds
,
@RequestParam
(
"type"
)
Integer
type
)
{
return
success
(
resourceManager
.
listRoleResources
(
roleIds
,
type
));
}
}
归档/system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/controller/RoleController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
controller
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.systemservice.manager.permission.RoleManager
;
import
cn.iocoder.mall.systemservice.rpc.permission.dto.RolePageDTO
;
import
cn.iocoder.mall.systemservice.rpc.permission.dto.RoleUpdateDTO
;
import
cn.iocoder.mall.systemservice.rpc.permission.vo.RoleCreateDTO
;
import
cn.iocoder.mall.systemservice.rpc.permission.vo.RoleVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Set
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
/**
* Title:
* Description:
*
* @author zhuyang
* @version 1.0 2021/10/11
*/
@RestController
@RequestMapping
(
"/system/role"
)
public
class
RoleController
{
@Autowired
private
RoleManager
roleManager
;
@PostMapping
(
"createRole"
)
public
CommonResult
<
Integer
>
createRole
(
@RequestBody
RoleCreateDTO
createDTO
)
{
return
success
(
roleManager
.
createRole
(
createDTO
));
}
@PostMapping
(
"updateRole"
)
public
CommonResult
<
Boolean
>
updateRole
(
@RequestBody
RoleUpdateDTO
updateDTO
)
{
roleManager
.
updateRole
(
updateDTO
);
return
success
(
true
);
}
@GetMapping
(
"deleteRole"
)
public
CommonResult
<
Boolean
>
deleteRole
(
@RequestParam
(
"roleId"
)
Integer
roleId
)
{
roleManager
.
deleteRole
(
roleId
);
return
success
(
true
);
}
@GetMapping
(
"getRole"
)
public
CommonResult
<
RoleVO
>
getRole
(
@RequestParam
(
"roleId"
)
Integer
roleId
)
{
return
success
(
roleManager
.
getRole
(
roleId
));
}
@GetMapping
(
"listAllRoles"
)
public
CommonResult
<
List
<
RoleVO
>>
listAllRoles
()
{
return
success
(
roleManager
.
listAllRoles
());
}
@GetMapping
(
"listRoles"
)
public
CommonResult
<
List
<
RoleVO
>>
listRoles
(
@RequestParam
(
"roleIds"
)
Collection
<
Integer
>
roleIds
)
{
return
success
(
roleManager
.
listRoles
(
roleIds
));
}
@PostMapping
(
"pageRole"
)
public
CommonResult
<
PageResult
<
RoleVO
>>
pageRole
(
@RequestBody
RolePageDTO
pageDTO
)
{
return
success
(
roleManager
.
pageRole
(
pageDTO
));
}
@GetMapping
(
"listAdminRoleIds"
)
public
CommonResult
<
Set
<
Integer
>>
listAdminRoleIds
(
@RequestParam
(
"adminId"
)
Integer
adminId
)
{
return
success
(
roleManager
.
listAdminRoleIds
(
adminId
));
}
}
归档/system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/controller/SystemAccessLogController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
controller
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.systemservice.manager.systemlog.SystemAccessLogManager
;
import
cn.iocoder.mall.systemservice.rpc.systemlog.dto.SystemAccessLogCreateDTO
;
import
cn.iocoder.mall.systemservice.rpc.systemlog.vo.SystemAccessLogPageDTO
;
import
cn.iocoder.mall.systemservice.rpc.systemlog.vo.SystemAccessLogVO
;
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
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
/**
* Title:
* Description:
*
* @author zhuyang
* @version 1.0 2021/10/11
*/
@RestController
@RequestMapping
(
"/system/accesslog"
)
public
class
SystemAccessLogController
{
@Autowired
private
SystemAccessLogManager
systemAccessLogManager
;
@PostMapping
(
"createSystemAccessLog"
)
public
CommonResult
<
Boolean
>
createSystemAccessLog
(
@RequestBody
SystemAccessLogCreateDTO
createDTO
)
{
systemAccessLogManager
.
createSystemAccessLog
(
createDTO
);
return
success
(
true
);
}
@PostMapping
(
"pageSystemAccessLog"
)
public
CommonResult
<
PageResult
<
SystemAccessLogVO
>>
pageSystemAccessLog
(
@RequestBody
SystemAccessLogPageDTO
pageDTO
)
{
return
success
(
systemAccessLogManager
.
pageSystemAccessLog
(
pageDTO
));
}
}
归档/system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/controller/SystemExceptionLogController.java
deleted
100644 → 0
浏览文件 @
ca28d791
package
cn
.
iocoder
.
mall
.
systemservice
.
controller
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.PageResult
;
import
cn.iocoder.mall.systemservice.manager.systemlog.SystemExceptionLogManager
;
import
cn.iocoder.mall.systemservice.rpc.systemlog.dto.SystemExceptionLogCreateDTO
;
import
cn.iocoder.mall.systemservice.rpc.systemlog.dto.SystemExceptionLogPageDTO
;
import
cn.iocoder.mall.systemservice.rpc.systemlog.dto.SystemExceptionLogProcessDTO
;
import
cn.iocoder.mall.systemservice.rpc.systemlog.vo.SystemExceptionLogVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
/**
* Title:
* Description:
*
* @author zhuyang
* @version 1.0 2021/10/11
*/
@RestController
@RequestMapping
(
"/system/exceptionlog"
)
public
class
SystemExceptionLogController
{
@Autowired
private
SystemExceptionLogManager
systemExceptionLogManager
;
@PostMapping
(
"createSystemExceptionLog"
)
public
CommonResult
<
Boolean
>
createSystemExceptionLog
(
@RequestBody
SystemExceptionLogCreateDTO
createDTO
)
{
systemExceptionLogManager
.
createSystemExceptionLog
(
createDTO
);
return
success
(
true
);
}
@GetMapping
(
"getSystemExceptionLog"
)
public
CommonResult
<
SystemExceptionLogVO
>
getSystemExceptionLog
(
@RequestParam
(
"systemExceptionLogId"
)
Integer
systemExceptionLogId
)
{
return
success
(
systemExceptionLogManager
.
getSystemExceptionLog
(
systemExceptionLogId
));
}
@PostMapping
(
"pageSystemExceptionLog"
)
public
CommonResult
<
PageResult
<
SystemExceptionLogVO
>>
pageSystemExceptionLog
(
@RequestBody
SystemExceptionLogPageDTO
pageDTO
)
{
return
success
(
systemExceptionLogManager
.
pageSystemExceptionLog
(
pageDTO
));
}
@PostMapping
(
"processSystemExceptionLog"
)
public
CommonResult
<
Boolean
>
processSystemExceptionLog
(
@RequestBody
SystemExceptionLogProcessDTO
processDTO
)
{
systemExceptionLogManager
.
processSystemExceptionLog
(
processDTO
);
return
CommonResult
.
success
(
true
);
}
}
归档/user-service-project/user-service-api/src/main/java/cn/iocoder/mall/userservice/enums/UserErrorCodeConstants.java
浏览文件 @
2bd40cfb
...
...
@@ -9,21 +9,8 @@ import cn.iocoder.common.framework.exception.ErrorCode;
*/
public
interface
UserErrorCodeConstants
{
// ========== 用户手机验证码模块 ==========
ErrorCode
USER_SMS_CODE_NOT_FOUND
=
new
ErrorCode
(
1001001200
,
"验证码不存在"
);
ErrorCode
USER_SMS_CODE_EXPIRED
=
new
ErrorCode
(
1001001201
,
"验证码已过期"
);
ErrorCode
USER_SMS_CODE_USED
=
new
ErrorCode
(
1001001202
,
"验证码已使用"
);
ErrorCode
USER_SMS_CODE_NOT_CORRECT
=
new
ErrorCode
(
1001001203
,
"验证码不正确"
);
ErrorCode
USER_SMS_CODE_EXCEED_SEND_MAXIMUM_QUANTITY_PER_DAY
=
new
ErrorCode
(
1001001204
,
"超过每日短信发送数量"
);
ErrorCode
USER_SMS_CODE_SEND_TOO_FAST
=
new
ErrorCode
(
1001001205
,
"短信发送过于频率"
);
// ========== 用户地址 ==========
ErrorCode
USER_ADDRESS_NOT_FOUND
=
new
ErrorCode
(
1001004000
,
"用户地址不存在!"
);
ErrorCode
USER_GET_ADDRESS_NOT_EXISTS
=
new
ErrorCode
(
1001004001
,
"获取的地址不存在!"
);
// ========== 用户信息模块 1004004100 ==========
ErrorCode
USER_NOT_EXISTS
=
new
ErrorCode
(
1004004100
,
"用户不存在"
);
ErrorCode
USER_STATUS_EQUALS
=
new
ErrorCode
(
1004004101
,
"用户已经是该状态"
);
ErrorCode
USER_MOBILE_EXISTS
=
new
ErrorCode
(
1004004102
,
"手机号已经存在"
);
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论