已完成小程序端的项目查询

This commit is contained in:
chen-xin-zhi 2025-05-11 19:55:57 +08:00
parent 2e33a08a33
commit 3eea5f4dec
8 changed files with 238 additions and 116 deletions

View File

@ -1,5 +1,6 @@
package com.greenorange.promotion.controller.userInfo; package com.greenorange.promotion.controller.userInfo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.greenorange.promotion.annotation.RequiresPermission; import com.greenorange.promotion.annotation.RequiresPermission;
import com.greenorange.promotion.annotation.SysLog; import com.greenorange.promotion.annotation.SysLog;
import com.greenorange.promotion.common.BaseResponse; import com.greenorange.promotion.common.BaseResponse;
@ -10,9 +11,13 @@ import com.greenorange.promotion.exception.ThrowUtils;
import com.greenorange.promotion.model.dto.CommonBatchRequest; import com.greenorange.promotion.model.dto.CommonBatchRequest;
import com.greenorange.promotion.model.dto.userMainInfo.UserMainInfoAddRequest; import com.greenorange.promotion.model.dto.userMainInfo.UserMainInfoAddRequest;
import com.greenorange.promotion.model.dto.userMainInfo.UserMainInfoUpdateRequest; import com.greenorange.promotion.model.dto.userMainInfo.UserMainInfoUpdateRequest;
import com.greenorange.promotion.model.entity.UserInfo;
import com.greenorange.promotion.model.entity.UserMainInfo; import com.greenorange.promotion.model.entity.UserMainInfo;
import com.greenorange.promotion.model.vo.userMainInfo.UserMainInfoVO; import com.greenorange.promotion.model.vo.userMainInfo.UserMainInfoVO;
import com.greenorange.promotion.model.vo.userMainInfo.UserMemberInfoVO;
import com.greenorange.promotion.model.vo.userMainInfo.UserTeamInfoVO;
import com.greenorange.promotion.service.common.CommonService; import com.greenorange.promotion.service.common.CommonService;
import com.greenorange.promotion.service.userInfo.UserInfoService;
import com.greenorange.promotion.service.userInfo.UserMainInfoService; import com.greenorange.promotion.service.userInfo.UserMainInfoService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
@ -26,7 +31,10 @@ import jakarta.validation.Valid;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
@ -38,6 +46,9 @@ import java.util.List;
@Tag(name = "用户主要信息管理") @Tag(name = "用户主要信息管理")
public class UserMainInfoController { public class UserMainInfoController {
@Resource
private UserInfoService userInfoService;
@Resource @Resource
private UserMainInfoService userMainInfoService; private UserMainInfoService userMainInfoService;
@ -55,86 +66,115 @@ public class UserMainInfoController {
@SysLog(title = "用户主要信息管理", content = "小程序用户查询团队信息") @SysLog(title = "用户主要信息管理", content = "小程序用户查询团队信息")
public BaseResponse<Boolean> queryUserTeamInfo(HttpServletRequest request) { public BaseResponse<Boolean> queryUserTeamInfo(HttpServletRequest request) {
Long userId = (Long) request.getAttribute("userId"); Long userId = (Long) request.getAttribute("userId");
LambdaQueryWrapper<UserInfo> userInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
userInfoLambdaQueryWrapper.eq(UserInfo::getParentUserId, userId);
List<UserInfo> userInfoList = userInfoService.list(userInfoLambdaQueryWrapper);
List<UserMainInfo> userMainInfoList = commonService.findByFieldInTargetField(userInfoList, userMainInfoService, UserInfo::getId, "userId");
// 封装Map集合用户id用户信息
Map<Long, UserInfo> userInfoMap = new HashMap<>();
for (UserInfo userInfo : userInfoList) {
userInfoMap.put(userInfo.getId(), userInfo);
}
// 封装Map集合用户id用户主要信息
Map<Long, UserMainInfo> userMainInfoMap = new HashMap<>();
for (UserMainInfo userMainInfo : userMainInfoList) {
userMainInfoMap.put(userMainInfo.getUserId(), userMainInfo);
}
List<UserMemberInfoVO> userMemberInfoVOList = new ArrayList<>();
for (UserInfo userInfo : userInfoList) {
Long id = userInfo.getId();
UserInfo userInformation = userInfoMap.get(id);
UserMainInfo userMainInfo = userMainInfoMap.get(id);
UserMemberInfoVO userMemberInfoVO = UserMemberInfoVO.builder()
.subUserId(id)
.nickName(userInformation.getNickName())
.phoneNumber(userInformation.getPhoneNumber())
.teamSize(userMainInfo.getTeamSize())
.parentEarnings(userMainInfo.getParentEarnings())
.registerTime(userInformation.getCreateTime())
.build();
userMemberInfoVOList.add(userMemberInfoVO);
}
return ResultUtils.success(true); return ResultUtils.success(true);
} }
/** // /**
* web端管理员添加用户主要信息 // * web端管理员添加用户主要信息
* @param userMainInfoAddRequest 用户主要信息添加请求体 // * @param userMainInfoAddRequest 用户主要信息添加请求体
* @return 是否添加成功 // * @return 是否添加成功
*/ // */
@PostMapping("add") // @PostMapping("add")
@Operation(summary = "web端管理员添加用户主要信息", description = "参数用户主要信息添加请求体权限管理员方法名addUserMainInfo") // @Operation(summary = "web端管理员添加用户主要信息", description = "参数用户主要信息添加请求体权限管理员方法名addUserMainInfo")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) // @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "用户主要信息管理", content = "web端管理员添加用户主要信息") // @SysLog(title = "用户主要信息管理", content = "web端管理员添加用户主要信息")
public BaseResponse<Boolean> addUserMainInfo(@Valid @RequestBody UserMainInfoAddRequest userMainInfoAddRequest) { // public BaseResponse<Boolean> addUserMainInfo(@Valid @RequestBody UserMainInfoAddRequest userMainInfoAddRequest) {
UserMainInfo userMainInfo = commonService.copyProperties(userMainInfoAddRequest, UserMainInfo.class); // UserMainInfo userMainInfo = commonService.copyProperties(userMainInfoAddRequest, UserMainInfo.class);
userMainInfoService.save(userMainInfo); // userMainInfoService.save(userMainInfo);
return ResultUtils.success(true); // return ResultUtils.success(true);
} // }
//
/** // /**
* web端管理员根据id修改用户主要信息信息 // * web端管理员根据id修改用户主要信息信息
* @param userMainInfoUpdateRequest 用户主要信息更新请求体 // * @param userMainInfoUpdateRequest 用户主要信息更新请求体
* @return 是否更新成功 // * @return 是否更新成功
*/ // */
@PostMapping("update") // @PostMapping("update")
@Operation(summary = "web端管理员更新用户主要信息", description = "参数用户主要信息更新请求体权限管理员方法名updateUserMainInfo") // @Operation(summary = "web端管理员更新用户主要信息", description = "参数用户主要信息更新请求体权限管理员方法名updateUserMainInfo")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) // @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "用户主要信息管理", content = "web端管理员根据id修改用户主要信息信息") // @SysLog(title = "用户主要信息管理", content = "web端管理员根据id修改用户主要信息信息")
public BaseResponse<Boolean> updateUserMainInfo(@Valid @RequestBody UserMainInfoUpdateRequest userMainInfoUpdateRequest) { // public BaseResponse<Boolean> updateUserMainInfo(@Valid @RequestBody UserMainInfoUpdateRequest userMainInfoUpdateRequest) {
UserMainInfo userMainInfo = commonService.copyProperties(userMainInfoUpdateRequest, UserMainInfo.class); // UserMainInfo userMainInfo = commonService.copyProperties(userMainInfoUpdateRequest, UserMainInfo.class);
userMainInfoService.updateById(userMainInfo); // userMainInfoService.updateById(userMainInfo);
return ResultUtils.success(true); // return ResultUtils.success(true);
} // }
//
/** // /**
* web端管理员根据id删除用户主要信息 // * web端管理员根据id删除用户主要信息
* @param commonRequest 用户主要信息删除请求体 // * @param commonRequest 用户主要信息删除请求体
* @return 是否删除成功 // * @return 是否删除成功
*/ // */
@PostMapping("delete") // @PostMapping("delete")
@Operation(summary = "web端管理员根据id删除用户主要信息", description = "参数用户主要信息删除请求体权限管理员方法名delUserMainInfo") // @Operation(summary = "web端管理员根据id删除用户主要信息", description = "参数用户主要信息删除请求体权限管理员方法名delUserMainInfo")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) // @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "用户主要信息管理", content = "web端管理员根据id删除用户主要信息") // @SysLog(title = "用户主要信息管理", content = "web端管理员根据id删除用户主要信息")
public BaseResponse<Boolean> delUserMainInfo(@Valid @RequestBody CommonRequest commonRequest) { // public BaseResponse<Boolean> delUserMainInfo(@Valid @RequestBody CommonRequest commonRequest) {
Long id = commonRequest.getId(); // Long id = commonRequest.getId();
userMainInfoService.removeById(id); // userMainInfoService.removeById(id);
return ResultUtils.success(true); // return ResultUtils.success(true);
} // }
//
/** // /**
* web端管理员批量删除用户主要信息 // * web端管理员批量删除用户主要信息
* @param commonBatchRequest 用户主要信息批量删除请求体 // * @param commonBatchRequest 用户主要信息批量删除请求体
* @return 是否删除成功 // * @return 是否删除成功
*/ // */
@PostMapping("delBatch") // @PostMapping("delBatch")
@Operation(summary = "web端管理员批量删除用户主要信息", description = "参数用户主要信息批量删除请求体权限管理员方法名delBatchUserMainInfo") // @Operation(summary = "web端管理员批量删除用户主要信息", description = "参数用户主要信息批量删除请求体权限管理员方法名delBatchUserMainInfo")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) // @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "用户主要信息管理", content = "web端管理员批量删除用户主要信息") // @SysLog(title = "用户主要信息管理", content = "web端管理员批量删除用户主要信息")
public BaseResponse<Boolean> delBatchUserMainInfo(@Valid @RequestBody CommonBatchRequest commonBatchRequest) { // public BaseResponse<Boolean> delBatchUserMainInfo(@Valid @RequestBody CommonBatchRequest commonBatchRequest) {
List<Long> ids = commonBatchRequest.getIds(); // List<Long> ids = commonBatchRequest.getIds();
userMainInfoService.removeByIds(ids); // userMainInfoService.removeByIds(ids);
return ResultUtils.success(true); // return ResultUtils.success(true);
} // }
//
/** // /**
* web端管理员根据id查询用户主要信息 // * web端管理员根据id查询用户主要信息
* @param commonRequest 用户主要信息查询请求体 // * @param commonRequest 用户主要信息查询请求体
* @return 用户主要信息信息 // * @return 用户主要信息信息
*/ // */
@PostMapping("queryById") // @PostMapping("queryById")
@Operation(summary = "web端管理员根据id查询用户主要信息", description = "参数用户主要信息查询请求体权限管理员方法名queryUserMainInfoById") // @Operation(summary = "web端管理员根据id查询用户主要信息", description = "参数用户主要信息查询请求体权限管理员方法名queryUserMainInfoById")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE) // @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "用户主要信息管理", content = "web端管理员根据id查询用户主要信息") // @SysLog(title = "用户主要信息管理", content = "web端管理员根据id查询用户主要信息")
public BaseResponse<UserMainInfoVO> queryUserMainInfoById(@Valid @RequestBody CommonRequest commonRequest) { // public BaseResponse<UserMainInfoVO> queryUserMainInfoById(@Valid @RequestBody CommonRequest commonRequest) {
Long id = commonRequest.getId(); // Long id = commonRequest.getId();
UserMainInfo userMainInfo = userMainInfoService.getById(id); // UserMainInfo userMainInfo = userMainInfoService.getById(id);
ThrowUtils.throwIf(userMainInfo == null, ErrorCode.OPERATION_ERROR, "当前用户主要信息不存在"); // ThrowUtils.throwIf(userMainInfo == null, ErrorCode.OPERATION_ERROR, "当前用户主要信息不存在");
UserMainInfoVO userMainInfoVO = commonService.copyProperties(userMainInfo, UserMainInfoVO.class); // UserMainInfoVO userMainInfoVO = commonService.copyProperties(userMainInfo, UserMainInfoVO.class);
return ResultUtils.success(userMainInfoVO); // return ResultUtils.success(userMainInfoVO);
} // }
// /** // /**
// * Web端管理员分页查询用户主要信息 // * Web端管理员分页查询用户主要信息

View File

@ -15,6 +15,7 @@ import java.math.BigDecimal;
@Data @Data
@Schema(description = "用户主要信息添加请求体", requiredProperties = { @Schema(description = "用户主要信息添加请求体", requiredProperties = {
"teamSize", "teamSize",
"teamEarnings",
"parentEarnings", "parentEarnings",
"currentBalance", "currentBalance",
"withdrawalAmount", "withdrawalAmount",
@ -31,6 +32,12 @@ public class UserMainInfoAddRequest implements Serializable {
@Schema(description = "团队人数(不包括自己)", example = "10") @Schema(description = "团队人数(不包括自己)", example = "10")
private Integer teamSize; private Integer teamSize;
/**
* 团队收益
*/
@Schema(description = "团队收益", example = "40.00")
private BigDecimal teamEarnings;
/** /**
* 给上级带来的收益 * 给上级带来的收益
*/ */

View File

@ -31,6 +31,12 @@ public class UserMainInfoQueryRequest extends PageRequest implements Serializabl
@Schema(description = "团队人数(不包括自己)", example = "10") @Schema(description = "团队人数(不包括自己)", example = "10")
private Integer teamSize; private Integer teamSize;
/**
* 团队收益
*/
@Schema(description = "团队收益", example = "40.00")
private BigDecimal teamEarnings;
/** /**
* 给上级带来的收益 * 给上级带来的收益
*/ */

View File

@ -16,6 +16,7 @@ import java.math.BigDecimal;
@Schema(description = "用户主要信息更新请求体", requiredProperties = { @Schema(description = "用户主要信息更新请求体", requiredProperties = {
"id", "id",
"teamSize", "teamSize",
"teamEarnings",
"parentEarnings", "parentEarnings",
"currentBalance", "currentBalance",
"withdrawalAmount", "withdrawalAmount",
@ -39,6 +40,12 @@ public class UserMainInfoUpdateRequest implements Serializable {
@Schema(description = "团队人数(不包括自己)", example = "10") @Schema(description = "团队人数(不包括自己)", example = "10")
private Integer teamSize; private Integer teamSize;
/**
* 团队收益
*/
@Schema(description = "团队收益", example = "40.00")
private BigDecimal teamEarnings;
/** /**
* 给上级带来的收益 * 给上级带来的收益
*/ */

View File

@ -62,6 +62,11 @@ public class UserMainInfo implements Serializable {
*/ */
private String inviteQrCode; private String inviteQrCode;
/**
* 团队收益
*/
private BigDecimal teamEarnings;
/** /**
* 是否删除 * 是否删除
*/ */

View File

@ -23,49 +23,55 @@ public class UserMainInfoVO implements Serializable {
/** /**
* 团队人数不包括自己 * 团队人数不包括自己
*/ */
@Schema(description = "团队人数(不包括自己)", example = "${field.example}") @Schema(description = "团队人数(不包括自己)", example = "8")
private Integer teamSize; private Integer teamSize;
/**
* 团队收益
*/
@Schema(description = "团队收益", example = "25.00")
private BigDecimal teamEarnings;
/** /**
* 给上级带来的收益 * 给上级带来的收益
*/ */
@Schema(description = "给上级带来的收益", example = "${field.example}") @Schema(description = "给上级带来的收益", example = "8.00")
private BigDecimal parentEarnings; private BigDecimal parentEarnings;
/** /**
* 当前余额 * 当前余额
*/ */
@Schema(description = "当前余额", example = "${field.example}") @Schema(description = "当前余额", example = "10.00")
private BigDecimal currentBalance; private BigDecimal currentBalance;
/** /**
* 提现中的金额 * 提现中的金额
*/ */
@Schema(description = "提现中的金额", example = "${field.example}") @Schema(description = "提现中的金额", example = "15.00")
private BigDecimal withdrawalAmount; private BigDecimal withdrawalAmount;
/** /**
* 已提现的金额 * 已提现的金额
*/ */
@Schema(description = "已提现的金额", example = "${field.example}") @Schema(description = "已提现的金额", example = "20.00")
private BigDecimal withdrawnAmount; private BigDecimal withdrawnAmount;
/** /**
* 累计收入 * 累计收入
*/ */
@Schema(description = "累计收入", example = "${field.example}") @Schema(description = "累计收入", example = "100.00")
private BigDecimal totalIncome; private BigDecimal totalIncome;
/** /**
* 用户id * 用户id
*/ */
@Schema(description = "用户id", example = "${field.example}") @Schema(description = "用户id", example = "1")
private Long userId; private Long userId;
/** /**
* 邀请二维码 * 邀请二维码
*/ */
@Schema(description = "邀请二维码", example = "${field.example}") @Schema(description = "邀请二维码", example = "3KD3H8D7")
private String inviteQrCode; private String inviteQrCode;

View File

@ -0,0 +1,60 @@
package com.greenorange.promotion.model.vo.userMainInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class UserMemberInfoVO implements Serializable {
/**
* 下级用户id
*/
@Schema(description = "下级用户id", example = "5")
private Long subUserId;
/**
* 用户昵称
*/
@Schema(description = "用户昵称", example = "chenxinzhi")
private String nickName;
/**
* 手机号
*/
@Schema(description = "手机号", example = "15888610253")
private String phoneNumber;
/**
* 团队人数不包括自己
*/
@Schema(description = "团队人数(不包括自己)", example = "10")
private Integer teamSize;
/**
* 给上级带来的收益
*/
@Schema(description = "给上级带来的收益", example = "16.33")
private BigDecimal parentEarnings;
/**
* 注册时间
*/
@Schema(description = "注册时间", example = "2025-05-11 12:00:00")
private Date registerTime;
@Serial
private static final long serialVersionUID = 1L;
}

View File

@ -1,67 +1,58 @@
package com.greenorange.promotion.model.vo.userMainInfo; package com.greenorange.promotion.model.vo.userMainInfo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
@Data @Data
@Schema(description = "用户团队信息 视图对象") @NoArgsConstructor
@AllArgsConstructor
@Builder
public class UserTeamInfoVO implements Serializable { public class UserTeamInfoVO implements Serializable {
/**
* 用户主要信息ID
*/
@Schema(description = "用户主要信息ID", example = "1")
private Long id;
/** /**
* 团队人数不包括自己 * 团队人数不包括自己
*/ */
@Schema(description = "团队人数(不包括自己)", example = "${field.example}") @Schema(description = "团队人数(不包括自己)", example = "8")
private Integer teamSize; private Integer teamSize;
/** /**
* 给上级带来的收益 * 直接代理人数
*/ */
@Schema(description = "给上级带来的收益", example = "${field.example}") @Schema(description = "直接代理人数", example = "5")
private BigDecimal parentEarnings; private Integer directAgentSize;
/** /**
* 当前余额 * 团队收益
*/ */
@Schema(description = "当前余额", example = "${field.example}") @Schema(description = "团队收益", example = "25.00")
private BigDecimal currentBalance; private BigDecimal teamEarnings;
/** /**
* 提现中的金额 * 邀请码
*/ */
@Schema(description = "提现中的金额", example = "${field.example}") @Schema(description = "邀请码", example = "666999")
private BigDecimal withdrawalAmount; private String invitationCode;
/**
* 已提现的金额
*/
@Schema(description = "已提现的金额", example = "${field.example}")
private BigDecimal withdrawnAmount;
/**
* 累计收入
*/
@Schema(description = "累计收入", example = "${field.example}")
private BigDecimal totalIncome;
/** /**
* 邀请二维码 * 邀请二维码
*/ */
@Schema(description = "邀请二维码", example = "${field.example}") @Schema(description = "邀请二维码", example = "3KD3H8D7")
private String inviteQrCode; private String inviteQrCode;
/**
* 下级用户信息列表
*/
@Schema(description = "下级用户信息列表")
private List<UserMemberInfoVO> userMemberInfoVOList;
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
} }