feat:用户配置

This commit is contained in:
dzc committed 2025-11-27 16:35:42 +08:00
1 parent 334c9223c6
commit 1c4d6b64ba
7 files changed
+256

No files matched your search

+20
View File
@@ -163,6 +163,26 @@ CREATE TABLE `member_recent_tag`
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 32 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '朋友圈用户tag';
-- ----------------------------
-- Table structure for member_recent_cfg
-- ----------------------------
DROP TABLE IF EXISTS `member_recent_cfg`;
CREATE TABLE `member_recent_cfg`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户朋友圈相关配置id',
`member_id` bigint NOT NULL COMMENT '人员id',
`home_hide` bit(1) NOT NULL DEFAULT b'0' COMMENT '首页隐身',
`privacy_secure` bit(1) NOT NULL DEFAULT b'0' COMMENT '隐私保护',
`short_note` bit(1) NOT NULL DEFAULT b'0' COMMENT '短信通知',
`creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 32 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户朋友圈相关配置';
-- ----------------------------
-- Table structure for member_open_type
-- ----------------------------
@@ -0,0 +1,42 @@
package cn.iocoder.yudao.module.member.controller.app.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.*;
import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@Tag(name = "用户 APP - 用户朋友圈配置")
@RestController
@RequestMapping("/member/recent-cfg")
@Validated
@Slf4j
public class AppMemberRecentCfgController {
@Resource
private MemberRecentCfgService recentCfgService;
@PostMapping("/create-or-update")
@Operation(summary = "创建或更新配置")
public CommonResult<MemberRecentCfgDO> getUserInfo(@RequestBody MemberRecentCfgReqVo dto) {
dto.setMemberId(getLoginUserId());
return success(recentCfgService.createOrUpdate(dto));
}
@GetMapping("/get-or-create")
@Operation(summary = "查询或者创建配置")
public CommonResult<MemberRecentCfgDO> getUserInfo() {
return success(recentCfgService.getOrCreate(getLoginUserId()));
}
}
@@ -0,0 +1,31 @@
package cn.iocoder.yudao.module.member.controller.app.user.vo.recentcfg;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
@Schema(description = "创建或更新config Response VO")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MemberRecentCfgReqVo {
@Schema(description = "用户id")
private Long memberId;
@NotNull(message = "首页隐身不能为空")
@Schema(description = "首页隐身")
private Boolean homeHide;
@NotNull(message = "短信通知不能为空")
@Schema(description = "隐私保护")
private Boolean privacySecure;
@NotNull(message = "短信通知不能为空")
@Schema(description = "短信通知")
private Boolean shortNote;
}
@@ -0,0 +1,48 @@
package cn.iocoder.yudao.module.member.dal.dataobject.user;
import lombok.*;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* 用户朋友圈相关配置 DO
*
* @author 聊天交友
*/
@TableName("member_recent_cfg")
@KeySequence("member_recent_cfg_seq")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MemberRecentCfgDO extends BaseDO {
/**
* 用户朋友圈相关配置id
*/
@TableId
private Long id;
/**
* 人员id
*/
private Long memberId;
/**
* 首页隐身
*/
private Boolean homeHide;
/**
* 隐私保护
*/
private Boolean privacySecure;
/**
* 短信通知
*/
private Boolean shortNote;
}
@@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.member.dal.mysql.user;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentCfgDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 用户朋友圈相关配置 Mapper
*/
@Mapper
public interface RecentCfgMapper extends BaseMapperX<MemberRecentCfgDO> {
}
@@ -0,0 +1,28 @@
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;
/**
* 用户朋友圈相关配置 Service 接口
*/
public interface MemberRecentCfgService {
/**
* 创建或新增配置
*/
MemberRecentCfgDO createOrUpdate(MemberRecentCfgReqVo dto);
/**
* 查询或者创建配置
*/
MemberRecentCfgDO getOrCreate(Long memberId);
/**
* 删除配置
*/
int del(Long menberId);
}
@@ -0,0 +1,74 @@
package cn.iocoder.yudao.module.member.service.user;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
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.dal.mysql.user.RecentCfgMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
/**
* 用户朋友圈相关配置 Service 实现类
*
* @author 聊天交友
*/
@Service
@Validated
public class MemberRecentCfgServiceImpl implements MemberRecentCfgService {
@Resource
private RecentCfgMapper recentCfgMapper;
/**
* 创建或新增配置
*/
@Override
public MemberRecentCfgDO createOrUpdate(MemberRecentCfgReqVo dto) {
MemberRecentCfgDO 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);
} else {
entity.setId(detail.getId());
recentCfgMapper.updateById(entity);
}
return entity;
}
/**
* 查询或者创建配置
*/
@Override
public MemberRecentCfgDO getOrCreate(Long memberId) {
MemberRecentCfgDO detail = recentCfgMapper.selectOne(new LambdaQueryWrapperX<MemberRecentCfgDO>()
.eq(MemberRecentCfgDO::getMemberId, memberId)
);
if (ObjectUtil.isNotEmpty(detail)) {
return detail;
}
MemberRecentCfgDO insertObj = MemberRecentCfgDO.builder()
.memberId(memberId)
.homeHide(false)
.privacySecure(false)
.shortNote(false)
.build();
recentCfgMapper.insert(insertObj);
return insertObj;
}
/**
* 删除配置
*/
@Override
public int del(Long menberId) {
return recentCfgMapper.deleteById(menberId);
}
}