From 251fb2cb6cc64155f0ca3fea81ef59d38ae6ae52 Mon Sep 17 00:00:00 2001 From: 13405411873 <1994398261@qq.com> Date: Wed, 9 Apr 2025 15:42:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E5=90=8D=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../busi/controller/BusiNoticeController.java | 32 ++++--- .../com/ruoyi/busi/domain/BusiNotice.java | 8 ++ .../com/ruoyi/busi/domain/BusiNoticeForm.java | 25 ++++-- .../com/ruoyi/busi/domain/BusiNoticeSign.java | 6 +- .../ruoyi/busi/domain/BusiNoticeSignCard.java | 6 +- .../busi/service/IBusiNoticeService.java | 7 ++ .../service/impl/BusiNoticeServiceImpl.java | 89 ++++++++++++++++++- .../member/service/IMemberAddressService.java | 1 + .../mapper/busi/BusiNoticeMapper.xml | 2 +- 9 files changed, 148 insertions(+), 28 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 e6824e5..8d98553 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 @@ -3,13 +3,17 @@ package com.ruoyi.busi.controller; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson2.JSONObject; +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.busi.domain.BusiNoticeForm; import com.ruoyi.busi.query.AppNoticeQuery; import com.ruoyi.busi.query.BusiNoticeQuery; +import com.ruoyi.busi.service.IBusiNoticeFormService; import com.ruoyi.busi.vo.BusiNoticeVo; import com.ruoyi.common.annotation.Anonymous; import org.springframework.security.access.prepost.PreAuthorize; @@ -43,6 +47,8 @@ public class BusiNoticeController extends BaseController { @Autowired private IBusiNoticeService busiNoticeService; + @Autowired + private IBusiNoticeFormService busiNoticeFormService; /** * 查询通告列表 @@ -93,17 +99,19 @@ public class BusiNoticeController extends BaseController /** * 获取通告详细信息 */ - @PreAuthorize("@ss.hasPermi('busi:notice:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") String id) { - return success(busiNoticeService.getById(id)); + //通告信息 + BusiNotice detail = busiNoticeService.getById(id); + //再获取报名动态表单 + List customForm = busiNoticeFormService.list(new LambdaQueryWrapper() + .eq(BusiNoticeForm::getNoticeId,id).orderByAsc(BusiNoticeForm::getSort)); + detail.setCustomForm(customForm.stream().map(BusiNoticeForm::getLabelTitle).collect(Collectors.toList())); + return success(detail); } - /** - * 新增通告 - */ - @PreAuthorize("@ss.hasPermi('busi:notice:add')") + @Log(title = "通告", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody BusiNotice busiNotice) @@ -115,24 +123,22 @@ public class BusiNoticeController extends BaseController /** * 修改通告 */ - @PreAuthorize("@ss.hasPermi('busi:notice:edit')") @Log(title = "通告", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody BusiNotice busiNotice) { - return toAjax(busiNoticeService.updateById(busiNotice)); + busiNoticeService.updateByIdVo(busiNotice); + return success(); } - /** - * 删除通告 - */ - @PreAuthorize("@ss.hasPermi('busi:notice:remove')") + @Log(title = "通告", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) { List list = new ArrayList<>(Arrays.asList(ids)); - return toAjax(busiNoticeService.removeByIds(list)); + busiNoticeService.removeByIdsVo(list); + 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 dbdf5ef..cd06e29 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 @@ -2,6 +2,9 @@ package com.ruoyi.busi.domain; import java.math.BigDecimal; import java.util.Date; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; import com.baomidou.mybatisplus.annotation.IdType; @@ -158,5 +161,10 @@ public class BusiNotice extends DlBaseEntity * 对比后相似的通告id 逗号隔开 */ private String similarityIds; + /** + * 自定义表单 + */ + @TableField(exist = false) + private List customForm; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeForm.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeForm.java index 5c55ac7..5d11496 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeForm.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeForm.java @@ -1,27 +1,29 @@ package com.ruoyi.busi.domain; +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; import com.ruoyi.common.core.domain.DlBaseEntity; +import org.apache.ibatis.type.JdbcType; + +import java.io.Serializable; +import java.util.Date; /** * 通告自定义报名单对象 dl_busi_notice_form - * + * * @author 朱春云 * @date 2025-03-17 */ @TableName("dl_busi_notice_form") @Data -@EqualsAndHashCode(callSuper = true) + @ToString(callSuper = true) @Builder @NoArgsConstructor @AllArgsConstructor -public class BusiNoticeForm extends DlBaseEntity -{ +public class BusiNoticeForm implements Serializable { private static final long serialVersionUID = 1L; /** 唯一主键 */ @@ -40,4 +42,13 @@ public class BusiNoticeForm extends DlBaseEntity @Excel(name = "排序") private Integer sort; + /** 创建者 */ + @TableField(fill = FieldFill.INSERT, jdbcType = JdbcType.VARCHAR) + private String creator; + + /** 创建时间 */ + @TableField(fill = FieldFill.INSERT) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeSign.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeSign.java index e69f7ba..871bb2b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeSign.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeSign.java @@ -9,7 +9,7 @@ import com.ruoyi.common.core.domain.DlBaseEntity; /** * 通告报名对象 dl_busi_notice_sign - * + * * @author 朱春云 * @date 2025-03-17 */ @@ -69,6 +69,10 @@ public class BusiNoticeSign extends DlBaseEntity /** 已发布的文章链接 */ @Excel(name = "已发布的文章链接") private String articleRef; + /** + * 动态表单json + */ + private String formData; /** 备注 */ @Excel(name = "备注") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeSignCard.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeSignCard.java index 22d2bf4..6df46e3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeSignCard.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiNoticeSignCard.java @@ -10,7 +10,7 @@ import com.ruoyi.common.core.domain.DlBaseEntity; /** * 通告报名名片对象 dl_busi_notice_sign_card - * + * * @author 朱春云 * @date 2025-03-17 */ @@ -43,5 +43,7 @@ public class BusiNoticeSignCard extends DlBaseEntity /** 默认报价 */ @Excel(name = "默认报价") private BigDecimal price; - + /** 附言 */ + @Excel(name = "附言") + private String remark; } 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 63e4431..ca06372 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 @@ -41,6 +41,13 @@ public interface IBusiNoticeService extends IService * @param data 保存参数 */ void saveVo(BusiNotice data); + /** + * 更新 + * @param data 保存参数 + */ + void updateByIdVo(BusiNotice data); + void removeByIdsVo(List ids); + /** * 发布或者下架 * @param noticeId 通告主键 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 0f0e61c..b91cd5f 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 @@ -2,16 +2,16 @@ package com.ruoyi.busi.service.impl; import java.util.*; +import cn.hutool.core.collection.CollectionUtil; 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.service.IBaseCategoryService; -import com.ruoyi.busi.domain.BusiNoticeSign; -import com.ruoyi.busi.domain.BusiSubscribe; -import com.ruoyi.busi.domain.BusiUserLove; +import com.ruoyi.busi.domain.*; import com.ruoyi.busi.mapper.BusiNoticeSignMapper; import com.ruoyi.busi.query.AppNoticeQuery; +import com.ruoyi.busi.service.IBusiNoticeFormService; import com.ruoyi.busi.service.IBusiSubscribeService; import com.ruoyi.busi.service.IBusiUserLoveService; import com.ruoyi.busi.vo.BusiNoticeVo; @@ -40,8 +40,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.busi.mapper.BusiNoticeMapper; -import com.ruoyi.busi.domain.BusiNotice; import com.ruoyi.busi.service.IBusiNoticeService; +import org.springframework.transaction.annotation.Transactional; /** * 通告Service业务层处理 @@ -70,6 +70,9 @@ public class BusiNoticeServiceImpl extends ServiceImpl queryListPage(BusiNoticeQuery query, Page page) { @@ -81,6 +84,7 @@ public class BusiNoticeServiceImpl extends ServiceImpl queryWrapper =new LambdaQueryWrapper<>(); + queryWrapper.gt(BusiNotice::getEndDate, DateUtil.format(new Date(),"yyyy-MM-dd")).eq(BusiNotice::getApprovalStatus,1) + .ne(BusiNotice::getId,data.getId()); + List list = this.list(queryWrapper); + //无问题数据直接审核通过 + data.setApprovalStatus("1"); + data.setApprovalUserId(null); + data.setApprovalTime(new Date()); + //遍历 list的每条数据与data对比,如果两条数据相似度大于70% 提出预警 + for (BusiNotice busiNotice : list) { + double v1 = NoticeUtils.computeJaccardSimilarity(data.getTitle(), busiNotice.getTitle()); + double v2 = NoticeUtils.computeJaccardSimilarity(data.getDetail(), busiNotice.getDetail()); + if (v1>=0.7&&v2>=0.7){ + //title 和 detail 相似度大于70% 待审核 + data.setApprovalStatus("0"); + data.setSimilarityIds(Optional.ofNullable(data.getSimilarityIds()).orElse("")+busiNotice.getId()+","); + } + } + if (StringUtils.isNotEmpty(data.getSimilarityIds())){ + //删除结尾的最后一个逗号 + data.setSimilarityIds(data.getSimilarityIds().substring(0, data.getSimilarityIds().length() - 1)); + } + this.updateById(data); + } + //先删除表单数据 + busiNoticeFormService.remove(new LambdaQueryWrapper().eq(BusiNoticeForm::getNoticeId,data.getId())); + //保存表单数据 + if (CollectionUtil.isNotEmpty(data.getCustomForm())){ + int sort = 1; + for (String title : data.getCustomForm()) { + BusiNoticeForm noticeForm = new BusiNoticeForm(); + noticeForm.setNoticeId(data.getId()); + noticeForm.setLabelTitle(title); + noticeForm.setSort(sort++); + busiNoticeFormService.save(noticeForm); + } + } + + } + + @Override + @Transactional + public void removeByIdsVo(List ids) { + for (String id : ids) { + busiNoticeFormService.remove(new LambdaQueryWrapper().eq(BusiNoticeForm::getNoticeId,id)); + this.removeById(id); + } + } + + /** * 查询博主报名的通告 * @@ -283,6 +360,10 @@ public class BusiNoticeServiceImpl extends ServiceImpl customForm = busiNoticeFormService.list(new LambdaQueryWrapper() + .eq(BusiNoticeForm::getNoticeId,noticeId).orderByAsc(BusiNoticeForm::getSort)); + detail.setCustomForm(customForm.stream().map(BusiNoticeForm::getLabelTitle).collect(Collectors.toList())); res.put("noticeDetail",detail); //通告主信息 SysUser userDetail = userService.selectUserById(detail.getUserId()); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberAddressService.java b/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberAddressService.java index 63a1f6c..1042987 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberAddressService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberAddressService.java @@ -24,6 +24,7 @@ public interface IMemberAddressService extends IService { **/ List listByUserId(Long userId); + /** * 保存博主地址信息 * diff --git a/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml b/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml index 3182bf3..b049b94 100644 --- a/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/busi/BusiNoticeMapper.xml @@ -117,7 +117,7 @@ order by dbns.create_time desc -- 默认正序排列 -- - dbn.create_time ASC + dbn.create_time DESC