diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/RegisterCode.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/RegisterCode.java new file mode 100644 index 00000000..ede4ccb9 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/RegisterCode.java @@ -0,0 +1,8 @@ +package com.ruoyi.cai.auth; + +import lombok.Data; + +@Data +public class RegisterCode { + private String mobile; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/SmsVerifyController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/SmsVerifyController.java new file mode 100644 index 00000000..c2638374 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/SmsVerifyController.java @@ -0,0 +1,95 @@ +package com.ruoyi.cai.controller.admin; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.cai.domain.SmsVerify; +import com.ruoyi.cai.service.SmsVerifyService; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; + +/** + * 短信验证码 + * + * @author 77 + * @date 2024-01-01 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cai/smsVerify") +public class SmsVerifyController extends BaseController { + + private final SmsVerifyService smsVerifyService; + + /** + * 查询短信验证码列表 + */ + @SaCheckPermission("cai:smsVerify:list") + @GetMapping("/list") + public TableDataInfo list(SmsVerify bo, PageQuery pageQuery) { + Page page = smsVerifyService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); + return TableDataInfo.build(page); + } + + /** + * 获取短信验证码详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("cai:smsVerify:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(smsVerifyService.getById(id)); + } + + /** + * 新增短信验证码 + */ + @SaCheckPermission("cai:smsVerify:add") + @Log(title = "短信验证码", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SmsVerify bo) { + return toAjax(smsVerifyService.save(bo)); + } + + /** + * 修改短信验证码 + */ + @SaCheckPermission("cai:smsVerify:edit") + @Log(title = "短信验证码", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SmsVerify bo) { + return toAjax(smsVerifyService.updateById(bo)); + } + + /** + * 删除短信验证码 + * + * @param ids 主键串 + */ + @SaCheckPermission("cai:smsVerify:remove") + @Log(title = "短信验证码", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(smsVerifyService.removeBatchByIds(Arrays.asList(ids))); + } +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/AuthAppController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/AuthAppController.java index a0041180..7c03d5f0 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/AuthAppController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/AuthAppController.java @@ -4,7 +4,10 @@ import cn.dev33.satoken.annotation.SaIgnore; import com.ruoyi.cai.auth.CaiLoginManager; import com.ruoyi.cai.auth.CaiRegisterUser; import com.ruoyi.cai.auth.LoginCaiUser; -import com.ruoyi.cai.service.UserService; +import com.ruoyi.cai.auth.RegisterCode; +import com.ruoyi.cai.enums.CodeEnum; +import com.ruoyi.cai.manager.CodeManager; +import com.ruoyi.cai.service.SmsVerifyService; import com.ruoyi.common.core.domain.R; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -26,20 +29,22 @@ public class AuthAppController { @Autowired private CaiLoginManager caiLoginManager; @Autowired - private UserService userService; + private SmsVerifyService smsVerifyService; @PostMapping("/register") @Operation(summary = "注册") - public R register(@RequestBody CaiRegisterUser caiUser){ - userService.register(caiUser); - return R.ok(); + public R> register(@RequestBody CaiRegisterUser caiUser){ + String token = caiLoginManager.register(caiUser); + Map ajax = new HashMap<>(); + ajax.put("token",token); + return R.ok(ajax); } @PostMapping("/register/code") @Operation(summary = "获取注册验证码") - public R> registerCode(@RequestBody CaiRegisterUser caiUser){ - userService.register(caiUser); - return R.ok(); + public R> registerCode(@RequestBody RegisterCode code){ + smsVerifyService.put(code.getMobile()); + return R.ok("发送成功"); } @PostMapping("/login") diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/SmsVerify.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/SmsVerify.java new file mode 100644 index 00000000..441f0b98 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/SmsVerify.java @@ -0,0 +1,57 @@ +package com.ruoyi.cai.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 短信验证码对象 cai_sms_verify + * + * @author 77 + * @date 2024-01-01 + */ +@Data +@TableName("cai_sms_verify") +public class SmsVerify implements Serializable { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * 状态 0 过期,或者删除 1 正常 + */ + private Integer status; + /** + * 接收号码 + */ + private String receivePhone; + /** + * 验证码 + */ + private String verifyCode; + /** + * 发送内容 + */ + private String sendContent; + /** + * 发送平台 + */ + private String sendInterface; + /** + * 操作IP + */ + private String operateIp; + /** + * 过期时间 + */ + private LocalDateTime overTime; + + private LocalDateTime createTime; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/SmsVerifyMapper.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/SmsVerifyMapper.java new file mode 100644 index 00000000..17921dad --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/SmsVerifyMapper.java @@ -0,0 +1,14 @@ +package com.ruoyi.cai.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.cai.domain.SmsVerify; + +/** + * 短信验证码Mapper接口 + * + * @author 77 + * @date 2024-01-01 + */ +public interface SmsVerifyMapper extends BaseMapper { + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/SmsVerifyService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/SmsVerifyService.java new file mode 100644 index 00000000..e2d2f29c --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/SmsVerifyService.java @@ -0,0 +1,15 @@ +package com.ruoyi.cai.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.cai.domain.SmsVerify; + +/** + * 短信验证码Service接口 + * + * @author 77 + * @date 2024-01-01 + */ +public interface SmsVerifyService extends IService { + + void put(String mobile); +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/SmsVerifyServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/SmsVerifyServiceImpl.java new file mode 100644 index 00000000..1dc40d68 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/SmsVerifyServiceImpl.java @@ -0,0 +1,40 @@ +package com.ruoyi.cai.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.cai.domain.SmsVerify; +import com.ruoyi.cai.enums.CodeEnum; +import com.ruoyi.cai.manager.CodeManager; +import com.ruoyi.cai.mapper.SmsVerifyMapper; +import com.ruoyi.cai.service.SmsVerifyService; +import com.ruoyi.common.utils.ServletUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; + +/** + * 短信验证码Service业务层处理 + * + * @author 77 + * @date 2024-01-01 + */ +@Service +public class SmsVerifyServiceImpl extends ServiceImpl implements SmsVerifyService { + + @Autowired + private CodeManager codeManager; + + @Override + public void put(String mobile){ + String code = codeManager.put(CodeEnum.REGISTER, mobile); + SmsVerify smsVerify = new SmsVerify(); + smsVerify.setReceivePhone(mobile); + smsVerify.setVerifyCode(code); + smsVerify.setSendInterface("阿里云"); + smsVerify.setOperateIp(ServletUtils.getClientIP()); + smsVerify.setOverTime(LocalDateTime.now().plus(3, ChronoUnit.MINUTES)); + this.save(smsVerify); + } + +} diff --git a/ruoyi-cai/src/main/resources/mapper/cai/SmsVerifyMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/SmsVerifyMapper.xml new file mode 100644 index 00000000..6393a37c --- /dev/null +++ b/ruoyi-cai/src/main/resources/mapper/cai/SmsVerifyMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + +