报名功能
This commit is contained in:
parent
9983d7ff3f
commit
251fb2cb6c
@ -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<BusiNoticeForm> customForm = busiNoticeFormService.list(new LambdaQueryWrapper<BusiNoticeForm>()
|
||||
.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<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(busiNoticeService.removeByIds(list));
|
||||
busiNoticeService.removeByIdsVo(list);
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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<String> customForm;
|
||||
|
||||
}
|
||||
|
@ -1,11 +1,14 @@
|
||||
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
|
||||
@ -15,13 +18,12 @@ import com.ruoyi.common.core.domain.DlBaseEntity;
|
||||
*/
|
||||
@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;
|
||||
|
||||
}
|
||||
|
@ -69,6 +69,10 @@ public class BusiNoticeSign extends DlBaseEntity
|
||||
/** 已发布的文章链接 */
|
||||
@Excel(name = "已发布的文章链接")
|
||||
private String articleRef;
|
||||
/**
|
||||
* 动态表单json
|
||||
*/
|
||||
private String formData;
|
||||
|
||||
/** 备注 */
|
||||
@Excel(name = "备注")
|
||||
|
@ -43,5 +43,7 @@ public class BusiNoticeSignCard extends DlBaseEntity
|
||||
/** 默认报价 */
|
||||
@Excel(name = "默认报价")
|
||||
private BigDecimal price;
|
||||
|
||||
/** 附言 */
|
||||
@Excel(name = "附言")
|
||||
private String remark;
|
||||
}
|
||||
|
@ -41,6 +41,13 @@ public interface IBusiNoticeService extends IService<BusiNotice>
|
||||
* @param data 保存参数
|
||||
*/
|
||||
void saveVo(BusiNotice data);
|
||||
/**
|
||||
* 更新
|
||||
* @param data 保存参数
|
||||
*/
|
||||
void updateByIdVo(BusiNotice data);
|
||||
void removeByIdsVo(List<String> ids);
|
||||
|
||||
/**
|
||||
* 发布或者下架
|
||||
* @param noticeId 通告主键
|
||||
|
@ -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<BusiNoticeMapper,BusiNoti
|
||||
private ISysDictDataService dictDataService;
|
||||
@Autowired
|
||||
private IBusiSubscribeService subscribeService;
|
||||
@Autowired
|
||||
private IBusiNoticeFormService busiNoticeFormService;
|
||||
|
||||
|
||||
@Override
|
||||
public IPage<BusiNoticeVo> queryListPage(BusiNoticeQuery query, Page<BusiNotice> page) {
|
||||
@ -81,6 +84,7 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
|
||||
* @param data 通告对象
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public void saveVo(BusiNotice data) {
|
||||
//获取当前登录用户
|
||||
data.setUserId(SecurityUtils.getUserId());
|
||||
@ -113,10 +117,83 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
|
||||
}
|
||||
this.save(data);
|
||||
}
|
||||
//保存表单数据
|
||||
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 updateByIdVo(BusiNotice data) {
|
||||
|
||||
//获取当前登录用户
|
||||
data.setUserId(SecurityUtils.getUserId());
|
||||
if (StringUtils.isNotEmpty(data.getApprovalStatus())&&data.getApprovalStatus().equals("8")){
|
||||
//草稿数据直接保存
|
||||
this.updateById(data);
|
||||
}else {
|
||||
//判断 内容重复度 是否大于70%
|
||||
//先获取 当前系统中截止日期之前的
|
||||
LambdaQueryWrapper<BusiNotice> queryWrapper =new LambdaQueryWrapper<>();
|
||||
queryWrapper.gt(BusiNotice::getEndDate, DateUtil.format(new Date(),"yyyy-MM-dd")).eq(BusiNotice::getApprovalStatus,1)
|
||||
.ne(BusiNotice::getId,data.getId());
|
||||
List<BusiNotice> 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<BusiNoticeForm>().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<String> ids) {
|
||||
for (String id : ids) {
|
||||
busiNoticeFormService.remove(new LambdaQueryWrapper<BusiNoticeForm>().eq(BusiNoticeForm::getNoticeId,id));
|
||||
this.removeById(id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询博主报名的通告
|
||||
*
|
||||
@ -283,6 +360,10 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
|
||||
JSONObject res =new JSONObject();
|
||||
//通告信息
|
||||
BusiNoticeVo detail = busiNoticeMapper.selectByIdVo(noticeId);
|
||||
//再获取报名动态表单
|
||||
List<BusiNoticeForm> customForm = busiNoticeFormService.list(new LambdaQueryWrapper<BusiNoticeForm>()
|
||||
.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());
|
||||
|
@ -24,6 +24,7 @@ public interface IMemberAddressService extends IService<MemberAddress> {
|
||||
**/
|
||||
List<MemberAddress> listByUserId(Long userId);
|
||||
|
||||
|
||||
/**
|
||||
* 保存博主地址信息
|
||||
*
|
||||
|
@ -117,7 +117,7 @@ order by dbns.create_time desc
|
||||
</when>
|
||||
<otherwise>
|
||||
-- 默认正序排列 --
|
||||
dbn.create_time ASC
|
||||
dbn.create_time DESC
|
||||
</otherwise>
|
||||
</choose>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user