diff --git a/sql/mysql/recent/member_recent.sql b/sql/mysql/recent/member_recent.sql index 4c6cbd1..2f6a224 100644 --- a/sql/mysql/recent/member_recent.sql +++ b/sql/mysql/recent/member_recent.sql @@ -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 -- ---------------------------- diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppMemberRecentCfgController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppMemberRecentCfgController.java new file mode 100644 index 0000000..9f95cac --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/AppMemberRecentCfgController.java @@ -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 getUserInfo(@RequestBody MemberRecentCfgReqVo dto) { + dto.setMemberId(getLoginUserId()); + return success(recentCfgService.createOrUpdate(dto)); + } + + @GetMapping("/get-or-create") + @Operation(summary = "查询或者创建配置") + public CommonResult getUserInfo() { + return success(recentCfgService.getOrCreate(getLoginUserId())); + } + + +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/vo/recentcfg/MemberRecentCfgReqVo.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/vo/recentcfg/MemberRecentCfgReqVo.java new file mode 100644 index 0000000..668653a --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/user/vo/recentcfg/MemberRecentCfgReqVo.java @@ -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; + +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/user/MemberRecentCfgDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/user/MemberRecentCfgDO.java new file mode 100644 index 0000000..0346d5a --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/user/MemberRecentCfgDO.java @@ -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; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/user/RecentCfgMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/user/RecentCfgMapper.java new file mode 100644 index 0000000..b955eb6 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/user/RecentCfgMapper.java @@ -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 { + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberRecentCfgService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberRecentCfgService.java new file mode 100644 index 0000000..afa2ab7 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberRecentCfgService.java @@ -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); + + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberRecentCfgServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberRecentCfgServiceImpl.java new file mode 100644 index 0000000..7623af5 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberRecentCfgServiceImpl.java @@ -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() + .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() + .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); + } +} \ No newline at end of file