From cf66c432d3afd526a2166dff9c58f0f5161b9858 Mon Sep 17 00:00:00 2001 From: 77 <77@77.com> Date: Sun, 7 Jul 2024 23:06:17 +0800 Subject: [PATCH] 1231123 --- .../java/com/ruoyi/job/HomeRecommendJob.java | 6 +++- .../cai/admin/AnchorBannerController.java | 5 +-- .../controller/cai/app/IndexController.java | 8 +++++ .../com/ruoyi/test/business/UserTest.java | 12 +++++++ .../ruoyi/cai/constant/RedisHttpConstant.java | 2 ++ .../vo/anchorBanner/AnchorBannerAdminVo.java | 31 +++++++++++++++++++ .../com/ruoyi/cai/manager/HomeManager.java | 16 ++++++++++ .../ruoyi/cai/mapper/AnchorBannerMapper.java | 10 ++++++ .../cai/service/AnchorBannerService.java | 11 +++++++ .../service/impl/AnchorBannerServiceImpl.java | 16 ++++++++++ .../mapper/cai/AnchorBannerMapper.xml | 29 +++++++++++++++++ 11 files changed, 143 insertions(+), 3 deletions(-) create mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/vo/anchorBanner/AnchorBannerAdminVo.java create mode 100644 ruoyi-cai/src/main/resources/mapper/cai/AnchorBannerMapper.xml diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/HomeRecommendJob.java b/ruoyi-admin/src/main/java/com/ruoyi/job/HomeRecommendJob.java index e1aa1cc2..09e5331d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/HomeRecommendJob.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/HomeRecommendJob.java @@ -37,7 +37,11 @@ public class HomeRecommendJob { }catch (Exception e){ log.error("刷新首页推荐置顶用户失败",e); } - + try { + homeManager.refreshAnchorBannerCache(); + }catch (Exception e){ + log.error("刷新首页主播推荐失败",e); + } } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/AnchorBannerController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/AnchorBannerController.java index 5901dbfa..5985c888 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/AnchorBannerController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/AnchorBannerController.java @@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.cai.domain.AnchorBanner; +import com.ruoyi.cai.dto.admin.vo.anchorBanner.AnchorBannerAdminVo; import com.ruoyi.cai.service.AnchorBannerService; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; @@ -41,8 +42,8 @@ public class AnchorBannerController extends BaseController { */ @SaCheckPermission("cai:anchorBanner:list") @GetMapping("/list") - public TableDataInfo list(AnchorBanner bo, PageQuery pageQuery) { - Page page = anchorBannerService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); + public TableDataInfo list(AnchorBannerAdminVo bo, PageQuery pageQuery) { + Page page = anchorBannerService.pageAdmin(pageQuery, bo); return TableDataInfo.build(page); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/IndexController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/IndexController.java index 113e313d..5e708833 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/IndexController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/IndexController.java @@ -81,6 +81,14 @@ public class IndexController { return R.ok(BeanConvertUtil.convertListTo(res, IndexBannerVo::new)); } + @GetMapping("/anchor/hot") + @Operation(summary = "首页查询技师主播推荐") + @Log(title = "首页查询技师主播推荐", businessType = BusinessType.OTHER,isPrintResponseData = false, isSaveDb = false) + public R> anchorHot(){ + List home = homeManager.getAnchorBannerCache(); + return R.ok(home); + } + @GetMapping("/anchor/page") @Operation(summary = "首页查询主播接口-分页") @Log(title = "首页查询主播接口", businessType = BusinessType.OTHER,isPrintResponseData = false, isSaveDb = false) diff --git a/ruoyi-admin/src/test/java/com/ruoyi/test/business/UserTest.java b/ruoyi-admin/src/test/java/com/ruoyi/test/business/UserTest.java index c254433c..388ae6bb 100644 --- a/ruoyi-admin/src/test/java/com/ruoyi/test/business/UserTest.java +++ b/ruoyi-admin/src/test/java/com/ruoyi/test/business/UserTest.java @@ -6,6 +6,7 @@ import com.ruoyi.cai.domain.User; import com.ruoyi.cai.domain.UserCount; import com.ruoyi.cai.im.ImManager; import com.ruoyi.cai.manager.AwardManager; +import com.ruoyi.cai.manager.HomeManager; import com.ruoyi.cai.service.DynamicService; import com.ruoyi.cai.service.UserCountService; import com.ruoyi.cai.service.UserService; @@ -37,6 +38,17 @@ public class UserTest { private AwardManager awardManager; @Autowired private CaiLoginManager caiLoginManager; + @Autowired + private HomeManager homeManager; + + @Test + public void refreshHome(){ + try { + homeManager.refreshAnchorBannerCache(); + }catch (Exception e){ + log.error("刷新首页主播推荐失败",e); + } + } @Test public void caiLoginManager(){ diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/constant/RedisHttpConstant.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/constant/RedisHttpConstant.java index f28a7d23..66ef557f 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/constant/RedisHttpConstant.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/constant/RedisHttpConstant.java @@ -23,6 +23,8 @@ public class RedisHttpConstant { public static final String HOME_RECOMMEND_TOP_REDIS = REDIS_P + "homeRecommendAnchorTop"; public static final String HOME_RECOMMEND_REDIS = REDIS_P + "homeRecommendAnchor"; + + public static final String HOME_ANCHOR_BANNER_REDIS = REDIS_P + "homeAnchorBanner"; public static final String HOME_NEW_REDIS = REDIS_P + "homeNewAnchor"; public static final String HOME_ACTIVE_REDIS = REDIS_P + "homeActiveAnchor"; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/vo/anchorBanner/AnchorBannerAdminVo.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/vo/anchorBanner/AnchorBannerAdminVo.java new file mode 100644 index 00000000..d31e7bc4 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/vo/anchorBanner/AnchorBannerAdminVo.java @@ -0,0 +1,31 @@ +package com.ruoyi.cai.dto.admin.vo.anchorBanner; + +import com.ruoyi.cai.domain.AnchorBanner; +import com.ruoyi.common.annotation.Sensitive; +import com.ruoyi.common.enums.SensitiveStrategy; +import lombok.Data; + +@Data +public class AnchorBannerAdminVo extends AnchorBanner { + /** + * 昵称 + */ + private String nickname; + + /** + * 手机号 + */ + @Sensitive(strategy = SensitiveStrategy.PHONE) + private String mobile; + + /** + * 头像 + */ + private String avatar; + /** + * 性别 + */ + private Integer gender; + private Integer age; + private Integer isAnchor; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/HomeManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/HomeManager.java index 2e64f8bc..70e60423 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/HomeManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/HomeManager.java @@ -9,6 +9,7 @@ import com.ruoyi.cai.enums.SystemConfigEnum; import com.ruoyi.cai.enums.home.AnchorListQueryTypeEnum; import com.ruoyi.cai.mq.AmqpHttpProducer; import com.ruoyi.cai.mq.handle.dto.LoginNotifyDTO; +import com.ruoyi.cai.service.AnchorBannerService; import com.ruoyi.cai.service.AnchorService; import com.ruoyi.cai.service.AnchorTopService; import com.ruoyi.cai.service.UserService; @@ -42,6 +43,8 @@ public class HomeManager { private UserService userService; @Autowired private UserForbidManager userForbidManager; + @Autowired + private AnchorBannerService anchorBannerService; public void refreshHomeAnchorTopCache(){ List anchorTop = anchorTopService.anchorTop(4); @@ -49,6 +52,12 @@ public class HomeManager { bucket.set(anchorTop); } + public void refreshAnchorBannerCache(){ + List anchorList = anchorBannerService.anchorBanner(); + RBucket> bucket = redissonClient.getBucket(RedisHttpConstant.HOME_ANCHOR_BANNER_REDIS); + bucket.set(anchorList); + } + public void refreshHomeRecommendCache(){ PageQuery pageQuery = new PageQuery(); pageQuery.setPageSize(200); @@ -94,6 +103,13 @@ public class HomeManager { bucket.set(records); } + public List getAnchorBannerCache(){ + RBucket> bucket = redissonClient.getBucket(RedisHttpConstant.HOME_ANCHOR_BANNER_REDIS); + List list = bucket.get(); + Collections.shuffle(list); + int endIndex = Math.min(5, list.size()); + return list.subList(0,endIndex); + } public List getHomeCache(PageQuery pageQuery,AnchorListQuery query){ AnchorListQueryTypeEnum anchorListQueryTypeEnum = AnchorListQueryTypeEnum.getByCode(query.getType()); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/AnchorBannerMapper.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/AnchorBannerMapper.java index 6594d357..5095a2fb 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/AnchorBannerMapper.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/AnchorBannerMapper.java @@ -1,7 +1,13 @@ package com.ruoyi.cai.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.cai.domain.AnchorBanner; +import com.ruoyi.cai.dto.admin.vo.anchorBanner.AnchorBannerAdminVo; +import com.ruoyi.cai.dto.app.vo.AnchorListVo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 主播首页推荐Mapper接口 @@ -11,4 +17,8 @@ import com.ruoyi.cai.domain.AnchorBanner; */ public interface AnchorBannerMapper extends BaseMapper { + Page pageAdmin(@Param("build") Page build, @Param("bo") AnchorBannerAdminVo bo); + + List pageApp(); + } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AnchorBannerService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AnchorBannerService.java index 11906b4b..2d0b38e3 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AnchorBannerService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AnchorBannerService.java @@ -1,7 +1,13 @@ package com.ruoyi.cai.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.cai.domain.AnchorBanner; +import com.ruoyi.cai.dto.admin.vo.anchorBanner.AnchorBannerAdminVo; +import com.ruoyi.cai.dto.app.vo.AnchorListVo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.List; /** * 主播首页推荐Service接口 @@ -12,4 +18,9 @@ import com.ruoyi.cai.domain.AnchorBanner; public interface AnchorBannerService extends IService { boolean saveData(AnchorBanner bo); + + Page pageAdmin(PageQuery pageQuery, AnchorBannerAdminVo bo); + + List anchorBanner(); + } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AnchorBannerServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AnchorBannerServiceImpl.java index e9d1f19c..2b65278f 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AnchorBannerServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AnchorBannerServiceImpl.java @@ -1,17 +1,23 @@ package com.ruoyi.cai.service.impl; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.cai.domain.Anchor; import com.ruoyi.cai.domain.AnchorBanner; import com.ruoyi.cai.domain.User; +import com.ruoyi.cai.dto.admin.vo.anchorBanner.AnchorBannerAdminVo; +import com.ruoyi.cai.dto.app.vo.AnchorListVo; import com.ruoyi.cai.mapper.AnchorBannerMapper; import com.ruoyi.cai.service.AnchorBannerService; import com.ruoyi.cai.service.AnchorService; import com.ruoyi.cai.service.UserService; +import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.exception.ServiceException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** * 主播首页推荐Service业务层处理 * @@ -42,4 +48,14 @@ public class AnchorBannerServiceImpl extends ServiceImpl pageAdmin(PageQuery pageQuery, AnchorBannerAdminVo bo) { + return baseMapper.pageAdmin(pageQuery.build(), bo); + } + + @Override + public List anchorBanner() { + return baseMapper.pageApp(); + } } diff --git a/ruoyi-cai/src/main/resources/mapper/cai/AnchorBannerMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/AnchorBannerMapper.xml new file mode 100644 index 00000000..c623f830 --- /dev/null +++ b/ruoyi-cai/src/main/resources/mapper/cai/AnchorBannerMapper.xml @@ -0,0 +1,29 @@ + + + + + +