From f8cb4fc32aac25117149d49c38eba438d63d79e8 Mon Sep 17 00:00:00 2001 From: Vinjor Date: Wed, 26 Mar 2025 10:08:42 +0800 Subject: [PATCH] 1 --- .../controller/BaseCategoryController.java | 13 +--- .../base/service/IBaseCategoryService.java | 10 +++ .../service/impl/BaseCategoryServiceImpl.java | 25 +++++++ .../busi/controller/BusiNoticeController.java | 21 ++++++ .../ruoyi/busi/mapper/BusiNoticeMapper.java | 11 +++ .../busi/mapper/BusiNoticeSignMapper.java | 11 +++ .../com/ruoyi/busi/query/AppNoticeQuery.java | 33 +++++++++ .../busi/service/IBusiNoticeService.java | 11 +++ .../service/impl/BusiNoticeServiceImpl.java | 74 ++++++++++++++++--- ...accardSimilarity.java => NoticeUtils.java} | 25 ++++++- .../java/com/ruoyi/busi/vo/BusiNoticeVo.java | 11 +++ .../com/ruoyi/constant/DictConstants.java | 4 + .../mapper/busi/BusiNoticeMapper.xml | 61 +++++++++++++++ .../mapper/busi/BusiNoticeSignMapper.xml | 15 ++++ 14 files changed, 302 insertions(+), 23 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/busi/query/AppNoticeQuery.java rename ruoyi-admin/src/main/java/com/ruoyi/busi/utils/{JaccardSimilarity.java => NoticeUtils.java} (59%) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseCategoryController.java b/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseCategoryController.java index 089915c..4c16c3b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseCategoryController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseCategoryController.java @@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletResponse; 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.ruoyi.common.exception.ServiceException; import org.apache.commons.lang3.StringUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; @@ -134,16 +135,10 @@ public class BaseCategoryController extends BaseController public AjaxResult listByCode(@RequestParam(value = "code") String code, @RequestParam(value = "isSystem",required = false) Integer isSystem) { - List list = baseCategoryService.selectByCode(code); - if(list.isEmpty()){ + try { + return success(baseCategoryService.listByParentCode(code, isSystem)); + }catch (ServiceException e){ return error("未查询到该字典项!"); } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(BaseCategory::getPid,list.get(0).getId()); - if(null!=isSystem){ - queryWrapper.eq(BaseCategory::getIsSystem,isSystem); - } - queryWrapper.orderByAsc(BaseCategory::getSort); - return success(baseCategoryService.list(queryWrapper)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseCategoryService.java b/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseCategoryService.java index a610624..68e0512 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseCategoryService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseCategoryService.java @@ -24,4 +24,14 @@ public interface IBaseCategoryService extends IService * @return java.util.List **/ List selectByCode(String code); + + /** + * 根据code查下级分类字典--列表 + * @author vinjor-M + * @date 17:01 2025/3/25 + * @param code 编码 + * @param isSystem 是否系统级 + * @return java.util.List + **/ + List listByParentCode(String code, Integer isSystem); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseCategoryServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseCategoryServiceImpl.java index e1aa107..1914d5d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseCategoryServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseCategoryServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.base.service.impl; import java.util.List; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -42,4 +43,28 @@ public class BaseCategoryServiceImpl extends ServiceImpl selectByCode(String code) { return this.list(new LambdaQueryWrapper().eq(BaseCategory::getCode,code)); } + + /** + * 根据code查分类字典--列表 + * + * @param code 编码 + * @param isSystem 是否系统级 + * @return java.util.List + * @author vinjor-M + * @date 17:01 2025/3/25 + **/ + @Override + public List listByParentCode(String code, Integer isSystem) { + List list = this.selectByCode(code); + if(list.isEmpty()){ + throw new ServiceException("未查询到该字典项!"); + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BaseCategory::getPid,list.get(0).getId()); + if(null!=isSystem){ + queryWrapper.eq(BaseCategory::getIsSystem,isSystem); + } + queryWrapper.orderByAsc(BaseCategory::getSort); + return list(queryWrapper); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeController.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeController.java index 8d17d68..8e990a8 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeController.java @@ -6,7 +6,9 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.busi.query.AppNoticeQuery; import com.ruoyi.busi.query.BusiNoticeQuery; +import com.ruoyi.busi.vo.BusiNoticeVo; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -136,4 +138,23 @@ public class BusiNoticeController extends BaseController return success(); } + /** + * 小程序端查询通告列表 + * @author vinjor-M + * @date 15:39 2025/3/25 + * @param query 查询条件 + * @param pageNum TODO + * @param pageSize TODO + * @return com.ruoyi.common.core.domain.AjaxResult + **/ + @GetMapping("/appList") + public AjaxResult appList(AppNoticeQuery query, + @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) + { + Page page = new Page<>(pageNum, pageSize); + IPage list = busiNoticeService.queryAppListPage(query,page); + return success(list); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiNoticeMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiNoticeMapper.java index a488c63..d1c38bd 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiNoticeMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiNoticeMapper.java @@ -5,6 +5,7 @@ import java.util.List; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.busi.domain.BusiNotice; +import com.ruoyi.busi.query.AppNoticeQuery; import com.ruoyi.busi.query.BusiNoticeQuery; import com.ruoyi.busi.vo.BusiNoticeVo; import org.apache.ibatis.annotations.Param; @@ -30,4 +31,14 @@ public interface BusiNoticeMapper extends BaseMapper { * @date 11:04 2025/3/22 **/ List queryListByUserId(@Param("userId") Long userId); + + /** + * 小程序端查询通告列表 + * @author vinjor-M + * @date 15:41 2025/3/25 + * @param query TODO + * @param page + * @return com.baomidou.mybatisplus.core.metadata.IPage + **/ + IPage queryAppListPage(@Param("entity") AppNoticeQuery query, Page page); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiNoticeSignMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiNoticeSignMapper.java index 6dbc652..608c4bd 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiNoticeSignMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiNoticeSignMapper.java @@ -1,6 +1,8 @@ package com.ruoyi.busi.mapper; import java.util.List; +import java.util.Map; + import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.busi.domain.BusiNoticeSign; @@ -18,4 +20,13 @@ import org.apache.ibatis.annotations.Mapper; public interface BusiNoticeSignMapper extends BaseMapper { IPage queryListPage(@Param("entity") BusiNoticeSign entity, Page page); + + /** + * 查某些公告的报名数量 + * @author vinjor-M + * @date 16:50 2025/3/25 + * @param idList 公告id + * @return java.util.List> + **/ + List> selectReportNumByIdList(@Param("list")List idList); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/query/AppNoticeQuery.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/query/AppNoticeQuery.java new file mode 100644 index 0000000..406a0de --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/query/AppNoticeQuery.java @@ -0,0 +1,33 @@ +package com.ruoyi.busi.query; + +import lombok.Data; + +/** + * 小程序端查询通告条件 + * @author vinjor-M + * @date 15:40 2025/3/25 +**/ +@Data +public class AppNoticeQuery { + /** 排序方式:new-最新;money-高奖励; */ + private String sortBy; + /** 品牌置换--只要有值代表查品牌置换 */ + private String gift; + /** 平台code */ + private String platformCode; + /** 领域code */ + private String bloggerType; + /** 搜索的文字 */ + private String searchValue; + /** 奖励类型选中值:""-不限 | money-稿费 | gift-赠品 */ + private String rewardType; + /** 粉丝量要求-上限 */ + private Double fansUp; + /** 粉丝量要求-下限 */ + private Double fansDown; + /** 稿费要求-上限 */ + private Double feeUp; + /** 稿费要求-下限 */ + private Double feeDown; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeService.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeService.java index 1f32d60..4b7e1bf 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.busi.domain.BusiNotice; +import com.ruoyi.busi.query.AppNoticeQuery; import com.ruoyi.busi.query.BusiNoticeQuery; import com.ruoyi.busi.vo.BusiNoticeVo; @@ -59,4 +60,14 @@ public interface IBusiNoticeService extends IService * @param query 审核参数 */ void auditInfo(BusiNoticeQuery query); + + /** + * 小程序端查询通告列表 + * @author vinjor-M + * @date 15:41 2025/3/25 + * @param query TODO + * @param page TODO + * @return com.baomidou.mybatisplus.core.metadata.IPage + **/ + IPage queryAppListPage(AppNoticeQuery query, Page page); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java index 4728e35..89c81df 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeServiceImpl.java @@ -1,22 +1,26 @@ package com.ruoyi.busi.service.impl; -import java.util.Date; -import java.util.List; +import java.util.*; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.ruoyi.base.domain.BaseCategory; +import com.ruoyi.base.service.IBaseCategoryService; +import com.ruoyi.busi.mapper.BusiNoticeSignMapper; +import com.ruoyi.busi.query.AppNoticeQuery; import com.ruoyi.busi.vo.BusiNoticeVo; import com.ruoyi.common.core.domain.DlBaseEntity; -import java.util.Optional; + +import java.util.stream.Collectors; import cn.hutool.core.date.DateUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.ruoyi.busi.utils.JaccardSimilarity; +import com.ruoyi.busi.utils.NoticeUtils; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.busi.query.BusiNoticeQuery; +import com.ruoyi.constant.DictConstants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -33,8 +37,14 @@ import com.ruoyi.busi.service.IBusiNoticeService; @Service public class BusiNoticeServiceImpl extends ServiceImpl implements IBusiNoticeService { + @Autowired + private IBaseCategoryService baseCategoryService; @Autowired private BusiNoticeMapper busiNoticeMapper; + @Autowired + private BusiNoticeSignMapper busiNoticeSignMapper; + @Autowired + private NoticeUtils noticeUtils; @Override public IPage queryListPage(BusiNoticeQuery query, Page page) { @@ -62,8 +72,8 @@ public class BusiNoticeServiceImpl extends ServiceImpl=0.7&&v2>=0.7){ //title 和 detail 相似度大于70% 待审核 data.setApprovalStatus("0"); @@ -127,8 +137,8 @@ public class BusiNoticeServiceImpl extends ServiceImpl=0.7&&v2>=0.7){ //title 和 detail 相似度大于70% 待审核 data.setApprovalStatus("0"); @@ -152,5 +162,49 @@ public class BusiNoticeServiceImpl extends ServiceImpl + * @author vinjor-M + * @date 15:41 2025/3/25 + **/ + @Override + public IPage queryAppListPage(AppNoticeQuery query, Page page) { + IPage pageList = busiNoticeMapper.queryAppListPage(query,page); + List idList = pageList.getRecords().stream().map(BusiNotice::getId).collect(Collectors.toList()); + if(!idList.isEmpty()){ + //查报名数量 + List> mapList = busiNoticeSignMapper.selectReportNumByIdList(idList); + //转map + Map objectMap = mapList.stream().collect(Collectors.toMap(each-> Objects.toString(each.get("id"),""),each->each.get("reportNum"))); + //查博主类型字典 + List categoryList = baseCategoryService.listByParentCode(DictConstants.BLOGGER_TYPES_KEY,null); + //转map + Map categoryMap = categoryList.stream().collect(Collectors.toMap(BaseCategory::getCode,BaseCategory::getTitle)); + pageList.getRecords().forEach(item->{ + //报名数量、浏览量、相关字典转换 + if(null==item.getViewNum()){ + item.setViewNum(0); + } + if(!objectMap.containsKey(item.getId()) || null==objectMap.get(item.getId())){ + item.setReportNum(0); + }else{ + item.setReportNum((Integer) objectMap.get(item.getId())); + } + item.setBloggerTypesText(noticeUtils.translateBloggerTypes(item.getBloggerTypes(),categoryMap)); + if(StringUtils.isNotEmpty(item.getImages())){ + item.setMainImage(item.getImages().split(StrUtil.COMMA)[0]); + } + }); + } + //TODO 后续需要拼接开通会员的通告主发布的通告,增加曝光度,这部分逻辑需要商讨 + return pageList; + + + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/JaccardSimilarity.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/NoticeUtils.java similarity index 59% rename from ruoyi-admin/src/main/java/com/ruoyi/busi/utils/JaccardSimilarity.java rename to ruoyi-admin/src/main/java/com/ruoyi/busi/utils/NoticeUtils.java index 95bd98a..fc62258 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/JaccardSimilarity.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/NoticeUtils.java @@ -1,14 +1,17 @@ package com.ruoyi.busi.utils; -import java.util.HashSet; -import java.util.Set; -import java.util.Arrays; +import cn.hutool.core.util.StrUtil; +import org.springframework.stereotype.Component; + +import java.util.*; import java.util.stream.Collectors; /** * 文本相似度对比 * @author 朱春云 * @version 1.0 */ -public class JaccardSimilarity { +@Component +public class NoticeUtils { + public static double computeJaccardSimilarity(String str1, String str2) { Set set1 = Arrays.stream(str1.split("\\s+")) // 分词,这里按空格分割,可以根据需要调整正则表达式 .collect(Collectors.toSet()); @@ -22,4 +25,18 @@ public class JaccardSimilarity { union.removeAll(intersection); // 从并集中移除交集部分(因为我们只计算交集的元素) return (double) intersection.size() / union.size(); // 返回相似度比例 } + /** + * 翻译通告的博主类型字典 + * @author vinjor-M + * @date 17:10 2025/3/25 + * @return java.lang.String + **/ + public String translateBloggerTypes(String bloggerTypes, Map categoryMap){ + List rtnList = new ArrayList<>(); + List bloggerTypeList = Arrays.asList(bloggerTypes.split(StrUtil.COMMA)); + bloggerTypeList.forEach(item->{ + rtnList.add(categoryMap.get(item)); + }); + return String.join(" ",rtnList); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiNoticeVo.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiNoticeVo.java index 4d1ea7f..067a0b9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiNoticeVo.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiNoticeVo.java @@ -8,10 +8,21 @@ import lombok.Data; public class BusiNoticeVo extends BusiNotice { /**发布者名称**/ private String userNickName; + /**发布者头像*/ + private String avatar; /** 平台名称 */ private String platformName; /** 是否超级报名*/ private String isSuper; /**通告合作状态*/ private String signStatus; + /**产品主图*/ + private String mainImage; + + /**浏览量*/ + private Integer viewNum; + /**报名量*/ + private Integer reportNum; + /**博主类型-text*/ + private String bloggerTypesText; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/constant/DictConstants.java b/ruoyi-admin/src/main/java/com/ruoyi/constant/DictConstants.java index e53b92d..fc9472a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/constant/DictConstants.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/constant/DictConstants.java @@ -11,6 +11,10 @@ import java.util.Locale; */ public class DictConstants { + /** + * 博主类型字典key + */ + public static final String BLOGGER_TYPES_KEY ="dl_blogger_type"; /** * 权益类型字典--是否支持 */ diff --git a/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml b/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml index 654df6a..cc77cb1 100644 --- a/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml @@ -56,5 +56,66 @@ WHERE dbns.user_id = #{userId} + diff --git a/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeSignMapper.xml b/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeSignMapper.xml index a8df361..c6f1f23 100644 --- a/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeSignMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeSignMapper.xml @@ -39,4 +39,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and status = #{entity.status} + \ No newline at end of file