diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/RedisKeyUtil.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/RedisKeyUtil.java deleted file mode 100644 index 707b1d9..0000000 --- a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/RedisKeyUtil.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.bnyer.common.core.utils; - -/** - * @author chengkun - * @date 2022/9/17 15:53 - */ - -public class RedisKeyUtil { - - private static final String SPLIT = ":"; - private static final String PREFIX_FOLLOWEE = "followee"; - private static final String PREFIX_FOLLOWER = "follower"; - - - //某个用户关注的实体(键:用户Id,值:实体Id) - //followee:【userId:entityType】->zset(entityId,now) - public static String getFolloweeKey(Long userId, Long creatorId,String platform) { - return PREFIX_FOLLOWEE + SPLIT + userId + SPLIT + creatorId + SPLIT + platform; - } - - - //某个实体拥有的粉丝(键:实体Id,值:用户Id) - //follower:【entityType:entityId】->zset(userId,now) - public static String getFollowerKey(Long userId, Long creatorId,String platform) { - return PREFIX_FOLLOWER + SPLIT + creatorId + SPLIT + userId + SPLIT + platform; - } - //entityType不可以删除,userId和entityId值会有重复,需要借助entityType构成键的一部分加以区分,【不对】 - //entityType不可以删除,Id值相同的情况下,需要借助entityType以示区分 - -} - diff --git a/bnyer-common/bnyer-common-redis/src/main/java/com/bnyer/common/redis/service/RedisService.java b/bnyer-common/bnyer-common-redis/src/main/java/com/bnyer/common/redis/service/RedisService.java index 76a47e4..9e47907 100644 --- a/bnyer-common/bnyer-common-redis/src/main/java/com/bnyer/common/redis/service/RedisService.java +++ b/bnyer-common/bnyer-common-redis/src/main/java/com/bnyer/common/redis/service/RedisService.java @@ -6,6 +6,7 @@ import java.util.concurrent.TimeUnit; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.*; import org.springframework.data.redis.core.script.DefaultRedisScript; import org.springframework.data.redis.core.script.RedisScript; @@ -169,29 +170,34 @@ public class RedisService return setOperation; } - public void zSetCacheObject(final String redisKey, final T value, double score){ - redisTemplate.opsForZSet().add(redisKey, value, score); - } - - public void zSetRemove(final String redisKey, T value) { - redisTemplate.opsForZSet().remove(redisKey, value); - } - - public long zCardGet(final String redisKey){ - return redisTemplate.opsForZSet().zCard(redisKey); - } - /** * 获得缓存的set * * @param key * @return */ - public Set getCacheSet(final String key) + public Set getCacheSet(final String key) { return redisTemplate.opsForSet().members(key); } + /** + * 删除set中的值 + * @param key + * @param value + */ + public void removeSet(final String key,final Long value){ + redisTemplate.opsForSet().remove(key, value); + } + + public boolean hasSet(final String key, final Long value){ + Boolean member = redisTemplate.opsForSet().isMember(key, value); + if(member == null || !member){ + return false; + }else{ + return true; + } + } /** * 缓存Map * diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java index ea07ae0..d9f2e58 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java @@ -106,4 +106,24 @@ public class RedisKeyConstant { * 用户会员vip锁键 */ public static final String PAY_USER_VIP_LOCK_KEY = "bnyer.img.userVip.lock:"; + + /** + * 抖音用户关注艺术家键 + */ + public static final String TIKTOK_USER_FOLLOW_KEY = "bnyer.img.tiktok.follow:"; + + /** + * 微信用户关注艺术家键 + */ + public static final String WECHAT_USER_FOLLOW_KEY = "bnyer.img.wechat.follow:"; + + /** + * 快手用户关注艺术家键 + */ + public static final String FH_USER_FOLLOW_KEY = "bnyer.img.fh.follow:"; + + /** + * 艺术家粉丝数量键 + */ + public static final String CREATOR_FANS_NUM_KEY = "bnyer.img.fans.num"; } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java index b06d8e1..8231a65 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java @@ -62,6 +62,9 @@ public class CreatorMiniController extends BaseController { @Autowired private BzDataService bzDataService; + @Autowired + private FollowService followService; + //@TokenCheck @ApiOperation(value="检查手机号是否重复") @PostMapping(value = "/checkPhone") @@ -345,4 +348,11 @@ public class CreatorMiniController extends BaseController { log.debug("【艺术家小程序】检查艺术家当日上传次数是否超标参数为:{}", JSON.toJSONString(dto)); return AjaxResult.success(creatorProfitService.checkCreatorCanUpload(dto.getCreatorId())); } + + @ApiOperation(value="获取艺术家粉丝数量") + @PostMapping(value = "/getFansNum") + public AjaxResult getFansNum(@Validated @RequestBody @ApiParam("艺术家id对象") CreatorUploadDto dto){ + log.debug("【艺术家小程序】获取艺术家粉丝数量参数为:{}", JSON.toJSONString(dto)); + return AjaxResult.success(followService.queryFansNum(dto.getCreatorId())); + } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/FhMiniController.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/FhMiniController.java index 89e7d2f..df5ccc9 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/FhMiniController.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/FhMiniController.java @@ -11,6 +11,7 @@ import com.bnyer.img.domain.Feedback; import com.bnyer.img.dto.*; import com.bnyer.img.service.*; import com.bnyer.img.vo.CreatorDetailsVo; +import com.bnyer.img.vo.CreatorFollowVo; import com.bnyer.img.vo.SignImgVo; import com.bnyer.img.vo.TiktokImgVo; import com.github.pagehelper.PageHelper; @@ -73,6 +74,9 @@ public class FhMiniController extends BaseController { @Autowired private ProductService productService; + @Autowired + private FollowService followService; + //@TokenCheck @ApiOperation(value="查询banner列表") @GetMapping(value = "/listBanner") @@ -333,4 +337,40 @@ public class FhMiniController extends BaseController { public AjaxResult queryProductDetails(@ApiParam("主键id") @PathVariable("id") Long id){ return AjaxResult.success(productService.queryFrontDetails(id)); } + + //@TokenCheck + @ApiOperation(value="关注") + @PostMapping(value = "/fhFollow") + public AjaxResult fhFollow(@Validated @RequestBody @ApiParam("关注对象") FollowDto dto){ + followService.follow(dto.getUserId(),dto.getCreatorId(),"1"); + log.debug("【快手图文小程序】用户【{}】关注了艺术家【{}】",dto.getUserId(),dto.getCreatorId()); + return AjaxResult.success(); + } + + //@TokenCheck + @ApiOperation(value="取消关注") + @PostMapping(value = "/fhUnFollow") + public AjaxResult fhUnFollow(@Validated @RequestBody @ApiParam("关注对象") FollowDto dto){ + followService.unFollow(dto.getUserId(),dto.getCreatorId(),"1"); + log.debug("【快手图文小程序】用户【{}】取消关注了艺术家【{}】",dto.getUserId(),dto.getCreatorId()); + return AjaxResult.success(); + } + + //@TokenCheck + @ApiOperation(value="查询是否关注过") + @PostMapping(value = "/judgeFhFollow") + public AjaxResult judgeFhFollow(@Validated @RequestBody @ApiParam("关注对象") FollowDto dto){ + log.debug("【快手图文小程序】查询是否关注过参数为:{}", JSON.toJSONString(dto)); + return AjaxResult.success(followService.checkFollow(dto.getUserId(),dto.getCreatorId(),"1")); + } + + //@TokenCheck + @ApiOperation(value="查询关注的艺术家分页") + @PostMapping(value = "/getFhFollowCreatorPage") + public TableDataInfo getFhFollowCreatorPage(@Validated @RequestBody @ApiParam("用户id对象") UserIdDto dto){ + PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + log.debug("【快手图文小程序】查询关注的艺术家分页参数为:{}", JSON.toJSONString(dto)); + List creatorFollowVos = followService.queryFollowCreatorList(dto.getUserId(), "1"); + return getDataTable(creatorFollowVos); + } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java index 400db28..7404384 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java @@ -10,10 +10,7 @@ import com.bnyer.img.constants.TiktokConstant; import com.bnyer.img.domain.Feedback; import com.bnyer.img.dto.*; import com.bnyer.img.service.*; -import com.bnyer.img.vo.CreatorDetailsVo; -import com.bnyer.img.vo.CreatorVo; -import com.bnyer.img.vo.SignImgVo; -import com.bnyer.img.vo.TiktokImgVo; +import com.bnyer.img.vo.*; import com.github.pagehelper.PageHelper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -74,6 +71,9 @@ public class TiktokMiniController extends BaseController { @Autowired private ProductService productService; + @Autowired + private FollowService followService; + //@TokenCheck @ApiOperation(value="查询banner列表") @GetMapping(value = "/listBanner") @@ -336,4 +336,40 @@ public class TiktokMiniController extends BaseController { public AjaxResult queryProductDetails(@ApiParam("主键id") @PathVariable("id") Long id){ return AjaxResult.success(productService.queryFrontDetails(id)); } + + //@TokenCheck + @ApiOperation(value="关注") + @PostMapping(value = "/tiktokFollow") + public AjaxResult tiktokFollow(@Validated @RequestBody @ApiParam("关注对象") FollowDto dto){ + followService.follow(dto.getUserId(),dto.getCreatorId(),"0"); + log.debug("【抖音图文小程序】用户【{}】关注了艺术家【{}】",dto.getUserId(),dto.getCreatorId()); + return AjaxResult.success(); + } + + //@TokenCheck + @ApiOperation(value="取消关注") + @PostMapping(value = "/tiktokUnFollow") + public AjaxResult tiktokUnFollow(@Validated @RequestBody @ApiParam("关注对象") FollowDto dto){ + followService.unFollow(dto.getUserId(),dto.getCreatorId(),"0"); + log.debug("【抖音图文小程序】用户【{}】取消关注了艺术家【{}】",dto.getUserId(),dto.getCreatorId()); + return AjaxResult.success(); + } + + //@TokenCheck + @ApiOperation(value="查询是否关注过") + @PostMapping(value = "/judgeTiktokFollow") + public AjaxResult judgeTiktokFollow(@Validated @RequestBody @ApiParam("关注对象") FollowDto dto){ + log.debug("【抖音图文小程序】查询是否关注过参数为:{}", JSON.toJSONString(dto)); + return AjaxResult.success(followService.checkFollow(dto.getUserId(),dto.getCreatorId(),"0")); + } + + //@TokenCheck + @ApiOperation(value="查询关注的艺术家分页") + @PostMapping(value = "/getTiktokFollowCreatorPage") + public TableDataInfo getTiktokFollowCreatorPage(@Validated @RequestBody @ApiParam("用户id对象") UserIdDto dto){ + log.debug("【抖音图文小程序】查询关注的艺术家分页参数为:{}", JSON.toJSONString(dto)); + PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + List creatorFollowVos = followService.queryFollowCreatorList(dto.getUserId(), "0"); + return getDataTable(creatorFollowVos); + } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/WxMiniController.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/WxMiniController.java index 18f0336..eb592b9 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/WxMiniController.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/WxMiniController.java @@ -11,6 +11,7 @@ import com.bnyer.img.domain.Feedback; import com.bnyer.img.dto.*; import com.bnyer.img.service.*; import com.bnyer.img.vo.CreatorDetailsVo; +import com.bnyer.img.vo.CreatorFollowVo; import com.bnyer.img.vo.SignImgVo; import com.bnyer.img.vo.TiktokImgVo; import com.github.pagehelper.PageHelper; @@ -73,6 +74,9 @@ public class WxMiniController extends BaseController { @Autowired private ProductService productService; + @Autowired + private FollowService followService; + //@TokenCheck @ApiOperation(value="查询banner列表") @GetMapping(value = "/listBanner") @@ -333,4 +337,40 @@ public class WxMiniController extends BaseController { public AjaxResult queryProductDetails(@ApiParam("主键id") @PathVariable("id") Long id){ return AjaxResult.success(productService.queryFrontDetails(id)); } + + //@TokenCheck + @ApiOperation(value="关注") + @PostMapping(value = "/wechatFollow") + public AjaxResult wechatFollow(@Validated @RequestBody @ApiParam("关注对象") FollowDto dto){ + followService.follow(dto.getUserId(),dto.getCreatorId(),"2"); + log.debug("【微信图文小程序】用户【{}】关注了艺术家【{}】",dto.getUserId(),dto.getCreatorId()); + return AjaxResult.success(); + } + + //@TokenCheck + @ApiOperation(value="取消关注") + @PostMapping(value = "/wechatUnFollow") + public AjaxResult wechatUnFollow(@Validated @RequestBody @ApiParam("关注对象") FollowDto dto){ + followService.unFollow(dto.getUserId(),dto.getCreatorId(),"2"); + log.debug("【微信图文小程序】用户【{}】取消关注了艺术家【{}】",dto.getUserId(),dto.getCreatorId()); + return AjaxResult.success(); + } + + //@TokenCheck + @ApiOperation(value="查询是否关注过") + @PostMapping(value = "/judgeWechatFollow") + public AjaxResult judgeWechatFollow(@Validated @RequestBody @ApiParam("关注对象") FollowDto dto){ + log.debug("【微信图文小程序】查询是否关注过参数为:{}", JSON.toJSONString(dto)); + return AjaxResult.success(followService.checkFollow(dto.getUserId(),dto.getCreatorId(),"2")); + } + + //@TokenCheck + @ApiOperation(value="查询关注的艺术家分页") + @PostMapping(value = "/getWechatFollowCreatorPage") + public TableDataInfo getWechatFollowCreatorPage(@Validated @RequestBody @ApiParam("用户id对象") UserIdDto dto){ + log.debug("【微信图文小程序】查询关注的艺术家分页参数为:{}", JSON.toJSONString(dto)); + PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + List creatorFollowVos = followService.queryFollowCreatorList(dto.getUserId(), "2"); + return getDataTable(creatorFollowVos); + } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/FollowDto.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/FollowDto.java new file mode 100644 index 0000000..d113e82 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/FollowDto.java @@ -0,0 +1,24 @@ +package com.bnyer.img.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + + +@Getter +@Setter +@ApiModel("关注接收类") +public class FollowDto implements Serializable { + + @NotNull(message = "用户id不能为空!") + @ApiModelProperty(value="用户id") + private Long userId; + + @NotNull(message = "艺术家id不能为空!") + @ApiModelProperty(value="艺术家id") + private Long creatorId; +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/UserIdDto.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/UserIdDto.java new file mode 100644 index 0000000..e1a6d24 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/UserIdDto.java @@ -0,0 +1,20 @@ +package com.bnyer.img.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + + +@Getter +@Setter +@ApiModel("关注用户id接收类") +public class UserIdDto extends BasePageDto { + + @NotNull(message = "用户id不能为空!") + @ApiModelProperty(value="用户id") + private Long userId; +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorMapper.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorMapper.java index 1281881..96331ef 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorMapper.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorMapper.java @@ -7,7 +7,9 @@ import com.bnyer.img.vo.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; /** * @author chengkun @@ -55,4 +57,11 @@ public interface CreatorMapper extends BaseMapper { * @return */ CreatorDetailsVo queryCreatorDetailsByScanCode(@Param("scanCode") String scanCode); + + /** + * 根据id查询艺术家 + * @param creatorId 艺术家ids + * @return - + */ + CreatorFollowVo queryFollowCreatorBySet(@Param("creatorId") Long creatorId); } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/FollowService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/FollowService.java index b933f7a..46e55bb 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/FollowService.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/FollowService.java @@ -1,5 +1,9 @@ package com.bnyer.img.service; +import com.bnyer.img.vo.CreatorFollowVo; + +import java.util.List; + /** * @author chengkun * @date 2022/9/17 15:54 @@ -21,4 +25,28 @@ public interface FollowService { * @param platform 平台 */ void unFollow(Long userId,Long creatorId,String platform); + + /** + * 检查用户是否关注 + * @param userId 用户id + * @param creatorId 艺术家id + * @param platform 平台 + * @return - + */ + boolean checkFollow(Long userId,Long creatorId,String platform); + + /** + * 根据平台和用户id返回关注的艺术家列表 + * @param userId 用户id + * @param platform 平台 + * @return - + */ + List queryFollowCreatorList(Long userId,String platform); + + /** + * 艺术家获取粉丝数量 + * @param creatorId 艺术家id + * @return - + */ + Integer queryFansNum(Long creatorId); } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/FollowServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/FollowServiceImpl.java index dc28119..b547413 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/FollowServiceImpl.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/FollowServiceImpl.java @@ -1,17 +1,26 @@ package com.bnyer.img.service.impl; -import com.bnyer.common.core.utils.RedisKeyUtil; import com.bnyer.common.redis.service.RedisService; +import com.bnyer.img.constants.PlatformConstant; +import com.bnyer.img.constants.RedisKeyConstant; +import com.bnyer.img.domain.Creator; +import com.bnyer.img.mapper.CreatorMapper; import com.bnyer.img.service.FollowService; +import com.bnyer.img.vo.CreatorFollowVo; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; /** * @author chengkun * @date 2022/9/17 16:18 */ @Service +@Slf4j public class FollowServiceImpl implements FollowService { @Autowired @@ -20,18 +29,98 @@ public class FollowServiceImpl implements FollowService { @Autowired private RedisTemplate redisTemplate; + @Autowired + private CreatorMapper creatorMapper; + @Override + @Transactional(rollbackFor = Exception.class) public void follow(Long userId, Long creatorId, String platform) { - //关注键 - String followeeKey = RedisKeyUtil.getFolloweeKey(userId, creatorId, platform); - //粉丝键 - String followerKey = RedisKeyUtil.getFollowerKey(userId, creatorId, platform); - + String redisKey = null; + if(platform.equals(PlatformConstant.TIKTOK)){ + redisKey = RedisKeyConstant.TIKTOK_USER_FOLLOW_KEY + userId; + }else if(platform.equals(PlatformConstant.FAST_HAND)){ + redisKey = RedisKeyConstant.FH_USER_FOLLOW_KEY + userId; + }else{ + redisKey = RedisKeyConstant.WECHAT_USER_FOLLOW_KEY + userId; + } + //添加粉丝关注艺术家 + Set creatorSet = new HashSet<>(); + creatorSet.add(creatorId); + redisService.setCacheSet(redisKey, creatorSet); + //添加艺术家粉丝数量 + redisService.hashIncr(RedisKeyConstant.CREATOR_FANS_NUM_KEY, String.valueOf(creatorId),1); + log.debug("平台{}用户{}关注了艺术家{}",platform,userId,creatorId); } @Override + @Transactional(rollbackFor = Exception.class) public void unFollow(Long userId, Long creatorId, String platform) { + String redisKey = null; + if(platform.equals(PlatformConstant.TIKTOK)){ + redisKey = RedisKeyConstant.TIKTOK_USER_FOLLOW_KEY + userId; + }else if(platform.equals(PlatformConstant.FAST_HAND)){ + redisKey = RedisKeyConstant.FH_USER_FOLLOW_KEY + userId; + }else{ + redisKey = RedisKeyConstant.WECHAT_USER_FOLLOW_KEY + userId; + } + //取消粉丝关注艺术家 + if(redisService.hasSet(redisKey,creatorId)){ + redisService.removeSet(redisKey,creatorId); + //取消艺术家粉丝数量 + redisService.hashIncr(RedisKeyConstant.CREATOR_FANS_NUM_KEY, String.valueOf(creatorId),-1); + log.debug("平台{}用户{}取消关注了艺术家{}",platform,userId,creatorId); + } + } + + @Override + public boolean checkFollow(Long userId, Long creatorId, String platform) { + String redisKey = null; + if(platform.equals(PlatformConstant.TIKTOK)){ + redisKey = RedisKeyConstant.TIKTOK_USER_FOLLOW_KEY + userId; + }else if(platform.equals(PlatformConstant.FAST_HAND)){ + redisKey = RedisKeyConstant.FH_USER_FOLLOW_KEY + userId; + }else{ + redisKey = RedisKeyConstant.WECHAT_USER_FOLLOW_KEY + userId; + } + if(redisService.hasSet(redisKey,creatorId)){ + return true; + }else{ + return false; + } + } + + @Override + public List queryFollowCreatorList(Long userId, String platform) { + String redisKey = null; + if(platform.equals(PlatformConstant.TIKTOK)){ + redisKey = RedisKeyConstant.TIKTOK_USER_FOLLOW_KEY + userId; + }else if(platform.equals(PlatformConstant.FAST_HAND)){ + redisKey = RedisKeyConstant.FH_USER_FOLLOW_KEY + userId; + }else{ + redisKey = RedisKeyConstant.WECHAT_USER_FOLLOW_KEY + userId; + } + //TODO 此处需要优化 + if(redisService.hasKey(redisKey)){ + List creatorList = new ArrayList<>(); + Set cacheSet = redisService.getCacheSet(redisKey); + for (Long aLong : cacheSet) { + CreatorFollowVo followVo = creatorMapper.queryFollowCreatorBySet(aLong); + creatorList.add(followVo); + } + return creatorList; + }else{ + return new ArrayList<>(); + } + } + @Override + public Integer queryFansNum(Long creatorId) { + String redisKey = RedisKeyConstant.CREATOR_FANS_NUM_KEY; + if(redisService.hasHashKey(redisKey,String.valueOf(creatorId))){ + return redisService.getCacheMapValue(redisKey, String.valueOf(creatorId)); + }else{ + return 0; + } } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorFollowVo.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorFollowVo.java new file mode 100644 index 0000000..0f04d10 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorFollowVo.java @@ -0,0 +1,35 @@ +package com.bnyer.img.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + + +@Getter +@Setter +@ApiModel("粉丝关注艺术家响应类") +public class CreatorFollowVo implements Serializable { + + @ApiModelProperty(value="id") + private Long id; + + @ApiModelProperty(value="搜索码") + private String scanCode; + + @ApiModelProperty(value="是否热门") + private String isHot; + + @ApiModelProperty(value="头像img地址") + private String img; + + @ApiModelProperty(value="序号") + private Integer sort; + + @ApiModelProperty(value="简介") + private String intro; + + private static final long serialVersionUID = 1L; +} diff --git a/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorMapper.xml b/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorMapper.xml index c8569af..9ec0de1 100644 --- a/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorMapper.xml +++ b/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorMapper.xml @@ -133,4 +133,13 @@ from img_creator ic where ic.is_show = '1' and ic.status = '1' and ic.scan_code = #{scanCode} + +