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 1c0d93d..8d18cd8 100644 --- a/src/main/java/com/greenorange/promotion/controller/userInfo/UserInfoController.java +++ b/src/main/java/com/greenorange/promotion/controller/userInfo/UserInfoController.java @@ -1,5 +1,7 @@ package com.greenorange.promotion.controller.userInfo; +import cn.binarywang.wx.miniapp.api.WxMaQrcodeService; +import cn.binarywang.wx.miniapp.bean.WxMaQrcode; import com.auth0.jwt.interfaces.DecodedJWT; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -23,6 +25,7 @@ import com.greenorange.promotion.model.vo.userMainInfo.UserMainInfoVO; 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.wechat.WechatGetQrcodeService; import com.greenorange.promotion.utils.JWTUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -35,6 +38,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -72,6 +76,27 @@ public class UserInfoController { private JWTUtils jwtUtils; + @Resource + private WechatGetQrcodeService wechatGetQrcodeService; + + + + @PostMapping("test") + public BaseResponse test() throws IOException { + List list = userInfoService.list(); + List userMainInfoList = userMainInfoService.list(); + for (UserInfo userInfo : list) { + String userRole = userInfo.getUserRole(); + UserRoleEnum userRoleEnum = UserRoleEnum.getEnumByValue(userRole); + String wxQrCode = wechatGetQrcodeService.getWxQrCode(userInfo.getInvitationCode(), userRoleEnum); + UserMainInfo userMainInfo = UserMainInfo.builder().userId(userInfo.getId()).inviteQrCode(wxQrCode).build(); + userMainInfoList.add(userMainInfo); + } + userMainInfoService.saveOrUpdateBatch(userMainInfoList); + return ResultUtils.success(true); + } + + /** @@ -81,7 +106,6 @@ public class UserInfoController { */ @PostMapping("code/register") @Operation(summary = "小程序端用户获取验证码(用于注册)", description = "参数:手机号,权限:管理员(boss, admin),方法名:getVerificationCodeForRegister") -// @SysLog(title = "用户管理", content = "小程序端用户获取验证码") public BaseResponse getVerificationCodeForRegister(@Valid @RequestBody CommonStringRequest commonStringRequest) { String phoneNumber = commonStringRequest.getTemplateString(); String verificationCode = userInfoService.getVerificationCodeForRegister(phoneNumber); diff --git a/src/main/java/com/greenorange/promotion/controller/userInfo/UserPerformanceSummaryController.java b/src/main/java/com/greenorange/promotion/controller/userInfo/UserPerformanceSummaryController.java index 9886cb1..515d188 100644 --- a/src/main/java/com/greenorange/promotion/controller/userInfo/UserPerformanceSummaryController.java +++ b/src/main/java/com/greenorange/promotion/controller/userInfo/UserPerformanceSummaryController.java @@ -755,7 +755,7 @@ public class UserPerformanceSummaryController { */ @PostMapping("rank/supervisor") @Operation(summary = "小程序端经理查询主管绩效排名", description = "参数:小程序端绩效排名查询请求体,权限:管理员,方法名:miniListSupervisorPerformanceSummaryRankingsByPage") - @RequiresPermission(mustRole = UserConstant.MANAGER_ROLE) + @RequiresPermission(mustRole = UserConstant.SUPERVISOR_ROLE) public BaseResponse> miniListSupervisorPerformanceSummaryRankingsByPage(@Valid @RequestBody MiniUserPerformanceSummaryRankQueryRequest miniUserPerformanceSummaryRankQueryRequest) { String startTimeStr = miniUserPerformanceSummaryRankQueryRequest.getStartDate(); String endTimeStr = miniUserPerformanceSummaryRankQueryRequest.getEndDate(); @@ -862,14 +862,19 @@ public class UserPerformanceSummaryController { /** - * 小程序端主管查询员工绩效排名 + * 小程序端主管(经理)查询员工绩效排名 * @param miniUserPerformanceSummaryRankQueryRequest 绩效排名查询请求体 * @return 用户绩效汇总列表 */ @PostMapping("rank/staff") - @Operation(summary = "小程序端主管查询员工绩效排名", description = "参数:绩效排名查询请求体,权限:管理员,方法名:miniListStaffUserPerformanceSummaryRankingsByPage") - @RequiresPermission(mustRole = UserConstant.SUPERVISOR_ROLE) - public BaseResponse> miniListStaffUserPerformanceSummaryRankingsByPage(@Valid @RequestBody MiniUserPerformanceSummaryRankQueryRequest miniUserPerformanceSummaryRankQueryRequest) { + @Operation(summary = "小程序端主管(经理)查询员工绩效排名", description = "参数:绩效排名查询请求体,权限:管理员,方法名:miniListStaffUserPerformanceSummaryRankingsByPage") + @RequiresPermission(mustRole = UserConstant.STAFF_ROLE) + public BaseResponse> miniListStaffUserPerformanceSummaryRankingsByPage(@Valid @RequestBody MiniUserPerformanceSummaryRankQueryRequest miniUserPerformanceSummaryRankQueryRequest, HttpServletRequest request) { + Long currentUserId = (Long) request.getAttribute("userId"); + UserInfo currentUserInfo = userInfoService.getById(currentUserId); + UserRoleEnum userRoleEnum = UserRoleEnum.getEnumByValue(currentUserInfo.getUserRole()); + if (UserRoleEnum.STAFF.equals(userRoleEnum)) currentUserId = currentUserInfo.getParentUserId(); + String startTimeStr = miniUserPerformanceSummaryRankQueryRequest.getStartDate(); String endTimeStr = miniUserPerformanceSummaryRankQueryRequest.getEndDate(); String nickName = miniUserPerformanceSummaryRankQueryRequest.getNickName(); @@ -889,6 +894,7 @@ public class UserPerformanceSummaryController { empQueryWrapper.ge(StringUtils.isNotBlank(startTimeStr), EmployeePromotionRecords::getCreateTime, startDate); empQueryWrapper.le(StringUtils.isNotBlank(endTimeStr), EmployeePromotionRecords::getCreateTime, endDate); } + if (!UserRoleEnum.MANAGER.equals(userRoleEnum)) empQueryWrapper.eq(EmployeePromotionRecords::getFirstUserId, currentUserId); empQueryWrapper.select(EmployeePromotionRecords::getSecondUserId); List employeePromotionRecordsList = employeePromotionRecordsService.list(empQueryWrapper); // 封装Map集合(键:员工id, 值:推广数量) @@ -907,6 +913,7 @@ public class UserPerformanceSummaryController { LambdaQueryWrapper coursePromotionQueryWrapper = new LambdaQueryWrapper<>(); coursePromotionQueryWrapper.ge(StringUtils.isNotBlank(startTimeStr), CoursePromotionCommissionPending::getOrderCreateTime, startDate); coursePromotionQueryWrapper.le(StringUtils.isNotBlank(endTimeStr), CoursePromotionCommissionPending::getOrderCreateTime, endDate); + if (!UserRoleEnum.MANAGER.equals(userRoleEnum)) coursePromotionQueryWrapper.eq(CoursePromotionCommissionPending::getFirstUserId, currentUserId); coursePromotionQueryWrapper.select(CoursePromotionCommissionPending::getSecondUserId, CoursePromotionCommissionPending::getTotalAmount, CoursePromotionCommissionPending::getUpdateTime, CoursePromotionCommissionPending::getCommissionStatus); List coursePromotionCommissionPendingList = coursePromotionCommissionPendingService.list(coursePromotionQueryWrapper); @@ -936,8 +943,8 @@ public class UserPerformanceSummaryController { } LambdaQueryWrapper userInfoLambdaQueryWrapper = new LambdaQueryWrapper<>(); userInfoLambdaQueryWrapper.eq(StringUtils.isNotBlank(nickName), UserInfo::getNickName, nickName) - .eq(StringUtils.isNotBlank(phoneNumber), UserInfo::getPhoneNumber, phoneNumber) - .eq(UserInfo::getUserRole, UserConstant.STAFF_ROLE); + .eq(StringUtils.isNotBlank(phoneNumber), UserInfo::getPhoneNumber, phoneNumber).eq(UserInfo::getUserRole, UserConstant.STAFF_ROLE); + if (!UserRoleEnum.MANAGER.equals(userRoleEnum)) userInfoLambdaQueryWrapper.eq(UserInfo::getParentUserId, currentUserId); userInfoLambdaQueryWrapper.select(UserInfo::getId, UserInfo::getNickName, UserInfo::getPhoneNumber); List userInfoList = userInfoService.list(userInfoLambdaQueryWrapper); List userPerformanceSummaryList = commonService.findByFieldInTargetField(userInfoList, userPerformanceSummaryService, UserInfo::getId, UserPerformanceSummary::getUserId); diff --git a/src/main/java/com/greenorange/promotion/controller/wechat/WechatGetQrcodeController.java b/src/main/java/com/greenorange/promotion/controller/wechat/WechatGetQrcodeController.java index ba6c932..07683fc 100644 --- a/src/main/java/com/greenorange/promotion/controller/wechat/WechatGetQrcodeController.java +++ b/src/main/java/com/greenorange/promotion/controller/wechat/WechatGetQrcodeController.java @@ -6,6 +6,7 @@ import com.greenorange.promotion.common.ResultUtils; import com.greenorange.promotion.config.WxAccessToken; import com.greenorange.promotion.model.dto.CommonRequest; import com.greenorange.promotion.model.dto.CommonStringRequest; +import com.greenorange.promotion.model.enums.UserRoleEnum; import com.greenorange.promotion.service.wechat.WechatGetQrcodeService; import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.Operation; @@ -51,20 +52,19 @@ public class WechatGetQrcodeController { } -// /** -// * 微信小程序获取二维码 -// * @return -// * @throws IOException -// */ -// @Hidden -// @PostMapping("/get/qrcode") -// @Operation(summary = "微信小程序获取二维码", description = "参数:无, 权限:所有人, 方法名:getQrcode") -//// @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) -// public BaseResponse getQrcode(@Valid @RequestBody CommonStringRequest commonStringRequest) throws IOException { -// String inviteCode = commonStringRequest.getTemplateString(); -// String view = wechatGetQrcodeService.getWxQrCode(inviteCode); -// return ResultUtils.success(view); -// } + /** + * 微信小程序获取二维码 + * @return + * @throws IOException + */ + @PostMapping("/get/qrcode") + @Operation(summary = "微信小程序获取二维码", description = "参数:无, 权限:所有人, 方法名:getQrcode") +// @RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE) + public BaseResponse getQrcode(@Valid @RequestBody CommonStringRequest commonStringRequest) throws IOException { + String inviteCode = commonStringRequest.getTemplateString(); + String view = wechatGetQrcodeService.getWxQrCode(inviteCode, UserRoleEnum.SUPERVISOR); + return ResultUtils.success(view); + } // /** diff --git a/src/main/java/com/greenorange/promotion/model/entity/UserMainInfo.java b/src/main/java/com/greenorange/promotion/model/entity/UserMainInfo.java index 687cbd1..7954101 100644 --- a/src/main/java/com/greenorange/promotion/model/entity/UserMainInfo.java +++ b/src/main/java/com/greenorange/promotion/model/entity/UserMainInfo.java @@ -7,7 +7,12 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; + +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; /** * 用户主要信息表 @@ -15,6 +20,9 @@ import lombok.Data; */ @TableName(value ="user_main_info") @Data +@NoArgsConstructor +@AllArgsConstructor +@Builder public class UserMainInfo implements Serializable { /** * 主键ID 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 c817313..9802325 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 @@ -200,7 +200,9 @@ public class UserInfoServiceImpl extends ServiceImpl updateParentUserInfoEmpCount(myUserInfo.getId(), userRoleEnum); // 生成邀请二维码 - generateInvitationQrcode(myUserInfo.getInvitationCode(), userRoleEnum); + String invitationQrcode = generateInvitationQrcode(myUserInfo.getInvitationCode(), userRoleEnum); + UserMainInfo userMainInfo = UserMainInfo.builder().userId(myUserInfo.getId()).inviteQrCode(invitationQrcode).build(); + userMainInfoService.save(userMainInfo); // // 批量保存当前用户的项目明细抽佣记录和下级用户项目明细抽佣记录 // saveBatchProjectCommissionAndSubUserProjectCommission(myUserInfo.getId(), parentUserInfo.getId()); @@ -404,7 +406,9 @@ public class UserInfoServiceImpl extends ServiceImpl updateParentUserInfoEmpCount(myUserInfo.getId(), UserRoleEnum.STAFF); // 生成邀请二维码 - generateInvitationQrcode(myUserInfo.getInvitationCode(), UserRoleEnum.STAFF); + String invitationQrcode = generateInvitationQrcode(myUserInfo.getInvitationCode(), UserRoleEnum.STAFF); + UserMainInfo userMainInfo = UserMainInfo.builder().userId(userId).inviteQrCode(invitationQrcode).build(); + userMainInfoService.save(userMainInfo); // // 批量保存当前用户的项目明细抽佣记录和下级用户项目明细抽佣记录 // saveBatchProjectCommissionAndSubUserProjectCommission(myUserInfo.getId(), parentUserInfo.getId()); @@ -492,12 +496,13 @@ public class UserInfoServiceImpl extends ServiceImpl /** * 生成邀请二维码 */ - private void generateInvitationQrcode(String invitationCode, UserRoleEnum userRoleEnum) { + private String generateInvitationQrcode(String invitationCode, UserRoleEnum userRoleEnum) { try { - wechatGetQrcodeService.getWxQrCode(invitationCode, userRoleEnum); + return wechatGetQrcodeService.getWxQrCode(invitationCode, userRoleEnum); } catch (IOException e) { e.printStackTrace(); } + return null; } diff --git a/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserPerformanceSummaryServiceImpl.java b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserPerformanceSummaryServiceImpl.java index 780d938..6079b8d 100644 --- a/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserPerformanceSummaryServiceImpl.java +++ b/src/main/java/com/greenorange/promotion/service/userInfo/impl/UserPerformanceSummaryServiceImpl.java @@ -240,14 +240,15 @@ public class UserPerformanceSummaryServiceImpl extends ServiceImpl coursePromotionQueryWrapper = new QueryWrapper<>(); - coursePromotionQueryWrapper.ge("orderCreateTime", beginOfDay); - coursePromotionQueryWrapper.le("orderCreateTime", endOfDay); + LambdaQueryWrapper coursePromotionQueryWrapper = new LambdaQueryWrapper<>(); + coursePromotionQueryWrapper.ge(CoursePromotionCommissionPending::getOrderCreateTime, beginOfDay); + coursePromotionQueryWrapper.le(CoursePromotionCommissionPending::getOrderCreateTime, endOfDay); if (UserRoleEnum.SUPERVISOR.equals(userRoleEnum)) { - coursePromotionQueryWrapper.eq("firstUserId", userId); + coursePromotionQueryWrapper.eq(CoursePromotionCommissionPending::getFirstUserId, userId); } else if (UserRoleEnum.STAFF.equals(userRoleEnum)) { - coursePromotionQueryWrapper.eq("secondUserId", userId); + coursePromotionQueryWrapper.eq(CoursePromotionCommissionPending::getSecondUserId, userId); } + coursePromotionQueryWrapper.select(CoursePromotionCommissionPending::getTotalAmount, CoursePromotionCommissionPending::getCommissionStatus); List coursePromotionCommissionPendingList = coursePromotionCommissionPendingService.list(coursePromotionQueryWrapper); orderCount = coursePromotionCommissionPendingList.size(); for (CoursePromotionCommissionPending coursePromotionCommissionPending : coursePromotionCommissionPendingList) { @@ -261,16 +262,16 @@ public class UserPerformanceSummaryServiceImpl extends ServiceImpl empQueryWrapper = new QueryWrapper<>(); - empQueryWrapper.ge("createTime", beginOfDay); - empQueryWrapper.le("createTime", endOfDay); + LambdaQueryWrapper empQueryWrapper = new LambdaQueryWrapper<>(); + empQueryWrapper.ge(EmployeePromotionRecords::getCreateTime, beginOfDay); + empQueryWrapper.le(EmployeePromotionRecords::getCreateTime, endOfDay); if (UserRoleEnum.SUPERVISOR.equals(userRoleEnum)) { - coursePromotionQueryWrapper.eq("firstUserId", userId); + empQueryWrapper.eq(EmployeePromotionRecords::getFirstUserId, userId); } else if (UserRoleEnum.STAFF.equals(userRoleEnum)) { - coursePromotionQueryWrapper.eq("secondUserId", userId); + empQueryWrapper.eq(EmployeePromotionRecords::getSecondUserId, userId); } - List employeePromotionRecordsList = employeePromotionRecordsService.list(empQueryWrapper); - promotionCount = employeePromotionRecordsList.size(); + empQueryWrapper.select(EmployeePromotionRecords::getId); + promotionCount = Math.toIntExact(employeePromotionRecordsService.count(empQueryWrapper)); performanceSummaryMap.put("orderCount", orderCount); performanceSummaryMap.put("orderAmount", orderAmount); @@ -310,11 +311,18 @@ public class UserPerformanceSummaryServiceImpl extends ServiceImpl userRoleMap = new HashMap<>(); - List userInfoList = userInfoMapper.selectList(null); + LambdaQueryWrapper userInfoQueryWrapper = new LambdaQueryWrapper<>(); + userInfoQueryWrapper.select(UserInfo::getId, UserInfo::getUserRole); + List userInfoList = userInfoMapper.selectList(userInfoQueryWrapper); for (UserInfo userInfo : userInfoList) { userRoleMap.put(userInfo.getId(), userInfo.getUserRole()); } - List userPerformanceSummaryList = this.list(); + LambdaQueryWrapper userPerformanceSummaryQueryWrapper = new LambdaQueryWrapper<>(); + userPerformanceSummaryQueryWrapper.select(UserPerformanceSummary::getUserId, UserPerformanceSummary::getTotalAmount, + UserPerformanceSummary::getNetAmount, UserPerformanceSummary::getPromoCount, UserPerformanceSummary::getEmpCount, + UserPerformanceSummary::getOrderCount, UserPerformanceSummary::getToRelease, UserPerformanceSummary::getToSettle, + UserPerformanceSummary::getSettled, UserPerformanceSummary::getRefunded); + List userPerformanceSummaryList = this.list(userPerformanceSummaryQueryWrapper); for (UserPerformanceSummary userPerformanceSummary : userPerformanceSummaryList) { Long userId = userPerformanceSummary.getUserId(); String userRole = userRoleMap.get(userId); diff --git a/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatGetQrcodeServiceImpl.java b/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatGetQrcodeServiceImpl.java index 2e94edb..ab88e82 100644 --- a/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatGetQrcodeServiceImpl.java +++ b/src/main/java/com/greenorange/promotion/service/wechat/impl/WechatGetQrcodeServiceImpl.java @@ -118,7 +118,7 @@ public class WechatGetQrcodeServiceImpl implements WechatGetQrcodeService { } Map param = new HashMap<>(); param.put("page", "pages/loginModule/register/register"); - param.put("scene", "invitationCode=" + inviteCode); + param.put("scene", inviteCode + "=" + userRoleEnum.getValue()); param.put("width", 430); param.put("check_path", false); param.put("env_version", "develop"); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ad9a171..a17ec4c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,4 +1,4 @@ spring: profiles: - active: dev + active: test