From 3757b5562afb0916cad3cdb6dfe153c7ad1c4811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BA=86=E7=A5=A5?= Date: Mon, 16 Jun 2025 17:05:03 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=E4=BF=AE=E6=94=B9=E7=B2=89=E4=B8=9D?= =?UTF-8?q?=E4=B8=8E=E5=85=B3=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 1 + .../common/core/constant/CacheConstants.java | 14 ++- .../dromara/common/core/domain/BaseBO.java | 2 +- .../dromara/common/web/core/MemberFill.java | 4 + ruoyi-modules/ruoyi-member/pom.xml | 17 ++++ .../member/controller/FansController.java | 71 ++++++++++++--- .../member/controller/FeedbackController.java | 88 +++++++++++++++---- .../controller/MemberCartController.java | 12 +-- .../soopin/member/convert/FansConvert.java | 27 ++++++ .../member/convert/FeedbackConvert.java | 5 ++ .../wzj/soopin/member/domain/bo/FansBO.java | 54 ++++++++++++ .../soopin/member/domain/bo/FeedbackBO.java | 14 +-- .../soopin/member/domain/bo/MemberCartBO.java | 18 +++- .../wzj/soopin/member/domain/po/Feedback.java | 8 +- .../soopin/member/domain/po/MemberCart.java | 11 +-- .../wzj/soopin/member/domain/vo/FansVO.java | 30 ++++--- .../soopin/member/domain/vo/FeedbackVO.java | 30 ++++--- .../soopin/member/domain/vo/MemberCartVO.java | 85 +++++++++++++++--- .../soopin/member/service/IFansService.java | 4 +- .../member/service/IFeedbackService.java | 2 + .../member/service/impl/FansServiceImpl.java | 8 +- .../service/impl/FeedbackServiceImpl.java | 14 +-- .../service/impl/MemberServiceImpl.java | 16 ++++ 23 files changed, 423 insertions(+), 112 deletions(-) create mode 100644 ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/core/MemberFill.java create mode 100644 ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/convert/FansConvert.java create mode 100644 ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/FansBO.java diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index b5276f501..4ab1725ed 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -146,6 +146,7 @@ tenant: - ums_account - ums_account_change_record - ums_fans + - ums_block - oms_aftersale - oms_aftersale_item - oms_order diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheConstants.java index 714d93a17..42c2467b7 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheConstants.java @@ -30,7 +30,7 @@ public interface CacheConstants { /** * 用户 */ - String MEMEBER="MEMEBER:"; + String MEMBER ="MEMBER:"; /** * 粉丝 @@ -45,4 +45,16 @@ public interface CacheConstants { String BLACK_LIST="BLACK_LIST:"; + + String GROUP="GROUP:"; + + String GROUP_MEMBER="GROUP_MEMBER:"; + + String VLOG="VLOG:"; + + String COMMENT="COMMENT:"; + + String CHAT="CHAT:"; + + } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/BaseBO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/BaseBO.java index b2f28554a..10a866589 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/BaseBO.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/BaseBO.java @@ -26,6 +26,6 @@ public class BaseBO { * @return */ public LambdaQueryWrapper toWrapper() { - return null; + return new LambdaQueryWrapper(); } } diff --git a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/core/MemberFill.java b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/core/MemberFill.java new file mode 100644 index 000000000..d09db2b61 --- /dev/null +++ b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/core/MemberFill.java @@ -0,0 +1,4 @@ +package org.dromara.common.web.core; + +public interface MemberFill { +} diff --git a/ruoyi-modules/ruoyi-member/pom.xml b/ruoyi-modules/ruoyi-member/pom.xml index aca1b4269..44e90bd2e 100644 --- a/ruoyi-modules/ruoyi-member/pom.xml +++ b/ruoyi-modules/ruoyi-member/pom.xml @@ -98,7 +98,24 @@ org.dromara ruoyi-common-sse + + org.dromara + ruoyi-order + runtime + + + org.dromara + ruoyi-goods + runtime + + + org.dromara + ruoyi-content + runtime + + + diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/FansController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/FansController.java index f4861d02c..36c5fc30c 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/FansController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/FansController.java @@ -2,16 +2,29 @@ package com.wzj.soopin.member.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.wzj.soopin.member.convert.FansConvert; +import com.wzj.soopin.member.convert.FeedbackConvert; +import com.wzj.soopin.member.domain.bo.FansBO; +import com.wzj.soopin.member.domain.bo.FeedbackBO; +import com.wzj.soopin.member.domain.po.Fans; +import com.wzj.soopin.member.domain.po.Feedback; import com.wzj.soopin.member.domain.po.Member; import com.wzj.soopin.member.domain.po.MemberBlock; +import com.wzj.soopin.member.domain.vo.FansVO; +import com.wzj.soopin.member.domain.vo.FeedbackVO; import com.wzj.soopin.member.service.IFansService; import com.wzj.soopin.member.service.IMemberBlockService; import com.wzj.soopin.member.service.IMemberService; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.CacheConstants; import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; import org.dromara.common.redis.utils.RedisUtils; import org.springframework.web.bind.annotation.*; @@ -21,15 +34,46 @@ import java.util.List; @RequestMapping("/ums/fans/") @RestController @RequiredArgsConstructor +@Tag(name ="粉丝与关注") public class FansController { private final IMemberService memberService; - private final IFansService fansService; + private final IFansService service; + private final FansConvert convert; private final IMemberBlockService memberBlockService; + + + + @Tag(name ="粉丝列表") + @PostMapping("/list") + public R> fansList(@RequestBody FansBO query, @RequestBody Page page) { + Page fans= service.page(page,query.toWrapper()); + return R.ok(convert.toVO( fans)); + } + + + @Tag(name ="获取详细信息") + @GetMapping(value = "/{id}") + public R getInfo(@PathVariable("id") Long id) { + return R.ok( convert.toVO(service.getById(id))); + } + + + @Tag(name ="删除粉丝信息") + @Log(title = "意见反馈", businessType = BusinessType.DELETE) + @DeleteMapping("/{id}") + public R remove(@PathVariable Long id) { + return R.ok(service.removeById(id)); + } + + + + + @PostMapping("follow") public R follow(@RequestParam Long myId, @RequestParam Long vloggerId) { @@ -39,35 +83,28 @@ public class FansController { if (myId ==null|| vloggerId==null) { return R.fail("id不能为空"); } - - // 获取拉黑数据 boolean hasblock = memberBlockService.hasBlocked(myId, vloggerId); if (hasblock) { return R.fail("已经拉黑"); } - - // 判断当前用户,自己不能关注自己 if (myId ==vloggerId) { return R.fail("自己不能关注自己"); } - // 是否已经存在关系 - boolean flow = fansService.queryDoIFollowVloger(myId, vloggerId); + boolean flow = service.queryDoIFollowVloger(myId, vloggerId); if (flow) { return R.fail("已经在关注列表里了"); } - // 判断两个id对应的用户是否存在 Member vlogger = memberService.getById(vloggerId); Member myInfo = memberService.getById(myId); if (myInfo == null || vlogger == null) { return R.fail("用户不存在"); } -// // 保存粉丝关系到数据库 - fansService.doFollow(myId, vloggerId); + service.doFollow(myId, vloggerId); // 博主的粉丝+1,我的关注+1 RedisUtils.incrAtomicValue(CacheConstants.MEMBER_FANS + ":" + vloggerId); @@ -83,12 +120,12 @@ public class FansController { return R.fail("id不能为空"); } // 是否已经存在关系 - boolean flow = fansService.queryDoIFollowVloger(myId, vloggerId); + boolean flow = service.queryDoIFollowVloger(myId, vloggerId); if (!flow) { return R.fail("没有关注信息"); } // 删除业务的执行 - fansService.doCancel(myId, vloggerId); + service.doCancel(myId, vloggerId); // 博主的粉丝-1,我的关注-1 RedisUtils.decrAtomicValue(CacheConstants.MEMBER_FANS + ":" + vloggerId); @@ -119,10 +156,10 @@ public class FansController { return R.ok("id不能为空"); } // 是否已经存在关系 - boolean flow = fansService.queryDoIFollowVloger(myId, vloggerId); + boolean flow = service.queryDoIFollowVloger(myId, vloggerId); if (flow) { // 删除业务的执行 - fansService.doCancel(myId, vloggerId); + service.doCancel(myId, vloggerId); // 博主的粉丝-1,我的关注-1 RedisUtils.decrAtomicValue(CacheConstants.MEMBER_FANS + ":" + vloggerId); @@ -130,6 +167,12 @@ public class FansController { } // 拉黑 + //检查是否已在黑名单中 + boolean hasblock = memberBlockService.hasBlocked(myId, vloggerId); + if (hasblock) { + return R.fail("已经拉黑"); + } + memberBlockService.addBlock(myId, vloggerId); return R.ok(); } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/FeedbackController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/FeedbackController.java index 7065e1fa4..bb4cf449a 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/FeedbackController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/FeedbackController.java @@ -4,74 +4,124 @@ package com.wzj.soopin.member.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.wzj.soopin.member.convert.FeedbackConvert; +import com.wzj.soopin.member.convert.MemberConvert; import com.wzj.soopin.member.domain.bo.FeedbackBO; import com.wzj.soopin.member.domain.po.Feedback; +import com.wzj.soopin.member.domain.po.Member; import com.wzj.soopin.member.domain.vo.FeedbackVO; -import com.wzj.soopin.member.domain.vo.MemberAccountVO; import com.wzj.soopin.member.service.IFeedbackService; +import com.wzj.soopin.member.service.IMemberService; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.CacheConstants; import org.dromara.common.core.domain.R; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; -import org.springframework.http.ResponseEntity; +import org.dromara.common.redis.utils.RedisUtils; import org.springframework.web.bind.annotation.*; +import java.util.stream.Collectors; + /** * 意见反馈Controller * * @author zcc * @date 2024-02-26 */ -@Tag(name ="意见反馈接口列表") +@Tag(name = "意见反馈接口列表") @RestController @RequestMapping("/ums/feedback") @RequiredArgsConstructor -public class FeedbackController { +public class FeedbackController { private final IFeedbackService service; private final FeedbackConvert convert; + private final MemberConvert memberConvert; + + private final IMemberService memberService; - @Tag(name ="查询意见反馈列表") + @Tag(name = "查询意见反馈列表") @PostMapping("/list") - public R> list(@RequestBody FeedbackBO query, @RequestBody Page page) { - Page feedBackPage= service.page(page,query.toWrapper()); - return R.ok(convert.toVO( feedBackPage)); + public R> list(@RequestBody FeedbackBO query, @RequestBody Page page) { + Page feedBackPage = service.page(page, query.toWrapper()); + Page feedbackVOList = convert.toVO(feedBackPage); + + //从redis中获取用户信息和投诉对象信息 + + feedbackVOList.setRecords(feedBackPage.getRecords().stream().map(feedback -> { + + //构建用户信息 + FeedbackVO feedbackVO = convert.toVO(feedback); + Member member = memberService.getById(feedback.getMemberId()); + feedbackVO.setMember(memberConvert.toVO(member)); + + //构建对象信息 + switch (feedback.getAimType()) { + case 0://会员 + feedbackVO.setAimObject(memberService.getById(feedback.getAimId())); + break; + case 1://群组 + feedbackVO.setAimObject(RedisUtils.getCacheObject(CacheConstants.GROUP + feedback.getAimId())); + break; + case 2://评论 + feedbackVO.setAimObject(RedisUtils.getCacheObject( + CacheConstants.COMMENT + feedback.getAimId() + )); + break; + case 3://视频 + feedbackVO.setAimObject(RedisUtils.getCacheObject(CacheConstants.VLOG + feedback.getAimId())); + break; + case 4://聊天 + feedbackVO.setAimObject(RedisUtils.getCacheObject( + CacheConstants.CHAT + feedback.getAimId() + )); + break; + + } + + + return feedbackVO; + + }).collect(Collectors.toList())); + + + return R.ok(feedbackVOList); } - @Tag(name ="修改意见反馈备注信息") + @Tag(name = "修改意见反馈备注信息") @Log(title = "意见反馈", businessType = BusinessType.UPDATE) @PostMapping("/update") - public R editMark(@RequestBody FeedbackBO feedback) { + public R editMark(@RequestBody FeedbackBO feedback) { return R.ok(service.save(convert.toPo(feedback))); } - @Tag(name ="修改意见反馈备注信息") + @Tag(name = "修改意见反馈备注信息") @Log(title = "新增意见反馈", businessType = BusinessType.UPDATE) @PostMapping("/add") public R add(@RequestBody FeedbackBO feedback) { return R.ok(service.save(convert.toPo(feedback))); } - @Tag(name ="获取详细信息") + @Tag(name = "获取详细信息") @GetMapping(value = "/{id}") public R getInfo(@PathVariable("id") Long id) { - return R.ok( service.selectById(id)); + return R.ok(service.selectById(id)); } - @Tag(name =("修改状态")) + @Tag(name = ("处理")) @Log(title = "意见反馈", businessType = BusinessType.UPDATE) - @PostMapping("/handle/status/update") - public R changeStatus(@RequestBody FeedbackBO bo){ - return R.ok(service.updateById(convert.toPo(bo))); + @PostMapping("/handle/handle") + public R changeStatus(@RequestBody FeedbackBO bo) { + service.handle(convert.toPo(bo)); + return R.ok(); } - @Tag(name ="删除意见反馈") + @Tag(name = "删除意见反馈") @Log(title = "意见反馈", businessType = BusinessType.DELETE) - @DeleteMapping("/{id}") + @DeleteMapping("/{id}") public R remove(@PathVariable Long id) { return R.ok(service.removeById(id)); } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/MemberCartController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/MemberCartController.java index 270ddac39..3e7fa6605 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/MemberCartController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/MemberCartController.java @@ -25,7 +25,7 @@ import org.springframework.web.bind.annotation.*; */ @Tag(name = "购物车接口列表") @RestController -@RequestMapping("/ums/memberCart") +@RequestMapping("/ums/cart") public class MemberCartController extends BaseController { @Autowired private IMemberCartService service; @@ -34,15 +34,15 @@ public class MemberCartController extends BaseController { @Tag(name = "查询购物车列表") @PostMapping("/list") - public R> list(@RequestBody MemberCartBO query, @RequestBody IPage page) { - Page userPage = (Page) service.page(page, new QueryWrapper()); + public R> list(@RequestBody MemberCartBO bo, @RequestBody Page page) { + Page userPage = service.page(page, bo.toWrapper()); return R.ok(convert.toVO(userPage)); } @Tag(name = "导出购物车列表") @Log(title = "购物车", businessType = BusinessType.EXPORT) @PostMapping("/export") - public R export(MemberCartBO query) { + public R export() { // List list = service.selectList(query, null); // ExcelUtil util = new ExcelUtil<>(MemberCartVO.class); // return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "购物车数据")); @@ -51,8 +51,8 @@ public class MemberCartController extends BaseController { @Tag(name = "获取购物车详细信息") @GetMapping(value = "/{id}") - public R getInfo(@PathVariable("id") Long id) { - return R.ok(service.getById(id)); + public R getInfo(@PathVariable("id") Long id) { + return R.ok(convert.toVO(service.getById(id))); } @Tag(name = "新增购物车") diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/convert/FansConvert.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/convert/FansConvert.java new file mode 100644 index 000000000..70aaf9c25 --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/convert/FansConvert.java @@ -0,0 +1,27 @@ +package com.wzj.soopin.member.convert; + +import com.wzj.soopin.member.domain.bo.FansBO; +import com.wzj.soopin.member.domain.bo.FeedbackBO; +import com.wzj.soopin.member.domain.po.Fans; +import com.wzj.soopin.member.domain.po.Feedback; +import com.wzj.soopin.member.domain.vo.FansVO; +import com.wzj.soopin.member.domain.vo.FeedbackVO; +import org.dromara.common.web.core.BaseConverter; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +/** + * 粉丝与关注 DO <=> VO / BO + * + * @author zcc + */ +@Mapper(componentModel = "spring",uses = BaseConverter.class) +public interface FansConvert extends BaseConverter { + + @Override + @Mapping(target = "vlogger.id",source = "vloggerId") + @Mapping(target = "fan.id", source = "fanId") + @Mapping(target = "fanId", source = "fanId") + @Mapping(target = "vloggerId", source = "vloggerId") + FansVO toVO(Fans fans); +} diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/convert/FeedbackConvert.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/convert/FeedbackConvert.java index 13463ba2b..b56837e05 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/convert/FeedbackConvert.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/convert/FeedbackConvert.java @@ -6,6 +6,7 @@ import com.wzj.soopin.member.domain.po.Feedback; import com.wzj.soopin.member.domain.vo.FeedbackVO; import org.dromara.common.web.core.BaseConverter; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import java.util.List; /** @@ -16,4 +17,8 @@ import java.util.List; @Mapper(componentModel = "spring",uses = BaseConverter.class) public interface FeedbackConvert extends BaseConverter { + @Override + @Mapping(target = "member.id", ignore = true,source = "memberId") + @Mapping(target = "memberId", ignore = true,source = "memberId") + FeedbackVO toVO(Feedback feedback); } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/FansBO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/FansBO.java new file mode 100644 index 000000000..a7c61d9e8 --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/FansBO.java @@ -0,0 +1,54 @@ +package com.wzj.soopin.member.domain.bo; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.wzj.soopin.member.domain.po.Fans; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; +import org.dromara.common.core.domain.BaseBO; +import org.dromara.common.excel.annotation.Excel; +import org.springframework.boot.actuate.integration.IntegrationGraphEndpoint; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@ToString +@Schema(description ="粉丝") +public class FansBO extends BaseBO { + + + /** + * 博主id + */ + @Schema(description ="博主id") + private String vloggerId; + + /** + * 粉丝id + */ + @Schema(description ="粉丝id") + private String fanId; + + /** + * 是否互相关注 + */ + @Schema(description ="是否是好友") + private Integer friendFlag ; + + /** + * 是否互相关注 + */ + @Schema(description ="是否互相关注") + private Integer bothFriend; + + @Override + public LambdaQueryWrapper toWrapper() { + return super.toWrapper() + .eq(vloggerId!=null,Fans::getVloggerId,vloggerId) + .eq(fanId!=null,Fans::getFanId,fanId) + .eq(friendFlag!=null,Fans::getFriendFlag,friendFlag) + .eq(bothFriend!=null,Fans::getBothFriend,bothFriend); + } +} diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/FeedbackBO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/FeedbackBO.java index 6f1d68ba9..2605bf640 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/FeedbackBO.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/FeedbackBO.java @@ -21,10 +21,10 @@ public class FeedbackBO extends BaseBO { @Schema(description ="ID") private Long id; - @Schema(description ="类型") + @Schema(description ="类型 1 举报 2 投诉 3 建议") private Integer type; - @Schema(description ="具体说明") + @Schema(description ="内容") private String content; @Schema(description ="图片") @@ -47,8 +47,8 @@ public class FeedbackBO extends BaseBO { @Schema(description ="反馈对象ID") private Long aimId; - @Schema(description ="反馈分类") - private Integer category; + @Schema(description ="原因") + private Integer reasonType; @Schema(description ="会员ID") private String memberId; @@ -62,8 +62,8 @@ public class FeedbackBO extends BaseBO { @Schema(description ="处理结果") private String resultContent; - @Schema(description ="反馈对象类型") - private String aimType; + @Schema(description ="反馈对象类型 1 会员 2 群组 3 评论 4 视频 5 聊天" ) + private Integer aimType; @Override public LambdaQueryWrapper toWrapper() { @@ -76,7 +76,7 @@ public class FeedbackBO extends BaseBO { .eq(remark!=null,Feedback::getRemark, remark) .eq(handleTime!=null,Feedback::getHandleTime, handleTime) .eq(aimId!=null,Feedback::getAimId, aimId) - .eq(category!=null,Feedback::getCategory, category) + .eq(reasonType!=null,Feedback::getReasonType, reasonType) .eq(memberId!=null,Feedback::getMemberId, memberId) .eq(handlerId!=null,Feedback::getHandlerId, handlerId) .eq(resultType!=null,Feedback::getResultType, resultType) diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/MemberCartBO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/MemberCartBO.java index 70bc00989..4c370dcb7 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/MemberCartBO.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/MemberCartBO.java @@ -1,7 +1,10 @@ package com.wzj.soopin.member.domain.bo; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.wzj.soopin.member.domain.po.MemberCart; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import org.dromara.common.core.domain.BaseBO; /** * 购物车 查询 对象 @@ -10,7 +13,8 @@ import lombok.Data; */ @Schema(description="购物车 查询 对象") @Data -public class MemberCartBO { +public class MemberCartBO extends BaseBO { + @Schema(description ="0->失效;1->有效 精确匹配") private Integer status; @@ -38,4 +42,16 @@ public class MemberCartBO { @Schema(description ="用户手机号") private String phone; + @Override + public LambdaQueryWrapper toWrapper() { + return super.toWrapper() + .eq(status!=null,MemberCart::getStatus,status) + .eq(memberId!=null,MemberCart::getMemberId,memberId) + .eq(productId!=null,MemberCart::getProductId,productId) + .eq(pic!=null,MemberCart::getPic,pic) + .eq(skuId!=null,MemberCart::getSkuId,skuId) + .eq(productName!=null,MemberCart::getProductName,productName) + .eq(spData!=null,MemberCart::getSpData,spData) + .eq(quantity!=null,MemberCart::getQuantity,quantity); + } } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/po/Feedback.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/po/Feedback.java index c5fb340e4..0d448c322 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/po/Feedback.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/po/Feedback.java @@ -21,7 +21,7 @@ public class Feedback extends BaseAudit { @Schema(description ="ID") private Long id; - @Schema(description ="类型") + @Schema(description ="类型 1 举报 2 投诉 3 建议") private Integer type; @Schema(description ="具体说明") @@ -47,11 +47,11 @@ public class Feedback extends BaseAudit { @Schema(description ="反馈对象ID") private Long aimId; - @Schema(description ="反馈对象类型 0 会员 1 群组 2 评论 3 视频 4 聊天" ) + @Schema(description ="反馈对象类型 1 会员 2 群组 3 评论 4 视频 5 聊天" ) private Integer aimType; - @Schema(description ="反馈分类") - private Integer category; + @Schema(description ="原因 1 恶意行为 2 内容违规") + private Integer reasonType; @Schema(description ="会员ID") private Long memberId; diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/po/MemberCart.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/po/MemberCart.java index 450fb7308..a8dae466d 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/po/MemberCart.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/po/MemberCart.java @@ -14,44 +14,35 @@ import org.dromara.common.excel.annotation.Excel; */ @Schema(description="购物车对象") @Data -@TableName("ums_member_cart") +@TableName("ums_cart") public class MemberCart extends BaseAudit { - private static final long serialVersionUID = 1L; @Schema(description ="购物车表ID") @TableId private Long id; @Schema(description ="0->失效;1->有效") - @Excel(name = "0->失效;1->有效") private Integer status; @Schema(description ="用户ID") - @Excel(name = "用户ID") private Long memberId; @Schema(description ="商品ID") - @Excel(name = "商品ID") private Long productId; @Schema(description ="展示图片") - @Excel(name = "展示图片") private String pic; @Schema(description ="SKU ID") - @Excel(name = "SKU ID") private Long skuId; @Schema(description ="PRODUCT_NAME") - @Excel(name = "PRODUCT_NAME") private String productName; @Schema(description ="商品属性") - @Excel(name = "商品属性") private String spData; @Schema(description ="商品数量") - @Excel(name = "商品数量") private Integer quantity; } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/FansVO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/FansVO.java index aab928323..47f7bff2d 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/FansVO.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/FansVO.java @@ -17,23 +17,33 @@ public class FansVO { @Schema(description ="博主id") @Excel(name = "博主id") - private String vlogerId; + private MemberVO vlogger; + + @Schema(description ="博主id") + private Long vloggerId; @Schema(description ="粉丝id") @Excel(name = "粉丝id") - private String fanId; - @Schema(description ="昵称") - @Excel(name = "昵称") - private String nickname; - @Schema(description ="头像") - @Excel(name = "头像") - private String face; + private MemberVO fan; + + @Schema(description ="粉丝id") + @Excel(name = "粉丝id") + private Long fanId; + + + @Schema(description ="是否是好友") @Excel(name = "是否是好友") - private boolean friendFlag = false; + private Integer friendFlag ; + + + @Schema(description ="是否互相关注") @Excel(name = "是否互相关注") - private int bothFriend; + private Integer bothFriend; + + + @Schema(description ="创建时间") @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private String createdTime; diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/FeedbackVO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/FeedbackVO.java index fa7cda170..5b964d930 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/FeedbackVO.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/FeedbackVO.java @@ -3,6 +3,7 @@ package com.wzj.soopin.member.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import org.dromara.common.core.domain.model.BaseAudit; import org.dromara.common.excel.annotation.Excel; import java.time.LocalDateTime; @@ -17,10 +18,10 @@ public class FeedbackVO { /** ID */ private Long id; /** 类型 */ - @Excel(name = "类型") + @Excel(name = "类型 1 举报 2 投诉 3 建议") private Integer type; /** 具体说明 */ - @Excel(name = "具体说明") + @Excel(name = "内容") private String content; /** 图片 */ @Excel(name = "图片") @@ -34,7 +35,7 @@ public class FeedbackVO { private LocalDateTime createTime; /** 处理状态 0:未处理 1:已处理 */ @Excel(name = "处理状态 0:未处理 1:已处理") - private Integer handleStatus; + private Integer status; /** 备注 */ @Excel(name = "备注") private String remark; @@ -47,27 +48,28 @@ public class FeedbackVO { @Excel(name = "反馈对象ID") private Long aimId; - @Schema(description ="反馈对象类型 0 会员 1 群组 2 评论 3 视频 4 聊天" ) + @Schema(description ="反馈对象类型 1 会员 2 群组 3 评论 4 视频 5 聊天" ) + private BaseAudit aimObject; + + @Schema(description ="反馈对象类型") private Integer aimType; - - @Schema(description ="反馈对象") - private Object aimObject; - - @Schema(description ="反馈分类") - private Integer category; + @Schema(description ="原因 1 恶意行为 2 内容违规") + private Integer reasonType; @Schema(description ="会员ID") - @Excel(name = "会员ID") - private Long memberId; + @Excel(name = "会员") + private MemberVO member; - private MemberVO member; + @Schema(description ="会员ID") + @Excel(name = "会员") + private Long memberId; @Schema(description ="处理人") @Excel(name = "处理人") private Long handlerId; - @Schema(description ="处理结果类型 0:文本 1:图片") + @Schema(description ="处理结果类型 0:不予处理 1:已处理") @Excel(name = "处理结果类型 0:不予处理 1:已处理") private Integer resultType; diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/MemberCartVO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/MemberCartVO.java index 3f2490a25..5d9ba0180 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/MemberCartVO.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/MemberCartVO.java @@ -1,5 +1,6 @@ package com.wzj.soopin.member.domain.vo; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.dromara.common.excel.annotation.Excel; @@ -12,41 +13,97 @@ import java.time.LocalDateTime; * @author zcc */ @Data -public class MemberCartVO { - /** 购物车表ID */ +@Schema(description = "购物车") +public class MemberCartVO { + /** + * 购物车表ID + */ + @Schema(description = "id") private Long id; - /** 0->失效;1->有效 */ + /** + * 0->失效;1->有效 + */ @Excel(name = "0->失效;1->有效") + @Schema(description = "status") private Integer status; - /** 用户ID */ + /** + * 用户ID + */ @Excel(name = "用户ID") + @Schema(description = "用户ID") private Long memberId; + + @Schema(description ="会员") + @Excel(name = "会员") + private MemberVO member; + + + @Excel(name = "会员") + @Schema(description = "会员") private String nickname; + + + @Excel(name = "备注") + @Schema(description = "备注") private String mark; - /** 商品ID */ + /** + * 商品ID + */ @Excel(name = "商品ID") + @Schema(description = "商品ID") private Long productId; - /** 展示图片 */ + /** + * 展示图片 + */ + @Schema(description = "展示图片") @Excel(name = "展示图片") private String pic; - /** SKU ID */ + /** + * SKU ID + */ + @Schema(description = "SKU ID") @Excel(name = "SKU ID") private Long skuId; - /** PRODUCT_NAME */ + /** + * PRODUCT_NAME + */ + @Schema(description = "PRODUCT_NAME") @Excel(name = "PRODUCT_NAME") private String productName; - /** 商品属性 */ + /** + * 商品属性 + */ + @Schema(description = "商品属性") @Excel(name = "商品属性") private String spData; - /** 商品数量 */ + /** + * 商品数量 + */ @Excel(name = "商品数量") + @Schema(description = "商品数量") private Integer quantity; - /** 加入时间 */ + /** + * 加入时间 + */ + @Excel(name = "加入时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + @Schema(description = "加入时间") private LocalDateTime createTime; - /** sku价格 */ + /** + * sku价格 + */ + @Excel(name = "sku价格") + @Schema(description = "sku价格") private BigDecimal price; - /** sku是否存在 */ + /** + * sku是否存在 + */ + @Excel(name = "sku是否存在") + @Schema(description = "sku是否存在") private Integer skuIfExist; - /** 隐藏四位的手机号 */ + /** + * 隐藏四位的手机号 + */ + @Excel(name = "隐藏四位的手机号") + @Schema(description = "隐藏四位的手机号") private String phoneHidden; } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IFansService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IFansService.java index fa2b1d290..5efc90a65 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IFansService.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IFansService.java @@ -2,9 +2,11 @@ package com.wzj.soopin.member.service; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.wzj.soopin.member.domain.po.Fans; import com.wzj.soopin.member.domain.vo.FansVO; -public interface IFansService { +public interface IFansService extends IService { /** * 关注 diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IFeedbackService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IFeedbackService.java index 471665e4c..7fcfee616 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IFeedbackService.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IFeedbackService.java @@ -9,4 +9,6 @@ import java.io.Serializable; public interface IFeedbackService extends IService { FeedbackVO selectById(Serializable id); + + void handle(Feedback entity); } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/FansServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/FansServiceImpl.java index 222736215..7386dd018 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/FansServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/FansServiceImpl.java @@ -46,7 +46,7 @@ public class FansServiceImpl extends ServiceImpl implements IF vloger.setBothFriend(YesOrNo.YES.type); baseMapper.updateById(vloger); } else { - fans.setFriendFlag(YesOrNo.NO.type); + fans.setFriendFlag(YesOrNo.YES.type); } baseMapper.insert(fans); @@ -73,7 +73,7 @@ public class FansServiceImpl extends ServiceImpl implements IF if (fan != null && fan.getFriendFlag() == YesOrNo.YES.type) { // 抹除双方的朋友关系,自己的关系删除即可 Fans pendingFan = queryFansRelationship(vloggerId, myId); - pendingFan.setFriendFlag(YesOrNo.NO.type); + pendingFan.setBothFriend(YesOrNo.NO.type); baseMapper.updateById(pendingFan); } @@ -105,9 +105,9 @@ public class FansServiceImpl extends ServiceImpl implements IF page.setSize(pageSize); for (FansVO f : page.getRecords()) { String relationship = redisCache.getCacheObject( - CacheConstants.MEMBER_FANS + ":" + myId + ":" + f.getFanId()); + CacheConstants.MEMBER_FANS + ":" + myId + ":" + f.getFan().getId()); if (StringUtils.isNotBlank(relationship) && relationship.equalsIgnoreCase("1")) { - f.setFriendFlag(true); + f.setFriendFlag(YesOrNo.YES.type); } } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/FeedbackServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/FeedbackServiceImpl.java index 13c289fde..64432183c 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/FeedbackServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/FeedbackServiceImpl.java @@ -1,6 +1,7 @@ package com.wzj.soopin.member.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -71,7 +72,6 @@ public class FeedbackServiceImpl extends ServiceImpl i switch (feedback.getAimType()) { case 0: Member member = memberMapper.selectById(feedback.getAimId()); - vo.setAimObject(memberConvert.toVO(member)); break; } // 如果是订单,则取订单信息 @@ -85,11 +85,13 @@ public class FeedbackServiceImpl extends ServiceImpl i return vo; } - public Integer updateMark(Feedback feedback) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.set("remark", feedback.getRemark()) - .eq("id", feedback.getId()); - return baseMapper.update(null, updateWrapper); + public void handle(Feedback feedback) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(Feedback::getRemark, feedback.getRemark()) + .set(Feedback::getStatus, feedback.getStatus()) + .set(Feedback::getResultContent, feedback.getResultContent()) + .eq(Feedback::getId, feedback.getId()); + baseMapper.update(null, updateWrapper); } public Integer changeStatus(Feedback dto) { diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/MemberServiceImpl.java index f63d31d7b..06a02967a 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/MemberServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/MemberServiceImpl.java @@ -16,6 +16,7 @@ import com.wzj.soopin.member.mapper.MemberMapper; import com.wzj.soopin.member.service.IMemberService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.constant.CacheConstants; import org.dromara.common.core.constant.CachePrefix; import org.dromara.common.core.constant.ResultCode; import org.dromara.common.core.domain.model.LoginUser; @@ -23,9 +24,12 @@ import org.dromara.common.core.exception.ServiceException; import org.dromara.common.redis.redis.RedisCache; import org.dromara.common.satoken.utils.LoginHelper; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; +import java.io.Serializable; import java.time.LocalDateTime; import java.util.Calendar; import java.util.Date; @@ -57,6 +61,7 @@ public class MemberServiceImpl extends ServiceImpl implemen @Override + @CachePut(value = CacheConstants.MEMBER, key = "#id") public boolean save(Member entity) { super.save(entity); @@ -85,6 +90,8 @@ public class MemberServiceImpl extends ServiceImpl implemen return true; } + @CachePut(value = CacheConstants.MEMBER, key = "#id") + public int updateMark(MemberBO member) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.set("mark",member.getMark()) @@ -95,6 +102,8 @@ public class MemberServiceImpl extends ServiceImpl implemen + @CachePut(value = CacheConstants.MEMBER, key = "#id") + public Integer changeStatus(MemberBO bo) { UpdateWrapper wrapper = new UpdateWrapper<>(); wrapper.eq("id", bo.getId()); @@ -236,4 +245,11 @@ public class MemberServiceImpl extends ServiceImpl implemen public String getPhoneDecrypted(String phoneEncrypted) { return phoneEncrypted; } + + + @Override +// @Cacheable (cacheNames = CacheConstants.MEMBER, key = "#id") + public Member getById(Serializable id) { + return super.getById(id); + } }