From c255617a7b3cbd45970cbef95b53e73d07bb2a42 Mon Sep 17 00:00:00 2001 From: 13405411873 <1994398261@qq.com> Date: Mon, 14 Apr 2025 14:24:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E9=80=9A=E5=91=8A=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../busi/controller/BusiNoticeController.java | 30 +++++ .../controller/BusiNoticeSignController.java | 3 +- .../com/ruoyi/busi/domain/BusiNotice.java | 9 +- .../ruoyi/busi/mapper/BusiNoticeMapper.java | 9 ++ .../com/ruoyi/busi/query/AppNoticeQuery.java | 2 + .../busi/service/IBusiNoticeService.java | 4 + .../busi/service/IBusiNoticeSignService.java | 2 +- .../service/impl/BusiNoticeServiceImpl.java | 125 +++++++++++++++--- .../impl/BusiNoticeSignServiceImpl.java | 8 +- .../com/ruoyi/busi/utils/NoticeUtils.java | 4 +- .../java/com/ruoyi/busi/vo/BusiNoticeVo.java | 8 ++ .../mapper/busi/BusiNoticeMapper.xml | 100 +++++++++----- 12 files changed, 243 insertions(+), 61 deletions(-) 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 8d98553..f1c2e63 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 @@ -131,6 +131,15 @@ public class BusiNoticeController extends BaseController return success(); } + @Log(title = "通告", businessType = BusinessType.INSERT) + @PostMapping("saveOrUpdate") + public AjaxResult saveOrUpdate(@RequestBody BusiNotice busiNotice) + { + JSONObject res = new JSONObject(); + res.put("noticeId", busiNoticeService.saveOrUpdateVo(busiNotice)); + return success(res); + } + @Log(title = "通告", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") @@ -258,4 +267,25 @@ public class BusiNoticeController extends BaseController IPage list = busiNoticeService.loveList(query,page); return success(list); } + + + + /** + * 小程序端查询我的通告 + * @author zcy + * @date 15:39 2025/3/29 + * @param query 查询条件 + * @param pageNum 1 + * @param pageSize 10 + * @return com.ruoyi.common.core.domain.AjaxResult + **/ + @GetMapping("/myNoticeList") + public AjaxResult myNoticeList(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.myNoticeList(query,page); + return success(list); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeSignController.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeSignController.java index b179936..5c8e284 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeSignController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiNoticeSignController.java @@ -117,8 +117,7 @@ public class BusiNoticeSignController extends BaseController * 用户通告报名 */ @PostMapping("/userSign") - public AjaxResult userSign(@RequestBody AppNoticeSign appNoticeSign) - { + public AjaxResult userSign(@RequestBody AppNoticeSign appNoticeSign) throws Exception { busiNoticeSignService.userSign(appNoticeSign); return success(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNotice.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNotice.java index cd06e29..faada6b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNotice.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNotice.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.util.Date; import java.util.List; +import com.alibaba.fastjson2.JSONArray; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; @@ -51,7 +52,8 @@ public class BusiNotice extends DlBaseEntity private String province; /** 城市 */ private String city; - + //是否平台结算 + private Integer isPlatformFree; /** 稿费下限 */ @Excel(name = "稿费下限") private BigDecimal feeDown; @@ -63,6 +65,8 @@ public class BusiNotice extends DlBaseEntity /** 是否需自报价 */ @Excel(name = "是否需自报价") private Integer isSelfPrice; + //是否有赠品 0 1 + private String haveGift; /** 赠品明细 */ @Excel(name = "赠品明细") @@ -167,4 +171,7 @@ public class BusiNotice extends DlBaseEntity @TableField(exist = false) private List customForm; + + + } 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 f14fae7..131bdfc 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 @@ -68,6 +68,15 @@ public interface BusiNoticeMapper extends BaseMapper { * @return com.ruoyi.common.core.domain.AjaxResult **/ IPage loveList(@Param("entity") AppNoticeQuery query, Page page); + /** + * 小程序端我的通告列表 + * @author zcy + * @date 15:39 2025/3/29 + * @param query 查询条件 + * @return com.ruoyi.common.core.domain.AjaxResult + **/ + IPage myNoticeList(@Param("entity") AppNoticeQuery query, Page page); + /** * 小程序端查询通告详细信息 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 index b8de8f7..2a4ad13 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/query/AppNoticeQuery.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/query/AppNoticeQuery.java @@ -31,5 +31,7 @@ public class AppNoticeQuery { private Double feeDown; //用户id private Long userId; + //'全部', '审核中', '已通过', '未合作' + private String reportStatus; } 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 ca06372..6edf88f 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 @@ -46,6 +46,7 @@ public interface IBusiNoticeService extends IService * @param data 保存参数 */ void updateByIdVo(BusiNotice data); + String saveOrUpdateVo(BusiNotice data); void removeByIdsVo(List ids); /** @@ -93,6 +94,9 @@ public interface IBusiNoticeService extends IService IPage loveList(AppNoticeQuery query, Page page); + IPage myNoticeList(AppNoticeQuery query, Page page); + + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeSignService.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeSignService.java index ccbd3f5..7b8193b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeSignService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiNoticeSignService.java @@ -16,5 +16,5 @@ import com.ruoyi.busi.query.AppNoticeSign; public interface IBusiNoticeSignService extends IService { IPage queryListPage(BusiNoticeSign pageReqVO, Page page); - void userSign(AppNoticeSign appNoticeSign); + void userSign(AppNoticeSign appNoticeSign) throws Exception; } 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 b91cd5f..77fc483 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 @@ -7,7 +7,9 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.base.domain.BaseCategory; +import com.ruoyi.base.domain.BaseCity; import com.ruoyi.base.service.IBaseCategoryService; +import com.ruoyi.base.service.IBaseCityService; import com.ruoyi.busi.domain.*; import com.ruoyi.busi.mapper.BusiNoticeSignMapper; import com.ruoyi.busi.query.AppNoticeQuery; @@ -72,6 +74,8 @@ public class BusiNoticeServiceImpl extends ServiceImpl queryWrapper =new LambdaQueryWrapper<>(); + queryWrapper.eq(BaseCity::getCityId,data.getCity()); + BaseCity city = cityService.getOne(queryWrapper); + String cityName = city.getName(); + queryWrapper =new LambdaQueryWrapper<>(); + queryWrapper.eq(BaseCity::getCityId,city.getParentId()); + BaseCity parentCity = cityService.getOne(queryWrapper); + data.setCity(cityName); + data.setProvince(parentCity.getName()); + } + if (StringUtils.isNotEmpty(data.getId())){ + this.updateByIdVo(data); + }else { + this.saveVo(data); + } + return data.getId(); + } + @Override @Transactional public void removeByIdsVo(List ids) { @@ -279,10 +306,6 @@ public class BusiNoticeServiceImpl extends ServiceImpl 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 @@ -292,11 +315,6 @@ public class BusiNoticeServiceImpl extends ServiceImpl pageList = busiNoticeMapper.appFootprintList(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 @@ -334,11 +348,7 @@ public class BusiNoticeServiceImpl extends ServiceImpl queryWrapper =new LambdaQueryWrapper<>(); queryWrapper.eq(BusiUserLove::getUserId,userId).eq(BusiUserLove::getLoveUserId,detail.getUserId()); @@ -405,6 +416,11 @@ public class BusiNoticeServiceImpl extends ServiceImpl().eq(BusiNoticeSign::getNoticeId, noticeId).eq(BusiNoticeSign::getUserId, userId).last("limit 1"))!=null){ res.put("isSign",true); } + + //当前用户是否已通过当前报名 + if(busiNoticeSignMapper.selectOne(new LambdaQueryWrapper().eq(BusiNoticeSign::getNoticeId, noticeId).eq(BusiNoticeSign::getUserId, userId).eq(BusiNoticeSign::getStatus,"1").last("limit 1"))!=null){ + res.put("passSign",true); + } } return res; } @@ -442,7 +458,26 @@ public class BusiNoticeServiceImpl extends ServiceImpl pageList = baseMapper.subscribeList(subscribeDataObj, page); + + List idList = pageList.getRecords().stream().map(BusiNotice::getId).collect(Collectors.toList()); + if(!idList.isEmpty()){ + //查博主类型字典 + 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); + } + item.setBloggerTypesText(noticeUtils.translateBloggerTypes(item.getBloggerTypes(),categoryMap)); + if(StringUtils.isNotEmpty(item.getImages())){ + item.setMainImage(item.getImages().split(StrUtil.COMMA)[0]); + } + }); + } + return pageList; }else { //未设置订阅则使用常规查询 return this.queryAppListPage(query,page); @@ -461,7 +496,57 @@ public class BusiNoticeServiceImpl extends ServiceImpl pageList = baseMapper.loveList(query, page); + List idList = pageList.getRecords().stream().map(BusiNotice::getId).collect(Collectors.toList()); + if(!idList.isEmpty()){ + //查博主类型字典 + 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); + } + item.setBloggerTypesText(noticeUtils.translateBloggerTypes(item.getBloggerTypes(),categoryMap)); + if(StringUtils.isNotEmpty(item.getImages())){ + item.setMainImage(item.getImages().split(StrUtil.COMMA)[0]); + } + }); + } + return pageList; + } + /** + * 小程序端我的通告列表 + * @author zcy + * @date 15:39 2025/3/29 + * @param query 查询条件 + * @return com.ruoyi.common.core.domain.AjaxResult + **/ + @Override + public IPage myNoticeList(AppNoticeQuery query, Page page) { + //获取当前登录用户 + Long userId = SecurityUtils.getUserId(); + query.setUserId(userId); + IPage pageList = baseMapper.myNoticeList(query, page); + List idList = pageList.getRecords().stream().map(BusiNotice::getId).collect(Collectors.toList()); + if(!idList.isEmpty()){ + //查博主类型字典 + 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); + } + item.setBloggerTypesText(noticeUtils.translateBloggerTypes(item.getBloggerTypes(),categoryMap)); + if(StringUtils.isNotEmpty(item.getImages())){ + item.setMainImage(item.getImages().split(StrUtil.COMMA)[0]); + } + }); + } + return pageList; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeSignServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeSignServiceImpl.java index 72223f3..d606d79 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeSignServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeSignServiceImpl.java @@ -4,6 +4,7 @@ import java.util.List; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.busi.query.AppNoticeSign; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.utils.DateUtils; @@ -39,9 +40,14 @@ public class BusiNoticeSignServiceImpl extends ServiceImpl().eq(BusiNoticeSign::getNoticeId, appNoticeSign.getNoticeId()).eq(BusiNoticeSign::getUserId, loginUser.getUserId()).last("limit 1"))!=null){ + throw new Exception("请勿重复报名!"); + } for (JSONObject cardInfo : appNoticeSign.getCardList()) { + BusiNoticeSign busiNoticeSign =new BusiNoticeSign(); busiNoticeSign.setNoticeId(appNoticeSign.getNoticeId()); busiNoticeSign.setUserId(loginUser.getUserId()); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/NoticeUtils.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/NoticeUtils.java index fc260b5..e8117da 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/NoticeUtils.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/NoticeUtils.java @@ -41,7 +41,9 @@ public class NoticeUtils { List rtnList = new ArrayList<>(); List bloggerTypeList = Arrays.asList(bloggerTypes.split(StrUtil.COMMA)); bloggerTypeList.forEach(item->{ - rtnList.add(categoryMap.get(item)); + if(categoryMap.get(item)!=null){ + 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 82e127b..2306b06 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 @@ -1,9 +1,12 @@ package com.ruoyi.busi.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.busi.domain.BusiNotice; import com.ruoyi.common.annotation.Excel; import lombok.Data; +import java.util.Date; + @Data public class BusiNoticeVo extends BusiNotice { /**发布者名称**/ @@ -29,4 +32,9 @@ public class BusiNoticeVo extends BusiNotice { * 审核人姓名 */ private String approvalUserName; + //报名时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + private Date signTime; + + } diff --git a/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml b/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml index b049b94..2a4559f 100644 --- a/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml @@ -66,11 +66,13 @@ order by dbns.create_time desc dbn.*, dbnv.view_num AS viewNum, su.avatar, - su.nick_name AS userNickName + su.nick_name AS userNickName, + count(sign.id) as reportNum FROM dl_busi_notice dbn LEFT JOIN dl_busi_notice_view dbnv ON dbn.id = dbnv.id LEFT JOIN sys_user su ON dbn.user_id = su.user_id + left join dl_busi_notice_sign sign on sign.notice_id = dbn.id and sign.del_flag = 0 WHERE dbn.del_flag = 0 AND (dbn.approval_status = '1') @@ -105,6 +107,7 @@ order by dbns.create_time desc AND ( dbn.fee_down >=#{entity.feeDown} ) + group by dbn.id ORDER BY @@ -141,12 +144,14 @@ order by dbns.create_time desc dbn.*, dbnv.view_num AS viewNum, su.avatar, - su.nick_name AS userNickName + su.nick_name AS userNickName, + count(sign.id) as reportNum FROM dl_busi_notice dbn LEFT JOIN dl_busi_notice_view dbnv ON dbn.id = dbnv.id inner join dl_member_footprint footprint on footprint.notice_id = dbn.id and footprint.user_id = #{entity.userId} LEFT JOIN sys_user su ON dbn.user_id = su.user_id + left join dl_busi_notice_sign sign on sign.notice_id = dbn.id and sign.del_flag = 0 WHERE dbn.del_flag = 0 AND (dbn.approval_status = '1') @@ -182,6 +187,7 @@ order by dbns.create_time desc AND ( dbn.fee_down >=#{entity.feeDown} ) + group by dbn.id ORDER BY @@ -203,23 +209,25 @@ order by dbns.create_time desc dbn.*, dbnv.view_num AS viewNum, su.avatar, - su.nick_name AS userNickName + su.nick_name AS userNickName, + count(sign.id) as reportNum FROM dl_busi_notice dbn LEFT JOIN dl_busi_notice_view dbnv ON dbn.id = dbnv.id LEFT JOIN sys_user su ON dbn.user_id = su.user_id + left join dl_busi_notice_sign sign on sign.notice_id = dbn.id and sign.del_flag = 0 WHERE dbn.del_flag = 0 AND (dbn.approval_status = '1') and dbn.end_date >= CURDATE() - + and dbn.platform_code IN -- platform_code 包含it #{it} - + and dbn.blogger_types like concat('%',#{it},'%') @@ -229,7 +237,7 @@ order by dbns.create_time desc and dbn.settle_type = #{entity.settleTypeCode} - + and title like concat('%',#{it},'%') or detail like concat('%',#{it},'%') or brand like concat('%',#{it},'%') @@ -247,21 +255,12 @@ order by dbns.create_time desc AND ( dbn.fee_down >=#{entity.feeDown} ) + group by dbn.id ORDER BY - - - -- 查最新的 -- - dbn.create_time DESC - - - -- 查高奖励 -- - dbn.fee_up DESC - - - -- 默认正序排列 -- - dbn.create_time DESC - - + + -- 默认正序排列 -- + dbn.create_time DESC + +