[fix]修改粉丝与关注
This commit is contained in:
parent
64cabd4de5
commit
3757b5562a
@ -146,6 +146,7 @@ tenant:
|
||||
- ums_account
|
||||
- ums_account_change_record
|
||||
- ums_fans
|
||||
- ums_block
|
||||
- oms_aftersale
|
||||
- oms_aftersale_item
|
||||
- oms_order
|
||||
|
@ -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:";
|
||||
|
||||
|
||||
}
|
||||
|
@ -26,6 +26,6 @@ public class BaseBO <T> {
|
||||
* @return
|
||||
*/
|
||||
public LambdaQueryWrapper<T> toWrapper() {
|
||||
return null;
|
||||
return new LambdaQueryWrapper<T>();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,4 @@
|
||||
package org.dromara.common.web.core;
|
||||
|
||||
public interface MemberFill {
|
||||
}
|
@ -98,7 +98,24 @@
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-sse</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-order</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-goods</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-content</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
<build>
|
||||
</build>
|
||||
</project>
|
||||
|
@ -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<IPage<FansVO>> fansList(@RequestBody FansBO query, @RequestBody Page page) {
|
||||
Page<Fans> fans= service.page(page,query.toWrapper());
|
||||
return R.ok(convert.toVO( fans));
|
||||
}
|
||||
|
||||
|
||||
@Tag(name ="获取详细信息")
|
||||
@GetMapping(value = "/{id}")
|
||||
public R<FansVO> getInfo(@PathVariable("id") Long id) {
|
||||
return R.ok( convert.toVO(service.getById(id)));
|
||||
}
|
||||
|
||||
|
||||
@Tag(name ="删除粉丝信息")
|
||||
@Log(title = "意见反馈", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{id}")
|
||||
public R<Object> remove(@PathVariable Long id) {
|
||||
return R.ok(service.removeById(id));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@PostMapping("follow")
|
||||
public R<Object> 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();
|
||||
}
|
||||
|
@ -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<IPage<FeedbackVO>> list(@RequestBody FeedbackBO query, @RequestBody Page page) {
|
||||
Page<Feedback> feedBackPage= service.page(page,query.toWrapper());
|
||||
return R.ok(convert.toVO( feedBackPage));
|
||||
public R<IPage<FeedbackVO>> list(@RequestBody FeedbackBO query, @RequestBody Page page) {
|
||||
Page<Feedback> feedBackPage = service.page(page, query.toWrapper());
|
||||
Page<FeedbackVO> 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<FeedbackVO> 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<Object> remove(@PathVariable Long id) {
|
||||
return R.ok(service.removeById(id));
|
||||
}
|
||||
|
@ -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<Page<MemberCartVO>> list(@RequestBody MemberCartBO query, @RequestBody IPage page) {
|
||||
Page<MemberCart> userPage = (Page<MemberCart>) service.page(page, new QueryWrapper<MemberCart>());
|
||||
public R<IPage<MemberCartVO>> list(@RequestBody MemberCartBO bo, @RequestBody Page page) {
|
||||
Page<MemberCart> userPage = service.page(page, bo.toWrapper());
|
||||
return R.ok(convert.toVO(userPage));
|
||||
}
|
||||
|
||||
@Tag(name = "导出购物车列表")
|
||||
@Log(title = "购物车", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public R<String> export(MemberCartBO query) {
|
||||
public R<String> export() {
|
||||
// List<MemberCart> list = service.selectList(query, null);
|
||||
// ExcelUtil<MemberCartVO> 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<MemberCart> getInfo(@PathVariable("id") Long id) {
|
||||
return R.ok(service.getById(id));
|
||||
public R<MemberCartVO> getInfo(@PathVariable("id") Long id) {
|
||||
return R.ok(convert.toVO(service.getById(id)));
|
||||
}
|
||||
|
||||
@Tag(name = "新增购物车")
|
||||
|
@ -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<FansVO, FansBO, Fans> {
|
||||
|
||||
@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);
|
||||
}
|
@ -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<FeedbackVO, FeedbackBO, Feedback> {
|
||||
|
||||
@Override
|
||||
@Mapping(target = "member.id", ignore = true,source = "memberId")
|
||||
@Mapping(target = "memberId", ignore = true,source = "memberId")
|
||||
FeedbackVO toVO(Feedback feedback);
|
||||
}
|
||||
|
@ -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<Fans> {
|
||||
|
||||
|
||||
/**
|
||||
* 博主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<Fans> 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);
|
||||
}
|
||||
}
|
@ -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)
|
||||
|
@ -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<MemberCart> {
|
||||
|
||||
@Schema(description ="0->失效;1->有效 精确匹配")
|
||||
private Integer status;
|
||||
|
||||
@ -38,4 +42,16 @@ public class MemberCartBO {
|
||||
@Schema(description ="用户手机号")
|
||||
private String phone;
|
||||
|
||||
@Override
|
||||
public LambdaQueryWrapper<MemberCart> 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);
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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<Fans> {
|
||||
|
||||
/**
|
||||
* 关注
|
||||
|
@ -9,4 +9,6 @@ import java.io.Serializable;
|
||||
public interface IFeedbackService extends IService<Feedback> {
|
||||
|
||||
FeedbackVO selectById(Serializable id);
|
||||
|
||||
void handle(Feedback entity);
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ public class FansServiceImpl extends ServiceImpl<FansMapper, Fans> 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<FansMapper, Fans> 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<FansMapper, Fans> 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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<FeedbackMapper, Feedback> 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<FeedbackMapper, Feedback> i
|
||||
return vo;
|
||||
}
|
||||
|
||||
public Integer updateMark(Feedback feedback) {
|
||||
UpdateWrapper<Feedback> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.set("remark", feedback.getRemark())
|
||||
.eq("id", feedback.getId());
|
||||
return baseMapper.update(null, updateWrapper);
|
||||
public void handle(Feedback feedback) {
|
||||
LambdaUpdateWrapper<Feedback> 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) {
|
||||
|
@ -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<MemberMapper,Member> 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<MemberMapper,Member> implemen
|
||||
return true;
|
||||
}
|
||||
|
||||
@CachePut(value = CacheConstants.MEMBER, key = "#id")
|
||||
|
||||
public int updateMark(MemberBO member) {
|
||||
UpdateWrapper<Member> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.set("mark",member.getMark())
|
||||
@ -95,6 +102,8 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper,Member> implemen
|
||||
|
||||
|
||||
|
||||
@CachePut(value = CacheConstants.MEMBER, key = "#id")
|
||||
|
||||
public Integer changeStatus(MemberBO bo) {
|
||||
UpdateWrapper<Member> wrapper = new UpdateWrapper<>();
|
||||
wrapper.eq("id", bo.getId());
|
||||
@ -236,4 +245,11 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper,Member> implemen
|
||||
public String getPhoneDecrypted(String phoneEncrypted) {
|
||||
return phoneEncrypted;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
// @Cacheable (cacheNames = CacheConstants.MEMBER, key = "#id")
|
||||
public Member getById(Serializable id) {
|
||||
return super.getById(id);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user