From 17895469ee330d0084a0c31b2ae753d0089ca19f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=AF=28004796=29?= Date: Tue, 23 Jan 2024 17:08:49 +0800 Subject: [PATCH] 123 --- .../app/AdolescentAppController.java | 49 +++++++++++++++++-- ...Setting.java => AdolescentSettingReq.java} | 2 +- .../app/query/user/AdolescentSmsCheckReq.java | 12 +++++ ...ntSwitch.java => AdolescentSwitchReq.java} | 2 +- .../java/com/ruoyi/cai/enums/CodeEnum.java | 3 +- .../ruoyi/cai/service/AdolescentService.java | 10 ++-- .../service/impl/AdolescentServiceImpl.java | 32 +++++++++--- .../service/impl/SmsVerifyServiceImpl.java | 6 +++ 8 files changed, 96 insertions(+), 20 deletions(-) rename ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/{AdolescentSetting.java => AdolescentSettingReq.java} (73%) create mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSmsCheckReq.java rename ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/{AdolescentSwitch.java => AdolescentSwitchReq.java} (78%) diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/AdolescentAppController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/AdolescentAppController.java index f50d6d01..880c38d4 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/AdolescentAppController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/AdolescentAppController.java @@ -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 set(@RequestBody AdolescentSetting setting){ + public R 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 switchAdolescent(@RequestBody AdolescentSwitch adolescentSwitch){ - adolescentService.switchAdolescent(adolescentSwitch); + public R switchAdolescent(@RequestBody AdolescentSwitchReq adolescentSwitchReq){ + adolescentService.switchAdolescent(adolescentSwitchReq); return R.ok(); } + @PostMapping("/verifyMobileCode") + @Operation(summary = "校验验证码-青少年模式") + @Log(title = "校验验证码-青少年模式", businessType = BusinessType.OTHER, isSaveDb = false) + public R 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> 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("发送成功"); + } + } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSetting.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSettingReq.java similarity index 73% rename from ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSetting.java rename to ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSettingReq.java index 9a57bd07..7391ba2d 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSetting.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSettingReq.java @@ -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; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSmsCheckReq.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSmsCheckReq.java new file mode 100644 index 00000000..244e2f6a --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSmsCheckReq.java @@ -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; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSwitch.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSwitchReq.java similarity index 78% rename from ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSwitch.java rename to ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSwitchReq.java index f621b591..0a64b017 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSwitch.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/user/AdolescentSwitchReq.java @@ -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; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/CodeEnum.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/CodeEnum.java index 4f99f3a9..85af24e0 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/CodeEnum.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/CodeEnum.java @@ -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; diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AdolescentService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AdolescentService.java index f3db7419..25abdf51 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AdolescentService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AdolescentService.java @@ -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 { - void setAdolescent(AdolescentSetting setting); + void setAdolescent(AdolescentSettingReq setting); Adolescent getByUserId(Long userId); - void switchAdolescent(AdolescentSwitch adolescentSwitch); + void switchAdolescent(AdolescentSwitchReq adolescentSwitchReq); + void verifyMobileCode(AdolescentSmsCheckReq req); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AdolescentServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AdolescentServiceImpl.java index 1abbb45f..bc681195 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AdolescentServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AdolescentServiceImpl.java @@ -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 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 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)