This commit is contained in:
dute7liang
2024-01-01 01:58:13 +08:00
parent eb53b78ab5
commit d6540e506e
8 changed files with 262 additions and 8 deletions

View File

@@ -0,0 +1,8 @@
package com.ruoyi.cai.auth;
import lombok.Data;
@Data
public class RegisterCode {
private String mobile;
}

View File

@@ -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<SmsVerify> list(SmsVerify bo, PageQuery pageQuery) {
Page<SmsVerify> page = smsVerifyService.page(pageQuery.build(), Wrappers.lambdaQuery(bo));
return TableDataInfo.build(page);
}
/**
* 获取短信验证码详细信息
*
* @param id 主键
*/
@SaCheckPermission("cai:smsVerify:query")
@GetMapping("/{id}")
public R<SmsVerify> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(smsVerifyService.removeBatchByIds(Arrays.asList(ids)));
}
}

View File

@@ -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<Void> register(@RequestBody CaiRegisterUser caiUser){
userService.register(caiUser);
return R.ok();
public R<Map<String, Object>> register(@RequestBody CaiRegisterUser caiUser){
String token = caiLoginManager.register(caiUser);
Map<String, Object> ajax = new HashMap<>();
ajax.put("token",token);
return R.ok(ajax);
}
@PostMapping("/register/code")
@Operation(summary = "获取注册验证码")
public R<Map<String,String>> registerCode(@RequestBody CaiRegisterUser caiUser){
userService.register(caiUser);
return R.ok();
public R<Map<String,String>> registerCode(@RequestBody RegisterCode code){
smsVerifyService.put(code.getMobile());
return R.ok("发送成功");
}
@PostMapping("/login")

View File

@@ -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;
}

View File

@@ -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<SmsVerify> {
}

View File

@@ -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<SmsVerify> {
void put(String mobile);
}

View File

@@ -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<SmsVerifyMapper,SmsVerify> 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);
}
}

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.cai.mapper.SmsVerifyMapper">
<resultMap type="com.ruoyi.cai.domain.SmsVerify" id="SmsVerifyResult">
<result property="id" column="id"/>
<result property="status" column="status"/>
<result property="receivePhone" column="receive_phone"/>
<result property="verifyCode" column="verify_code"/>
<result property="sendContent" column="send_content"/>
<result property="sendInterface" column="send_interface"/>
<result property="operateIp" column="operate_ip"/>
<result property="overTime" column="over_time"/>
<result property="createTime" column="create_time"/>
</resultMap>
</mapper>