123
This commit is contained in:
@@ -1,11 +1,18 @@
|
||||
package com.ruoyi.cai.controller.app;
|
||||
|
||||
|
||||
import cn.hutool.core.util.PhoneUtil;
|
||||
import com.ruoyi.cai.auth.RegisterCode;
|
||||
import com.ruoyi.cai.domain.Adolescent;
|
||||
import com.ruoyi.cai.dto.app.query.user.AdolescentSetting;
|
||||
import com.ruoyi.cai.dto.app.query.user.AdolescentSwitch;
|
||||
import com.ruoyi.cai.domain.User;
|
||||
import com.ruoyi.cai.dto.app.query.user.AdolescentSettingReq;
|
||||
import com.ruoyi.cai.dto.app.query.user.AdolescentSmsCheckReq;
|
||||
import com.ruoyi.cai.dto.app.query.user.AdolescentSwitchReq;
|
||||
import com.ruoyi.cai.dto.app.vo.user.AdolescentVo;
|
||||
import com.ruoyi.cai.enums.CodeEnum;
|
||||
import com.ruoyi.cai.service.AdolescentService;
|
||||
import com.ruoyi.cai.service.SmsVerifyService;
|
||||
import com.ruoyi.cai.service.UserService;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
@@ -13,8 +20,11 @@ import com.ruoyi.common.helper.LoginHelper;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/adolescent")
|
||||
@Tag(name = "青少年模式接口")
|
||||
@@ -22,11 +32,13 @@ public class AdolescentAppController {
|
||||
|
||||
@Autowired
|
||||
private AdolescentService adolescentService;
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
|
||||
@PostMapping("/set")
|
||||
@Operation(summary = "设置青少年模式")
|
||||
@Log(title = "设置青少年模式", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||
public R<Void> set(@RequestBody AdolescentSetting setting){
|
||||
public R<Void> set(@RequestBody AdolescentSettingReq setting){
|
||||
adolescentService.setAdolescent(setting);
|
||||
return R.ok();
|
||||
}
|
||||
@@ -49,9 +61,36 @@ public class AdolescentAppController {
|
||||
@PostMapping("/switch")
|
||||
@Operation(summary = "青少年模式开关")
|
||||
@Log(title = "青少年模式开关", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||
public R<Void> switchAdolescent(@RequestBody AdolescentSwitch adolescentSwitch){
|
||||
adolescentService.switchAdolescent(adolescentSwitch);
|
||||
public R<Void> switchAdolescent(@RequestBody AdolescentSwitchReq adolescentSwitchReq){
|
||||
adolescentService.switchAdolescent(adolescentSwitchReq);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@PostMapping("/verifyMobileCode")
|
||||
@Operation(summary = "校验验证码-青少年模式")
|
||||
@Log(title = "校验验证码-青少年模式", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||
public R<Void> verifyMobileCode(@RequestBody AdolescentSmsCheckReq req){
|
||||
adolescentService.verifyMobileCode(req);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private SmsVerifyService smsVerifyService;
|
||||
|
||||
@PostMapping("/sms/code")
|
||||
@Operation(summary = "获取验证码-青少年模式")
|
||||
@Log(title = "获取验证码-青少年模式", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||
public R<Map<String,String>> resetPasswordCode(@Validated @RequestBody RegisterCode code){
|
||||
boolean mobile = PhoneUtil.isMobile(code.getMobile());
|
||||
if(!mobile){
|
||||
return R.fail(600,"请输入正确的手机格式");
|
||||
}
|
||||
User user = userService.getById(LoginHelper.getUserId());
|
||||
if(user == null || !user.getMobile().equals(code.getMobile())){
|
||||
return R.fail(600,"手机号码和绑定的手机号码不一致");
|
||||
}
|
||||
smsVerifyService.put(CodeEnum.RESET_ADOLESCENT,code.getMobile());
|
||||
return R.ok("发送成功");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,6 @@ package com.ruoyi.cai.dto.app.query.user;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AdolescentSetting {
|
||||
public class AdolescentSettingReq {
|
||||
private String password;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.ruoyi.cai.dto.app.query.user;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AdolescentSmsCheckReq {
|
||||
@Schema(description = "手机号")
|
||||
private String mobile;
|
||||
@Schema(description = "验证码")
|
||||
private String code;
|
||||
}
|
||||
@@ -3,7 +3,7 @@ package com.ruoyi.cai.dto.app.query.user;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AdolescentSwitch {
|
||||
public class AdolescentSwitchReq {
|
||||
private Integer isOpen;
|
||||
private String password;
|
||||
}
|
||||
@@ -5,7 +5,8 @@ import lombok.Getter;
|
||||
@Getter
|
||||
public enum CodeEnum {
|
||||
REGISTER("注册短信","SMS_294195165"),
|
||||
RESET_PASSWORD("重置密码","SMS_294195165")
|
||||
RESET_PASSWORD("重置密码","SMS_294195165"),
|
||||
RESET_ADOLESCENT("重置青少年模式密码","SMS_294195165"),
|
||||
;
|
||||
private final String name;
|
||||
private final String aliTemplate;
|
||||
|
||||
@@ -2,8 +2,9 @@ package com.ruoyi.cai.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.ruoyi.cai.domain.Adolescent;
|
||||
import com.ruoyi.cai.dto.app.query.user.AdolescentSetting;
|
||||
import com.ruoyi.cai.dto.app.query.user.AdolescentSwitch;
|
||||
import com.ruoyi.cai.dto.app.query.user.AdolescentSettingReq;
|
||||
import com.ruoyi.cai.dto.app.query.user.AdolescentSmsCheckReq;
|
||||
import com.ruoyi.cai.dto.app.query.user.AdolescentSwitchReq;
|
||||
|
||||
/**
|
||||
* 青少年模式Service接口
|
||||
@@ -12,10 +13,11 @@ import com.ruoyi.cai.dto.app.query.user.AdolescentSwitch;
|
||||
* @date 2024-01-23
|
||||
*/
|
||||
public interface AdolescentService extends IService<Adolescent> {
|
||||
void setAdolescent(AdolescentSetting setting);
|
||||
void setAdolescent(AdolescentSettingReq setting);
|
||||
|
||||
Adolescent getByUserId(Long userId);
|
||||
|
||||
void switchAdolescent(AdolescentSwitch adolescentSwitch);
|
||||
void switchAdolescent(AdolescentSwitchReq adolescentSwitchReq);
|
||||
|
||||
void verifyMobileCode(AdolescentSmsCheckReq req);
|
||||
}
|
||||
|
||||
@@ -4,14 +4,18 @@ import cn.dev33.satoken.secure.BCrypt;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.cai.domain.Adolescent;
|
||||
import com.ruoyi.cai.dto.app.query.user.AdolescentSetting;
|
||||
import com.ruoyi.cai.dto.app.query.user.AdolescentSwitch;
|
||||
import com.ruoyi.cai.dto.app.query.user.AdolescentSettingReq;
|
||||
import com.ruoyi.cai.dto.app.query.user.AdolescentSmsCheckReq;
|
||||
import com.ruoyi.cai.dto.app.query.user.AdolescentSwitchReq;
|
||||
import com.ruoyi.cai.enums.CodeEnum;
|
||||
import com.ruoyi.cai.mapper.AdolescentMapper;
|
||||
import com.ruoyi.cai.service.AdolescentService;
|
||||
import com.ruoyi.cai.service.SmsVerifyService;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.helper.LoginHelper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
@@ -26,10 +30,12 @@ import java.util.concurrent.locks.ReentrantLock;
|
||||
@Service
|
||||
public class AdolescentServiceImpl extends ServiceImpl<AdolescentMapper,Adolescent> implements AdolescentService {
|
||||
|
||||
@Autowired
|
||||
private SmsVerifyService smsVerifyService;
|
||||
|
||||
|
||||
@Override
|
||||
public void setAdolescent(AdolescentSetting setting) {
|
||||
public void setAdolescent(AdolescentSettingReq setting) {
|
||||
if(StringUtils.isEmpty(setting.getPassword())){
|
||||
throw new ServiceException("密码不能为空");
|
||||
}
|
||||
@@ -55,21 +61,31 @@ public class AdolescentServiceImpl extends ServiceImpl<AdolescentMapper,Adolesce
|
||||
}
|
||||
|
||||
@Override
|
||||
public void switchAdolescent(AdolescentSwitch adolescentSwitch) {
|
||||
if(adolescentSwitch.getIsOpen() == null) {
|
||||
public void switchAdolescent(AdolescentSwitchReq adolescentSwitchReq) {
|
||||
if(adolescentSwitchReq.getIsOpen() == null) {
|
||||
throw new ServiceException("参数不正确");
|
||||
}else if(adolescentSwitch.getIsOpen() != 0 && adolescentSwitch.getIsOpen() != 1){
|
||||
}else if(adolescentSwitchReq.getIsOpen() != 0 && adolescentSwitchReq.getIsOpen() != 1){
|
||||
throw new ServiceException("参数不正确");
|
||||
}
|
||||
Adolescent adolescent = this.getByUserId(LoginHelper.getUserId());
|
||||
if(adolescent == null || !BCrypt.checkpw(adolescentSwitch.getPassword(), adolescent.getPassword())){
|
||||
if(adolescent == null || !BCrypt.checkpw(adolescentSwitchReq.getPassword(), adolescent.getPassword())){
|
||||
throw new ServiceException("密码错误");
|
||||
}
|
||||
if(adolescentSwitch.getIsOpen() == 0){
|
||||
if(adolescentSwitchReq.getIsOpen() == 0){
|
||||
this.removeById(adolescent);
|
||||
}else {
|
||||
adolescent.setOpen(1);
|
||||
this.updateById(adolescent);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void verifyMobileCode(AdolescentSmsCheckReq req) {
|
||||
boolean check = smsVerifyService.check(CodeEnum.RESET_ADOLESCENT, req.getMobile(), req.getCode());
|
||||
if(!check){
|
||||
throw new ServiceException("验证码错误");
|
||||
}
|
||||
Long userId = LoginHelper.getUserId();
|
||||
this.remove(Wrappers.lambdaQuery(Adolescent.class).eq(Adolescent::getUserId,userId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,6 +85,12 @@ public class SmsVerifyServiceImpl extends ServiceImpl<SmsVerifyMapper,SmsVerify>
|
||||
if(count == 0){
|
||||
throw new ServiceException("手机号未注册!");
|
||||
}
|
||||
}else if(codeEnum == CodeEnum.RESET_ADOLESCENT){
|
||||
long count = userService.count(Wrappers.lambdaQuery(User.class)
|
||||
.eq(User::getMobile, mobile));
|
||||
if(count == 0){
|
||||
throw new ServiceException("手机号未注册!");
|
||||
}
|
||||
}
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
SmsVerify one = this.getOne(Wrappers.lambdaQuery(SmsVerify.class)
|
||||
|
||||
Reference in New Issue
Block a user