diff --git a/src/main/java/com/greenorange/promotion/controller/course/RefundRecordController.java b/src/main/java/com/greenorange/promotion/controller/course/RefundRecordController.java index 2db25e0..23434d5 100644 --- a/src/main/java/com/greenorange/promotion/controller/course/RefundRecordController.java +++ b/src/main/java/com/greenorange/promotion/controller/course/RefundRecordController.java @@ -1,72 +1,72 @@ -package com.greenorange.promotion.controller.course; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.greenorange.promotion.annotation.RequiresPermission; -import com.greenorange.promotion.annotation.SysLog; -import com.greenorange.promotion.common.BaseResponse; -import com.greenorange.promotion.common.ResultUtils; -import com.greenorange.promotion.constant.UserConstant; -import com.greenorange.promotion.model.dto.CommonBatchRequest; -import com.greenorange.promotion.model.dto.refundRecord.RefundRecordAddRequest; -import com.greenorange.promotion.model.dto.refundRecord.RefundRecordQueryRequest; -import com.greenorange.promotion.model.dto.refundRecord.RefundRecordUpdateRequest; -import com.greenorange.promotion.model.entity.RefundRecord; -import com.greenorange.promotion.model.vo.refundRecord.RefundRecordVO; -import com.greenorange.promotion.service.common.CommonService; -import com.greenorange.promotion.service.refund.RefundRecordService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.greenorange.promotion.model.dto.CommonRequest; -import jakarta.validation.Valid; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - - -/** - * 退款记录 控制器 - */ -@RestController -@RequestMapping("refundRecord") -@Slf4j -@Tag(name = "退款记录模块") -@Transactional -public class RefundRecordController { - - @Resource - private RefundRecordService refundRecordService; - - @Resource - private CommonService commonService; - - - /** - * Web端管理员分页查询退款记录 - * @param refundRecordQueryRequest 退款记录查询请求体 - * @return 退款记录列表 - */ - @PostMapping("page") - @Operation(summary = "Web端管理员分页查询退款记录", description = "参数:退款记录查询请求体,权限:管理员,方法名:listRefundRecordByPage") - @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) - @SysLog(title = "退款记录管理", content = "Web端管理员分页查询退款记录") - public BaseResponse> listRefundRecordByPage(@Valid @RequestBody RefundRecordQueryRequest refundRecordQueryRequest) { - long current = refundRecordQueryRequest.getCurrent(); - long pageSize = refundRecordQueryRequest.getPageSize(); - QueryWrapper queryWrapper = refundRecordService.getQueryWrapper(refundRecordQueryRequest); - Page page = refundRecordService.page(new Page<>(current, pageSize), queryWrapper); - List refundRecordList = page.getRecords(); - List refundRecordVOList = commonService.convertList(refundRecordList, RefundRecordVO.class); - Page voPage = new Page<>(current, pageSize); - voPage.setRecords(refundRecordVOList); - voPage.setPages(page.getPages()); - voPage.setTotal(page.getTotal()); - return ResultUtils.success(voPage); - } -} \ No newline at end of file +//package com.greenorange.promotion.controller.course; +// +//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +//import com.greenorange.promotion.annotation.RequiresPermission; +//import com.greenorange.promotion.annotation.SysLog; +//import com.greenorange.promotion.common.BaseResponse; +//import com.greenorange.promotion.common.ResultUtils; +//import com.greenorange.promotion.constant.UserConstant; +//import com.greenorange.promotion.model.dto.CommonBatchRequest; +//import com.greenorange.promotion.model.dto.refundRecord.RefundRecordAddRequest; +//import com.greenorange.promotion.model.dto.refundRecord.RefundRecordQueryRequest; +//import com.greenorange.promotion.model.dto.refundRecord.RefundRecordUpdateRequest; +//import com.greenorange.promotion.model.entity.RefundRecord; +//import com.greenorange.promotion.model.vo.refundRecord.RefundRecordVO; +//import com.greenorange.promotion.service.common.CommonService; +//import com.greenorange.promotion.service.refund.RefundRecordService; +//import io.swagger.v3.oas.annotations.Operation; +//import io.swagger.v3.oas.annotations.tags.Tag; +//import jakarta.annotation.Resource; +//import lombok.extern.slf4j.Slf4j; +//import org.springframework.transaction.annotation.Transactional; +//import org.springframework.web.bind.annotation.PostMapping; +//import org.springframework.web.bind.annotation.RequestBody; +//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +//import com.greenorange.promotion.model.dto.CommonRequest; +//import jakarta.validation.Valid; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +// +//import java.util.List; +// +// +///** +// * 退款记录 控制器 +// */ +//@RestController +//@RequestMapping("refundRecord") +//@Slf4j +//@Tag(name = "退款记录模块") +//@Transactional +//public class RefundRecordController { +// +// @Resource +// private RefundRecordService refundRecordService; +// +// @Resource +// private CommonService commonService; +// +// +// /** +// * Web端管理员分页查询退款记录 +// * @param refundRecordQueryRequest 退款记录查询请求体 +// * @return 退款记录列表 +// */ +// @PostMapping("page") +// @Operation(summary = "Web端管理员分页查询退款记录", description = "参数:退款记录查询请求体,权限:管理员,方法名:listRefundRecordByPage") +// @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) +// @SysLog(title = "退款记录管理", content = "Web端管理员分页查询退款记录") +// public BaseResponse> listRefundRecordByPage(@Valid @RequestBody RefundRecordQueryRequest refundRecordQueryRequest) { +// long current = refundRecordQueryRequest.getCurrent(); +// long pageSize = refundRecordQueryRequest.getPageSize(); +// QueryWrapper queryWrapper = refundRecordService.getQueryWrapper(refundRecordQueryRequest); +// Page page = refundRecordService.page(new Page<>(current, pageSize), queryWrapper); +// List refundRecordList = page.getRecords(); +// List refundRecordVOList = commonService.convertList(refundRecordList, RefundRecordVO.class); +// Page voPage = new Page<>(current, pageSize); +// voPage.setRecords(refundRecordVOList); +// voPage.setPages(page.getPages()); +// voPage.setTotal(page.getTotal()); +// return ResultUtils.success(voPage); +// } +//} \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/controller/userInfo/UserInfoController.java b/src/main/java/com/greenorange/promotion/controller/userInfo/UserInfoController.java index 09a2090..ff355ee 100644 --- a/src/main/java/com/greenorange/promotion/controller/userInfo/UserInfoController.java +++ b/src/main/java/com/greenorange/promotion/controller/userInfo/UserInfoController.java @@ -119,29 +119,27 @@ public class UserInfoController { /** * 小程序端用户获取验证码(用于注册) - * @param commonStringRequest 手机号 + * @param verificationCodeGetRequest 验证码获取请求体 * @return 验证码 */ @PostMapping("code/register") @Operation(summary = "小程序端用户获取验证码(用于注册)", description = "参数:手机号,权限:管理员(boss, admin),方法名:getVerificationCodeForRegister") - public BaseResponse getVerificationCodeForRegister(@Valid @RequestBody CommonStringRequest commonStringRequest) { - String phoneNumber = commonStringRequest.getTemplateString(); - String verificationCode = userInfoService.getVerificationCodeForRegister(phoneNumber); + public BaseResponse getVerificationCodeForRegister(@Valid @RequestBody VerificationCodeGetRequest verificationCodeGetRequest) { + String verificationCode = userInfoService.getVerificationCodeForRegister(verificationCodeGetRequest); return ResultUtils.success(verificationCode); } /** * 小程序端用户获取验证码(用于密码登录和忘记密码) - * @param commonStringRequest 手机号 + * @param verificationCodeGetRequest 验证码获取请求体 * @return 验证码 */ @PostMapping("code/pwd") @Operation(summary = "小程序端用户获取验证码(用于密码登录和忘记密码)", description = "参数:手机号,权限:管理员(boss, admin),方法名:getVerificationCode") // @SysLog(title = "用户管理", content = "小程序端用户获取验证码") - public BaseResponse getVerificationCode(@Valid @RequestBody CommonStringRequest commonStringRequest) { - String phoneNumber = commonStringRequest.getTemplateString(); - String verificationCode = userInfoService.getVerificationCodeForPwdLogin(phoneNumber); + public BaseResponse getVerificationCode(@Valid @RequestBody VerificationCodeGetRequest verificationCodeGetRequest) { + String verificationCode = userInfoService.getVerificationCodeForPwdLogin(verificationCodeGetRequest); return ResultUtils.success(verificationCode); } diff --git a/src/main/java/com/greenorange/promotion/model/dto/userInfo/VerificationCodeGetRequest.java b/src/main/java/com/greenorange/promotion/model/dto/userInfo/VerificationCodeGetRequest.java new file mode 100644 index 0000000..424ec0d --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/userInfo/VerificationCodeGetRequest.java @@ -0,0 +1,36 @@ +package com.greenorange.promotion.model.dto.userInfo; + +import com.greenorange.promotion.annotation.EnumValue; +import com.greenorange.promotion.model.enums.UserRoleEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 验证码发送请求体 + */ +@Data +@Schema(description = "验证码发送请求体", requiredProperties = {"phoneNumber", "userRole"}) +public class VerificationCodeGetRequest implements Serializable { + + /** + * 手机号 + */ + @NotBlank(message = "手机号不能为空") + @Schema(description = "手机号", example = "15888610253") + private String phoneNumber; + + /** + * 权限 + */ + @NotBlank(message = "权限不能为空") + @EnumValue(enumClass = UserRoleEnum.class) + @Schema(description = "权限", example = "user") + private String userRole; + + @Serial + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/greenorange/promotion/service/userInfo/UserInfoService.java b/src/main/java/com/greenorange/promotion/service/userInfo/UserInfoService.java index e8bd0b0..8e48b0b 100644 --- a/src/main/java/com/greenorange/promotion/service/userInfo/UserInfoService.java +++ b/src/main/java/com/greenorange/promotion/service/userInfo/UserInfoService.java @@ -58,13 +58,13 @@ public interface UserInfoService extends IService { /** * 小程序用户获取验证码(用于密码登录和忘记密码) */ - String getVerificationCodeForPwdLogin(String phoneNumber); + String getVerificationCodeForPwdLogin(VerificationCodeGetRequest verificationCodeGetRequest); /** * 小程序用户获取验证码(用于注册) */ - String getVerificationCodeForRegister(String phoneNumber); + String getVerificationCodeForRegister(VerificationCodeGetRequest verificationCodeGetRequest); /** diff --git a/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java index 32dc13a..b7c6661 100644 --- a/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java +++ b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserInfoServiceImpl.java @@ -162,12 +162,20 @@ public class UserInfoServiceImpl extends ServiceImpl @Override @Transactional(rollbackFor = Exception.class) public void userInfoMiniRegister(UserInfoRegisterRequest userInfoRegisterRequest) { + String nickName = userInfoRegisterRequest.getNickName(); String phoneNumber = userInfoRegisterRequest.getPhoneNumber(); String verificationCode = userInfoRegisterRequest.getVerificationCode(); String userRole = userInfoRegisterRequest.getUserRole(); UserRoleEnum userRoleEnum = UserRoleEnum.getEnumByValue(userRole); // 校验用户手机号和验证码 checkPhoneAndVerificationCode(phoneNumber, verificationCode, userRoleEnum); + // 如果注册主管,校验昵称是否重复 + if (UserRoleEnum.SUPERVISOR.equals(userRoleEnum)) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserInfo::getNickName, nickName).eq(UserInfo::getUserRole, UserConstant.SUPERVISOR_ROLE); + UserInfo userInfo = this.getOne(lambdaQueryWrapper); + ThrowUtils.throwIf(userInfo != null, ErrorCode.OPERATION_ERROR, "昵称重复"); + } // 根据邀请码获得上级用户信息 String invitationCode = userInfoRegisterRequest.getInvitationCode(); @@ -312,12 +320,14 @@ public class UserInfoServiceImpl extends ServiceImpl * 小程序用户获取验证码(用于密码登录和忘记密码) */ @Override - public String getVerificationCodeForPwdLogin(String phoneNumber) { + public String getVerificationCodeForPwdLogin(VerificationCodeGetRequest verificationCodeGetRequest) { + String phoneNumber = verificationCodeGetRequest.getPhoneNumber(); + String userRole = verificationCodeGetRequest.getUserRole(); ThrowUtils.throwIf(RegexUtils.isPhoneInvalid(phoneNumber), ErrorCode.PARAMS_ERROR, "手机号格式错误"); // 判断手机号是否已注册 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(UserInfo::getPhoneNumber, phoneNumber); + lambdaQueryWrapper.eq(UserInfo::getPhoneNumber, phoneNumber).eq(UserInfo::getUserRole, userRole); UserInfo userInfo = this.getOne(lambdaQueryWrapper); ThrowUtils.throwIf(userInfo == null, ErrorCode.OPERATION_ERROR, "手机号未注册"); @@ -332,12 +342,14 @@ public class UserInfoServiceImpl extends ServiceImpl * 小程序用户获取验证码(用于注册) */ @Override - public String getVerificationCodeForRegister(String phoneNumber) { + public String getVerificationCodeForRegister(VerificationCodeGetRequest verificationCodeGetRequest) { + String phoneNumber = verificationCodeGetRequest.getPhoneNumber(); + String userRole = verificationCodeGetRequest.getUserRole(); ThrowUtils.throwIf(RegexUtils.isPhoneInvalid(phoneNumber), ErrorCode.PARAMS_ERROR, "手机号格式错误"); // 判断手机号是否已注册 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(UserInfo::getPhoneNumber, phoneNumber); + lambdaQueryWrapper.eq(UserInfo::getPhoneNumber, phoneNumber).eq(UserInfo::getUserRole, userRole); UserInfo userInfo = this.getOne(lambdaQueryWrapper); ThrowUtils.throwIf(userInfo != null, ErrorCode.OPERATION_ERROR, "手机号已注册"); @@ -359,7 +371,9 @@ public class UserInfoServiceImpl extends ServiceImpl phoneNumberLambdaQueryWrapper.eq(UserInfo::getPhoneNumber, phoneNumber); phoneNumberLambdaQueryWrapper = getQueryWrapperByUserRole(userRoleEnum, phoneNumberLambdaQueryWrapper); UserInfo userInfo = this.getOne(phoneNumberLambdaQueryWrapper); - ThrowUtils.throwIf(userInfo != null, ErrorCode.OPERATION_ERROR, "该手机号为"+ userRoleEnum.getText() +"账号"); + String userRole = userInfo.getUserRole(); + UserRoleEnum currentUserRoleEnum = UserRoleEnum.getEnumByValue(userRole); + ThrowUtils.throwIf(userInfo != null, ErrorCode.OPERATION_ERROR, "该手机号为"+ currentUserRoleEnum.getText() +"账号"); } String code = redisTemplate.opsForValue().get(SystemConstant.VERIFICATION_CODE + ":" + verificationCode); ThrowUtils.throwIf(code == null, ErrorCode.OPERATION_ERROR, "验证码已失效"); @@ -419,7 +433,7 @@ public class UserInfoServiceImpl extends ServiceImpl // 生成邀请二维码 String invitationQrcode = generateInvitationQrcode(myUserInfo.getInvitationCode(), UserRoleEnum.STAFF); - UserMainInfo userMainInfo = UserMainInfo.builder().userId(userId).inviteQrCode(invitationQrcode).build(); + UserMainInfo userMainInfo = UserMainInfo.builder().userId(myUserInfo.getId()).inviteQrCode(invitationQrcode).build(); userMainInfoService.save(userMainInfo); // // 批量保存当前用户的项目明细抽佣记录和下级用户项目明细抽佣记录