feat:用户配置
This commit is contained in:
1 parent
1c4d6b64ba
commit
9055bb29cf
11 files changed
+120
-11
No files matched your search
+1
@@ -17,6 +17,7 @@ public enum MemberRecentTagEnum {
|
||||
|
||||
TRUE_PERSON_AUTH("1", "真人认证"),
|
||||
NEW_PERSON("2", "新人"),
|
||||
HOME_RECOMMEND("3", "首页推荐"),
|
||||
;
|
||||
private final String type;
|
||||
private final String description;
|
||||
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.user;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.module.member.controller.app.user.vo.recentcfg.MemberRecentCfgReqVo;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentCfgDO;
|
||||
import cn.iocoder.yudao.module.member.service.user.MemberRecentCfgService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
|
||||
@Tag(name = "管理后台 - 用户朋友圈配置")
|
||||
@RestController
|
||||
@RequestMapping("/member/recent-cfg")
|
||||
@Validated
|
||||
@Slf4j
|
||||
public class MemberRecentCfgController {
|
||||
|
||||
@Resource
|
||||
private MemberRecentCfgService recentCfgService;
|
||||
|
||||
@PostMapping("/create-or-update")
|
||||
@Operation(summary = "创建或更新配置")
|
||||
public CommonResult<MemberRecentCfgDO> createOrUpdate(@RequestBody MemberRecentCfgReqVo dto) {
|
||||
return success(recentCfgService.createOrUpdate(dto));
|
||||
}
|
||||
|
||||
}
|
||||
+23
-2
@@ -1,6 +1,7 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.user;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
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.*;
|
||||
@@ -8,6 +9,7 @@ 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.MemberRecentCfgDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentTagDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.user.MemberRecentTagMapper;
|
||||
@@ -16,6 +18,7 @@ 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.MemberRecentCfgService;
|
||||
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
@@ -55,6 +58,8 @@ public class MemberUserController {
|
||||
|
||||
@Resource
|
||||
private MemberRecentTagMapper memberRecentTagMapper;
|
||||
@Resource
|
||||
private MemberRecentCfgService memberRecentCfgService;
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新会员用户")
|
||||
@@ -87,7 +92,21 @@ public class MemberUserController {
|
||||
@PreAuthorize("@ss.hasPermission('member:user:query')")
|
||||
public CommonResult<MemberUserRespVO> getUser(@RequestParam("id") Long id) {
|
||||
MemberUserDO user = memberUserService.getUser(id);
|
||||
return success(MemberUserConvert.INSTANCE.convert03(user));
|
||||
MemberUserRespVO result = MemberUserConvert.INSTANCE.convert03(user);
|
||||
// 查询用户tag
|
||||
if (ObjectUtil.isNotEmpty(result)) {
|
||||
List<MemberRecentTagDO> memberRecentTags = memberRecentTagMapper.getByMemberId(result.getId());
|
||||
if (ObjectUtil.isNotEmpty(memberRecentTags)) {
|
||||
List<MemberUserRespVO.MemberTag> tags = memberRecentTags.stream().map(v -> {
|
||||
MemberUserRespVO.MemberTag entity = new MemberUserRespVO.MemberTag();
|
||||
entity.setTagBizType(v.getTagBizType());
|
||||
entity.setTagTitle(v.getTagTitle());
|
||||
return entity;
|
||||
}).collect(Collectors.toList());
|
||||
result.setMemberTagList(tags);
|
||||
}
|
||||
}
|
||||
return success(result);
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@@ -111,7 +130,9 @@ public class MemberUserController {
|
||||
List<MemberGroupDO> groups = memberGroupService.getGroupList(convertSet(pageResult.getList(), MemberUserDO::getGroupId));
|
||||
// 处理用户朋友圈的TAG
|
||||
List<MemberRecentTagDO> memberRecentTags = memberRecentTagMapper.getByIds(convertSet(pageResult.getList(), MemberUserDO::getId));
|
||||
return success(MemberUserConvert.INSTANCE.convertPage(pageResult, tags,memberRecentTags, levels, groups));
|
||||
// 查询用户配置
|
||||
List<MemberRecentCfgDO> memberCfgList = memberRecentCfgService.getByMemberIds(convertSet(pageResult.getList(), MemberUserDO::getId));
|
||||
return success(MemberUserConvert.INSTANCE.convertPage(pageResult, tags, memberRecentTags, levels, groups, memberCfgList));
|
||||
}
|
||||
|
||||
}
|
||||
+4
@@ -1,6 +1,7 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.user.vo;
|
||||
|
||||
import cn.iocoder.yudao.module.member.controller.admin.recent.vo.RecentPageResVo;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentCfgDO;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@@ -53,6 +54,9 @@ public class MemberUserRespVO extends MemberUserBaseVO {
|
||||
@Schema(description = "用户tag")
|
||||
private List<MemberUserRespVO.MemberTag> memberTagList;
|
||||
|
||||
@Schema(description = "朋友圈相关配置")
|
||||
private MemberRecentCfgDO recentCfg;
|
||||
|
||||
@Data
|
||||
public static class MemberTag {
|
||||
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ public class AppMemberRecentCfgController {
|
||||
|
||||
@PostMapping("/create-or-update")
|
||||
@Operation(summary = "创建或更新配置")
|
||||
public CommonResult<MemberRecentCfgDO> getUserInfo(@RequestBody MemberRecentCfgReqVo dto) {
|
||||
public CommonResult<MemberRecentCfgDO> createOrUpdate(@RequestBody MemberRecentCfgReqVo dto) {
|
||||
dto.setMemberId(getLoginUserId());
|
||||
return success(recentCfgService.createOrUpdate(dto));
|
||||
}
|
||||
|
||||
+4
@@ -16,6 +16,10 @@ public class MemberRecentCfgReqVo {
|
||||
@Schema(description = "用户id")
|
||||
private Long memberId;
|
||||
|
||||
@NotNull(message = "是否推送不能为空")
|
||||
@Schema(description = "是否推送")
|
||||
private Boolean isPush;
|
||||
|
||||
@NotNull(message = "首页隐身不能为空")
|
||||
@Schema(description = "首页隐身")
|
||||
private Boolean homeHide;
|
||||
|
||||
+13
-1
@@ -10,6 +10,7 @@ import cn.iocoder.yudao.module.member.convert.address.AddressConvert;
|
||||
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.MemberRecentCfgDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentTagDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||
import org.mapstruct.Mapper;
|
||||
@@ -54,18 +55,29 @@ public interface MemberUserConvert {
|
||||
List<MemberTagDO> tags,
|
||||
List<MemberRecentTagDO> memberRecentTags,
|
||||
List<MemberLevelDO> levels,
|
||||
List<MemberGroupDO> groups) {
|
||||
List<MemberGroupDO> groups,
|
||||
List<MemberRecentCfgDO> memberCfgList
|
||||
) {
|
||||
PageResult<MemberUserRespVO> result = convertPage(pageResult);
|
||||
// 处理关联数据
|
||||
Map<Long, String> tagMap = convertMap(tags, MemberTagDO::getId, MemberTagDO::getName);
|
||||
Map<Long, String> levelMap = convertMap(levels, MemberLevelDO::getId, MemberLevelDO::getName);
|
||||
Map<Long, String> groupMap = convertMap(groups, MemberGroupDO::getId, MemberGroupDO::getName);
|
||||
Map<Long, MemberRecentCfgDO> memberCfgMap = convertMap(memberCfgList, MemberRecentCfgDO::getMemberId);
|
||||
// 填充关联数据
|
||||
result.getList().forEach(user -> {
|
||||
user.setTagNames(convertList(user.getTagIds(), tagMap::get));
|
||||
user.setLevelName(levelMap.get(user.getLevelId()));
|
||||
user.setGroupName(groupMap.get(user.getGroupId()));
|
||||
user.setMemberTagList(new ArrayList<>());
|
||||
|
||||
MemberRecentCfgDO cfg = memberCfgMap.get(user.getId());
|
||||
if (ObjectUtil.isEmpty(cfg)) {
|
||||
user.setRecentCfg(MemberRecentCfgDO.builder().isPush(false).homeHide(false).privacySecure(false).shortNote(false).build());
|
||||
} else {
|
||||
user.setRecentCfg(cfg);
|
||||
}
|
||||
|
||||
// 处理朋友圈TAG
|
||||
List<MemberRecentTagDO> targetTags = memberRecentTags.stream().filter(v -> ObjectUtil.equals(v.getMemberId(), user.getId())).collect(Collectors.toList());
|
||||
if (ObjectUtil.isNotEmpty(targetTags)) {
|
||||
|
||||
+5
@@ -30,6 +30,11 @@ public class MemberRecentCfgDO extends BaseDO {
|
||||
*/
|
||||
private Long memberId;
|
||||
|
||||
/**
|
||||
* 推送开关
|
||||
*/
|
||||
private Boolean isPush;
|
||||
|
||||
/**
|
||||
* 首页隐身
|
||||
*/
|
||||
|
||||
+8
-2
@@ -5,8 +5,8 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentTagDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 朋友圈用户tag Mapper
|
||||
@@ -14,10 +14,16 @@ import java.util.Set;
|
||||
@Mapper
|
||||
public interface MemberRecentTagMapper extends BaseMapperX<MemberRecentTagDO> {
|
||||
|
||||
default List<MemberRecentTagDO> getByIds(Set<Long> memberIds) {
|
||||
default List<MemberRecentTagDO> getByIds(Collection<Long> memberIds) {
|
||||
return selectList(new LambdaQueryWrapperX<MemberRecentTagDO>()
|
||||
.in(MemberRecentTagDO::getMemberId, memberIds)
|
||||
);
|
||||
}
|
||||
|
||||
default List<MemberRecentTagDO> getByMemberId(Long memberId) {
|
||||
return selectList(new LambdaQueryWrapperX<MemberRecentTagDO>()
|
||||
.eq(MemberRecentTagDO::getMemberId, memberId)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
+6
-2
@@ -4,11 +4,17 @@ package cn.iocoder.yudao.module.member.service.user;
|
||||
import cn.iocoder.yudao.module.member.controller.app.user.vo.recentcfg.MemberRecentCfgReqVo;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentCfgDO;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 用户朋友圈相关配置 Service 接口
|
||||
*/
|
||||
public interface MemberRecentCfgService {
|
||||
|
||||
List<MemberRecentCfgDO> getByMemberIds(Collection<Long> memberIds);
|
||||
|
||||
/**
|
||||
* 创建或新增配置
|
||||
*/
|
||||
@@ -23,6 +29,4 @@ public interface MemberRecentCfgService {
|
||||
* 删除配置
|
||||
*/
|
||||
int del(Long menberId);
|
||||
|
||||
|
||||
}
|
||||
+19
-3
@@ -12,6 +12,11 @@ import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 用户朋友圈相关配置 Service 实现类
|
||||
@@ -25,14 +30,25 @@ public class MemberRecentCfgServiceImpl implements MemberRecentCfgService {
|
||||
@Resource
|
||||
private RecentCfgMapper recentCfgMapper;
|
||||
|
||||
@Override
|
||||
public List<MemberRecentCfgDO> getByMemberIds(Collection<Long> memberIds) {
|
||||
if (ObjectUtil.isEmpty(memberIds)) return new ArrayList<>();
|
||||
return recentCfgMapper.selectList(new LambdaQueryWrapperX<MemberRecentCfgDO>()
|
||||
.in(MemberRecentCfgDO::getMemberId, memberIds)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建或新增配置
|
||||
*/
|
||||
@Override
|
||||
public MemberRecentCfgDO createOrUpdate(MemberRecentCfgReqVo dto) {
|
||||
MemberRecentCfgDO detail = recentCfgMapper.selectOne(new LambdaQueryWrapperX<MemberRecentCfgDO>()
|
||||
.eq(MemberRecentCfgDO::getMemberId, dto.getMemberId())
|
||||
);
|
||||
MemberRecentCfgDO detail = null;
|
||||
if (ObjectUtil.isNotEmpty(dto.getMemberId())) {
|
||||
detail = recentCfgMapper.selectOne(new LambdaQueryWrapperX<MemberRecentCfgDO>()
|
||||
.eq(MemberRecentCfgDO::getMemberId, dto.getMemberId())
|
||||
);
|
||||
}
|
||||
MemberRecentCfgDO entity = BeanUtil.toBean(dto, MemberRecentCfgDO.class);
|
||||
if (ObjectUtil.isEmpty(detail)) {
|
||||
recentCfgMapper.insert(entity);
|
||||
|
||||
Reference in new issue
Block a user