guohongjin
2024-05-15 5b7639f0bd9e056738ec15100ed0532e965c6cd5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package cn.stylefeng.roses.kernel.sms.modular.controller;
 
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
import cn.stylefeng.roses.kernel.sms.modular.entity.SysSms;
import cn.stylefeng.roses.kernel.sms.modular.param.SysSmsInfoParam;
import cn.stylefeng.roses.kernel.sms.modular.param.SysSmsSendParam;
import cn.stylefeng.roses.kernel.sms.modular.param.SysSmsVerifyParam;
import cn.stylefeng.roses.kernel.sms.modular.service.SysSmsInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
 
import javax.annotation.Resource;
import java.util.HashMap;
 
/**
 * 短信发送控制器
 *
 * @author fengshuonan
 * @date 2020/10/26 18:34
 */
@Api(tags = "短信发送")
@RestController
@ApiResource(name = "短信发送控制器", resBizType = ResBizTypeEnum.SYSTEM)
public class SmsSenderController {
 
    @Resource
    private SysSmsInfoService sysSmsInfoService;
 
    /**
     * 发送记录查询
     *
     * @author fengshuonan
     * @date 2020/10/26 18:34
     */
    @ApiOperation(value = "发送记录查询")
    @GetResource(name = "发送记录查询", path = "/sms/page")
    public ResponseData<PageResult<SysSms>> page(SysSmsInfoParam sysSmsInfoParam) {
        return new SuccessResponseData<>(sysSmsInfoService.page(sysSmsInfoParam));
    }
 
    /**
     * 发送验证码短信
     */
    @ApiOperation(value = "发送验证码短信")
    @PostResource(name = "发送验证码短信", path = "/sms/sendMessage", requiredLogin = false, requiredPermission = false)
    public ResponseData<Boolean> sendMessage(@RequestBody @Validated SysSmsSendParam sysSmsSendParam) {
        return new SuccessResponseData<>(sysSmsInfoService.sendShortMessage(sysSmsSendParam));
    }
    @ApiOperation(value = "发送登录验证码短信")
    @PostResource(name = "发送登录验证码短信", path = "/sms/sendLoginMessage", requiredLogin = false, requiredPermission = false)
    public ResponseData<Boolean> sendLoginMessage(@RequestBody @Validated SysSmsSendParam sysSmsSendParam) {
        // 清空params参数
        sysSmsSendParam.setParams(null);
 
        // 设置模板中的参数
        HashMap<String, Object> paramMap = MapUtil.newHashMap();
        String randomNumbers = RandomUtil.randomNumbers(6);
        String sysSmsCodeDefault = AuthConfigExpander.getSysSmsCodeDefault();
        if (StrUtil.isNotBlank(sysSmsCodeDefault)) {
            // 系统默认验证码(开发环境)
            randomNumbers = AuthConfigExpander.getSysSmsCodeDefault();
        }
        String sysSmsHuaweiTemplateId = AuthConfigExpander.getSysSmsHuaweiTemplateId();
        if (StrUtil.isBlank(sysSmsSendParam.getTemplateCode()) && sysSmsHuaweiTemplateId != null) {
            // 短信华为模板ID
            sysSmsSendParam.setTemplateCode(sysSmsHuaweiTemplateId);
        }
 
        paramMap.put("code", randomNumbers);
        sysSmsSendParam.setParams(paramMap);
 
        return new SuccessResponseData<>(sysSmsInfoService.sendShortMessage(sysSmsSendParam));
    }
 
    /**
     * 验证短信验证码
     *
     * @author fengshuonan
     * @date 2020/10/26 18:35
     */
    @ApiOperation(value = "验证短信验证码")
    @PostResource(name = "验证短信验证码", path = "/sms/validateMessage", requiredLogin = false, requiredPermission = false)
    public ResponseData<?> validateMessage(@RequestBody @Validated SysSmsVerifyParam sysSmsVerifyParam) {
        sysSmsInfoService.validateSmsInfo(sysSmsVerifyParam);
        return new SuccessResponseData<>("短信验证成功");
    }
 
}