package cn.iocoder.yudao.module.member.controller.admin.user; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.member.controller.admin.user.vo.*; import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert; import cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO; import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; import cn.iocoder.yudao.module.member.dal.dataobject.tag.MemberTagDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; import cn.iocoder.yudao.module.member.enums.point.MemberPointBizTypeEnum; import cn.iocoder.yudao.module.member.service.group.MemberGroupService; import cn.iocoder.yudao.module.member.service.level.MemberLevelService; import cn.iocoder.yudao.module.member.service.point.MemberPointRecordService; import cn.iocoder.yudao.module.member.service.tag.MemberTagService; import cn.iocoder.yudao.module.member.service.user.MemberUserService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.getLoginUserId; @Tag(name = "管理后台 - 会员用户") @RestController @RequestMapping("/member/user") @Validated public class MemberUserController { @Resource private MemberUserService memberUserService; @Resource private MemberTagService memberTagService; @Resource private MemberLevelService memberLevelService; @Resource private MemberGroupService memberGroupService; @Resource private MemberPointRecordService memberPointRecordService; @PutMapping("/update") @Operation(summary = "更新会员用户") @PreAuthorize("@ss.hasPermission('member:user:update')") public CommonResult updateUser(@Valid @RequestBody MemberUserUpdateReqVO updateReqVO) { memberUserService.updateUser(updateReqVO); return success(true); } @PutMapping("/update-level") @Operation(summary = "更新会员用户等级") @PreAuthorize("@ss.hasPermission('member:user:update-level')") public CommonResult updateUserLevel(@Valid @RequestBody MemberUserUpdateLevelReqVO updateReqVO) { memberLevelService.updateUserLevel(updateReqVO); return success(true); } @PutMapping("/update-point") @Operation(summary = "更新会员用户积分") @PreAuthorize("@ss.hasPermission('member:user:update-point')") public CommonResult updateUserPoint(@Valid @RequestBody MemberUserUpdatePointReqVO updateReqVO) { memberPointRecordService.createPointRecord(updateReqVO.getId(), updateReqVO.getPoint(), MemberPointBizTypeEnum.ADMIN, String.valueOf(getLoginUserId())); return success(true); } @GetMapping("/get") @Operation(summary = "获得会员用户") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('member:user:query')") public CommonResult getUser(@RequestParam("id") Long id) { MemberUserDO user = memberUserService.getUser(id); if (user == null) { return success(null); } MemberUserRespVO userVO = MemberUserConvert.INSTANCE.convert03(user); if (user.getLevelId() != null) { MemberLevelDO level = memberLevelService.getLevel(userVO.getLevelId()); if (level != null) { userVO.setLevelName(level.getName()); } } return success(userVO); } @GetMapping("/page") @Operation(summary = "获得会员用户分页") @PreAuthorize("@ss.hasPermission('member:user:query')") public CommonResult> getUserPage(@Valid MemberUserPageReqVO pageVO) { PageResult pageResult = memberUserService.getUserPage(pageVO); if (CollUtil.isEmpty(pageResult.getList())) { return success(PageResult.empty()); } // 处理用户标签返显 Set tagIds = pageResult.getList().stream() .map(MemberUserDO::getTagIds) .filter(Objects::nonNull) .flatMap(Collection::stream) .collect(Collectors.toSet()); List tags = memberTagService.getTagList(tagIds); // 处理用户级别返显 List levels = memberLevelService.getLevelList( convertSet(pageResult.getList(), MemberUserDO::getLevelId)); // 处理用户分组返显 List groups = memberGroupService.getGroupList( convertSet(pageResult.getList(), MemberUserDO::getGroupId)); return success(MemberUserConvert.INSTANCE.convertPage(pageResult, tags, levels, groups)); } }