maku-module-message 为消息服务组件,目前提供短信发送服务,支持阿里云、腾讯云、七牛云、华为云等短信平台。如果新增多家短信平台,则会按多家短信平台轮询发送短信。

引入

maku-cloud/maku-cloud-system/pom.xml里面引入组件依赖,如下所示:

<dependency>
    <groupId>net.maku</groupId>
    <artifactId>maku-module-message</artifactId>
    <version>${revision}</version>
</dependency>

SQL语句

执行对应的SQL文件(如:MySQL),初始化表结构和菜单等,如下所示

maku-cloud/db/mysql/module/maku-module-message.sql

启动项目

完成上面步骤后,再重启maku-cloud-system服务,则可看到maku-module-message对应的功能,如下所示:

API接口

引入组件后,我们就可以在程序里面调用,下面是短信API接口,如下所示:

/**
 * 短信服务API
 *
 * @author 阿沐 babamu@126.com
 */
@FeignClient(name = ServerNames.MESSAGE_SERVER_NAME)
public interface SmsApi {

    /**
     * 发送短信
     *
     * @param mobile 手机号
     * @param params 参数
     * @return 是否发送成功
     */
    @PostMapping(value = "api/message/sms/send")
    Result<Boolean> send(@RequestParam("mobile") String mobile, @RequestParam("params") Map<String, String> params);

    /**
     * 发送短信
     *
     * @param mobile 手机号
     * @param key    参数KEY
     * @param value  参数Value
     * @return 是否发送成功
     */
    @PostMapping(value = "api/message/sms/sendCode")
    Result<Boolean> sendCode(@RequestParam("mobile") String mobile, @RequestParam("key") String key, @RequestParam("value") String value);

    /**
     * 效验短信验证码
     *
     * @param mobile 手机号
     * @param code   验证码
     * @return 是否效验成功
     */
    @PostMapping(value = "api/message/sms/verifyCode")
    Result<Boolean> verifyCode(@RequestParam("mobile") String mobile, @RequestParam("code") String code);
}

API接口调用

下面提供了调用Feign接口的DEMO,如下所示:

@Service
@AllArgsConstructor
public class SendCodeService {
    private final SmsApi smsApi;

    public void sendCode(String mobile) {
        // 生成6位验证码
        String code = RandomUtil.randomNumbers(6);

        // 发送短信
        smsApi.sendCode(mobile, "code", code);
    }
}