From 8a9dfeb883713805081c4f87edc0b3baf624ed6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BA=86=E7=A5=A5?= Date: Mon, 9 Jun 2025 17:58:43 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=E4=BF=AE=E6=94=B9=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/constant/CacheConstants.java | 7 + .../org/dromara/common/web/core/Page.java | 89 ----- ruoyi-modules/ruoyi-content/pom.xml | 4 + .../content/controller/FansController.java | 297 ---------------- .../controller/PassportController.java | 210 ------------ .../controller/UserInfoController.java | 145 -------- .../admin/VlogUploadController.java | 22 +- .../content/mapper/FansMapperCustom.java | 21 -- .../soopin/content/mapper/UsersMapper.java | 41 --- .../soopin/content/service/UserService.java | 82 ----- .../content/service/impl/MsgServiceImpl.java | 13 +- .../content/service/impl/UserServiceImpl.java | 320 ------------------ .../content/service/impl/VlogServiceImpl.java | 4 +- .../mapper/content/FansMapperCustom.xml | 2 +- .../member/controller/FansController.java | 282 +++++++++++++++ .../wzj/soopin/member}/domain/po/Fans.java | 13 +- .../wzj/soopin/member}/domain/vo/FansVO.java | 2 +- .../wzj/soopin/member}/mapper/FansMapper.java | 9 +- .../soopin/member/service/IFansService.java} | 20 +- .../{impl => }/IMemberLoginInfoService.java | 0 .../member}/service/impl/FansServiceImpl.java | 89 ++--- .../src/main/resources/ums}/FansMapper.xml | 4 +- ...troller.java => SysAddressController.java} | 8 +- .../dromara/system}/mapper/AddressMapper.java | 9 +- .../mapper/system}/AddressMapper.xml | 2 +- 25 files changed, 381 insertions(+), 1314 deletions(-) delete mode 100644 ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/core/Page.java delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/FansController.java delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/PassportController.java delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/UserInfoController.java delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/FansMapperCustom.java delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/UsersMapper.java delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/UserService.java delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/UserServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/FansController.java rename ruoyi-modules/{ruoyi-content/src/main/java/com/wzj/soopin/content => ruoyi-member/src/main/java/com/wzj/soopin/member}/domain/po/Fans.java (83%) rename ruoyi-modules/{ruoyi-content/src/main/java/com/wzj/soopin/content => ruoyi-member/src/main/java/com/wzj/soopin/member}/domain/vo/FansVO.java (89%) rename ruoyi-modules/{ruoyi-content/src/main/java/com/wzj/soopin/content => ruoyi-member/src/main/java/com/wzj/soopin/member}/mapper/FansMapper.java (71%) rename ruoyi-modules/{ruoyi-content/src/main/java/com/wzj/soopin/content/service/FansService.java => ruoyi-member/src/main/java/com/wzj/soopin/member/service/IFansService.java} (53%) rename ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/{impl => }/IMemberLoginInfoService.java (100%) rename ruoyi-modules/{ruoyi-content/src/main/java/com/wzj/soopin/content => ruoyi-member/src/main/java/com/wzj/soopin/member}/service/impl/FansServiceImpl.java (50%) rename ruoyi-modules/{ruoyi-content/src/main/resources/mapper/content => ruoyi-member/src/main/resources/ums}/FansMapper.xml (77%) rename ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/{common/CommonController.java => SysAddressController.java} (97%) rename ruoyi-modules/{ruoyi-member/src/main/java/com/wzj/soopin/member => ruoyi-system/src/main/java/org/dromara/system}/mapper/AddressMapper.java (60%) rename ruoyi-modules/{ruoyi-member/src/main/resources/ums => ruoyi-system/src/main/resources/mapper/system}/AddressMapper.xml (96%) 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 ceb837044..73a89ba40 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 @@ -27,4 +27,11 @@ public interface CacheConstants { */ String PWD_ERR_CNT_KEY = "pwd_err_cnt:"; + /** + * 用户 + */ + String MEMEBER="MEMEBER:"; + + String MEMBER_FANS="MEMBER_FANS:"; + } diff --git a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/core/Page.java b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/core/Page.java deleted file mode 100644 index 9b10f2ae7..000000000 --- a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/core/Page.java +++ /dev/null @@ -1,89 +0,0 @@ -package org.dromara.common.web.core; - -import cn.hutool.http.HttpStatus; -import com.baomidou.mybatisplus.core.metadata.IPage; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.util.List; - -/** - * 表格分页数据对象 - * - * @author Lion Li - */ -@Data -@NoArgsConstructor -public class Page implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 总记录数 - */ - private long total; - - /** - * 列表数据 - */ - private List rows; - - /** - * 消息状态码 - */ - private int code; - - /** - * 消息内容 - */ - private String msg; - - /** - * 分页 - * - * @param list 列表数据 - * @param total 总记录数 - */ - public Page(List list, long total) { - this.rows = list; - this.total = total; - this.code = HttpStatus.HTTP_OK; - this.msg = "查询成功"; - } - - /** - * 根据分页对象构建表格分页数据对象 - */ - public static Page build(IPage page) { - Page rspData = new Page<>(); - rspData.setCode(HttpStatus.HTTP_OK); - rspData.setMsg("查询成功"); - rspData.setRows(page.getRecords()); - rspData.setTotal(page.getTotal()); - return rspData; - } - - /** - * 根据数据列表构建表格分页数据对象 - */ - public static Page build(List list) { - Page rspData = new Page<>(); - rspData.setCode(HttpStatus.HTTP_OK); - rspData.setMsg("查询成功"); - rspData.setRows(list); - rspData.setTotal(list.size()); - return rspData; - } - - /** - * 构建表格分页数据对象 - */ - public static Page build() { - Page rspData = new Page<>(); - rspData.setCode(HttpStatus.HTTP_OK); - rspData.setMsg("查询成功"); - return rspData; - } - -} diff --git a/ruoyi-modules/ruoyi-content/pom.xml b/ruoyi-modules/ruoyi-content/pom.xml index 75faf0a54..ad9f81f68 100644 --- a/ruoyi-modules/ruoyi-content/pom.xml +++ b/ruoyi-modules/ruoyi-content/pom.xml @@ -140,6 +140,10 @@ org.dromara ruoyi-common-mongo + + org.dromara + ruoyi-member + diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/FansController.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/FansController.java deleted file mode 100644 index 16d8d9691..000000000 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/FansController.java +++ /dev/null @@ -1,297 +0,0 @@ -package com.wzj.soopin.content.controller; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; - -import com.wzj.soopin.content.domain.base.BaseInfoProperties; -import com.wzj.soopin.content.domain.po.Users; -import com.wzj.soopin.content.result.GraceJSONResult; -import com.wzj.soopin.content.result.ResponseStatusEnum; -import com.wzj.soopin.content.service.FansService; -import com.wzj.soopin.content.service.UserService; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@Slf4j -@RequestMapping("fans") -@RestController -public class FansController extends BaseInfoProperties { - - @Autowired - private UserService userService; - @Autowired - private FansService fansService; - - @PostMapping("follow") - public GraceJSONResult follow(@RequestParam String myId, - @RequestParam String vlogerId) { - // 从redis中获取拉黑信息 - String redisKey = REDIS_USER_BLOCK + ":" + myId; - Boolean hasKey = redis.keyIsExist(redisKey); - if(hasKey){ - List blockUserList = new ArrayList<>(); - ObjectMapper objectMapper = new ObjectMapper(); - List reports = redis.lrange(redisKey, 0, -1); // 查询用户的所有举报记录 - - for (String report : reports) { - try { - Map reportMap = objectMapper.readValue(report, new TypeReference>() {}); - // 处理拉黑信息 - String queryvlogerId = (String) reportMap.get("vlogerId"); - blockUserList.add(queryvlogerId); - } catch (JsonProcessingException e) { - e.printStackTrace(); - } - } - System.out.println(blockUserList); - Boolean isBlock = blockUserList.contains(vlogerId); - if(isBlock){ - return GraceJSONResult.errorCustom(ResponseStatusEnum.ON_BLOCK); - } - } - - // 判断两个id不能为空 - if (StringUtils.isBlank(myId) || StringUtils.isBlank(vlogerId)) { - return GraceJSONResult.errorCustom(ResponseStatusEnum.SYSTEM_ERROR); - } - - // 判断当前用户,自己不能关注自己 - if (myId.equalsIgnoreCase(vlogerId)) { - return GraceJSONResult.errorCustom(ResponseStatusEnum.SYSTEM_RESPONSE_NO_INFO); - } - - // 是否已经存在关系 - Boolean flow = fansService.queryDoIFollowVloger(myId,vlogerId); - if(flow){ - return GraceJSONResult.errorCustom(ResponseStatusEnum.FANS_INFO_UPDATED_ISFAN_EXIST_ERROR); - } - - // 判断两个id对应的用户是否存在 - Users vloger = userService.getUser(vlogerId); - Users myInfo = userService.getUser(myId); - - // fixme: 两个用户id的数据库查询后的判断,是分开好?还是合并判断好? - if (myInfo == null || vloger == null) { - return GraceJSONResult.errorCustom(ResponseStatusEnum.SYSTEM_RESPONSE_NO_INFO); - } -// - // 保存粉丝关系到数据库 - fansService.doFollow(myId, vlogerId); - - // 博主的粉丝+1,我的关注+1 - redis.increment(REDIS_MY_FOLLOWS_COUNTS + ":" + myId, 1); - redis.increment(REDIS_MY_FANS_COUNTS + ":" + vlogerId, 1); - - // 我和博主的关联关系,依赖redis,不要存储数据库,避免db的性能瓶颈 - redis.set(REDIS_FANS_AND_VLOGGER_RELATIONSHIP + ":" + myId + ":" + vlogerId, "1"); -// - return GraceJSONResult.ok(); - } - - @PostMapping("cancel") - public GraceJSONResult cancel(@RequestParam String myId, - @RequestParam String vlogerId) { - // 判断两个id不能为空 - if (StringUtils.isBlank(myId) || StringUtils.isBlank(vlogerId)) { - return GraceJSONResult.errorCustom(ResponseStatusEnum.SYSTEM_ERROR); - } - // 是否已经存在关系 - Boolean flow = fansService.queryDoIFollowVloger(myId,vlogerId); - if(!flow){ - return GraceJSONResult.errorCustom(ResponseStatusEnum.FANS_INFO_UPDATED_ISFLOW_EXIST_ERROR); - } - // 删除业务的执行 - fansService.doCancel(myId, vlogerId); - - // 博主的粉丝-1,我的关注-1 - redis.decrement(REDIS_MY_FOLLOWS_COUNTS + ":" + myId, 1); - redis.decrement(REDIS_MY_FANS_COUNTS + ":" + vlogerId, 1); - - // 我和博主的关联关系,依赖redis,不要存储数据库,避免db的性能瓶颈 - redis.del(REDIS_FANS_AND_VLOGGER_RELATIONSHIP + ":" + myId + ":" + vlogerId); - - return GraceJSONResult.ok(); - } - - @GetMapping("queryBlockVloger") - public GraceJSONResult queryBlockVloger(@RequestParam String myId, - @RequestParam String vlogerId) { - // 从redis中获取拉黑信息 - String redisKey = REDIS_USER_BLOCK + ":" + myId; - Boolean hasKey = redis.keyIsExist(redisKey); - if(hasKey){ - List blockUserList = new ArrayList<>(); - ObjectMapper objectMapper = new ObjectMapper(); - List reports = redis.lrange(redisKey, 0, -1); // 查询用户的所有举报记录 - - for (String report : reports) { - try { - Map reportMap = objectMapper.readValue(report, new TypeReference>() {}); - // 处理拉黑信息 - String queryvlogerId = (String) reportMap.get("vlogerId"); - blockUserList.add(queryvlogerId); - } catch (JsonProcessingException e) { - e.printStackTrace(); - } - } - System.out.println(blockUserList); - return GraceJSONResult.ok(blockUserList.contains(vlogerId)); - }else{ - return GraceJSONResult.ok(false); - } - } - - @PostMapping("block") - public GraceJSONResult block(@RequestParam String myId, - @RequestParam String vlogerId) { - // 先执行cancel - // 判断两个id不能为空 - if (StringUtils.isBlank(myId) || StringUtils.isBlank(vlogerId)) { - return GraceJSONResult.errorCustom(ResponseStatusEnum.SYSTEM_ERROR); - } - // 是否已经存在关系 - Boolean flow = fansService.queryDoIFollowVloger(myId,vlogerId); - if(flow){ - // 删除业务的执行 - fansService.doCancel(myId, vlogerId); - - // 博主的粉丝-1,我的关注-1 - redis.decrement(REDIS_MY_FOLLOWS_COUNTS + ":" + myId, 1); - redis.decrement(REDIS_MY_FANS_COUNTS + ":" + vlogerId, 1); - - // 我和博主的关联关系,依赖redis,不要存储数据库,避免db的性能瓶颈 - redis.del(REDIS_FANS_AND_VLOGGER_RELATIONSHIP + ":" + myId + ":" + vlogerId); - } - // 拉黑 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - String blockTime = LocalDateTime.now().format(formatter); - try{ - Map blockInfo = new HashMap<>(); - blockInfo.put("vlogerId", vlogerId); - blockInfo.put("myId", myId); - blockInfo.put("time", blockTime); - // 转成 JSON 字符串 - ObjectMapper objectMapper = new ObjectMapper(); - String blockJson = objectMapper.writeValueAsString(blockInfo); - String redisKey = REDIS_USER_BLOCK + ":" + myId ; - log.info("写入Redis => key: {}, value: {}", redisKey, blockJson); - redis.rpush(redisKey , blockJson); - - return GraceJSONResult.ok(); - }catch (JsonProcessingException e){ - // 打日志,或者抛出业务异常 - e.printStackTrace(); - throw new RuntimeException("JSON序列化失败: " + e.getMessage()); - } - } - - @PostMapping("cancelBlock") - public GraceJSONResult cancelBlock(@RequestParam String myId, - @RequestParam String vlogerId) { - // 判断两个id不能为空 - if (StringUtils.isBlank(myId) || StringUtils.isBlank(vlogerId)) { - return GraceJSONResult.errorCustom(ResponseStatusEnum.SYSTEM_ERROR); - } - // 解除拉黑 - String redisKey = REDIS_USER_BLOCK + ":" + myId; - Boolean hasKey = redis.keyIsExist(redisKey); - if(hasKey){ - List blockList = redis.lrange(redisKey, 0, -1); - ObjectMapper objectMapper = new ObjectMapper(); - if (blockList != null && !blockList.isEmpty()) { - for (String item : blockList) { - try { - Map itemMap = objectMapper.readValue(item, new TypeReference>() {}); - String storedVlogerId = itemMap.get("vlogerId"); - - if (storedVlogerId != null && storedVlogerId.equals(vlogerId)) { - redis.lrem(redisKey, 1, item); // 删除找到的 JSON 字符串 - break; - } - }catch (JsonProcessingException e){ - e.printStackTrace(); - } - } - } - return GraceJSONResult.ok(); - }else{ - return GraceJSONResult.error(); - } - } - - @PostMapping("blockVideo") - public GraceJSONResult blockVideo(@RequestParam String myId, - @RequestParam String vlogId, - @RequestParam String reason, - @RequestParam(defaultValue = "") String description) { - // 判断两个id不能为空 - if (StringUtils.isBlank(myId) || StringUtils.isBlank(vlogId)) { - return GraceJSONResult.errorCustom(ResponseStatusEnum.SYSTEM_ERROR); - } - // 拉黑 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - String blockTime = LocalDateTime.now().format(formatter); - // - try{ - Map blockInfo = new HashMap<>(); - blockInfo.put("vlogId", vlogId); - blockInfo.put("reporter", myId); - blockInfo.put("time", blockTime); - blockInfo.put("reason", reason); - blockInfo.put("description", description); - // 转成 JSON 字符串 - ObjectMapper objectMapper = new ObjectMapper(); - String blockJson = objectMapper.writeValueAsString(blockInfo); - - String redisKey = REDIS_VIDEO_BLOCK + ":" + myId ; - log.info("写入Redis => key: {}, value: {}", redisKey, blockJson); - redis.rpush(redisKey , blockJson); - - return GraceJSONResult.ok(); - }catch (JsonProcessingException e){ - // 打日志,或者抛出业务异常 - e.printStackTrace(); - throw new RuntimeException("JSON序列化失败: " + e.getMessage()); - } - } - - - - @GetMapping("queryDoIFollowVloger") - public GraceJSONResult queryDoIFollowVloger(@RequestParam String myId, - @RequestParam String vlogerId) { - return GraceJSONResult.ok(fansService.queryDoIFollowVloger(myId, vlogerId)); - } - - @GetMapping("queryMyFollows") - public GraceJSONResult queryMyFollows(@RequestParam String myId, - @RequestParam Integer page, - @RequestParam Integer pageSize) { - return GraceJSONResult.ok( - fansService.queryMyFollows( - myId, - page, - pageSize)); - } - - @GetMapping("queryMyFans") - public GraceJSONResult queryMyFans(@RequestParam String myId, - @RequestParam Integer page, - @RequestParam Integer pageSize) { - return GraceJSONResult.ok( - fansService.queryMyFans( - myId, - page, - pageSize)); - } -} diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/PassportController.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/PassportController.java deleted file mode 100644 index 01082b099..000000000 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/PassportController.java +++ /dev/null @@ -1,210 +0,0 @@ -package com.wzj.soopin.content.controller; - - -import com.wzj.soopin.content.domain.base.BaseInfoProperties; -import com.wzj.soopin.content.domain.bo.LoginWithPasswordBO; -import com.wzj.soopin.content.domain.bo.RegistLoginBO; -import com.wzj.soopin.content.domain.po.Users; -import com.wzj.soopin.content.domain.vo.UsersVO; -import com.wzj.soopin.content.result.GraceJSONResult; -import com.wzj.soopin.content.result.ResponseStatusEnum; -import com.wzj.soopin.content.service.UserService; -import com.wzj.soopin.content.utils.GsonUtil; -import com.wzj.soopin.content.utils.IPUtil; -import com.wzj.soopin.content.utils.SMSUtils; -import io.swagger.annotations.Api; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.validation.Valid; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - - -import java.util.Optional; -import java.util.UUID; - -/** - * @author vercen - * @version 1.0 - * @date 2023/5/25 10:47 - */ -@Slf4j -@RestController -@RequestMapping("passport") -public class PassportController extends BaseInfoProperties { - @Autowired - private SMSUtils smsUtils; - - @Autowired - private UserService userService; - -// @Autowired -// private PasswordEncoder passwordEncoder; - - @PostMapping("getSMSCode") - public Object getSMSCode(@RequestParam String mobile, HttpServletRequest request) throws Exception { - if (StringUtils.isBlank(mobile)) { - return GraceJSONResult.ok(); - } - - // TODO 获得用户ip 限制时间60s只能1次 - String userIp = IPUtil.getRequestIp(request); - - redis.setnx60s(MOBILE_SMSCODE + ":" + userIp, userIp); - String code = (int) ((Math.random() * 9 + 1) * 100000) + ""; - - smsUtils.sendSMS(mobile, code); - - log.info(code); - redis.set(MOBILE_SMSCODE + ":" + mobile, code, 30 * 60); - // TODO 验证码放入redis - return GraceJSONResult.ok(); - } - - @PostMapping("login") - public Object login(@Valid @RequestBody RegistLoginBO registLoginBO) { - - String rediscode = redis.get(MOBILE_SMSCODE + ":" + registLoginBO.getMobile()); - - if (StringUtils.isBlank(rediscode) || !rediscode.equalsIgnoreCase(registLoginBO.getSmsCode())) { - System.out.println("rediscode" + rediscode); - System.out.println("registLoginBO.getMobile()" + registLoginBO.getSmsCode()); - return GraceJSONResult.errorCustom(ResponseStatusEnum.SMS_CODE_ERROR); - } - - Users user = userService.queryMobileIsExist(registLoginBO.getMobile()); - if (user == null) { - user = userService.createUser(registLoginBO.getMobile()); - } - String uToken = UUID.randomUUID().toString(); - log.info(uToken); - redis.set(REDIS_USER_TOKEN + ":" + user.getId(), uToken); - - // 清除验证码 - redis.del(MOBILE_SMSCODE + ":" + user.getMobile()); - - // 返回给前端 - UsersVO usersVO = new UsersVO(); - BeanUtils.copyProperties(user, usersVO); - usersVO.setUserToken(uToken); - - return GraceJSONResult.ok(usersVO); - } - - /** - * 从商城系统登录 - * - * @param mobile - * @return - */ - @PostMapping("loginFromShop") - public String loginFromShop(String mobile, String memberId) { - // 创建短视频系统账号 - return Optional.ofNullable(userService.createUserFromShop(mobile, memberId))// - .map(user -> { - String uToken = UUID.randomUUID().toString(); - log.info(uToken); - redis.set(REDIS_USER_TOKEN + ":" + user.getId(), uToken); - // 返回给前端 - UsersVO usersVO = new UsersVO(); - BeanUtils.copyProperties(user, usersVO); - usersVO.setUserToken(uToken); - - return GsonUtil.beanToJson(usersVO); - })// - .orElseGet(() -> StringUtils.EMPTY); - } - - /** - * 从商城登录获取短视频账户信息 - * - * @param memberId - * @return - */ - @PostMapping("getUserFromShop") - public String getUserFromShop(String memberId) { - return userService.getUserInfoFromShop(memberId); - } - - /*@PostMapping("login") - public Object login(@Valid @RequestBody RegistLoginBO registLoginBO) { - String rediscode = redis.get(MOBILE_SMSCODE + ":" + registLoginBO.getMobile()); - - if (StringUtils.isBlank(rediscode) || !rediscode.equalsIgnoreCase(registLoginBO.getSmsCode())) { - System.out.println("rediscode" + rediscode); - System.out.println("registLoginBO.getMobile()" + registLoginBO.getSmsCode()); - return GraceJSONResult.errorCustom(ResponseStatusEnum.SMS_CODE_ERROR); - } - - // 手机号 - String mobile = registLoginBO.getMobile(); - Users user = userService.queryMobileIsExist(mobile); - Token shopToken = null; - if (user == null) { - Map result = userService.createUserNew(mobile); - if (CommonUtil.isEmpty(result)) { - return GraceJSONResult.errorCustom(ResponseStatusEnum.FAILED); - } - user = (Users) result.get("user"); - shopToken = (Token) result.get("token"); - } else { - shopToken = userService.getShopToken(user.getId()); - } - - String uToken = UUID.randomUUID().toString(); - log.info(uToken); - redis.set(REDIS_USER_TOKEN + ":" + user.getId(), uToken); - - // 清除验证码 - redis.del(MOBILE_SMSCODE + ":" + user.getMobile()); - - // 返回给前端 - UsersVO usersVO = new UsersVO(); - BeanUtils.copyProperties(user, usersVO); - usersVO.setUserToken(uToken); - //usersVO.setShopToken(shopToken); - - return GraceJSONResult.ok(usersVO); - }*/ - - @PostMapping("loginWithPassword") - public Object loginWithPassword(@Valid @RequestBody LoginWithPasswordBO loginWithPasswordBO) { - String phone = loginWithPasswordBO.getMobile(); - String password = loginWithPasswordBO.getPassword(); - log.info(phone); - log.info(password); - Users user = userService.queryMobileIsExist(phone); - if (user == null) { - return GraceJSONResult.errorCustom(ResponseStatusEnum.USER_NOT_EXIST_ERROR); - } -// if (!passwordEncoder.matches(password, user.getPassword())) { -// return GraceJSONResult.errorCustom(ResponseStatusEnum.USER_PASSWORD_ERROR); -// } - - String uToken = UUID.randomUUID().toString(); - log.info(uToken); - redis.set(REDIS_USER_TOKEN + ":" + user.getId(), uToken); - // 商城token - // Token shopToken = userService.getShopToken(user.getId()); - - // 返回给前端 - UsersVO usersVO = new UsersVO(); - BeanUtils.copyProperties(user, usersVO); - usersVO.setUserToken(uToken); - // usersVO.setShopToken(shopToken); - - return GraceJSONResult.ok(usersVO); - - } - - @PostMapping("logout") - public Object logout(@RequestParam String userId) { - - redis.del(REDIS_USER_TOKEN + ":" + userId); - - return GraceJSONResult.ok(); - } - -} diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/UserInfoController.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/UserInfoController.java deleted file mode 100644 index 195e987eb..000000000 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/UserInfoController.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.wzj.soopin.content.controller; - - -import com.wzj.soopin.content.domain.base.BaseInfoProperties; -import com.wzj.soopin.content.domain.bo.UpdatedUserBO; -import com.wzj.soopin.content.domain.po.Users; -import com.wzj.soopin.content.domain.vo.UsersVO; -import com.wzj.soopin.content.enums.FileTypeEnum; -import com.wzj.soopin.content.enums.UserInfoModifyType; -import com.wzj.soopin.content.result.GraceJSONResult; -import com.wzj.soopin.content.result.ResponseStatusEnum; -import com.wzj.soopin.content.service.UserService; -import com.wzj.soopin.content.utils.MinIOUtils; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -/** - * @author vercen - * @version 1.0 - * @date 2023/5/20 14:32 - */ -@RestController -@Slf4j -@RequestMapping("userInfo") -public class UserInfoController extends BaseInfoProperties { - - @Autowired - UserService userService; - -// @ResponseBody - @ApiOperation(value = "根据userId返回个人信息") - @GetMapping("query") - public Object query(@RequestParam String userId){ - Users user = userService.getUser(userId); - - UsersVO usersVO = new UsersVO(); - BeanUtils.copyProperties(user, usersVO); - - - // 我的关注博主总数量 - String myFollowsCountsStr = redis.get(REDIS_MY_FOLLOWS_COUNTS + ":" + userId); - // 我的粉丝总数 - String myFansCountsStr = redis.get(REDIS_MY_FANS_COUNTS + ":" + userId); - // 用户获赞总数,视频博主(点赞/喜欢)总和 -// String likedVlogCountsStr = redis.get(REDIS_VLOG_BE_LIKED_COUNTS + ":" + userId); - String likedVlogerCountsStr = redis.get(REDIS_VLOGER_BE_LIKED_COUNTS + ":" + userId); - - Integer myFollowsCounts = 0; - Integer myFansCounts = 0; - Integer likedVlogCounts = 0; - Integer likedVlogerCounts = 0; - Integer totalLikeMeCounts = 0; - - - if (StringUtils.isNotBlank(myFollowsCountsStr)) { - myFollowsCounts = Integer.valueOf(myFollowsCountsStr); - } - if (StringUtils.isNotBlank(myFansCountsStr)) { - myFansCounts = Integer.valueOf(myFansCountsStr); - } -// if (StringUtils.isNotBlank(likedVlogCountsStr)) { -// likedVlogCounts = Integer.valueOf(likedVlogCountsStr); -// } - if (StringUtils.isNotBlank(likedVlogerCountsStr)) { - likedVlogerCounts = Integer.valueOf(likedVlogerCountsStr); - } - totalLikeMeCounts = likedVlogCounts + likedVlogerCounts; - - usersVO.setMyFollowsCounts(myFollowsCounts); - usersVO.setMyFansCounts(myFansCounts); - usersVO.setTotalLikeMeCounts(totalLikeMeCounts); - - //usersVO.setMyFansCounts((Integer) myFansCounts); - - return GraceJSONResult.ok(usersVO); - } - - @PostMapping("modifyUserInfo") - public GraceJSONResult modifyUserInfo(@RequestBody UpdatedUserBO updatedUserBO, @RequestParam Integer type) throws Exception { - - UserInfoModifyType.checkUserInfoTypeIsRight(type); - Users newUserInfo = userService.updateUserInfo(updatedUserBO, type); - return GraceJSONResult.ok(newUserInfo); - } - - - @PostMapping("modifyImage") - public GraceJSONResult modifyImage(@RequestParam String userId, - @RequestParam Integer type, - MultipartFile file) throws Exception { - - if (type != FileTypeEnum.BGIMG.type && type != FileTypeEnum.FACE.type) { - return GraceJSONResult.errorCustom(ResponseStatusEnum.FILE_UPLOAD_FAILD); - } - - String fileName = file.getOriginalFilename(); - -// MinIOUtils.uploadFile(minIOConfig.getBucketName(), -// fileName, -// file.getInputStream()); -// -// String imgUrl = minIOConfig.getFileHost() -// + "/" -// + minIOConfig.getBucketName() -// + "/" -// + fileName; - - - // 修改图片地址到数据库 - UpdatedUserBO updatedUserBO = new UpdatedUserBO(); - updatedUserBO.setId(userId); - -// if (type == FileTypeEnum.BGIMG.type) { -// updatedUserBO.setBgImg(imgUrl); -// } else { -// updatedUserBO.setFace(imgUrl); -// } - Users users = userService.updateUserInfo(updatedUserBO); - - return GraceJSONResult.ok(users); - } - - @ApiOperation(value = "根据昵称搜索用户") - @GetMapping("searchByNickname") - public GraceJSONResult searchByNickname(@RequestParam String nickname, - @RequestParam(defaultValue = "") String id, - @RequestParam Integer page, - @RequestParam Integer pageSize){ - try { - return GraceJSONResult.ok(userService.searchByNickname(nickname, page, pageSize,id)); - } catch (Exception e) { - // 记录异常日志 - log.error("搜索用户时发生异常,nickname: {}, page: {}, pageSize: {}", nickname, page, pageSize, e); - return GraceJSONResult.errorMsg("搜索用户时发生异常,请稍后重试"); - } - } - - -} diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/admin/VlogUploadController.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/admin/VlogUploadController.java index 375bd59a5..cdf98a36a 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/admin/VlogUploadController.java +++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/admin/VlogUploadController.java @@ -1,14 +1,17 @@ package com.wzj.soopin.content.controller.admin; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.tencentcloudapi.vod.v20180717.models.*; import com.wzj.soopin.content.domain.base.BaseInfoProperties; -import com.wzj.soopin.content.mapper.FansMapper; -import com.wzj.soopin.content.mapper.FansMapperCustom; import com.wzj.soopin.content.mapper.MyLikedVlogMapper; import com.wzj.soopin.content.result.GraceJSONResult; import com.wzj.soopin.content.service.VlogUploadService; import com.wzj.soopin.content.utils.RedisOperator; import com.wzj.soopin.content.utils.TencentCloudUtil; +import com.wzj.soopin.member.domain.vo.FansVO; +import com.wzj.soopin.member.mapper.FansMapper; +import com.wzj.soopin.member.service.IFansService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -23,8 +26,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.tencentcloudapi.common.exception.TencentCloudSDKException; - @Slf4j @Api(tags = "管理端-视频上传接口") @RequestMapping("admin/vlog/upload") @@ -50,10 +51,9 @@ public class VlogUploadController extends BaseInfoProperties { private MyLikedVlogMapper myLikedVlogMapper; @Autowired - private FansMapper fansMapper; + private IFansService fansService; + - @Autowired - private FansMapperCustom fansMapperCustom; @ApiOperation("获取腾讯云点播视频列表") @GetMapping("/list") @@ -180,7 +180,7 @@ public class VlogUploadController extends BaseInfoProperties { fansCounts = Integer.valueOf(fansCountsStr); } else { // Redis 中没有,从数据库查询 - fansCounts = fansMapper.countFansByVlogerId(vlog.getVlogerId()); + fansCounts = fansService.countFansByVlogerId(vlog.getVlogerId()); // 可以选择在这里将数据库查询结果写入 Redis,以便下次使用 if (fansCounts != null) { redis.set(REDIS_MY_FANS_COUNTS + ":" + vlog.getVlogerId(), String.valueOf(fansCounts)); @@ -267,10 +267,8 @@ public class VlogUploadController extends BaseInfoProperties { List> likedUsers = myLikedVlogMapper.selectLikedUsersByVlogId(vlog.getId()); result.put("likedUsers", likedUsers); - // 查询粉丝列表 - Map fansQueryMap = new HashMap<>(); - fansQueryMap.put("myId", vlog.getVlogerId()); - List fansList = fansMapperCustom.queryMyFans(fansQueryMap); + + IPage fansList = fansService.queryMyFans(vlog.getVlogerId(),0,10); result.put("fansList", fansList); } else { diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/FansMapperCustom.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/FansMapperCustom.java deleted file mode 100644 index a5caa5e1e..000000000 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/FansMapperCustom.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.wzj.soopin.content.mapper; - -import com.wzj.soopin.content.domain.po.Fans; -import com.wzj.soopin.content.domain.po.Vlog; -import com.wzj.soopin.content.domain.vo.FansVO; -import com.wzj.soopin.content.domain.vo.VlogerVO; -import org.apache.ibatis.annotations.Param; -import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; -import org.springframework.stereotype.Repository; - -import java.util.List; -import java.util.Map; - -@Repository -public interface FansMapperCustom extends BaseMapperPlus { - - public List queryMyFollows(@Param("paramMap") Map map); - - public List queryMyFans(@Param("paramMap") Map map); - -} diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/UsersMapper.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/UsersMapper.java deleted file mode 100644 index a71946ce9..000000000 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/UsersMapper.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.wzj.soopin.content.mapper; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.wzj.soopin.content.domain.bo.UpdatedUserBO; -import com.wzj.soopin.content.domain.po.Users; -import com.wzj.soopin.content.domain.vo.UsersVO; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; -import org.apache.ibatis.annotations.Param; -import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; - -import java.util.List; - -@Mapper -public interface UsersMapper extends BaseMapper { - - @Select("SELECT * FROM t_users WHERE nickname LIKE CONCAT('%', #{nickname}, '%')") - List searchByNickname(String nickname); - @Update("UPDATE t_users SET nickname = #{nickname} WHERE id = #{id}") - int updateNickname(UpdatedUserBO user); - @Update("UPDATE t_users SET sex = #{sex} WHERE id = #{id}") - int updateSex(UpdatedUserBO user); - @Update("UPDATE t_users SET birthday = #{birthday} WHERE id = #{id}") - int updateBirthday(UpdatedUserBO user); - @Update("UPDATE t_users SET description = #{description} WHERE id = #{id}") - int updateDescription(UpdatedUserBO user); - @Update("UPDATE t_users SET province = #{province},city = #{city},district = #{district} WHERE id = #{id}") - int updateLocation(UpdatedUserBO user); - @Update("UPDATE t_users SET imooc_num = #{imoocNum},can_imooc_num_be_updated = 0 WHERE id = #{id}") - int updateVnum(UpdatedUserBO user); - @Select("SELECT * FROM t_users WHERE imooc_num = #{imoocNum}") - List selectByImoocNum(@Param("imoocNum") String imoocNum); - - Users selectByPrimaryKey(String userId); - - void updateByPrimaryKeySelective(Users users); - - int inset(Users user); -} diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/UserService.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/UserService.java deleted file mode 100644 index e3cebb2bd..000000000 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/UserService.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.wzj.soopin.content.service; - - -import com.wzj.soopin.content.domain.bo.UpdatedUserBO; -import com.wzj.soopin.content.domain.mo.Token; -import com.wzj.soopin.content.domain.po.Users; -import com.wzj.soopin.content.domain.vo.UsersVO; - -import java.util.List; -import java.util.Map; - -/** - * @author vercen - * @version 1.0 - * @date 2023/5/25 21:02 - */ -public interface UserService { - /** - * 判断用户是否存在,如果存在则返回用户信息 - */ - public Users queryMobileIsExist(String mobile); - - /** - * 创建用户信息,并且返回用户对象 - */ - public Users createUser(String mobile); - - /** - * 根据用户主键查询用户信息 - */ - public Users getUser(String userId); - - /** - * 用户信息修改 - */ - public Users updateUserInfo(UpdatedUserBO updatedUserBO); - - /** - * 用户信息修改 - */ - public Users updateUserInfo(UpdatedUserBO updatedUserBO, Integer type); - - /** - * 创建用户打通短视频和商城系统 - * - * @param mobile - * @return - */ - Map createUserNew(String mobile); - - /** - * 获取商城token - * - * @param userId - * @return - */ - Token getShopToken(String userId); - - /** - * 从商城系统创建账号 - * - * @param mobile - * @return - */ - Users createUserFromShop(String mobile, String memberId); - - /** - * 从商城系统获取短视频账户信息 - * @param memberId - * @return - */ - String getUserInfoFromShop(String memberId); - - /** - * 根据昵称搜索用户 - * @param nickname - * @param page - * @param pageSize - * @return - */ - List searchByNickname(String nickname, Integer page, Integer pageSize, String id); -} diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/MsgServiceImpl.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/MsgServiceImpl.java index 641608c48..75bedca4b 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/MsgServiceImpl.java +++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/MsgServiceImpl.java @@ -7,7 +7,10 @@ import com.wzj.soopin.content.domain.po.Users; import com.wzj.soopin.content.enums.MessageEnum; import com.wzj.soopin.content.mapper.repository.MessageRepository; import com.wzj.soopin.content.service.MsgService; -import com.wzj.soopin.content.service.UserService; +import com.wzj.soopin.member.domain.po.Member; +import com.wzj.soopin.member.mapper.MemberMapper; +import com.wzj.soopin.member.service.IMemberService; +import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; @@ -21,13 +24,13 @@ import java.util.List; import java.util.Map; @Service +@RequiredArgsConstructor public class MsgServiceImpl extends BaseInfoProperties implements MsgService { @Autowired private MessageRepository messageRepository; - @Autowired - private UserService userService; + private final MemberMapper memberMapper; @Override public void createMsg(String fromUserId, @@ -35,13 +38,13 @@ public class MsgServiceImpl extends BaseInfoProperties implements MsgService { Integer type, Map msgContent) { - Users fromUser = userService.getUser(fromUserId); + Member fromUser = memberMapper.selectById(fromUserId); MessageMO messageMO = new MessageMO(); messageMO.setFromUserId(fromUserId); messageMO.setFromNickname(fromUser.getNickname()); - messageMO.setFromFace(fromUser.getFace()); + messageMO.setFromFace(fromUser.getAvatar()); messageMO.setToUserId(toUserId); diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/UserServiceImpl.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/UserServiceImpl.java deleted file mode 100644 index 0ef2608cc..000000000 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/UserServiceImpl.java +++ /dev/null @@ -1,320 +0,0 @@ -package com.wzj.soopin.content.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.google.common.collect.Maps; - -import com.wzj.soopin.content.domain.base.BaseInfoProperties; -import com.wzj.soopin.content.domain.bo.UpdatedUserBO; -import com.wzj.soopin.content.domain.exceptions.GraceException; -import com.wzj.soopin.content.domain.mo.Token; -import com.wzj.soopin.content.domain.po.Fans; -import com.wzj.soopin.content.domain.po.UserMember; -import com.wzj.soopin.content.domain.po.Users; -import com.wzj.soopin.content.domain.result.ResponseStatusEnum; -import com.wzj.soopin.content.domain.vo.UsersVO; -import com.wzj.soopin.content.enums.Sex; -import com.wzj.soopin.content.enums.UserInfoModifyType; -import com.wzj.soopin.content.enums.YesOrNo; -import com.wzj.soopin.content.mapper.FansMapper; -import com.wzj.soopin.content.mapper.FansMapperCustom; -import com.wzj.soopin.content.mapper.UserMemberMapper; -import com.wzj.soopin.content.mapper.UsersMapper; -import com.wzj.soopin.content.service.FansService; -import com.wzj.soopin.content.service.UserService; -import com.wzj.soopin.content.utils.*; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; - -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.http.HttpStatus; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; - -import java.util.*; -import java.util.stream.Collectors; - - - -/** - * @author vercen - * @version 1.0 - * @date 2023/5/25 21:02 - */ -@Slf4j -@Service -public class UserServiceImpl extends BaseInfoProperties implements UserService { - @Autowired - private UsersMapper usersMapper; - @Autowired - private FansMapperCustom fansMapperCustom; - - @Autowired - private UserMemberMapper userMemberMapper; - - @Autowired - private FansMapper fansMapper; - - //@Autowired - //public RedisOperator redis; - - @Resource(name = "redisTemplate") - private RedisTemplate redisTemplate; - - @Autowired - private Sid sid; - private static final String USER_FACE1 = "http://43.143.227.203:29000/bucket/logo.png"; - - @Override - public Users queryMobileIsExist(String mobile) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Users::getMobile, mobile); - return usersMapper.selectOne(queryWrapper); - } - - @Override - public Users createUser(String mobile) { - String userId = sid.nextShort(); - - Users user = new Users(); - user.setId(userId); - user.setPassword(mobile); - user.setMobile(mobile); - user.setNickname("用户:" + DesensitizationUtil.commonDisplay(mobile)); - user.setImoocNum("用户:" + DesensitizationUtil.commonDisplay(mobile)); - user.setFace(USER_FACE1); - user.setBirthday(DateUtil.stringToDate("1999-01-01")); - user.setSex(Sex.secret.type); - user.setBgImg(USER_FACE1); - user.setCountry("中国"); - user.setProvince(""); - user.setCity(""); - user.setDistrict(""); - user.setDescription("这家伙很懒,什么都没留下~"); - user.setCanImoocNumBeUpdated(YesOrNo.YES.type); - - usersMapper.insert(user); - return user; - } - - @Override - public Users getUser(String userId) { - return usersMapper.selectById(userId); - } - - @Transactional - @Override - public Users updateUserInfo(UpdatedUserBO updatedUserBO) { - Users users = new Users(); - BeanUtils.copyProperties(updatedUserBO, users); - usersMapper.updateById(users); - return getUser(updatedUserBO.getId()); - } - - @Transactional - @Override - public Users updateUserInfo(UpdatedUserBO updatedUserBO, Integer type) { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(Users::getId, updatedUserBO.getId()); - - UserInfoModifyType modifyType = UserInfoModifyType.getTypeByValue(type); - switch (modifyType) { - case NICKNAME: - updateWrapper.set(Users::getNickname, updatedUserBO.getNickname()); - break; - case SEX: - updateWrapper.set(Users::getSex, updatedUserBO.getSex()); - break; - case BIRTHDAY: - updateWrapper.set(Users::getBirthday, updatedUserBO.getBirthday()); - break; - case LOCATION: - updateWrapper.set(Users::getCountry, updatedUserBO.getCountry()) - .set(Users::getProvince, updatedUserBO.getProvince()) - .set(Users::getCity, updatedUserBO.getCity()) - .set(Users::getDistrict, updatedUserBO.getDistrict()); - break; - case DESC: - updateWrapper.set(Users::getDescription, updatedUserBO.getDescription()); - break; - case IMOOCNUM: - if (updatedUserBO.getCanImoocNumBeUpdated() == YesOrNo.NO.type) { - GraceException.display(ResponseStatusEnum.USER_INFO_CANT_UPDATED_IMOOCNUM_ERROR); - } - // 校验唯一性 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Users::getImoocNum, updatedUserBO.getImoocNum()); - if (usersMapper.selectCount(queryWrapper) > 0) { - GraceException.display(ResponseStatusEnum.USER_INFO_UPDATED_IMOOCNUM_EXIST_ERROR); - } - updateWrapper.set(Users::getImoocNum, updatedUserBO.getImoocNum()); - break; - default: - break; - } - - usersMapper.update(null, updateWrapper); - return getUser(updatedUserBO.getId()); - } - - @Transactional(rollbackFor = RuntimeException.class) - @Override - public Map createUserNew(String mobile) { - String userId = sid.nextShort(); - Users user = new Users(); - user.setId(userId); -// user.setPassword(passwordEncoder.encode(mobile)); - user.setMobile(mobile); - user.setNickname("用户:" + DesensitizationUtil.commonDisplay(mobile)); - user.setImoocNum("用户:" + DesensitizationUtil.commonDisplay(mobile)); - user.setFace(USER_FACE1); - user.setBirthday(DateUtil.stringToDate("1999-01-01")); - user.setSex(Sex.secret.type); - user.setBgImg(USER_FACE1); - user.setCountry("中国"); - user.setProvince(""); - user.setCity(""); - user.setDistrict(""); - user.setDescription("这家伙很懒,什么都没留下~"); - user.setBgImg(""); - user.setCanImoocNumBeUpdated(YesOrNo.YES.type); - - int row = usersMapper.insert(user); - - if (row > 0) { - Map result = Maps.newHashMap(); - result.put("user", user); - String url = "http://localhost:8888/buyer/passport/member/registerFromTik"; - MultiValueMap param = new LinkedMultiValueMap<>(); - param.add("userName", mobile); - param.add("password", mobile); - param.add("mobilePhone", mobile); - param.add("userId", user.getId()); - - RestTemplateUtil.post(null, null, null, url, param, String.class, t -> { - if (t.getStatusCode() == HttpStatus.OK) { - String content = t.getBody(); - if (StringUtils.isNotBlank(content)) { - Token token = GsonUtil.jsonToBean(content, Token.class); - result.put("token", token); - } else { - throw new RuntimeException("账号注册异常"); - } - } else { - throw new RuntimeException("账号注册异常"); - } - }); - return result; - } - return null; - } - - @Override - public Token getShopToken(String userId) { - Token[] tokens = { null }; - String url = "http://localhost:8888/buyer/passport/member/getTokenFromTik"; - MultiValueMap param = new LinkedMultiValueMap<>(); - param.add("userId", userId); - RestTemplateUtil.post(null, null, null, url, param, String.class, t -> { - if (t.getStatusCode() == HttpStatus.OK) { - String content = t.getBody(); - if (StringUtils.isNotBlank(content)) { - tokens[0] = GsonUtil.jsonToBean(content, Token.class); - } else { - throw new RuntimeException("账号注册异常"); - } - } else { - throw new RuntimeException("账号注册异常"); - } - }); - return tokens[0]; - } - - @Transactional(rollbackFor = RuntimeException.class) - @Override - public Users createUserFromShop(String mobile, String memberId) { - String tempMobile = StringUtils.isBlank(mobile) ? "unionID" : mobile; - // 获得全局唯一主键 - String userId = sid.nextShort(); - Users user = new Users(); - user.setId(userId); - user.setPassword(tempMobile); - user.setMobile(tempMobile); - user.setNickname("用户:" + DesensitizationUtil.commonDisplay(tempMobile)); - user.setImoocNum("WZJ" + (System.currentTimeMillis() / 1000) + (int)(Math.random() * 1000)); - user.setFace(USER_FACE1); - user.setBirthday(DateUtil.stringToDate("1999-01-01")); - user.setSex(Sex.secret.type); - user.setBgImg("https://wuzhongjie.com.cn/download/logo.png"); // 测试用地址 - user.setCountry("中国"); - user.setProvince(""); - user.setCity(""); - user.setDistrict(""); - user.setDescription("这家伙很懒,什么都没留下~"); - user.setCanImoocNumBeUpdated(YesOrNo.YES.type); -// user.setCreatedTime(new Date()); -// user.setUpdatedTime(new Date()); - - // 短视频用户与商城账号关系 - UserMember userMember = new UserMember(); - userMember.setUserId(user.getId()); - userMember.setMemberId(memberId); - - if (usersMapper.insert(user) > 0 && userMemberMapper.insert(userMember) > 0) { - return user; - } - return null; - } - - @Override - public String getUserInfoFromShop(String memberId) { - return Optional.ofNullable(userMemberMapper.getUserByMemberId(memberId))// - .map(user -> { - String uToken = UUID.randomUUID().toString(); - //redis.set(REDIS_USER_TOKEN + ":" + user.getId(), uToken); - redisTemplate.opsForValue().set(REDIS_USER_TOKEN + ":" + user.getId(), uToken); - // 返回给前端 - UsersVO usersVO = new UsersVO(); - BeanUtils.copyProperties(user, usersVO); - usersVO.setUserToken(uToken); - - return GsonUtil.beanToJson(usersVO); - })// - .orElseGet(() -> StringUtils.EMPTY); - } - - @Override - public List searchByNickname(String nickname, Integer page, Integer pageSize, String currentUserId) { - Page pageParam = new Page<>(page, pageSize); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.like(Users::getNickname, nickname); - - Page usersPage = usersMapper.selectPage(pageParam, queryWrapper); - List usersList = usersPage.getRecords(); - - List usersVOList = usersList.stream().map(u -> { - UsersVO userVO = new UsersVO(); - BeanUtils.copyProperties(u, userVO); - - // 查询当前用户是否关注了该用户 - LambdaQueryWrapper fansWrapper = new LambdaQueryWrapper<>(); - fansWrapper.eq(Fans::getVlogerId, u.getId()) - .eq(Fans::getFanId, currentUserId); - - Fans fans= fansMapper.selectOne(fansWrapper); - if(fans!=null) { - userVO.setFollowed(true); - } - return userVO; - }).collect(Collectors.toList()); - - return usersVOList; - } -} - diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/VlogServiceImpl.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/VlogServiceImpl.java index fc949d401..8c3f15f82 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/VlogServiceImpl.java +++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/VlogServiceImpl.java @@ -15,11 +15,11 @@ import com.wzj.soopin.content.enums.YesOrNo; import com.wzj.soopin.content.mapper.MyLikedVlogMapper; import com.wzj.soopin.content.mapper.VlogMapper; import com.wzj.soopin.content.mapper.VlogMapperCustom; -import com.wzj.soopin.content.service.FansService; import com.wzj.soopin.content.service.MsgService; import com.wzj.soopin.content.service.VlogService; import com.wzj.soopin.content.utils.PagedGridResult; import com.wzj.soopin.content.utils.Sid; +import com.wzj.soopin.member.service.IFansService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -39,7 +39,7 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService { @Autowired private MyLikedVlogMapper myLikedVlogMapper; @Autowired - private FansService fansService; + private IFansService fansService; @Autowired private MsgService msgService; @Autowired diff --git a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/FansMapperCustom.xml b/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/FansMapperCustom.xml index 3b75d9e53..0a2e4ddc8 100644 --- a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/FansMapperCustom.xml +++ b/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/FansMapperCustom.xml @@ -24,7 +24,7 @@ - SELECT u.id as fanId, 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 new file mode 100644 index 000000000..31e1dd6fe --- /dev/null +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/controller/FansController.java @@ -0,0 +1,282 @@ +package com.wzj.soopin.member.controller; + +import com.wzj.soopin.member.service.IFansService; +import com.wzj.soopin.member.service.IMemberService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@RequestMapping("/ums/fans") +@RestController +@RequiredArgsConstructor +public class FansController { + + + private final IMemberService memberService; + private final IFansService fansService; + +// @PostMapping("follow") +// public R> follow(@RequestParam String myId, +// @RequestParam String vlogerId) { +// // 从redis中获取拉黑信息 +// String redisKey = BaseInfoProperties.REDIS_USER_BLOCK + ":" + myId; +// Boolean hasKey = redis.keyIsExist(redisKey); +// if(hasKey){ +// List blockUserList = new ArrayList<>(); +// ObjectMapper objectMapper = new ObjectMapper(); +// List reports = redis.lrange(redisKey, 0, -1); // 查询用户的所有举报记录 +// +// for (String report : reports) { +// try { +// Map reportMap = objectMapper.readValue(report, new TypeReference>() {}); +// // 处理拉黑信息 +// String queryvlogerId = (String) reportMap.get("vlogerId"); +// blockUserList.add(queryvlogerId); +// } catch (JsonProcessingException e) { +// e.printStackTrace(); +// } +// } +// System.out.println(blockUserList); +// Boolean isBlock = blockUserList.contains(vlogerId); +// if(isBlock){ +// return GraceJSONResult.errorCustom(ResponseStatusEnum.ON_BLOCK); +// } +// } +// +// // 判断两个id不能为空 +// if (StringUtils.isBlank(myId) || StringUtils.isBlank(vlogerId)) { +// return GraceJSONResult.errorCustom(ResponseStatusEnum.SYSTEM_ERROR); +// } +// +// // 判断当前用户,自己不能关注自己 +// if (myId.equalsIgnoreCase(vlogerId)) { +// return GraceJSONResult.errorCustom(ResponseStatusEnum.SYSTEM_RESPONSE_NO_INFO); +// } +// +// // 是否已经存在关系 +// Boolean flow = fansService.queryDoIFollowVloger(myId,vlogerId); +// if(flow){ +// return GraceJSONResult.errorCustom(ResponseStatusEnum.FANS_INFO_UPDATED_ISFAN_EXIST_ERROR); +// } +// +// // 判断两个id对应的用户是否存在 +// Users vloger = userService.getUser(vlogerId); +// Users myInfo = userService.getUser(myId); +// +// // fixme: 两个用户id的数据库查询后的判断,是分开好?还是合并判断好? +// if (myInfo == null || vloger == null) { +// return GraceJSONResult.errorCustom(ResponseStatusEnum.SYSTEM_RESPONSE_NO_INFO); +// } +//// +// // 保存粉丝关系到数据库 +// fansService.doFollow(myId, vlogerId); +// +// // 博主的粉丝+1,我的关注+1 +// redis.increment(BaseInfoProperties.REDIS_MY_FOLLOWS_COUNTS + ":" + myId, 1); +// redis.increment(BaseInfoProperties.REDIS_MY_FANS_COUNTS + ":" + vlogerId, 1); +// +// // 我和博主的关联关系,依赖redis,不要存储数据库,避免db的性能瓶颈 +// redis.set(BaseInfoProperties.REDIS_FANS_AND_VLOGGER_RELATIONSHIP + ":" + myId + ":" + vlogerId, "1"); +//// +// return GraceJSONResult.ok(); +// } +// +//// @PostMapping("cancel") +//// public GraceJSONResult cancel(@RequestParam String myId, +//// @RequestParam String vlogerId) { +//// // 判断两个id不能为空 +//// if (StringUtils.isBlank(myId) || StringUtils.isBlank(vlogerId)) { +//// return GraceJSONResult.errorCustom(ResponseStatusEnum.SYSTEM_ERROR); +//// } +//// // 是否已经存在关系 +//// Boolean flow = fansService.queryDoIFollowVloger(myId,vlogerId); +//// if(!flow){ +//// return GraceJSONResult.errorCustom(ResponseStatusEnum.FANS_INFO_UPDATED_ISFLOW_EXIST_ERROR); +//// } +//// // 删除业务的执行 +//// fansService.doCancel(myId, vlogerId); +//// +//// // 博主的粉丝-1,我的关注-1 +//// redis.decrement(BaseInfoProperties.REDIS_MY_FOLLOWS_COUNTS + ":" + myId, 1); +//// redis.decrement(BaseInfoProperties.REDIS_MY_FANS_COUNTS + ":" + vlogerId, 1); +//// +//// // 我和博主的关联关系,依赖redis,不要存储数据库,避免db的性能瓶颈 +//// redis.del(BaseInfoProperties.REDIS_FANS_AND_VLOGGER_RELATIONSHIP + ":" + myId + ":" + vlogerId); +//// +//// return GraceJSONResult.ok(); +//// } +// +// @GetMapping("queryBlockVloger") +// public GraceJSONResult queryBlockVloger(@RequestParam String myId, +// @RequestParam String vlogerId) { +// // 从redis中获取拉黑信息 +// String redisKey = BaseInfoProperties.REDIS_USER_BLOCK + ":" + myId; +// Boolean hasKey = redis.keyIsExist(redisKey); +// if(hasKey){ +// List blockUserList = new ArrayList<>(); +// ObjectMapper objectMapper = new ObjectMapper(); +// List reports = redis.lrange(redisKey, 0, -1); // 查询用户的所有举报记录 +// +// for (String report : reports) { +// try { +// Map reportMap = objectMapper.readValue(report, new TypeReference>() {}); +// // 处理拉黑信息 +// String queryvlogerId = (String) reportMap.get("vlogerId"); +// blockUserList.add(queryvlogerId); +// } catch (JsonProcessingException e) { +// e.printStackTrace(); +// } +// } +// System.out.println(blockUserList); +// return GraceJSONResult.ok(blockUserList.contains(vlogerId)); +// }else{ +// return GraceJSONResult.ok(false); +// } +// } +// +// @PostMapping("block") +// public GraceJSONResult block(@RequestParam String myId, +// @RequestParam String vlogerId) { +// // 先执行cancel +// // 判断两个id不能为空 +// if (StringUtils.isBlank(myId) || StringUtils.isBlank(vlogerId)) { +// return GraceJSONResult.errorCustom(ResponseStatusEnum.SYSTEM_ERROR); +// } +// // 是否已经存在关系 +// Boolean flow = fansService.queryDoIFollowVloger(myId,vlogerId); +// if(flow){ +// // 删除业务的执行 +// fansService.doCancel(myId, vlogerId); +// +// // 博主的粉丝-1,我的关注-1 +// redis.decrement(BaseInfoProperties.REDIS_MY_FOLLOWS_COUNTS + ":" + myId, 1); +// redis.decrement(BaseInfoProperties.REDIS_MY_FANS_COUNTS + ":" + vlogerId, 1); +// +// // 我和博主的关联关系,依赖redis,不要存储数据库,避免db的性能瓶颈 +// redis.del(BaseInfoProperties.REDIS_FANS_AND_VLOGGER_RELATIONSHIP + ":" + myId + ":" + vlogerId); +// } +// // 拉黑 +// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); +// String blockTime = LocalDateTime.now().format(formatter); +// try{ +// Map blockInfo = new HashMap<>(); +// blockInfo.put("vlogerId", vlogerId); +// blockInfo.put("myId", myId); +// blockInfo.put("time", blockTime); +// // 转成 JSON 字符串 +// ObjectMapper objectMapper = new ObjectMapper(); +// String blockJson = objectMapper.writeValueAsString(blockInfo); +// String redisKey = BaseInfoProperties.REDIS_USER_BLOCK + ":" + myId ; +// log.info("写入Redis => key: {}, value: {}", redisKey, blockJson); +// redis.rpush(redisKey , blockJson); +// +// return GraceJSONResult.ok(); +// }catch (JsonProcessingException e){ +// // 打日志,或者抛出业务异常 +// e.printStackTrace(); +// throw new RuntimeException("JSON序列化失败: " + e.getMessage()); +// } +// } +// +// @PostMapping("cancelBlock") +// public GraceJSONResult cancelBlock(@RequestParam String myId, +// @RequestParam String vlogerId) { +// // 判断两个id不能为空 +// if (StringUtils.isBlank(myId) || StringUtils.isBlank(vlogerId)) { +// return GraceJSONResult.errorCustom(ResponseStatusEnum.SYSTEM_ERROR); +// } +// // 解除拉黑 +// String redisKey = BaseInfoProperties.REDIS_USER_BLOCK + ":" + myId; +// Boolean hasKey = redis.keyIsExist(redisKey); +// if(hasKey){ +// List blockList = redis.lrange(redisKey, 0, -1); +// ObjectMapper objectMapper = new ObjectMapper(); +// if (blockList != null && !blockList.isEmpty()) { +// for (String item : blockList) { +// try { +// Map itemMap = objectMapper.readValue(item, new TypeReference>() {}); +// String storedVlogerId = itemMap.get("vlogerId"); +// +// if (storedVlogerId != null && storedVlogerId.equals(vlogerId)) { +// redis.lrem(redisKey, 1, item); // 删除找到的 JSON 字符串 +// break; +// } +// }catch (JsonProcessingException e){ +// e.printStackTrace(); +// } +// } +// } +// return GraceJSONResult.ok(); +// }else{ +// return GraceJSONResult.error(); +// } +// } +// +// @PostMapping("blockVideo") +// public GraceJSONResult blockVideo(@RequestParam String myId, +// @RequestParam String vlogId, +// @RequestParam String reason, +// @RequestParam(defaultValue = "") String description) { +// // 判断两个id不能为空 +// if (StringUtils.isBlank(myId) || StringUtils.isBlank(vlogId)) { +// return GraceJSONResult.errorCustom(ResponseStatusEnum.SYSTEM_ERROR); +// } +// // 拉黑 +// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); +// String blockTime = LocalDateTime.now().format(formatter); +// // +// try{ +// Map blockInfo = new HashMap<>(); +// blockInfo.put("vlogId", vlogId); +// blockInfo.put("reporter", myId); +// blockInfo.put("time", blockTime); +// blockInfo.put("reason", reason); +// blockInfo.put("description", description); +// // 转成 JSON 字符串 +// ObjectMapper objectMapper = new ObjectMapper(); +// String blockJson = objectMapper.writeValueAsString(blockInfo); +// +// String redisKey = BaseInfoProperties.REDIS_VIDEO_BLOCK + ":" + myId ; +// log.info("写入Redis => key: {}, value: {}", redisKey, blockJson); +// redis.rpush(redisKey , blockJson); +// +// return GraceJSONResult.ok(); +// }catch (JsonProcessingException e){ +// // 打日志,或者抛出业务异常 +// e.printStackTrace(); +// throw new RuntimeException("JSON序列化失败: " + e.getMessage()); +// } +// } +// +// +// +// @GetMapping("queryDoIFollowVloger") +// public GraceJSONResult queryDoIFollowVloger(@RequestParam String myId, +// @RequestParam String vlogerId) { +// return GraceJSONResult.ok(fansService.queryDoIFollowVloger(myId, vlogerId)); +// } +// +// @GetMapping("queryMyFollows") +// public GraceJSONResult queryMyFollows(@RequestParam String myId, +// @RequestParam Integer page, +// @RequestParam Integer pageSize) { +// return GraceJSONResult.ok( +// fansService.queryMyFollows( +// myId, +// page, +// pageSize)); +// } +// +// @GetMapping("queryMyFans") +// public GraceJSONResult queryMyFans(@RequestParam String myId, +// @RequestParam Integer page, +// @RequestParam Integer pageSize) { +// return GraceJSONResult.ok( +// fansService.queryMyFans( +// myId, +// page, +// pageSize)); +// } +} diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/Fans.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/po/Fans.java similarity index 83% rename from ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/Fans.java rename to ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/po/Fans.java index 3068b71fb..fe5a9039e 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/po/Fans.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/po/Fans.java @@ -1,8 +1,9 @@ -package com.wzj.soopin.content.domain.po; +package com.wzj.soopin.member.domain.po; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import org.dromara.common.core.domain.model.BaseAudit; @@ -10,12 +11,14 @@ import org.dromara.common.tenant.core.TenantEntity; import java.util.Date; -@TableName( "t_fans") +@TableName( "ums_fans") @Data @EqualsAndHashCode(callSuper = true) public class Fans extends BaseAudit { - @TableId - private String id; + + + @ApiModelProperty("ID") + private Long id; /** * 作家用户id @@ -23,7 +26,7 @@ public class Fans extends BaseAudit { @TableField( "vloger_id") private String vlogerId; - private Date createdTime; + /** diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/vo/FansVO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/FansVO.java similarity index 89% rename from ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/vo/FansVO.java rename to ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/FansVO.java index 896e5450a..c447ff435 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/vo/FansVO.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/FansVO.java @@ -1,4 +1,4 @@ -package com.wzj.soopin.content.domain.vo; +package com.wzj.soopin.member.domain.vo; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/FansMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/mapper/FansMapper.java similarity index 71% rename from ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/FansMapper.java rename to ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/mapper/FansMapper.java index 28145a15b..ed7f3444d 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/FansMapper.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/mapper/FansMapper.java @@ -1,9 +1,8 @@ -package com.wzj.soopin.content.mapper; +package com.wzj.soopin.member.mapper; -import com.wzj.soopin.content.domain.po.Fans; -import com.wzj.soopin.content.domain.po.Vlog; -import com.wzj.soopin.content.domain.vo.FansVO; -import com.wzj.soopin.content.domain.vo.VlogerVO; + +import com.wzj.soopin.member.domain.po.Fans; +import com.wzj.soopin.member.domain.vo.FansVO; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/FansService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IFansService.java similarity index 53% rename from ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/FansService.java rename to ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IFansService.java index 0901278d5..639ba577b 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/FansService.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IFansService.java @@ -1,8 +1,10 @@ -package com.wzj.soopin.content.service; +package com.wzj.soopin.member.service; -import com.wzj.soopin.content.utils.PagedGridResult; -public interface FansService { +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.wzj.soopin.member.domain.vo.FansVO; + +public interface IFansService { /** * 关注 @@ -19,17 +21,15 @@ public interface FansService { */ public boolean queryDoIFollowVloger(String myId, String vlogerId); - /** - * 查询我关注的博主列表 - */ - public PagedGridResult queryMyFollows(String myId, - Integer page, - Integer pageSize); + /** * 查询我的粉丝列表 */ - public PagedGridResult queryMyFans(String myId, + public IPage queryMyFans(String myId, Integer page, Integer pageSize); + + + Integer countFansByVlogerId(String vlogerId); } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/IMemberLoginInfoService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IMemberLoginInfoService.java similarity index 100% rename from ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/IMemberLoginInfoService.java rename to ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/IMemberLoginInfoService.java diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/FansServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/FansServiceImpl.java similarity index 50% rename from ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/FansServiceImpl.java rename to ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/FansServiceImpl.java index 9b6463ab6..95258febb 100644 --- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/FansServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/FansServiceImpl.java @@ -1,53 +1,39 @@ -package com.wzj.soopin.content.service.impl; +package com.wzj.soopin.member.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.wzj.soopin.content.domain.base.BaseInfoProperties; -import com.wzj.soopin.content.domain.base.RabbitMQConfig; -import com.wzj.soopin.content.domain.mo.MessageMO; -import com.wzj.soopin.content.domain.po.Fans; -import com.wzj.soopin.content.domain.vo.FansVO; -import com.wzj.soopin.content.domain.vo.VlogerVO; -import com.wzj.soopin.content.enums.MessageEnum; -import com.wzj.soopin.content.mapper.FansMapper; -import com.wzj.soopin.content.mapper.FansMapperCustom; -import com.wzj.soopin.content.service.FansService; -import com.wzj.soopin.content.service.MsgService; -import com.wzj.soopin.content.utils.JsonUtils; -import com.wzj.soopin.content.utils.PagedGridResult; -import com.wzj.soopin.content.utils.Sid; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.wzj.soopin.member.domain.po.Fans; +import com.wzj.soopin.member.domain.vo.FansVO; +import com.wzj.soopin.member.mapper.FansMapper; +import com.wzj.soopin.member.service.IFansService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; +import org.dromara.common.core.constant.CacheConstants; import org.dromara.common.core.enums.YesOrNo; -import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.beans.factory.annotation.Autowired; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.redis.config.RedisConfig; +import org.dromara.common.redis.redis.RedisCache; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; -import java.util.List; import java.util.Map; @Service @Slf4j @RequiredArgsConstructor -public class FansServiceImpl extends BaseInfoProperties implements FansService { +public class FansServiceImpl extends ServiceImpl implements IFansService { - private final FansMapper fansMapper; - private final FansMapperCustom fansMapperCustom; - private final MsgService msgService; - private final RabbitTemplate rabbitTemplate; - @Autowired - private Sid sid; + + private final RedisCache redisCache; @Transactional @Override public void doFollow(String myId, String vlogerId) { - String fid = sid.nextShort(); Fans fans = new Fans(); - fans.setId(fid); fans.setFanId(myId); fans.setVlogerId(vlogerId); @@ -56,17 +42,17 @@ public class FansServiceImpl extends BaseInfoProperties implements FansService { if (vloger != null) { fans.setIsFanFriendOfMine(YesOrNo.YES.type); vloger.setIsFanFriendOfMine(YesOrNo.YES.type); - fansMapper.updateById(vloger); + baseMapper.updateById(vloger); } else { fans.setIsFanFriendOfMine(YesOrNo.NO.type); } - fansMapper.insert(fans); + baseMapper.insert(fans); // 系统消息:关注 - MessageMO messageMO = new MessageMO(); - messageMO.setFromUserId(myId); - messageMO.setToUserId(vlogerId); - rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_MSG, "sys.msg." + MessageEnum.FOLLOW_YOU.enValue, JsonUtils.objectToJson(messageMO)); +// MessageMO messageMO = new MessageMO(); +// messageMO.setFromUserId(myId); +// messageMO.setToUserId(vlogerId); +// rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_MSG, "sys.msg." + MessageEnum.FOLLOW_YOU.enValue, JsonUtils.objectToJson(messageMO)); } public Fans queryFansRelationship(String fanId, String vlogerId) { @@ -74,7 +60,7 @@ public class FansServiceImpl extends BaseInfoProperties implements FansService { queryWrapper.eq(Fans::getVlogerId, vlogerId) .eq(Fans::getFanId, fanId); - return fansMapper.selectOne(queryWrapper); + return baseMapper.selectOne(queryWrapper); } @Transactional @@ -86,13 +72,13 @@ public class FansServiceImpl extends BaseInfoProperties implements FansService { // 抹除双方的朋友关系,自己的关系删除即可 Fans pendingFan = queryFansRelationship(vlogerId, myId); pendingFan.setIsFanFriendOfMine(YesOrNo.NO.type); - fansMapper.updateById(pendingFan); + baseMapper.updateById(pendingFan); } // 删除自己的关注关联表记录 LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper<>(); deleteWrapper.eq(Fans::getId, fan.getId()); - fansMapper.delete(deleteWrapper); + baseMapper.delete(deleteWrapper); } @Override @@ -101,27 +87,19 @@ public class FansServiceImpl extends BaseInfoProperties implements FansService { return vloger != null; } - @Override - public PagedGridResult queryMyFollows(String myId, Integer page, Integer pageSize) { - Map map = new HashMap<>(); - map.put("myId", myId); - Page pageParam = new Page<>(page, pageSize); - List list = fansMapperCustom.queryMyFollows(map); - - return null; - } @Override - public PagedGridResult queryMyFans(String myId, Integer page, Integer pageSize) { + public IPage queryMyFans(String myId, Integer pageNo, Integer pageSize) { Map map = new HashMap<>(); map.put("myId", myId); - - Page pageParam = new Page<>(page, pageSize); - List list = fansMapperCustom.queryMyFans(map); - - for (FansVO f : list) { - String relationship = redis.get(REDIS_FANS_AND_VLOGGER_RELATIONSHIP + ":" + myId + ":" + f.getFanId()); + // 查询粉丝列表 + Page page=new Page<>(); + page.setCurrent(pageNo); + page.setSize(pageSize); + for (FansVO f : page.getRecords()) { + String relationship = redisCache.getCacheObject( + CacheConstants.MEMBER_FANS + ":" + myId + ":" + f.getFanId()); if (StringUtils.isNotBlank(relationship) && relationship.equalsIgnoreCase("1")) { f.setFriend(true); } @@ -129,4 +107,9 @@ public class FansServiceImpl extends BaseInfoProperties implements FansService { return null; } + + @Override + public Integer countFansByVlogerId(String vlogerId) { + return baseMapper.countFansByVlogerId(vlogerId); + } } diff --git a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/FansMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/ums/FansMapper.xml similarity index 77% rename from ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/FansMapper.xml rename to ruoyi-modules/ruoyi-member/src/main/resources/ums/FansMapper.xml index 7ad1b7020..8cc23858d 100644 --- a/ruoyi-modules/ruoyi-content/src/main/resources/mapper/content/FansMapper.xml +++ b/ruoyi-modules/ruoyi-member/src/main/resources/ums/FansMapper.xml @@ -1,11 +1,11 @@ - + - SELECT vloger_id, is_fan_friend_of_mine FROM t_fans WHERE fan_id = #{currentUserId} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/common/CommonController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysAddressController.java similarity index 97% rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/common/CommonController.java rename to ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysAddressController.java index 28e051a0d..5dc0a7e3f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/common/CommonController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysAddressController.java @@ -1,9 +1,9 @@ -package org.dromara.system.controller.common; +package org.dromara.system.controller; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.wzj.soopin.member.domain.po.Address; -import com.wzj.soopin.member.mapper.AddressMapper; +import org.dromara.system.mapper.AddressMapper; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.dromara.common.core.config.RuoYiConfig; @@ -35,9 +35,9 @@ import java.util.stream.Collectors; * @author ruoyi */ @RestController -public class CommonController +public class SysAddressController { - private static final Logger log = LoggerFactory.getLogger(CommonController.class); + private static final Logger log = LoggerFactory.getLogger(SysAddressController.class); @Autowired private ServerConfig serverConfig; diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/mapper/AddressMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AddressMapper.java similarity index 60% rename from ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/mapper/AddressMapper.java rename to ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AddressMapper.java index 570733e04..b7317369b 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/mapper/AddressMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AddressMapper.java @@ -1,4 +1,4 @@ -package com.wzj.soopin.member.mapper; +package org.dromara.system.mapper; import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -13,12 +13,5 @@ import java.util.List; */ @InterceptorIgnore(tenantLine = "true") // 忽略租户过滤 public interface AddressMapper extends BaseMapper
{ - /** - * 查询【请填写功能名称】列表 - * - * @param address 【请填写功能名称】 - * @return 【请填写功能名称】集合 - */ - List
selectByEntity(Address address); } diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/ums/AddressMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/AddressMapper.xml similarity index 96% rename from ruoyi-modules/ruoyi-member/src/main/resources/ums/AddressMapper.xml rename to ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/AddressMapper.xml index 1759e7a7e..77d33fc09 100644 --- a/ruoyi-modules/ruoyi-member/src/main/resources/ums/AddressMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/AddressMapper.xml @@ -2,7 +2,7 @@ - +