diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sensitiveword/SensitiveWordApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sensitiveword/SensitiveWordApi.java
index 951cfbc6f4ac89f5e11860c30ff25e2b98b1a6a2..53de7d0d01a5ed1a16bffa3e15544c95bbf0d5c0 100644
--- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sensitiveword/SensitiveWordApi.java
+++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sensitiveword/SensitiveWordApi.java
@@ -1,30 +1,39 @@
 package cn.iocoder.yudao.module.system.api.sensitiveword;
 
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.module.system.enums.ApiConstants;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
 import java.util.List;
 
-/**
- * 敏感词 API 接口
- *
- * @author 永不言败
- */
+@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFacx`tory =
+@Api(tags = "RPC 服务 - 敏感词")
 public interface SensitiveWordApi {
 
-    /**
-     * 获得文本所包含的不合法的敏感词数组
-     *
-     * @param text 文本
-     * @param tags 标签数组
-     * @return 不合法的敏感词数组
-     */
-    List<String> validateText(String text, List<String> tags);
+    String PREFIX = ApiConstants.PREFIX + "/oauth2/sensitive-word";
+
+    @GetMapping(PREFIX + "/validate-text")
+    @ApiOperation("获得文本所包含的不合法的敏感词数组")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "text", value = "文本", required = true, dataTypeClass = String.class),
+            @ApiImplicitParam(name = "tags", value = "标签数组", required = true, allowMultiple = true)
+    })
+    CommonResult<List<String>> validateText(@RequestParam("text") String text,
+                                            @RequestParam("tags") List<String> tags);
 
-    /**
-     * 判断文本是否包含敏感词
-     *
-     * @param text 文本
-     * @param tags 表述数组
-     * @return 是否包含
-     */
-    boolean isTextValid(String text, List<String> tags);
+    @GetMapping(PREFIX + "/is-text-valid")
+    @ApiOperation("判断文本是否包含敏感词")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "text", value = "文本", required = true, dataTypeClass = String.class),
+            @ApiImplicitParam(name = "tags", value = "标签数组", required = true, allowMultiple = true)
+    })
+    CommonResult<Boolean> isTextValid(@RequestParam("text") String text,
+                                      @RequestParam("tags") List<String> tags);
 
 }
diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsCodeApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsCodeApi.java
index ffcf46dc08cda56fc6e95c9f47b0241298a1fada..381450e66f441493f1f898b70c90f1e51213c17f 100644
--- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsCodeApi.java
+++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsCodeApi.java
@@ -1,40 +1,36 @@
 package cn.iocoder.yudao.module.system.api.sms;
 
-import cn.iocoder.yudao.framework.common.exception.ServiceException;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeCheckReqDTO;
 import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeSendReqDTO;
 import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeUseReqDTO;
+import cn.iocoder.yudao.module.system.enums.ApiConstants;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
 
-/**
- * 短信验证码 API 接口
- *
- * @author 芋道源码
- */
+@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
+@Api(tags = "RPC 服务 - 短信验证码")
 public interface SmsCodeApi {
 
-    /**
-     * 创建短信验证码,并进行发送
-     *
-     * @param reqDTO 发送请求
-     */
-    void sendSmsCode(@Valid SmsCodeSendReqDTO reqDTO);
-
-    /**
-     * 验证短信验证码,并进行使用
-     * 如果正确,则将验证码标记成已使用
-     * 如果错误,则抛出 {@link ServiceException} 异常
-     *
-     * @param reqDTO 使用请求
-     */
-    void useSmsCode(@Valid SmsCodeUseReqDTO reqDTO);
-
-    /**
-     * 检查验证码是否有效
-     *
-     * @param reqDTO 校验请求
-     */
-    void checkSmsCode(@Valid SmsCodeCheckReqDTO reqDTO);
+    String PREFIX = ApiConstants.PREFIX + "/oauth2/sms/code";
+
+    @PostMapping(PREFIX + "/send")
+    @ApiOperation("创建短信验证码,并进行发送")
+    CommonResult<Boolean> sendSmsCode(@Valid @RequestBody SmsCodeSendReqDTO reqDTO);
+
+    @PutMapping(PREFIX + "/use")
+    @ApiOperation("验证短信验证码,并进行使用")
+    CommonResult<Boolean> useSmsCode(@Valid @RequestBody SmsCodeUseReqDTO reqDTO);
+
+    @GetMapping(PREFIX + "/check")
+    @ApiOperation("检查验证码是否有效")
+    CommonResult<Boolean> checkSmsCode(@Valid @RequestBody SmsCodeCheckReqDTO reqDTO);
 
 }
diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsSendApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsSendApi.java
index c86bbf503fb5f445b8aca88b627ca3cef805a7cb..5514bc01d8958c066c703ea2a059bf3e90c223af 100644
--- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsSendApi.java
+++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsSendApi.java
@@ -1,34 +1,28 @@
 package cn.iocoder.yudao.module.system.api.sms;
 
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.module.system.api.sms.dto.send.SmsSendSingleToUserReqDTO;
+import cn.iocoder.yudao.module.system.enums.ApiConstants;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
 
-/**
- * 短信发送 API 接口
- *
- * @author 芋道源码
- */
+@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory =
+@Api(tags = "RPC 服务 - 短信发送")
 public interface SmsSendApi {
 
-    /**
-     * 发送单条短信给 Admin 用户
-     *
-     * 在 mobile 为空时,使用 userId 加载对应 Admin 的手机号
-     *
-     * @param reqDTO 发送请求
-     * @return 发送日志编号
-     */
-    Long sendSingleSmsToAdmin(@Valid SmsSendSingleToUserReqDTO reqDTO);
+    String PREFIX = ApiConstants.PREFIX + "/oauth2/sms/send";
 
-    /**
-     * 发送单条短信给 Member 用户
-     *
-     * 在 mobile 为空时,使用 userId 加载对应 Member 的手机号
-     *
-     * @param reqDTO 发送请求
-     * @return 发送日志编号
-     */
-    Long sendSingleSmsToMember(@Valid SmsSendSingleToUserReqDTO reqDTO);
+    @PostMapping(PREFIX + "/send-single-admin")
+    @ApiOperation(value = "发送单条短信给 Admin 用户", notes = "在 mobile 为空时,使用 userId 加载对应 Admin 的手机号")
+    CommonResult<Long> sendSingleSmsToAdmin(@Valid @RequestBody SmsSendSingleToUserReqDTO reqDTO);
+
+    @PostMapping(PREFIX + "/send-single-member")
+    @ApiOperation(value = "发送单条短信给 Member 用户", notes = "在 mobile 为空时,使用 userId 加载对应 Member 的手机号")
+    CommonResult<Long> sendSingleSmsToMember(@Valid @RequestBody SmsSendSingleToUserReqDTO reqDTO);
 
 }
diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/code/SmsCodeCheckReqDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/code/SmsCodeCheckReqDTO.java
index 92895bb4d2f4726a9ec0282cf12f5618ee8c6e9c..99107492e42a373dc88e0171f11cd05b72fc984f 100644
--- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/code/SmsCodeCheckReqDTO.java
+++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/code/SmsCodeCheckReqDTO.java
@@ -3,34 +3,26 @@ package cn.iocoder.yudao.module.system.api.sms.dto.code;
 import cn.iocoder.yudao.framework.common.validation.InEnum;
 import cn.iocoder.yudao.framework.common.validation.Mobile;
 import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 
-/**
- * 短信验证码的校验 Request DTO
- *
- * @author 芋道源码
- */
+@ApiModel("RPC 服务 - 短信验证码的校验 Request DTO")
 @Data
 public class SmsCodeCheckReqDTO {
 
-    /**
-     * 手机号
-     */
+    @ApiModelProperty(value = "手机号", required = true, example = "15601691300")
     @Mobile
     @NotEmpty(message = "手机号不能为空")
     private String mobile;
-    /**
-     * 发送场景
-     */
+    @ApiModelProperty(value = "发送场景", required = true, example = "1")
     @NotNull(message = "发送场景不能为空")
     @InEnum(SmsSceneEnum.class)
     private Integer scene;
-    /**
-     * 验证码
-     */
+    @ApiModelProperty(value = "验证码", required = true, example = "1024")
     @NotEmpty(message = "验证码")
     private String code;
 
diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/code/SmsCodeSendReqDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/code/SmsCodeSendReqDTO.java
index 5d6579bd78a3d70bea75bbcfc17c8ce4ce44320c..9c23f7f512db0fafa33ccf15ced71943e097262e 100644
--- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/code/SmsCodeSendReqDTO.java
+++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/code/SmsCodeSendReqDTO.java
@@ -3,34 +3,26 @@ package cn.iocoder.yudao.module.system.api.sms.dto.code;
 import cn.iocoder.yudao.framework.common.validation.InEnum;
 import cn.iocoder.yudao.framework.common.validation.Mobile;
 import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 
-/**
- * 短信验证码的发送 Request DTO
- *
- * @author 芋道源码
- */
+@ApiModel("RPC 服务 - 短信验证码的发送 Request DTO")
 @Data
 public class SmsCodeSendReqDTO {
 
-    /**
-     * 手机号
-     */
+    @ApiModelProperty(value = "手机号", required = true, example = "15601691300")
     @Mobile
     @NotEmpty(message = "手机号不能为空")
     private String mobile;
-    /**
-     * 发送场景
-     */
+    @ApiModelProperty(value = "发送场景", required = true, example = "1")
     @NotNull(message = "发送场景不能为空")
     @InEnum(SmsSceneEnum.class)
     private Integer scene;
-    /**
-     * 发送 IP
-     */
+    @ApiModelProperty(value = "发送 IP", required = true, example = "10.20.30.40")
     @NotEmpty(message = "发送 IP 不能为空")
     private String createIp;
 
diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/code/SmsCodeUseReqDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/code/SmsCodeUseReqDTO.java
index 3043adfb00ef9dbf1c2536862c20eb3630b1d2d2..40b682b796a2e5cf5a314d27f91315e894285e59 100644
--- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/code/SmsCodeUseReqDTO.java
+++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/code/SmsCodeUseReqDTO.java
@@ -3,39 +3,29 @@ package cn.iocoder.yudao.module.system.api.sms.dto.code;
 import cn.iocoder.yudao.framework.common.validation.InEnum;
 import cn.iocoder.yudao.framework.common.validation.Mobile;
 import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 
-/**
- * 短信验证码的使用 Request DTO
- *
- * @author 芋道源码
- */
+@ApiModel("RPC 服务 - 短信验证码的使用 Request DTO")
 @Data
 public class SmsCodeUseReqDTO {
 
-    /**
-     * 手机号
-     */
+    @ApiModelProperty(value = "手机号", required = true, example = "15601691300")
     @Mobile
     @NotEmpty(message = "手机号不能为空")
     private String mobile;
-    /**
-     * 发送场景
-     */
+    @ApiModelProperty(value = "发送场景", required = true, example = "1")
     @NotNull(message = "发送场景不能为空")
     @InEnum(SmsSceneEnum.class)
     private Integer scene;
-    /**
-     * 验证码
-     */
+    @ApiModelProperty(value = "验证码", required = true, example = "1024")
     @NotEmpty(message = "验证码")
     private String code;
-    /**
-     * 使用 IP
-     */
+    @ApiModelProperty(value = "发送 IP", required = true, example = "10.20.30.40")
     @NotEmpty(message = "使用 IP 不能为空")
     private String usedIp;
 
diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/send/SmsSendSingleToUserReqDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/send/SmsSendSingleToUserReqDTO.java
index 67a5d93d21fc3466c99a869e8999947e082112d3..31d6f5b907e9f4b8c2f763ad9d76b9011ea53f3e 100644
--- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/send/SmsSendSingleToUserReqDTO.java
+++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/sms/dto/send/SmsSendSingleToUserReqDTO.java
@@ -1,37 +1,27 @@
 package cn.iocoder.yudao.module.system.api.sms.dto.send;
 
 import cn.iocoder.yudao.framework.common.validation.Mobile;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.util.Map;
 
-/**
- * 短信发送给 Admin 或者 Member 用户
- *
- * @author 芋道源码
- */
+@ApiModel("RPC 服务 - 短信发送给 Admin 或者 Member 用户 Request DTO")
 @Data
 public class SmsSendSingleToUserReqDTO {
 
-    /**
-     * 用户编号
-     */
+    @ApiModelProperty(value = "用户编号", example = "1024")
     private Long userId;
-    /**
-     * 手机号
-     */
+    @ApiModelProperty(value = "手机号", required = true, example = "15601691300")
     @Mobile
     private String mobile;
-    /**
-     * 短信模板编号
-     */
+    @ApiModelProperty(value = "用户编号", required = true, example = "USER_SEND")
     @NotEmpty(message = "短信模板编号不能为空")
     private String templateCode;
-    /**
-     * 短信模板参数
-     */
+    @ApiModelProperty(value = "短信模板参数")
     private Map<String, Object> templateParams;
 
 }
diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/sensitiveword/SensitiveWordApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/sensitiveword/SensitiveWordApiImpl.java
index a6d5b52fdd90c446085eacce968adf44ca5addbe..7965957025615e292c1506a270aeb7589af9748a 100644
--- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/sensitiveword/SensitiveWordApiImpl.java
+++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/sensitiveword/SensitiveWordApiImpl.java
@@ -1,29 +1,34 @@
 package cn.iocoder.yudao.module.system.api.sensitiveword;
 
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.module.system.service.sensitiveword.SensitiveWordService;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import java.util.List;
 
-/**
- * 敏感词 API 实现类
- *
- * @author 永不言败
- */
-@Service
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.module.system.enums.ApiConstants.VERSION;
+
+@RestController // 提供 RESTful API 接口,给 Feign 调用
+@DubboService(version = VERSION) // 提供 Dubbo RPC 接口,给 Dubbo Consumer 调用
+@Validated
 public class SensitiveWordApiImpl implements SensitiveWordApi {
 
     @Resource
     private SensitiveWordService sensitiveWordService;
 
     @Override
-    public List<String> validateText(String text, List<String> tags) {
-        return sensitiveWordService.validateText(text, tags);
+    public CommonResult<List<String>> validateText(String text, List<String> tags) {
+        return success(sensitiveWordService.validateText(text, tags));
     }
 
     @Override
-    public boolean isTextValid(String text, List<String> tags) {
-        return sensitiveWordService.isTextValid(text, tags);
+    public CommonResult<Boolean> isTextValid(String text, List<String> tags) {
+        return success(sensitiveWordService.isTextValid(text, tags));
     }
+
 }
diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsCodeApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsCodeApiImpl.java
index 81957e08288650a7cd6ea4c776c413637e5723ab..15e59a264e170e9bd2dbea24cea27859f0aa35af 100644
--- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsCodeApiImpl.java
+++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsCodeApiImpl.java
@@ -1,20 +1,21 @@
 package cn.iocoder.yudao.module.system.api.sms;
 
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeCheckReqDTO;
 import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeSendReqDTO;
 import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeUseReqDTO;
 import cn.iocoder.yudao.module.system.service.sms.SmsCodeService;
-import org.springframework.stereotype.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 
-/**
- * 短信验证码 API 实现类
- *
- * @author 芋道源码
- */
-@Service
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.module.system.enums.ApiConstants.VERSION;
+
+@RestController // 提供 RESTful API 接口,给 Feign 调用
+@DubboService(version = VERSION) // 提供 Dubbo RPC 接口,给 Dubbo Consumer 调用
 @Validated
 public class SmsCodeApiImpl implements SmsCodeApi {
 
@@ -22,18 +23,21 @@ public class SmsCodeApiImpl implements SmsCodeApi {
     private SmsCodeService smsCodeService;
 
     @Override
-    public void sendSmsCode(SmsCodeSendReqDTO reqDTO) {
+    public CommonResult<Boolean> sendSmsCode(SmsCodeSendReqDTO reqDTO) {
         smsCodeService.sendSmsCode(reqDTO);
+        return success(true);
     }
 
     @Override
-    public void useSmsCode(SmsCodeUseReqDTO reqDTO) {
+    public CommonResult<Boolean> useSmsCode(SmsCodeUseReqDTO reqDTO) {
         smsCodeService.useSmsCode(reqDTO);
+        return success(true);
     }
 
     @Override
-    public void checkSmsCode(SmsCodeCheckReqDTO reqDTO) {
+    public CommonResult<Boolean> checkSmsCode(SmsCodeCheckReqDTO reqDTO) {
         smsCodeService.checkSmsCode(reqDTO);
+        return success(true);
     }
 
 }
diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsSendApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsSendApiImpl.java
index ee5812d3c3d02fbbbdd431eb3afefd1789910898..edfa9101f4e241318e93e658b79f7c892fe55cfe 100644
--- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsSendApiImpl.java
+++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/sms/SmsSendApiImpl.java
@@ -1,18 +1,20 @@
 package cn.iocoder.yudao.module.system.api.sms;
 
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.module.system.api.sms.dto.send.SmsSendSingleToUserReqDTO;
 import cn.iocoder.yudao.module.system.service.sms.SmsSendService;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 
-/**
- * 短信发送 API 接口
- *
- * @author 芋道源码
- */
-@Service
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.module.system.enums.ApiConstants.VERSION;
+
+@RestController // 提供 RESTful API 接口,给 Feign 调用
+@DubboService(version = VERSION) // 提供 Dubbo RPC 接口,给 Dubbo Consumer 调用
 @Validated
 public class SmsSendApiImpl implements SmsSendApi {
 
@@ -20,15 +22,15 @@ public class SmsSendApiImpl implements SmsSendApi {
     private SmsSendService smsSendService;
 
     @Override
-    public Long sendSingleSmsToAdmin(SmsSendSingleToUserReqDTO reqDTO) {
-        return smsSendService.sendSingleSmsToAdmin(reqDTO.getMobile(), reqDTO.getUserId(),
-                reqDTO.getTemplateCode(), reqDTO.getTemplateParams());
+    public CommonResult<Long> sendSingleSmsToAdmin(SmsSendSingleToUserReqDTO reqDTO) {
+        return success(smsSendService.sendSingleSmsToAdmin(reqDTO.getMobile(), reqDTO.getUserId(),
+                reqDTO.getTemplateCode(), reqDTO.getTemplateParams()));
     }
 
     @Override
-    public Long sendSingleSmsToMember(SmsSendSingleToUserReqDTO reqDTO) {
-        return smsSendService.sendSingleSmsToMember(reqDTO.getMobile(), reqDTO.getUserId(),
-                reqDTO.getTemplateCode(), reqDTO.getTemplateParams());
+    public CommonResult<Long> sendSingleSmsToMember(SmsSendSingleToUserReqDTO reqDTO) {
+        return success(smsSendService.sendSingleSmsToMember(reqDTO.getMobile(), reqDTO.getUserId(),
+                reqDTO.getTemplateCode(), reqDTO.getTemplateParams()));
     }
 
 }