diff --git a/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java b/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java index ba009a9..55e34a6 100644 --- a/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java +++ b/src/main/java/com/greenorange/promotion/controller/project/ProjectController.java @@ -3,7 +3,6 @@ package com.greenorange.promotion.controller.project; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.greenorange.promotion.annotation.RequiresPermission; import com.greenorange.promotion.annotation.SysLog; @@ -11,19 +10,18 @@ import com.greenorange.promotion.common.BaseResponse; import com.greenorange.promotion.common.ErrorCode; import com.greenorange.promotion.common.ResultUtils; import com.greenorange.promotion.constant.UserConstant; -import com.greenorange.promotion.exception.BusinessException; import com.greenorange.promotion.exception.ThrowUtils; -import com.greenorange.promotion.model.dto.CommonBatchRequest; import com.greenorange.promotion.model.dto.CommonRequest; import com.greenorange.promotion.model.dto.project.ProjectAddRequest; import com.greenorange.promotion.model.dto.project.ProjectQueryRequest; -import com.greenorange.promotion.model.dto.project.ProjectStatusUpdateRequest; import com.greenorange.promotion.model.dto.project.ProjectUpdateRequest; -import com.greenorange.promotion.model.dto.projectDetail.ProjectDetailAddRequest; -import com.greenorange.promotion.model.dto.projectNotification.ProjectNotificationAddRequest; +import com.greenorange.promotion.model.dto.promoCodeApply.PromoCodeApplyRequest; import com.greenorange.promotion.model.entity.*; +import com.greenorange.promotion.model.vo.project.ProjectCardVO; +import com.greenorange.promotion.model.vo.project.ProjectDetailVO; import com.greenorange.promotion.model.vo.project.ProjectPageVO; import com.greenorange.promotion.model.vo.project.ProjectVO; +import com.greenorange.promotion.model.vo.projectNotification.ProjectNotificationVO; import com.greenorange.promotion.service.common.CommonService; import com.greenorange.promotion.service.project.*; import io.swagger.v3.oas.annotations.Operation; @@ -70,6 +68,68 @@ public class ProjectController { private SubUserProjectCommissionService subUserProjectCommissionService; + /** + * 小程序用户查看项目列表 + * @return 项目列表 + */ + @PostMapping("query/card") + @Operation(summary = "小程序用户查看项目列表", description = "参数:无,权限:管理员,方法名:queryProjectCardList") + @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + @SysLog(title = "项目管理", content = "小程序用户查看项目列表") + public BaseResponse> queryProjectCardList() { + List projectList = projectService.list(); + List projectCardVOS = commonService.convertList(projectList, ProjectCardVO.class); + return ResultUtils.success(projectCardVOS); + } + + /** + * 小程序用户根据id查询项目详情 + * @param commonRequest 项目id + * @return 项目详情 + */ + @PostMapping("query/id") + @Operation(summary = "小程序用户根据id查询项目详情", description = "参数:无,权限:管理员,方法名:queryProjectDetailById") + @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + @SysLog(title = "项目管理", content = "小程序用户根据id查询项目详情") + public BaseResponse queryProjectDetailById(@Valid @RequestBody CommonRequest commonRequest) { + Long id = commonRequest.getId(); + Project project = projectService.getById(id); + ProjectDetailVO projectDetailVO = commonService.copyProperties(project, ProjectDetailVO.class); + // 获取项目通知列表 + LambdaQueryWrapper notificationLambdaQueryWrapper = new LambdaQueryWrapper<>(); + notificationLambdaQueryWrapper.eq(ProjectNotification::getProjectId, id); + List projectNotificationList = projectNotificationService.list(notificationLambdaQueryWrapper); + List projectNotificationVOS = commonService.convertList(projectNotificationList, ProjectNotificationVO.class); + // 获取项目明细列表 + LambdaQueryWrapper projectDetailLambdaQueryWrapper = new LambdaQueryWrapper<>(); + projectDetailLambdaQueryWrapper.eq(ProjectDetail::getProjectId, id); + List projectDetailList = projectDetailService.list(projectDetailLambdaQueryWrapper); + List projectDetailVOS = commonService.convertList(projectDetailList, ProjectDetailVO.class); + projectDetailVO.setProjectNotificationVOList(projectNotificationVOS); + projectDetailVO.setProjectDetailVOList(projectDetailVOS); + return ResultUtils.success(projectDetailVO); + } + +// /** +// * 小程序用户申请推广码 +// * @param promoCodeApplyRequest 推广码申请请求体 +// * @return 项目详情 +// */ +// @PostMapping("query/id") +// @Operation(summary = "小程序用户申请推广码", description = "参数:无,权限:管理员,方法名:applyPromoCode") +// @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) +// @SysLog(title = "项目管理", content = "小程序用户申请推广码") +// public BaseResponse applyPromoCode(@Valid @RequestBody PromoCodeApplyRequest promoCodeApplyRequest) { +// // 取出当前项目的推广码 +// Long projectId = promoCodeApplyRequest.getProjectId(); +// LambdaQueryWrapper promoCodeLambdaQueryWrapper = new LambdaQueryWrapper<>(); +// promoCodeLambdaQueryWrapper.eq(PromoCode::getProjectId, projectId); +// List promoCodeList = promoCodeService.list(promoCodeLambdaQueryWrapper); +// return ResultUtils.success(projectDetailVO); +// } + + + /** * web端管理员添加项目 * @param projectAddRequest 项目添加请求体 diff --git a/src/main/java/com/greenorange/promotion/controller/projectSettlement/WithdrawalApplyController.java b/src/main/java/com/greenorange/promotion/controller/projectSettlement/WithdrawalApplyController.java index 69392df..a4d578c 100644 --- a/src/main/java/com/greenorange/promotion/controller/projectSettlement/WithdrawalApplyController.java +++ b/src/main/java/com/greenorange/promotion/controller/projectSettlement/WithdrawalApplyController.java @@ -1,5 +1,6 @@ package com.greenorange.promotion.controller.projectSettlement; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.greenorange.promotion.annotation.RequiresPermission; import com.greenorange.promotion.annotation.SysLog; @@ -12,13 +13,20 @@ import com.greenorange.promotion.model.dto.CommonBatchRequest; import com.greenorange.promotion.model.dto.withdrawalApply.WithdrawalApplyAddRequest; import com.greenorange.promotion.model.dto.withdrawalApply.WithdrawalApplyQueryRequest; import com.greenorange.promotion.model.dto.withdrawalApply.WithdrawalApplyUpdateRequest; +import com.greenorange.promotion.model.entity.FundsChange; +import com.greenorange.promotion.model.entity.UserInfo; import com.greenorange.promotion.model.entity.WithdrawalApply; +import com.greenorange.promotion.model.vo.fundsChange.FundsChangeVO; import com.greenorange.promotion.model.vo.withdrawalApply.WithdrawalApplyVO; import com.greenorange.promotion.service.common.CommonService; +import com.greenorange.promotion.service.settle.FundsChangeService; import com.greenorange.promotion.service.settle.WithdrawalApplyService; +import com.greenorange.promotion.service.user.UserInfoService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; +import lombok.With; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -28,6 +36,7 @@ import jakarta.validation.Valid; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.math.BigDecimal; import java.util.List; @@ -43,10 +52,71 @@ public class WithdrawalApplyController { @Resource private WithdrawalApplyService withdrawalApplyService; + @Resource + private FundsChangeService fundsChangeService; + @Resource private CommonService commonService; + /** + * 小程序端用户申请提现 + * @param withdrawalApplyAddRequest 提现申请记录查添加请求体 + * @return 提现申请记录id + */ + @PostMapping("add") + @Operation(summary = "小程序端用户申请提现", description = "参数:提现申请记录查添加请求体,权限:管理员,方法名:addWithdrawalApply") + @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + @SysLog(title = "提现申请记录管理", content = "小程序端用户申请提现") + public BaseResponse addWithdrawalApply(@Valid @RequestBody WithdrawalApplyAddRequest withdrawalApplyAddRequest, HttpServletRequest request) { + Long userId = (Long) request.getAttribute("userId"); + BigDecimal withdrawnAmount = withdrawalApplyAddRequest.getWithdrawnAmount(); + WithdrawalApply withdrawalApply = WithdrawalApply.builder() + .withdrawnAmount(withdrawnAmount) + .userId(userId) + .build(); + withdrawalApplyService.save(withdrawalApply); + return ResultUtils.success(withdrawalApply.getId()); + } + + + /** + * 小程序端用户查询提现申请记录 + * @return 提现申请记录列表 + */ + @PostMapping("query") + @Operation(summary = "小程序端用户查询提现申请记录", description = "参数:无,权限:管理员,方法名:queryWithdrawalApplyByUserId") + @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + @SysLog(title = "提现申请记录管理", content = "小程序端用户查询提现申请记录") + public BaseResponse> queryWithdrawalApplyByUserId(HttpServletRequest request) { + Long userId = (Long) request.getAttribute("userId"); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(WithdrawalApply::getUserId, userId); + List withdrawalApplyList = withdrawalApplyService.list(lambdaQueryWrapper); + List withdrawalApplyVOS = commonService.convertList(withdrawalApplyList, WithdrawalApplyVO.class); + return ResultUtils.success(withdrawalApplyVOS); + } + + + /** + * 小程序端用户查询资金变动记录 + * @return 提现申请记录id + */ + @PostMapping("query/change") + @Operation(summary = "小程序端用户查询资金变动记录", description = "参数:无,权限:管理员,方法名:queryFundsChangeByUserId") + @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + @SysLog(title = "提现申请记录管理", content = "小程序端用户查询资金变动记录") + public BaseResponse> queryFundsChangeByUserId(HttpServletRequest request) { + Long userId = (Long) request.getAttribute("userId"); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(FundsChange::getUserId, userId); + List fundsChangeList = fundsChangeService.list(lambdaQueryWrapper); + List fundsChangeVOS = commonService.convertList(fundsChangeList, FundsChangeVO.class); + return ResultUtils.success(fundsChangeVOS); + } + + + /** * Web端管理员分页查询提现申请记录 * @param withdrawalApplyQueryRequest 提现申请记录查询请求体 diff --git a/src/main/java/com/greenorange/promotion/controller/userInfo/UserAccountController.java b/src/main/java/com/greenorange/promotion/controller/userInfo/UserAccountController.java new file mode 100644 index 0000000..bee8c4b --- /dev/null +++ b/src/main/java/com/greenorange/promotion/controller/userInfo/UserAccountController.java @@ -0,0 +1,105 @@ +package com.greenorange.promotion.controller.userInfo; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.ErrorCode; +import com.greenorange.promotion.common.ResultUtils; +import com.greenorange.promotion.constant.UserConstant; +import com.greenorange.promotion.exception.ThrowUtils; +import com.greenorange.promotion.model.dto.CommonBatchRequest; +import com.greenorange.promotion.model.dto.userAccount.UserAccountAddRequest; +import com.greenorange.promotion.model.dto.userAccount.UserAccountQueryRequest; +import com.greenorange.promotion.model.dto.userAccount.UserAccountUpdateRequest; +import com.greenorange.promotion.model.entity.UserAccount; +import com.greenorange.promotion.model.vo.userAccount.UserAccountVO; +import com.greenorange.promotion.service.common.CommonService; +import com.greenorange.promotion.service.settle.UserAccountService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +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("userAccount") +@Slf4j +@Tag(name = "用户账户管理") +public class UserAccountController { + + @Resource + private UserAccountService userAccountService; + + @Resource + private CommonService commonService; + + /** + * 小程序端用户添加用户账户 + * @param userAccountAddRequest 用户账户添加请求体 + * @return 是否添加成功 + */ + @PostMapping("add") + @Operation(summary = "小程序端用户添加用户账户", description = "参数:用户账户添加请求体,权限:管理员,方法名:addUserAccount") + @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + @SysLog(title = "用户账户管理", content = "小程序端用户添加用户账户") + public BaseResponse addUserAccount(@Valid @RequestBody UserAccountAddRequest userAccountAddRequest, HttpServletRequest request) { + Long userId = (Long) request.getAttribute("userId"); + UserAccount userAccount = commonService.copyProperties(userAccountAddRequest, UserAccount.class); + userAccount.setUserId(userId); + userAccountService.save(userAccount); + return ResultUtils.success(true); + } + + + /** + * 小程序端用户根据id修改用户账户信息 + * @param userAccountUpdateRequest 用户账户更新请求体 + * @return 是否更新成功 + */ + @PostMapping("update") + @Operation(summary = "小程序端用户根据id修改用户账户信息", description = "参数:用户账户更新请求体,权限:管理员,方法名:updateUserAccount") + @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + @SysLog(title = "用户账户管理", content = "小程序端用户根据id修改用户账户信息") + public BaseResponse updateUserAccount(@Valid @RequestBody UserAccountUpdateRequest userAccountUpdateRequest, HttpServletRequest request) { + Long userId = (Long) request.getAttribute("userId"); + UserAccount userAccount = commonService.copyProperties(userAccountUpdateRequest, UserAccount.class); + userAccount.setUserId(userId); + userAccountService.updateById(userAccount); + return ResultUtils.success(true); + } + + + /** + * 小程序端用户根据id查询用户账户 + * @return 用户账户信息 + */ + @PostMapping("queryById") + @Operation(summary = "web端管理员根据id查询用户账户", description = "参数:无,权限:管理员,方法名:queryUserAccountByUserId") + @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + @SysLog(title = "用户账户管理", content = "web端管理员根据id查询用户账户") + public BaseResponse queryUserAccountByUserId(HttpServletRequest request) { + Long userId = (Long) request.getAttribute("userId"); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserAccount::getUserId, userId); + UserAccount userAccount = userAccountService.getOne(lambdaQueryWrapper); + UserAccountVO userAccountVO = commonService.copyProperties(userAccount, UserAccountVO.class); + return ResultUtils.success(userAccountVO); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/generator/Generator.java b/src/main/java/com/greenorange/promotion/generator/Generator.java index 4513bab..7a7d90c 100644 --- a/src/main/java/com/greenorange/promotion/generator/Generator.java +++ b/src/main/java/com/greenorange/promotion/generator/Generator.java @@ -27,13 +27,13 @@ public class Generator { // 作者 private static final String AUTHOR = "chenxinzhi"; // 表注释 - private static final String TABLE_COMMENT = "提现申请记录"; + private static final String TABLE_COMMENT = "用户账户"; // 实体类名 - private static final String ENTITY_NAME = "WithdrawalApply"; + private static final String ENTITY_NAME = "UserAccount"; // 表名 - private static final String TABLE_NAME = "withdrawal_apply"; + private static final String TABLE_NAME = "user_account"; // 实体类属性名 - private static final String ENTITY_NAME_LOWER = "withdrawalApply"; + private static final String ENTITY_NAME_LOWER = "userAccount"; // 父包名 private static final String PARENT_PATH = "com.greenorange.promotion"; diff --git a/src/main/java/com/greenorange/promotion/mapper/UserAccountMapper.java b/src/main/java/com/greenorange/promotion/mapper/UserAccountMapper.java new file mode 100644 index 0000000..29764ea --- /dev/null +++ b/src/main/java/com/greenorange/promotion/mapper/UserAccountMapper.java @@ -0,0 +1,18 @@ +package com.greenorange.promotion.mapper; + +import com.greenorange.promotion.model.entity.UserAccount; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author 35880 +* @description 针对表【user_account(用户账户表)】的数据库操作Mapper +* @createDate 2025-05-11 01:44:18 +* @Entity com.greenorange.promotion.model.entity.UserAccount +*/ +public interface UserAccountMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/greenorange/promotion/model/dto/promoCodeApply/PromoCodeApplyRequest.java b/src/main/java/com/greenorange/promotion/model/dto/promoCodeApply/PromoCodeApplyRequest.java new file mode 100644 index 0000000..82c5c61 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/promoCodeApply/PromoCodeApplyRequest.java @@ -0,0 +1,43 @@ +package com.greenorange.promotion.model.dto.promoCodeApply; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +import java.io.Serializable; + +/** + * 推广码申请请求体 + */ +@Data +@Schema(description = "推广码申请记录添加请求体", requiredProperties = { + "salespersonName", + "salespersonPhone", + "projectId", +}) +public class PromoCodeApplyRequest implements Serializable { + + /** + * 业务员姓名 + */ + @NotBlank(message = "业务员姓名不能为空") + @Schema(description = "业务员姓名", example = "chenxinzhi") + private String salespersonName; + + /** + * 业务员手机号 + */ + @NotBlank(message = "业务员手机号不能为空") + @Schema(description = "业务员手机号", example = "15888610253") + private String salespersonPhone; + + /** + * 项目ID + */ + @Min(value = 1L, message = "项目ID ID不能小于1") + @Schema(description = "项目ID", example = "1") + private Long projectId; + + +} diff --git a/src/main/java/com/greenorange/promotion/model/dto/userAccount/UserAccountAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/userAccount/UserAccountAddRequest.java new file mode 100644 index 0000000..7b0b880 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/userAccount/UserAccountAddRequest.java @@ -0,0 +1,57 @@ +package com.greenorange.promotion.model.dto.userAccount; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Min; +import lombok.Data; +import java.math.BigDecimal; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 用户账户添加请求体 + */ +@Data +@Schema(description = "用户账户添加请求体", requiredProperties = { + "cardHolder", + "idCardNumber", + "phoneNumber", + "bankCardNumber", + "userId", +}) +public class UserAccountAddRequest implements Serializable { + + /** + * 持卡人 + */ + @NotBlank(message = "持卡人不能为空") + @Schema(description = "持卡人", example = "chenxinzhi") + private String cardHolder; + + /** + * 身份证号 + */ + @NotBlank(message = "身份证号不能为空") + @Schema(description = "身份证号", example = "110101199001011234") + private String idCardNumber; + + /** + * 手机号 + */ + @NotBlank(message = "手机号不能为空") + @Schema(description = "手机号", example = "15888610253") + private String phoneNumber; + + /** + * 银行卡号 + */ + @NotBlank(message = "银行卡号不能为空") + @Schema(description = "银行卡号", example = "5105105105105100") + private String bankCardNumber; + + + @Serial + private static final long serialVersionUID = 1L; +} + diff --git a/src/main/java/com/greenorange/promotion/model/dto/userAccount/UserAccountQueryRequest.java b/src/main/java/com/greenorange/promotion/model/dto/userAccount/UserAccountQueryRequest.java new file mode 100644 index 0000000..4ab46d6 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/userAccount/UserAccountQueryRequest.java @@ -0,0 +1,66 @@ +package com.greenorange.promotion.model.dto.userAccount; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Min; +import lombok.Data; +import java.math.BigDecimal; + +import java.io.Serial; +import java.io.Serializable; +import com.greenorange.promotion.common.PageRequest; + +/** + * 用户账户查询请求体,继承自分页请求 PageRequest + */ +@Data +@Schema(description = "用户账户查询请求体", requiredProperties = {"current", "pageSize"}) +public class UserAccountQueryRequest extends PageRequest implements Serializable { + + /** + * 账户ID + */ + @Min(value = 1L, message = "账户ID ID不能小于1") + @Schema(description = "账户ID", example = "1") + private Long id; + + /** + * 持卡人 + */ + @NotBlank(message = "持卡人不能为空") + @Schema(description = "持卡人", example = "chenxinzhi") + private String cardHolder; + + /** + * 身份证号 + */ + @NotBlank(message = "身份证号不能为空") + @Schema(description = "身份证号", example = "110101199001011234") + private String idCardNumber; + + /** + * 手机号 + */ + @NotBlank(message = "手机号不能为空") + @Schema(description = "手机号", example = "15888610253") + private String phoneNumber; + + /** + * 银行卡号 + */ + @NotBlank(message = "银行卡号不能为空") + @Schema(description = "银行卡号", example = "5105105105105100") + private String bankCardNumber; + + /** + * 用户ID + */ + @Min(value = 1L, message = "用户ID ID不能小于1") + @Schema(description = "用户ID", example = "1") + private Long userId; + + + @Serial + private static final long serialVersionUID = 1L; +} + diff --git a/src/main/java/com/greenorange/promotion/model/dto/userAccount/UserAccountUpdateRequest.java b/src/main/java/com/greenorange/promotion/model/dto/userAccount/UserAccountUpdateRequest.java new file mode 100644 index 0000000..ad5f8ed --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/userAccount/UserAccountUpdateRequest.java @@ -0,0 +1,64 @@ +package com.greenorange.promotion.model.dto.userAccount; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Min; +import lombok.Data; +import java.math.BigDecimal; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 用户账户更新请求体 + */ +@Data +@Schema(description = "用户账户更新请求体", requiredProperties = { + "id", + "cardHolder", + "idCardNumber", + "phoneNumber", + "bankCardNumber", + "userId", +}) +public class UserAccountUpdateRequest implements Serializable { + + /** + * 账户ID + */ + @Min(value = 1L, message = "账户ID ID不能小于1") + @Schema(description = "账户ID", example = "1") + private Long id; + + /** + * 持卡人 + */ + @NotBlank(message = "持卡人不能为空") + @Schema(description = "持卡人", example = "chenxinzhi") + private String cardHolder; + + /** + * 身份证号 + */ + @NotBlank(message = "身份证号不能为空") + @Schema(description = "身份证号", example = "110101199001011234") + private String idCardNumber; + + /** + * 手机号 + */ + @NotBlank(message = "手机号不能为空") + @Schema(description = "手机号", example = "15888610253") + private String phoneNumber; + + /** + * 银行卡号 + */ + @NotBlank(message = "银行卡号不能为空") + @Schema(description = "银行卡号", example = "5105105105105100") + private String bankCardNumber; + + + @Serial + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/model/dto/withdrawalApply/WithdrawalApplyAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/withdrawalApply/WithdrawalApplyAddRequest.java index 119e767..7a69750 100644 --- a/src/main/java/com/greenorange/promotion/model/dto/withdrawalApply/WithdrawalApplyAddRequest.java +++ b/src/main/java/com/greenorange/promotion/model/dto/withdrawalApply/WithdrawalApplyAddRequest.java @@ -28,20 +28,6 @@ public class WithdrawalApplyAddRequest implements Serializable { @Schema(description = "提现金额", example = "1.00") private BigDecimal withdrawnAmount; - /** - * 提现状态[提现中(processing)|提现成功(success)|提现失败(failed)] - */ - @WithdrawStatusEnumValue(enumClass = WithdrawStatusEnum.class) - @Schema(description = "提现状态[提现中(processing)|提现成功(success)|提现失败(failed)]", example = "processing") - private String withdrawalStatus; - - /** - * 用户ID - */ - @Min(value = 1L, message = "用户ID ID不能小于1") - @Schema(description = "用户ID", example = "1") - private Long userId; - @Serial private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/greenorange/promotion/model/entity/UserAccount.java b/src/main/java/com/greenorange/promotion/model/entity/UserAccount.java new file mode 100644 index 0000000..90c7584 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/entity/UserAccount.java @@ -0,0 +1,66 @@ +package com.greenorange.promotion.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 用户账户表 + * @TableName user_account + */ +@TableName(value ="user_account") +@Data +public class UserAccount implements Serializable { + /** + * 账户ID + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 持卡人 + */ + private String cardHolder; + + /** + * 身份证号 + */ + private String idCardNumber; + + /** + * 手机号 + */ + private String phoneNumber; + + /** + * 银行卡号 + */ + private String bankCardNumber; + + /** + * 用户ID + */ + private Long userId; + + /** + * 是否删除 + */ + private Integer isDelete; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/greenorange/promotion/model/entity/WithdrawalApply.java b/src/main/java/com/greenorange/promotion/model/entity/WithdrawalApply.java index fa570a2..9d1766a 100644 --- a/src/main/java/com/greenorange/promotion/model/entity/WithdrawalApply.java +++ b/src/main/java/com/greenorange/promotion/model/entity/WithdrawalApply.java @@ -7,7 +7,11 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; + +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; /** * 提现申请记录表 @@ -15,6 +19,9 @@ import lombok.Data; */ @TableName(value ="withdrawal_apply") @Data +@NoArgsConstructor +@AllArgsConstructor +@Builder public class WithdrawalApply implements Serializable { /** * 提现申请ID diff --git a/src/main/java/com/greenorange/promotion/model/vo/fundsChange/FundsChangeVO.java b/src/main/java/com/greenorange/promotion/model/vo/fundsChange/FundsChangeVO.java index c55532e..96289c8 100644 --- a/src/main/java/com/greenorange/promotion/model/vo/fundsChange/FundsChangeVO.java +++ b/src/main/java/com/greenorange/promotion/model/vo/fundsChange/FundsChangeVO.java @@ -38,17 +38,6 @@ public class FundsChangeVO implements Serializable { @Schema(description = "当前金额(变动后的总金额)", example = "0.34") private BigDecimal currentAmount; - /** - * 用户ID - */ - @Schema(description = "用户ID", example = "1") - private Long userId; - - /** - * 项目结算记录ID - */ - @Schema(description = "项目结算记录ID", example = "1") - private Long projectSettlementId; @Serial private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/greenorange/promotion/model/vo/project/ProjectCardVO.java b/src/main/java/com/greenorange/promotion/model/vo/project/ProjectCardVO.java new file mode 100644 index 0000000..295aa00 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/vo/project/ProjectCardVO.java @@ -0,0 +1,59 @@ +package com.greenorange.promotion.model.vo.project; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class ProjectCardVO implements Serializable { + + /** + * 项目 ID + */ + @Schema(description = "项目 ID", example = "1") + private Long id; + + /** + * 项目名称 + */ + @Schema(description = "项目名称", example = "美团省钱包") + private String projectName; + + /** + * 项目价格 + */ + @Schema(description = "项目价格", example = "6.88") + private BigDecimal projectPrice; + + /** + * 当前推广人数 + */ + @Schema(description = "当前推广人数", example = "10") + private Integer currentPromotionCount; + + /** + * 项目图片URL + */ + @Schema(description = "项目图片URL", example = "http://xxx.png") + private String projectImage; + + /** + * 项目结算周期 + */ + @Schema(description = "项目结算周期", example = "2") + private Integer projectSettlementCycle; + + + /** + * 项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)] + */ + @Schema(description = "项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)]", example = "running") + private String projectStatus; + + @Serial + private static final long serialVersionUID = 1L; + +} diff --git a/src/main/java/com/greenorange/promotion/model/vo/project/ProjectDetailVO.java b/src/main/java/com/greenorange/promotion/model/vo/project/ProjectDetailVO.java new file mode 100644 index 0000000..19d2d80 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/vo/project/ProjectDetailVO.java @@ -0,0 +1,88 @@ +package com.greenorange.promotion.model.vo.project; + +import com.greenorange.promotion.model.entity.ProjectNotification; +import com.greenorange.promotion.model.vo.projectNotification.ProjectNotificationVO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +@Data +public class ProjectDetailVO implements Serializable { + + /** + * 项目 ID + */ + @Schema(description = "项目 ID", example = "1") + private Long id; + + /** + * 项目名称 + */ + @Schema(description = "项目名称", example = "美团省钱包") + private String projectName; + + /** + * 项目图片URL + */ + @Schema(description = "项目图片URL", example = "http://xxx.png") + private String projectImage; + + /** + * 项目价格 + */ + @Schema(description = "项目价格", example = "6.88") + private BigDecimal projectPrice; + + /** + * 项目简介 + */ + @Schema(description = "项目简介", example = "不限制推广方式,禁止/恶意/夸大虚假宣传") + private String projectDescription; + + + /** + * 项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)] + */ + @Schema(description = "项目状态[项目运行(running)|人数已满(full)|项目暂停(paused)]", example = "running") + private String projectStatus; + + + /** + * 结算说明(富文本) + */ + @Schema(description = "结算说明(富文本)", example = "富文本") + private String settlementDesc; + + /** + * 项目说明(富文本) + */ + @Schema(description = "项目说明(富文本)", example = "富文本") + private String projectDesc; + + /** + * 项目流程(富文本) + */ + @Schema(description = "项目流程(富文本)", example = "富文本") + private String projectFlow; + + /** + * 项目通知列表 + */ + @Schema(description = "项目通知列表") + private List projectNotificationVOList; + + /** + * 项目明细列表 + */ + @Schema(description = "项目明细列表") + private List projectDetailVOList; + + + @Serial + private static final long serialVersionUID = 1L; + +} diff --git a/src/main/java/com/greenorange/promotion/model/vo/userAccount/UserAccountVO.java b/src/main/java/com/greenorange/promotion/model/vo/userAccount/UserAccountVO.java new file mode 100644 index 0000000..8bd19fb --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/vo/userAccount/UserAccountVO.java @@ -0,0 +1,51 @@ +package com.greenorange.promotion.model.vo.userAccount; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 用户账户 视图对象 + */ +@Data +@Schema(description = "用户账户 视图对象") +public class UserAccountVO implements Serializable { + + /** + * 用户账户ID + */ + @Schema(description = "用户账户ID", example = "1") + private Long id; + + /** + * 持卡人 + */ + @Schema(description = "持卡人", example = "chenxinzhi") + private String cardHolder; + + /** + * 身份证号 + */ + @Schema(description = "身份证号", example = "110101199001011234") + private String idCardNumber; + + /** + * 手机号 + */ + @Schema(description = "手机号", example = "15888610253") + private String phoneNumber; + + /** + * 银行卡号 + */ + @Schema(description = "银行卡号", example = "5105105105105100") + private String bankCardNumber; + + + + @Serial + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/greenorange/promotion/model/vo/withdrawalApply/WithdrawalApplyVO.java b/src/main/java/com/greenorange/promotion/model/vo/withdrawalApply/WithdrawalApplyVO.java index c47708b..d45e56b 100644 --- a/src/main/java/com/greenorange/promotion/model/vo/withdrawalApply/WithdrawalApplyVO.java +++ b/src/main/java/com/greenorange/promotion/model/vo/withdrawalApply/WithdrawalApplyVO.java @@ -32,12 +32,6 @@ public class WithdrawalApplyVO implements Serializable { @Schema(description = "提现状态", example = "processing") private String withdrawalStatus; - /** - * 用户ID - */ - @Schema(description = "用户ID", example = "1") - private Long userId; - @Serial private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/greenorange/promotion/service/settle/UserAccountService.java b/src/main/java/com/greenorange/promotion/service/settle/UserAccountService.java new file mode 100644 index 0000000..0527893 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/service/settle/UserAccountService.java @@ -0,0 +1,13 @@ +package com.greenorange.promotion.service.settle; + +import com.greenorange.promotion.model.entity.UserAccount; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author 35880 +* @description 针对表【user_account(用户账户表)】的数据库操作Service +* @createDate 2025-05-11 01:44:18 +*/ +public interface UserAccountService extends IService { + +} diff --git a/src/main/java/com/greenorange/promotion/service/settle/impl/UserAccountServiceImpl.java b/src/main/java/com/greenorange/promotion/service/settle/impl/UserAccountServiceImpl.java new file mode 100644 index 0000000..1ca6320 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/service/settle/impl/UserAccountServiceImpl.java @@ -0,0 +1,22 @@ +package com.greenorange.promotion.service.settle.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.greenorange.promotion.model.entity.UserAccount; +import com.greenorange.promotion.service.settle.UserAccountService; +import com.greenorange.promotion.mapper.UserAccountMapper; +import org.springframework.stereotype.Service; + +/** +* @author 35880 +* @description 针对表【user_account(用户账户表)】的数据库操作Service实现 +* @createDate 2025-05-11 01:44:18 +*/ +@Service +public class UserAccountServiceImpl extends ServiceImpl + implements UserAccountService{ + +} + + + + diff --git a/src/main/resources/mapper/UserAccountMapper.xml b/src/main/resources/mapper/UserAccountMapper.xml new file mode 100644 index 0000000..6c340d0 --- /dev/null +++ b/src/main/resources/mapper/UserAccountMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + id,cardHolder,idCardNumber, + phoneNumber,bankCardNumber,userId, + isDelete,createTime,updateTime + +