diff --git a/vetti-admin/src/main/java/com/vetti/web/controller/hotake/HotakeSysFileController.java b/vetti-admin/src/main/java/com/vetti/web/controller/hotake/HotakeSysFileController.java index 8fe30c4..03f94d3 100644 --- a/vetti-admin/src/main/java/com/vetti/web/controller/hotake/HotakeSysFileController.java +++ b/vetti-admin/src/main/java/com/vetti/web/controller/hotake/HotakeSysFileController.java @@ -33,7 +33,6 @@ public class HotakeSysFileController extends BaseController { @Autowired private IHotakeSysFileService hotakeSysFileService; - /** * 查询文件管理列表 */ diff --git a/vetti-admin/src/main/java/com/vetti/web/controller/hotake/HotakeSysNoticeController.java b/vetti-admin/src/main/java/com/vetti/web/controller/hotake/HotakeSysNoticeController.java new file mode 100644 index 0000000..aa623fd --- /dev/null +++ b/vetti-admin/src/main/java/com/vetti/web/controller/hotake/HotakeSysNoticeController.java @@ -0,0 +1,129 @@ +package com.vetti.web.controller.hotake; + +import java.util.List; + +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.vetti.common.annotation.Log; +import com.vetti.common.core.controller.BaseController; +import com.vetti.common.core.domain.AjaxResult; +import com.vetti.common.enums.BusinessType; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import com.vetti.hotake.domain.HotakeSysNotice; +import com.vetti.hotake.service.IHotakeSysNoticeService; +import com.vetti.common.utils.poi.ExcelUtil; +import com.vetti.common.core.page.TableDataInfo; + +/** + * 通知Controller + * + * @author ID + * @date 2025-11-01 + */ +@Api(tags = "通知") +@RestController +@RequestMapping("/hotake/sysNotice") +public class HotakeSysNoticeController extends BaseController { + @Autowired + private IHotakeSysNoticeService hotakeSysNoticeService; + + /** + * 查询通知列表 + */ + @ApiOperation("查询通知列表") + @PreAuthorize("@ss.hasPermi('hotake:sysNotice:list')") + @GetMapping("/listview") + public AjaxResult listView(HotakeSysNotice hotakeSysNotice) { + return AjaxResult.success(hotakeSysNoticeService.selectHotakeSysNoticeViewList(hotakeSysNotice)); + } + /** + * 获取通知详细信息 + */ + @ApiOperation("查看通知详细信息") + @PreAuthorize("@ss.hasPermi('hotake:sysNotice:query')") + @GetMapping(value = "/view/{id}") + public AjaxResult viewInfo(@PathVariable("id") Long id) { + return AjaxResult.success(hotakeSysNoticeService.selectHotakeSysNoticeViewById(id)); + } + @ApiOperation("全部已读") + @PreAuthorize("@ss.hasPermi('hotake:sysNotice:query')") + @GetMapping(value = "/allread") + public AjaxResult allRead() { + return AjaxResult.success(hotakeSysNoticeService.allRead()); + } + + + /** + * 查询通知列表 + */ + @ApiOperation("查询通知列表") + @PreAuthorize("@ss.hasPermi('hotake:sysNotice:list')") + @GetMapping("/list") + public TableDataInfo list(HotakeSysNotice hotakeSysNotice) { + startPage(); + List list = hotakeSysNoticeService.selectHotakeSysNoticeList(hotakeSysNotice); + return getDataTable(list); + } + + /** + * 导出通知列表 + */ + @ApiOperation("导出通知列表") + @PreAuthorize("@ss.hasPermi('hotake:sysNotice:export')") + @Log(title = "通知", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult export(HotakeSysNotice hotakeSysNotice) { + List list = hotakeSysNoticeService.selectHotakeSysNoticeList(hotakeSysNotice); + ExcelUtil util = new ExcelUtil(HotakeSysNotice.class); + return util.exportExcel(list, "通知数据"); + } + + @ApiOperation("获取通知详细信息") + @PreAuthorize("@ss.hasPermi('hotake:sysNotice:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + return AjaxResult.success(hotakeSysNoticeService.selectHotakeSysNoticeById(id)); + } + + /** + * 新增通知 + */ + @ApiOperation("新增通知") + @PreAuthorize("@ss.hasPermi('hotake:sysNotice:add')") + @Log(title = "通知", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody HotakeSysNotice hotakeSysNotice) { + return toAjax(hotakeSysNoticeService.insertHotakeSysNotice(hotakeSysNotice)); + } + + /** + * 修改通知 + */ + @ApiOperation("修改通知") + @PreAuthorize("@ss.hasPermi('hotake:sysNotice:edit')") + @Log(title = "通知", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody HotakeSysNotice hotakeSysNotice) { + return toAjax(hotakeSysNoticeService.updateHotakeSysNotice(hotakeSysNotice)); + } + + /** + * 删除通知 + */ + @ApiOperation("删除通知") + @PreAuthorize("@ss.hasPermi('hotake:sysNotice:remove')") + @Log(title = "通知", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(hotakeSysNoticeService.deleteHotakeSysNoticeByIds(ids)); + } +} diff --git a/vetti-admin/src/main/java/com/vetti/web/controller/hotake/HotakeSysNoticeTypeController.java b/vetti-admin/src/main/java/com/vetti/web/controller/hotake/HotakeSysNoticeTypeController.java deleted file mode 100644 index 43dfcc0..0000000 --- a/vetti-admin/src/main/java/com/vetti/web/controller/hotake/HotakeSysNoticeTypeController.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.vetti.web.controller.hotake; - -import java.util.List; - -import com.vetti.hotake.domain.dto.HotakeSysNoticeTypeDto; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import com.vetti.common.annotation.Log; -import com.vetti.common.core.controller.BaseController; -import com.vetti.common.core.domain.AjaxResult; -import com.vetti.common.enums.BusinessType; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.vetti.hotake.domain.HotakeSysNoticeType; -import com.vetti.hotake.service.IHotakeSysNoticeTypeService; -import com.vetti.common.utils.poi.ExcelUtil; -import com.vetti.common.core.page.TableDataInfo; -import org.springframework.web.multipart.MultipartFile; - -/** - * 通知类型Controller - * - * @author ID - * @date 2025-11-01 - */ -@Api(tags = "通知类型") -@RestController -@RequestMapping("/hotake/sysNoticeType") -public class HotakeSysNoticeTypeController extends BaseController { - @Autowired - private IHotakeSysNoticeTypeService hotakeSysNoticeTypeService; - - /** - * 查询通知类型列表 - */ - @ApiOperation("查询通知类型列表") - @PreAuthorize("@ss.hasPermi('hotake:sysNoticeType:list')") - @GetMapping("/list") - public TableDataInfo list(HotakeSysNoticeType hotakeSysNoticeType) { - startPage(); - List list = hotakeSysNoticeTypeService.selectHotakeSysNoticeTypeList(hotakeSysNoticeType); - return getDataTable(list); - } - - @ApiOperation("查询通知类型列表") - @PreAuthorize("@ss.hasPermi('hotake:sysNoticeType:list')") - @GetMapping("/listall") - public AjaxResult listAll(HotakeSysNoticeType hotakeSysNoticeType) { - return AjaxResult.success(hotakeSysNoticeTypeService.selectHotakeSysNoticeTypeList(hotakeSysNoticeType)); - } - - /** - * 导出通知类型列表 - */ - @ApiOperation("导出通知类型列表") - @PreAuthorize("@ss.hasPermi('hotake:sysNoticeType:export')") - @Log(title = "通知类型", businessType = BusinessType.EXPORT) - @GetMapping("/export") - public AjaxResult export(HotakeSysNoticeType hotakeSysNoticeType) { - List list = hotakeSysNoticeTypeService.selectHotakeSysNoticeTypeList(hotakeSysNoticeType); - ExcelUtil util = new ExcelUtil<>(HotakeSysNoticeTypeDto.class); - return util.exportExcel(list, "通知类型数据"); - } - - /** - * 获取通知类型详细信息 - */ - @ApiOperation("获取通知类型详细信息") - @PreAuthorize("@ss.hasPermi('hotake:sysNoticeType:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) { - return AjaxResult.success(hotakeSysNoticeTypeService.selectHotakeSysNoticeTypeById(id)); - } - - /** - * 新增通知类型 - */ - @ApiOperation("新增通知类型") - @PreAuthorize("@ss.hasPermi('hotake:sysNoticeType:add')") - @Log(title = "通知类型", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestPart(value = "files", required = false) List files, HotakeSysNoticeType hotakeSysNoticeType) { - return toAjax(hotakeSysNoticeTypeService.insertHotakeSysNoticeType(files, hotakeSysNoticeType)); - } - - /** - * 修改通知类型 - */ - @ApiOperation("修改通知类型(不修改图片不需要传files,只要修改一个,所有图片都需要传)") - @PreAuthorize("@ss.hasPermi('hotake:sysNoticeType:edit')") - @Log(title = "通知类型", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestPart(value = "files", required = false) List files, HotakeSysNoticeType hotakeSysNoticeType) { - return toAjax(hotakeSysNoticeTypeService.updateHotakeSysNoticeType(files, hotakeSysNoticeType)); - } - - /** - * 删除通知类型 - */ - @ApiOperation("删除通知类型") - @PreAuthorize("@ss.hasPermi('hotake:sysNoticeType:remove')") - @Log(title = "通知类型", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) { - return toAjax(hotakeSysNoticeTypeService.deleteHotakeSysNoticeTypeByIds(ids)); - } -} diff --git a/vetti-hotake/src/main/java/com/vetti/hotake/domain/HotakeSysNotice.java b/vetti-hotake/src/main/java/com/vetti/hotake/domain/HotakeSysNotice.java new file mode 100644 index 0000000..7a78fb9 --- /dev/null +++ b/vetti-hotake/src/main/java/com/vetti/hotake/domain/HotakeSysNotice.java @@ -0,0 +1,71 @@ +package com.vetti.hotake.domain; + +import lombok.Data; +import lombok.experimental.Accessors; +import io.swagger.annotations.ApiModelProperty; +import com.vetti.common.annotation.Excel; +import com.vetti.common.core.domain.BaseEntity; + +import java.util.List; + +/** + * 通知对象 hotake_sys_notice + * + * @author ID + * @date 2025-11-01 + */ +@Data +@Accessors(chain = true) +public class HotakeSysNotice extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + @ApiModelProperty("主键ID") + private Long id; + + /** 通知类型ID */ + @ApiModelProperty("通知类型ID") + @Excel(name = "通知类型ID") + private Long noticeTypeId;//数据字典获取数据 hotake_sys_notice_type + + /** 投递简历ID */ + @ApiModelProperty("投递简历ID") + @Excel(name = "投递简历ID") + private Long cvId; + + /** 通知标题 */ + @ApiModelProperty("通知标题") + @Excel(name = "通知标题") + private String noticeTitle; + + /** 通知内容 */ + @ApiModelProperty("通知内容") + @Excel(name = "通知内容") + private String noticeContent; + + /** 发送人ID */ + @ApiModelProperty("发送人ID") + @Excel(name = "发送人ID") + private Long sendUserId; + + /** 接收人ID */ + @ApiModelProperty("接收人ID") + @Excel(name = "接收人ID") + private Long receiveUserId; + + /** 查看状态(0未看 1已看) */ + @ApiModelProperty("查看状态(0未看 1已看)") + @Excel(name = "查看状态", readConverterExp = "0=未看,1=已看") + private String isView; + + @ApiModelProperty("图片") + @Excel(name = "图片") + private List imagePath;//文件存储桶名 noticetype-fs + + /** 删除状态(0正常 1删除) */ + @ApiModelProperty("删除状态(0正常 1删除)") + @Excel(name = "删除状态", readConverterExp = "0=正常,1=删除") + private String isDel; + +} diff --git a/vetti-hotake/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeDto.java b/vetti-hotake/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeDto.java new file mode 100644 index 0000000..2a3d1c9 --- /dev/null +++ b/vetti-hotake/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeDto.java @@ -0,0 +1,43 @@ +package com.vetti.hotake.domain.dto; + +import com.vetti.common.annotation.Excel; +import com.vetti.common.utils.bean.BeanUtils; +import com.vetti.hotake.domain.HotakeSysNotice; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author ID + * @date 2025/11/1 16:50 + */ +@Data +public class HotakeSysNoticeDto extends HotakeSysNotice { + + @ApiModelProperty("通知类型名称") + private String noticeTypeName; + + @ApiModelProperty("图片") + private String img; + + @ApiModelProperty("招聘企业的名称") + private Long cvCompanyName; + + @ApiModelProperty("招聘企业的岗位") + private Long cvPosition; + + + public static HotakeSysNoticeDto build(HotakeSysNotice data, Map typeNameMap, String url) { + HotakeSysNoticeDto dto = new HotakeSysNoticeDto(); + BeanUtils.copyBeanProp(dto, data); + if (typeNameMap != null) { + dto.setNoticeTypeName(typeNameMap.get(data.getNoticeTypeId())); + } + dto.setImg(url); + + + return dto; + } +} diff --git a/vetti-hotake/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeViewDto.java b/vetti-hotake/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeViewDto.java new file mode 100644 index 0000000..b9aaee8 --- /dev/null +++ b/vetti-hotake/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeViewDto.java @@ -0,0 +1,22 @@ +package com.vetti.hotake.domain.dto; + +import com.vetti.hotake.domain.HotakeSysNotice; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author ID + * @date 2025/11/1 16:50 + */ +@Data +public class HotakeSysNoticeViewDto { + + @ApiModelProperty("未查看") + private List unreadList; + + @ApiModelProperty("归档") + private List archiveList; + +} diff --git a/vetti-hotake/src/main/java/com/vetti/hotake/mapper/HotakeSysNoticeMapper.java b/vetti-hotake/src/main/java/com/vetti/hotake/mapper/HotakeSysNoticeMapper.java new file mode 100644 index 0000000..03a8655 --- /dev/null +++ b/vetti-hotake/src/main/java/com/vetti/hotake/mapper/HotakeSysNoticeMapper.java @@ -0,0 +1,69 @@ +package com.vetti.hotake.mapper; + +import java.util.List; +import com.vetti.hotake.domain.HotakeSysNotice; + +/** + * 通知Mapper接口 + * + * @author ID + * @date 2025-11-01 + */ +public interface HotakeSysNoticeMapper +{ + /** + * 查询通知 + * + * @param id 通知主键 + * @return 通知 + */ + public HotakeSysNotice selectHotakeSysNoticeById(Long id); + + /** + * 查询通知列表 + * + * @param hotakeSysNotice 通知 + * @return 通知集合 + */ + public List selectHotakeSysNoticeList(HotakeSysNotice hotakeSysNotice); + + /** + * 新增通知 + * + * @param hotakeSysNotice 通知 + * @return 结果 + */ + public int insertHotakeSysNotice(HotakeSysNotice hotakeSysNotice); + + /** + * 修改通知 + * + * @param hotakeSysNotice 通知 + * @return 结果 + */ + public int updateHotakeSysNotice(HotakeSysNotice hotakeSysNotice); + + /** + * 删除通知 + * + * @param id 通知主键 + * @return 结果 + */ + public int deleteHotakeSysNoticeById(Long id); + + /** + * 批量删除通知 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteHotakeSysNoticeByIds(Long[] ids); + /** + * 批量新增通知 + * + * @param hotakeSysNoticeList 通知列表 + * @return 结果 + */ + public int batchInsertHotakeSysNotice(List hotakeSysNoticeList); + +} diff --git a/vetti-hotake/src/main/java/com/vetti/hotake/service/IHotakeSysNoticeService.java b/vetti-hotake/src/main/java/com/vetti/hotake/service/IHotakeSysNoticeService.java new file mode 100644 index 0000000..bc43209 --- /dev/null +++ b/vetti-hotake/src/main/java/com/vetti/hotake/service/IHotakeSysNoticeService.java @@ -0,0 +1,77 @@ +package com.vetti.hotake.service; + +import java.util.List; +import com.vetti.hotake.domain.HotakeSysNotice; +import com.vetti.hotake.domain.dto.HotakeSysNoticeDto; +import com.vetti.hotake.domain.dto.HotakeSysNoticeViewDto; + +/** + * 通知Service接口 + * + * @author ID + * @date 2025-11-01 + */ +public interface IHotakeSysNoticeService +{ + /** + * 查询通知 + * + * @param id 通知主键 + * @return 通知 + */ + public HotakeSysNotice selectHotakeSysNoticeById(Long id); + + /** + * 查询通知列表 + * + * @param hotakeSysNotice 通知 + * @return 通知集合 + */ + public List selectHotakeSysNoticeList(HotakeSysNotice hotakeSysNotice); + + /** + * 新增通知 + * + * @param hotakeSysNotice 通知 + * @return 结果 + */ + public int insertHotakeSysNotice(HotakeSysNotice hotakeSysNotice); + + /** + * 修改通知 + * + * @param hotakeSysNotice 通知 + * @return 结果 + */ + public int updateHotakeSysNotice(HotakeSysNotice hotakeSysNotice); + + /** + * 批量删除通知 + * + * @param ids 需要删除的通知主键集合 + * @return 结果 + */ + public int deleteHotakeSysNoticeByIds(Long[] ids); + + /** + * 删除通知信息 + * + * @param id 通知主键 + * @return 结果 + */ + public int deleteHotakeSysNoticeById(Long id); + + /** + * 批量新增通知 + * + * @param hotakeSysNoticeList 通知列表 + * @return 结果 + */ + public int batchInsertHotakeSysNotice(List hotakeSysNoticeList); + + HotakeSysNoticeViewDto selectHotakeSysNoticeViewList(HotakeSysNotice hotakeSysNotice); + + HotakeSysNoticeDto selectHotakeSysNoticeViewById(Long id); + + int allRead(); +} diff --git a/vetti-hotake/src/main/java/com/vetti/hotake/service/impl/HotakeSysNoticeServiceImpl.java b/vetti-hotake/src/main/java/com/vetti/hotake/service/impl/HotakeSysNoticeServiceImpl.java new file mode 100644 index 0000000..7ab72d2 --- /dev/null +++ b/vetti-hotake/src/main/java/com/vetti/hotake/service/impl/HotakeSysNoticeServiceImpl.java @@ -0,0 +1,202 @@ +package com.vetti.hotake.service.impl; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.vetti.common.core.domain.entity.SysDictData; +import com.vetti.common.core.service.BaseServiceImpl; +import com.vetti.common.enums.FillTypeEnum; +import com.vetti.common.utils.DateUtils; +import com.vetti.hotake.domain.dto.HotakeSysNoticeDto; +import com.vetti.hotake.domain.dto.HotakeSysNoticeViewDto; +import com.vetti.hotake.service.IHotakeSysFileService; +import com.vetti.system.service.ISysDictDataService; +import io.swagger.annotations.ApiModelProperty; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.vetti.hotake.mapper.HotakeSysNoticeMapper; +import com.vetti.hotake.domain.HotakeSysNotice; +import com.vetti.hotake.service.IHotakeSysNoticeService; + +import static com.vetti.common.utils.SecurityUtils.getLoginUser; + +/** + * 通知Service业务层处理 + * + * @author ID + * @date 2025-11-01 + */ +@SuppressWarnings("all") +@Service +public class HotakeSysNoticeServiceImpl extends BaseServiceImpl implements IHotakeSysNoticeService { + @Autowired + private HotakeSysNoticeMapper hotakeSysNoticeMapper; + @Autowired + IHotakeSysFileService hotakeSysFileService; + @Autowired + ISysDictDataService sysDictDataService; + + private final String DICT_DATA_TYPE_KEY = "hotake_sys_notice_type"; + + /** + * 查询通知 + * + * @param id 通知主键 + * @return 通知 + */ + @Transactional(readOnly = true) + @Override + public HotakeSysNotice selectHotakeSysNoticeById(Long id) { + return hotakeSysNoticeMapper.selectHotakeSysNoticeById(id); + } + + /** + * 查询通知列表 + * + * @param hotakeSysNotice 通知 + * @return 通知 + */ + @Transactional(readOnly = true) + @Override + public List selectHotakeSysNoticeList(HotakeSysNotice hotakeSysNotice) { + return hotakeSysNoticeMapper.selectHotakeSysNoticeList(hotakeSysNotice); + } + + /** + * 新增通知 + * + * @param hotakeSysNotice 通知 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int insertHotakeSysNotice(HotakeSysNotice hotakeSysNotice) { + fill(FillTypeEnum.INSERT.getCode(), hotakeSysNotice); + return hotakeSysNoticeMapper.insertHotakeSysNotice(hotakeSysNotice); + } + + /** + * 修改通知 + * + * @param hotakeSysNotice 通知 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int updateHotakeSysNotice(HotakeSysNotice hotakeSysNotice) { + fill(FillTypeEnum.UPDATE.getCode(), hotakeSysNotice); + return hotakeSysNoticeMapper.updateHotakeSysNotice(hotakeSysNotice); + } + + /** + * 批量删除通知 + * + * @param ids 需要删除的通知主键 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int deleteHotakeSysNoticeByIds(Long[] ids) { + return hotakeSysNoticeMapper.deleteHotakeSysNoticeByIds(ids); + } + + /** + * 删除通知信息 + * + * @param id 通知主键 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int deleteHotakeSysNoticeById(Long id) { + return hotakeSysNoticeMapper.deleteHotakeSysNoticeById(id); + } + + /** + * 批量新增通知 + * + * @param hotakeSysNoticeList 通知列表 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int batchInsertHotakeSysNotice(List hotakeSysNoticeList) { + return hotakeSysNoticeMapper.batchInsertHotakeSysNotice(hotakeSysNoticeList); + } + + @Override + public HotakeSysNoticeViewDto selectHotakeSysNoticeViewList(HotakeSysNotice hotakeSysNotice) { + HotakeSysNotice query = new HotakeSysNoticeDto(); + query.setIsDel("0"); + query.setReceiveUserId(getLoginUser().getUserId()); + List list = hotakeSysNoticeMapper.selectHotakeSysNoticeList(query); + if (CollectionUtils.isEmpty(list)) { + return new HotakeSysNoticeViewDto(); + } + HotakeSysNoticeViewDto data = new HotakeSysNoticeViewDto(); + List unreadList = new ArrayList<>(); + List archiveList = new ArrayList<>(); + Map typeNameMap = typeName(); + list.forEach(e -> { + if ("0".equals(e.getIsView())) { + unreadList.add(HotakeSysNoticeDto.build(e, typeNameMap, url(e))); + } else if ("1".equals(e.getIsView())) { + archiveList.add(HotakeSysNoticeDto.build(e, typeNameMap, url(e))); + } + }); + data.setUnreadList(unreadList); + data.setArchiveList(archiveList); + return data; + } + + @Override + public HotakeSysNoticeDto selectHotakeSysNoticeViewById(Long id) { + HotakeSysNotice data = hotakeSysNoticeMapper.selectHotakeSysNoticeById(id); + data.setIsView("1"); + fill(FillTypeEnum.UPDATE.getCode(), data); + hotakeSysNoticeMapper.updateHotakeSysNotice(data); + return HotakeSysNoticeDto.build(data, typeName(), url(data)); + } + + @Override + public int allRead() { + HotakeSysNotice query = new HotakeSysNoticeDto(); + query.setIsDel("0"); + query.setReceiveUserId(getLoginUser().getUserId()); + List list = hotakeSysNoticeMapper.selectHotakeSysNoticeList(query); + if (CollectionUtils.isNotEmpty(list)) { + list.forEach(e -> { + e.setIsView("1"); + fill(FillTypeEnum.UPDATE.getCode(), e); + hotakeSysNoticeMapper.updateHotakeSysNotice(e); + }); + } + return 1; + } + + private String url(HotakeSysNotice d) { + if (CollectionUtils.isNotEmpty(d.getImagePath())) { + return hotakeSysFileService.url(Long.parseLong(d.getImagePath().get(0))); + } + return ""; + } + + + private Map typeName() { + SysDictData query = new SysDictData(); + query.setDictType(DICT_DATA_TYPE_KEY); + List list = sysDictDataService.selectDictDataList(query); + if (CollectionUtils.isEmpty(list)) { + return null; + } + Map map = new HashMap<>(); + list.forEach(e -> map.put(e.getDictCode(), e.getDictLabel())); + return map; + } + +} diff --git a/vetti-hotake/src/main/resources/mapper/hotake/HotakeSysNoticeMapper.xml b/vetti-hotake/src/main/resources/mapper/hotake/HotakeSysNoticeMapper.xml new file mode 100644 index 0000000..4b0fc81 --- /dev/null +++ b/vetti-hotake/src/main/resources/mapper/hotake/HotakeSysNoticeMapper.xml @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + select id, + notice_type_id, + cv_id, + notice_title, + notice_content, + send_user_id, + receive_user_id, + is_view, + is_del, + create_by, + create_time, + update_by, + update_time, + remark + from hotake_sys_notice + + + + + + + + insert into hotake_sys_notice + + notice_type_id, + cv_id, + notice_title, + notice_content, + send_user_id, + receive_user_id, + is_view, + image_path, + is_del, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{noticeTypeId}, + #{cvId}, + #{noticeTitle}, + #{noticeContent}, + #{sendUserId}, + #{receiveUserId}, + #{isView}, + #{imagePath, typeHandler=com.vetti.common.handle.JsonTypeHandler}, + #{isDel}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + + update hotake_sys_notice + + notice_type_id = #{noticeTypeId}, + cv_id = #{cvId}, + notice_title = #{noticeTitle}, + notice_content = #{noticeContent}, + send_user_id = #{sendUserId}, + receive_user_id = #{receiveUserId}, + is_view = #{isView}, + image_path = + #{imagePath, typeHandler=com.vetti.common.handle.JsonTypeHandler}, + + is_del = #{isDel}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete + from hotake_sys_notice + where id = #{id} + + + + delete from hotake_sys_notice where id in + + #{id} + + + + + insert into hotake_sys_notice( id, notice_type_id, cv_id, notice_title, notice_content, send_user_id, + receive_user_id, is_view,image_path, is_del, create_by, create_time, update_by, update_time, remark,) values + + ( #{item.id}, #{item.noticeTypeId}, #{item.cvId}, #{item.noticeTitle}, #{item.noticeContent}, + #{item.sendUserId}, #{item.receiveUserId}, + #{item.isView},#{item.imagePath, typeHandler=com.vetti.common.handle.JsonTypeHandler}, #{item.isDel}, + #{item.createBy}, + #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark},) + + + \ No newline at end of file diff --git a/vetti-hotakes/pom.xml b/vetti-hotakes/pom.xml index 1936a8c..8341ad8 100644 --- a/vetti-hotakes/pom.xml +++ b/vetti-hotakes/pom.xml @@ -31,6 +31,10 @@ com.vetti vetti-common + + com.vetti + vetti-system + diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeSysNotice.java b/vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeSysNotice.java new file mode 100644 index 0000000..7a78fb9 --- /dev/null +++ b/vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeSysNotice.java @@ -0,0 +1,71 @@ +package com.vetti.hotake.domain; + +import lombok.Data; +import lombok.experimental.Accessors; +import io.swagger.annotations.ApiModelProperty; +import com.vetti.common.annotation.Excel; +import com.vetti.common.core.domain.BaseEntity; + +import java.util.List; + +/** + * 通知对象 hotake_sys_notice + * + * @author ID + * @date 2025-11-01 + */ +@Data +@Accessors(chain = true) +public class HotakeSysNotice extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + @ApiModelProperty("主键ID") + private Long id; + + /** 通知类型ID */ + @ApiModelProperty("通知类型ID") + @Excel(name = "通知类型ID") + private Long noticeTypeId;//数据字典获取数据 hotake_sys_notice_type + + /** 投递简历ID */ + @ApiModelProperty("投递简历ID") + @Excel(name = "投递简历ID") + private Long cvId; + + /** 通知标题 */ + @ApiModelProperty("通知标题") + @Excel(name = "通知标题") + private String noticeTitle; + + /** 通知内容 */ + @ApiModelProperty("通知内容") + @Excel(name = "通知内容") + private String noticeContent; + + /** 发送人ID */ + @ApiModelProperty("发送人ID") + @Excel(name = "发送人ID") + private Long sendUserId; + + /** 接收人ID */ + @ApiModelProperty("接收人ID") + @Excel(name = "接收人ID") + private Long receiveUserId; + + /** 查看状态(0未看 1已看) */ + @ApiModelProperty("查看状态(0未看 1已看)") + @Excel(name = "查看状态", readConverterExp = "0=未看,1=已看") + private String isView; + + @ApiModelProperty("图片") + @Excel(name = "图片") + private List imagePath;//文件存储桶名 noticetype-fs + + /** 删除状态(0正常 1删除) */ + @ApiModelProperty("删除状态(0正常 1删除)") + @Excel(name = "删除状态", readConverterExp = "0=正常,1=删除") + private String isDel; + +} diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeSysNoticeType.java b/vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeSysNoticeType.java index 0dcf5f7..f594919 100644 --- a/vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeSysNoticeType.java +++ b/vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeSysNoticeType.java @@ -1,42 +1,42 @@ -package com.vetti.hotake.domain; - -import lombok.Data; -import lombok.experimental.Accessors; -import io.swagger.annotations.ApiModelProperty; -import com.vetti.common.annotation.Excel; -import com.vetti.common.core.domain.BaseEntity; - -import java.util.List; - -/** - * 通知类型对象 hotake_sys_notice_type - * - * @author ID - * @date 2025-11-01 - */ -@Data -@Accessors(chain = true) -public class HotakeSysNoticeType extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 主键ID */ - @ApiModelProperty("主键ID") - private Long id; - - /** 类型名称 */ - @ApiModelProperty("类型名称") - @Excel(name = "类型名称") - private String typeName; - - /** 图片 */ - @ApiModelProperty("图片") - @Excel(name = "图片") - private List imagePath; - - /** 删除状态(0正常 1删除) */ - @ApiModelProperty("删除状态(0正常 1删除)") - @Excel(name = "删除状态", readConverterExp = "0=正常,1=删除") - private String isDel; - -} +//package com.vetti.hotake.domain; +// +//import lombok.Data; +//import lombok.experimental.Accessors; +//import io.swagger.annotations.ApiModelProperty; +//import com.vetti.common.annotation.Excel; +//import com.vetti.common.core.domain.BaseEntity; +// +//import java.util.List; +// +///** +// * 通知类型对象 hotake_sys_notice_type +// * +// * @author ID +// * @date 2025-11-01 +// */ +//@Data +//@Accessors(chain = true) +//public class HotakeSysNoticeType extends BaseEntity +//{ +// private static final long serialVersionUID = 1L; +// +// /** 主键ID */ +// @ApiModelProperty("主键ID") +// private Long id; +// +// /** 类型名称 */ +// @ApiModelProperty("类型名称") +// @Excel(name = "类型名称") +// private String typeName; +// +// /** 图片 */ +// @ApiModelProperty("图片") +// @Excel(name = "图片") +// private List imagePath; +// +// /** 删除状态(0正常 1删除) */ +// @ApiModelProperty("删除状态(0正常 1删除)") +// @Excel(name = "删除状态", readConverterExp = "0=正常,1=删除") +// private String isDel; +// +//} diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeDto.java b/vetti-hotakes/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeDto.java new file mode 100644 index 0000000..2a3d1c9 --- /dev/null +++ b/vetti-hotakes/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeDto.java @@ -0,0 +1,43 @@ +package com.vetti.hotake.domain.dto; + +import com.vetti.common.annotation.Excel; +import com.vetti.common.utils.bean.BeanUtils; +import com.vetti.hotake.domain.HotakeSysNotice; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author ID + * @date 2025/11/1 16:50 + */ +@Data +public class HotakeSysNoticeDto extends HotakeSysNotice { + + @ApiModelProperty("通知类型名称") + private String noticeTypeName; + + @ApiModelProperty("图片") + private String img; + + @ApiModelProperty("招聘企业的名称") + private Long cvCompanyName; + + @ApiModelProperty("招聘企业的岗位") + private Long cvPosition; + + + public static HotakeSysNoticeDto build(HotakeSysNotice data, Map typeNameMap, String url) { + HotakeSysNoticeDto dto = new HotakeSysNoticeDto(); + BeanUtils.copyBeanProp(dto, data); + if (typeNameMap != null) { + dto.setNoticeTypeName(typeNameMap.get(data.getNoticeTypeId())); + } + dto.setImg(url); + + + return dto; + } +} diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeTypeDto.java b/vetti-hotakes/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeTypeDto.java index 66af0d2..efb3aa9 100644 --- a/vetti-hotakes/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeTypeDto.java +++ b/vetti-hotakes/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeTypeDto.java @@ -1,26 +1,26 @@ -package com.vetti.hotake.domain.dto; - -import com.vetti.common.utils.bean.BeanUtils; -import com.vetti.hotake.domain.HotakeSysNoticeType; -import lombok.Data; - -import java.util.List; - -/** - * @author ID - * @date 2025/11/1 11:54 - */ -@Data -public class HotakeSysNoticeTypeDto extends HotakeSysNoticeType { - - private List imgs; - - - public static HotakeSysNoticeTypeDto build(List urls, HotakeSysNoticeType data) { - HotakeSysNoticeTypeDto dto = new HotakeSysNoticeTypeDto(); - BeanUtils.copyBeanProp(dto, data); - dto.setImgs(urls); - return dto; - } - -} +//package com.vetti.hotake.domain.dto; +// +//import com.vetti.common.utils.bean.BeanUtils; +//import com.vetti.hotake.domain.HotakeSysNoticeType; +//import lombok.Data; +// +//import java.util.List; +// +///** +// * @author ID +// * @date 2025/11/1 11:54 +// */ +//@Data +//public class HotakeSysNoticeTypeDto extends HotakeSysNoticeType { +// +// private List imgs; +// +// +// public static HotakeSysNoticeTypeDto build(List urls, HotakeSysNoticeType data) { +// HotakeSysNoticeTypeDto dto = new HotakeSysNoticeTypeDto(); +// BeanUtils.copyBeanProp(dto, data); +// dto.setImgs(urls); +// return dto; +// } +// +//} diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeViewDto.java b/vetti-hotakes/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeViewDto.java new file mode 100644 index 0000000..b9aaee8 --- /dev/null +++ b/vetti-hotakes/src/main/java/com/vetti/hotake/domain/dto/HotakeSysNoticeViewDto.java @@ -0,0 +1,22 @@ +package com.vetti.hotake.domain.dto; + +import com.vetti.hotake.domain.HotakeSysNotice; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author ID + * @date 2025/11/1 16:50 + */ +@Data +public class HotakeSysNoticeViewDto { + + @ApiModelProperty("未查看") + private List unreadList; + + @ApiModelProperty("归档") + private List archiveList; + +} diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/mapper/HotakeSysNoticeMapper.java b/vetti-hotakes/src/main/java/com/vetti/hotake/mapper/HotakeSysNoticeMapper.java new file mode 100644 index 0000000..03a8655 --- /dev/null +++ b/vetti-hotakes/src/main/java/com/vetti/hotake/mapper/HotakeSysNoticeMapper.java @@ -0,0 +1,69 @@ +package com.vetti.hotake.mapper; + +import java.util.List; +import com.vetti.hotake.domain.HotakeSysNotice; + +/** + * 通知Mapper接口 + * + * @author ID + * @date 2025-11-01 + */ +public interface HotakeSysNoticeMapper +{ + /** + * 查询通知 + * + * @param id 通知主键 + * @return 通知 + */ + public HotakeSysNotice selectHotakeSysNoticeById(Long id); + + /** + * 查询通知列表 + * + * @param hotakeSysNotice 通知 + * @return 通知集合 + */ + public List selectHotakeSysNoticeList(HotakeSysNotice hotakeSysNotice); + + /** + * 新增通知 + * + * @param hotakeSysNotice 通知 + * @return 结果 + */ + public int insertHotakeSysNotice(HotakeSysNotice hotakeSysNotice); + + /** + * 修改通知 + * + * @param hotakeSysNotice 通知 + * @return 结果 + */ + public int updateHotakeSysNotice(HotakeSysNotice hotakeSysNotice); + + /** + * 删除通知 + * + * @param id 通知主键 + * @return 结果 + */ + public int deleteHotakeSysNoticeById(Long id); + + /** + * 批量删除通知 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteHotakeSysNoticeByIds(Long[] ids); + /** + * 批量新增通知 + * + * @param hotakeSysNoticeList 通知列表 + * @return 结果 + */ + public int batchInsertHotakeSysNotice(List hotakeSysNoticeList); + +} diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/mapper/HotakeSysNoticeTypeMapper.java b/vetti-hotakes/src/main/java/com/vetti/hotake/mapper/HotakeSysNoticeTypeMapper.java index c1fd802..c5ae29e 100644 --- a/vetti-hotakes/src/main/java/com/vetti/hotake/mapper/HotakeSysNoticeTypeMapper.java +++ b/vetti-hotakes/src/main/java/com/vetti/hotake/mapper/HotakeSysNoticeTypeMapper.java @@ -1,69 +1,69 @@ -package com.vetti.hotake.mapper; - -import java.util.List; -import com.vetti.hotake.domain.HotakeSysNoticeType; - -/** - * 通知类型Mapper接口 - * - * @author ID - * @date 2025-11-01 - */ -public interface HotakeSysNoticeTypeMapper -{ - /** - * 查询通知类型 - * - * @param id 通知类型主键 - * @return 通知类型 - */ - public HotakeSysNoticeType selectHotakeSysNoticeTypeById(Long id); - - /** - * 查询通知类型列表 - * - * @param hotakeSysNoticeType 通知类型 - * @return 通知类型集合 - */ - public List selectHotakeSysNoticeTypeList(HotakeSysNoticeType hotakeSysNoticeType); - - /** - * 新增通知类型 - * - * @param hotakeSysNoticeType 通知类型 - * @return 结果 - */ - public int insertHotakeSysNoticeType(HotakeSysNoticeType hotakeSysNoticeType); - - /** - * 修改通知类型 - * - * @param hotakeSysNoticeType 通知类型 - * @return 结果 - */ - public int updateHotakeSysNoticeType(HotakeSysNoticeType hotakeSysNoticeType); - - /** - * 删除通知类型 - * - * @param id 通知类型主键 - * @return 结果 - */ - public int deleteHotakeSysNoticeTypeById(Long id); - - /** - * 批量删除通知类型 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - public int deleteHotakeSysNoticeTypeByIds(Long[] ids); - /** - * 批量新增通知类型 - * - * @param hotakeSysNoticeTypeList 通知类型列表 - * @return 结果 - */ - public int batchInsertHotakeSysNoticeType(List hotakeSysNoticeTypeList); - -} +//package com.vetti.hotake.mapper; +// +//import java.util.List; +//import com.vetti.hotake.domain.HotakeSysNoticeType; +// +///** +// * 通知类型Mapper接口 +// * +// * @author ID +// * @date 2025-11-01 +// */ +//public interface HotakeSysNoticeTypeMapper +//{ +// /** +// * 查询通知类型 +// * +// * @param id 通知类型主键 +// * @return 通知类型 +// */ +// public HotakeSysNoticeType selectHotakeSysNoticeTypeById(Long id); +// +// /** +// * 查询通知类型列表 +// * +// * @param hotakeSysNoticeType 通知类型 +// * @return 通知类型集合 +// */ +// public List selectHotakeSysNoticeTypeList(HotakeSysNoticeType hotakeSysNoticeType); +// +// /** +// * 新增通知类型 +// * +// * @param hotakeSysNoticeType 通知类型 +// * @return 结果 +// */ +// public int insertHotakeSysNoticeType(HotakeSysNoticeType hotakeSysNoticeType); +// +// /** +// * 修改通知类型 +// * +// * @param hotakeSysNoticeType 通知类型 +// * @return 结果 +// */ +// public int updateHotakeSysNoticeType(HotakeSysNoticeType hotakeSysNoticeType); +// +// /** +// * 删除通知类型 +// * +// * @param id 通知类型主键 +// * @return 结果 +// */ +// public int deleteHotakeSysNoticeTypeById(Long id); +// +// /** +// * 批量删除通知类型 +// * +// * @param ids 需要删除的数据主键集合 +// * @return 结果 +// */ +// public int deleteHotakeSysNoticeTypeByIds(Long[] ids); +// /** +// * 批量新增通知类型 +// * +// * @param hotakeSysNoticeTypeList 通知类型列表 +// * @return 结果 +// */ +// public int batchInsertHotakeSysNoticeType(List hotakeSysNoticeTypeList); +// +//} diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/service/IHotakeSysNoticeService.java b/vetti-hotakes/src/main/java/com/vetti/hotake/service/IHotakeSysNoticeService.java new file mode 100644 index 0000000..bc43209 --- /dev/null +++ b/vetti-hotakes/src/main/java/com/vetti/hotake/service/IHotakeSysNoticeService.java @@ -0,0 +1,77 @@ +package com.vetti.hotake.service; + +import java.util.List; +import com.vetti.hotake.domain.HotakeSysNotice; +import com.vetti.hotake.domain.dto.HotakeSysNoticeDto; +import com.vetti.hotake.domain.dto.HotakeSysNoticeViewDto; + +/** + * 通知Service接口 + * + * @author ID + * @date 2025-11-01 + */ +public interface IHotakeSysNoticeService +{ + /** + * 查询通知 + * + * @param id 通知主键 + * @return 通知 + */ + public HotakeSysNotice selectHotakeSysNoticeById(Long id); + + /** + * 查询通知列表 + * + * @param hotakeSysNotice 通知 + * @return 通知集合 + */ + public List selectHotakeSysNoticeList(HotakeSysNotice hotakeSysNotice); + + /** + * 新增通知 + * + * @param hotakeSysNotice 通知 + * @return 结果 + */ + public int insertHotakeSysNotice(HotakeSysNotice hotakeSysNotice); + + /** + * 修改通知 + * + * @param hotakeSysNotice 通知 + * @return 结果 + */ + public int updateHotakeSysNotice(HotakeSysNotice hotakeSysNotice); + + /** + * 批量删除通知 + * + * @param ids 需要删除的通知主键集合 + * @return 结果 + */ + public int deleteHotakeSysNoticeByIds(Long[] ids); + + /** + * 删除通知信息 + * + * @param id 通知主键 + * @return 结果 + */ + public int deleteHotakeSysNoticeById(Long id); + + /** + * 批量新增通知 + * + * @param hotakeSysNoticeList 通知列表 + * @return 结果 + */ + public int batchInsertHotakeSysNotice(List hotakeSysNoticeList); + + HotakeSysNoticeViewDto selectHotakeSysNoticeViewList(HotakeSysNotice hotakeSysNotice); + + HotakeSysNoticeDto selectHotakeSysNoticeViewById(Long id); + + int allRead(); +} diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/service/IHotakeSysNoticeTypeService.java b/vetti-hotakes/src/main/java/com/vetti/hotake/service/IHotakeSysNoticeTypeService.java deleted file mode 100644 index fa91dd3..0000000 --- a/vetti-hotakes/src/main/java/com/vetti/hotake/service/IHotakeSysNoticeTypeService.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.vetti.hotake.service; - -import java.util.List; - -import com.vetti.hotake.domain.HotakeSysNoticeType; -import com.vetti.hotake.domain.dto.HotakeSysNoticeTypeDto; -import org.springframework.web.multipart.MultipartFile; - -/** - * 通知类型Service接口 - * - * @author ID - * @date 2025-11-01 - */ -public interface IHotakeSysNoticeTypeService { - /** - * 查询通知类型 - * - * @param id 通知类型主键 - * @return 通知类型 - */ - public HotakeSysNoticeTypeDto selectHotakeSysNoticeTypeById(Long id); - - /** - * 查询通知类型列表 - * - * @param hotakeSysNoticeType 通知类型 - * @return 通知类型集合 - */ - public List selectHotakeSysNoticeTypeList(HotakeSysNoticeType hotakeSysNoticeType); - - /** - * 新增通知类型 - * - * @param hotakeSysNoticeType 通知类型 - * @return 结果 - */ - public int insertHotakeSysNoticeType(List files, HotakeSysNoticeType hotakeSysNoticeType); - - /** - * 修改通知类型 - * - * @param hotakeSysNoticeType 通知类型 - * @return 结果 - */ - public int updateHotakeSysNoticeType(List files,HotakeSysNoticeType hotakeSysNoticeType); - - /** - * 批量删除通知类型 - * - * @param ids 需要删除的通知类型主键集合 - * @return 结果 - */ - public int deleteHotakeSysNoticeTypeByIds(Long[] ids); - - /** - * 删除通知类型信息 - * - * @param id 通知类型主键 - * @return 结果 - */ - public int deleteHotakeSysNoticeTypeById(Long id); - - /** - * 批量新增通知类型 - * - * @param hotakeSysNoticeTypeList 通知类型列表 - * @return 结果 - */ - public int batchInsertHotakeSysNoticeType(List hotakeSysNoticeTypeList); - -} diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/service/impl/HotakeSysNoticeServiceImpl.java b/vetti-hotakes/src/main/java/com/vetti/hotake/service/impl/HotakeSysNoticeServiceImpl.java new file mode 100644 index 0000000..7ab72d2 --- /dev/null +++ b/vetti-hotakes/src/main/java/com/vetti/hotake/service/impl/HotakeSysNoticeServiceImpl.java @@ -0,0 +1,202 @@ +package com.vetti.hotake.service.impl; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.vetti.common.core.domain.entity.SysDictData; +import com.vetti.common.core.service.BaseServiceImpl; +import com.vetti.common.enums.FillTypeEnum; +import com.vetti.common.utils.DateUtils; +import com.vetti.hotake.domain.dto.HotakeSysNoticeDto; +import com.vetti.hotake.domain.dto.HotakeSysNoticeViewDto; +import com.vetti.hotake.service.IHotakeSysFileService; +import com.vetti.system.service.ISysDictDataService; +import io.swagger.annotations.ApiModelProperty; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.vetti.hotake.mapper.HotakeSysNoticeMapper; +import com.vetti.hotake.domain.HotakeSysNotice; +import com.vetti.hotake.service.IHotakeSysNoticeService; + +import static com.vetti.common.utils.SecurityUtils.getLoginUser; + +/** + * 通知Service业务层处理 + * + * @author ID + * @date 2025-11-01 + */ +@SuppressWarnings("all") +@Service +public class HotakeSysNoticeServiceImpl extends BaseServiceImpl implements IHotakeSysNoticeService { + @Autowired + private HotakeSysNoticeMapper hotakeSysNoticeMapper; + @Autowired + IHotakeSysFileService hotakeSysFileService; + @Autowired + ISysDictDataService sysDictDataService; + + private final String DICT_DATA_TYPE_KEY = "hotake_sys_notice_type"; + + /** + * 查询通知 + * + * @param id 通知主键 + * @return 通知 + */ + @Transactional(readOnly = true) + @Override + public HotakeSysNotice selectHotakeSysNoticeById(Long id) { + return hotakeSysNoticeMapper.selectHotakeSysNoticeById(id); + } + + /** + * 查询通知列表 + * + * @param hotakeSysNotice 通知 + * @return 通知 + */ + @Transactional(readOnly = true) + @Override + public List selectHotakeSysNoticeList(HotakeSysNotice hotakeSysNotice) { + return hotakeSysNoticeMapper.selectHotakeSysNoticeList(hotakeSysNotice); + } + + /** + * 新增通知 + * + * @param hotakeSysNotice 通知 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int insertHotakeSysNotice(HotakeSysNotice hotakeSysNotice) { + fill(FillTypeEnum.INSERT.getCode(), hotakeSysNotice); + return hotakeSysNoticeMapper.insertHotakeSysNotice(hotakeSysNotice); + } + + /** + * 修改通知 + * + * @param hotakeSysNotice 通知 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int updateHotakeSysNotice(HotakeSysNotice hotakeSysNotice) { + fill(FillTypeEnum.UPDATE.getCode(), hotakeSysNotice); + return hotakeSysNoticeMapper.updateHotakeSysNotice(hotakeSysNotice); + } + + /** + * 批量删除通知 + * + * @param ids 需要删除的通知主键 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int deleteHotakeSysNoticeByIds(Long[] ids) { + return hotakeSysNoticeMapper.deleteHotakeSysNoticeByIds(ids); + } + + /** + * 删除通知信息 + * + * @param id 通知主键 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int deleteHotakeSysNoticeById(Long id) { + return hotakeSysNoticeMapper.deleteHotakeSysNoticeById(id); + } + + /** + * 批量新增通知 + * + * @param hotakeSysNoticeList 通知列表 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int batchInsertHotakeSysNotice(List hotakeSysNoticeList) { + return hotakeSysNoticeMapper.batchInsertHotakeSysNotice(hotakeSysNoticeList); + } + + @Override + public HotakeSysNoticeViewDto selectHotakeSysNoticeViewList(HotakeSysNotice hotakeSysNotice) { + HotakeSysNotice query = new HotakeSysNoticeDto(); + query.setIsDel("0"); + query.setReceiveUserId(getLoginUser().getUserId()); + List list = hotakeSysNoticeMapper.selectHotakeSysNoticeList(query); + if (CollectionUtils.isEmpty(list)) { + return new HotakeSysNoticeViewDto(); + } + HotakeSysNoticeViewDto data = new HotakeSysNoticeViewDto(); + List unreadList = new ArrayList<>(); + List archiveList = new ArrayList<>(); + Map typeNameMap = typeName(); + list.forEach(e -> { + if ("0".equals(e.getIsView())) { + unreadList.add(HotakeSysNoticeDto.build(e, typeNameMap, url(e))); + } else if ("1".equals(e.getIsView())) { + archiveList.add(HotakeSysNoticeDto.build(e, typeNameMap, url(e))); + } + }); + data.setUnreadList(unreadList); + data.setArchiveList(archiveList); + return data; + } + + @Override + public HotakeSysNoticeDto selectHotakeSysNoticeViewById(Long id) { + HotakeSysNotice data = hotakeSysNoticeMapper.selectHotakeSysNoticeById(id); + data.setIsView("1"); + fill(FillTypeEnum.UPDATE.getCode(), data); + hotakeSysNoticeMapper.updateHotakeSysNotice(data); + return HotakeSysNoticeDto.build(data, typeName(), url(data)); + } + + @Override + public int allRead() { + HotakeSysNotice query = new HotakeSysNoticeDto(); + query.setIsDel("0"); + query.setReceiveUserId(getLoginUser().getUserId()); + List list = hotakeSysNoticeMapper.selectHotakeSysNoticeList(query); + if (CollectionUtils.isNotEmpty(list)) { + list.forEach(e -> { + e.setIsView("1"); + fill(FillTypeEnum.UPDATE.getCode(), e); + hotakeSysNoticeMapper.updateHotakeSysNotice(e); + }); + } + return 1; + } + + private String url(HotakeSysNotice d) { + if (CollectionUtils.isNotEmpty(d.getImagePath())) { + return hotakeSysFileService.url(Long.parseLong(d.getImagePath().get(0))); + } + return ""; + } + + + private Map typeName() { + SysDictData query = new SysDictData(); + query.setDictType(DICT_DATA_TYPE_KEY); + List list = sysDictDataService.selectDictDataList(query); + if (CollectionUtils.isEmpty(list)) { + return null; + } + Map map = new HashMap<>(); + list.forEach(e -> map.put(e.getDictCode(), e.getDictLabel())); + return map; + } + +} diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/service/impl/HotakeSysNoticeTypeServiceImpl.java b/vetti-hotakes/src/main/java/com/vetti/hotake/service/impl/HotakeSysNoticeTypeServiceImpl.java deleted file mode 100644 index 0164b10..0000000 --- a/vetti-hotakes/src/main/java/com/vetti/hotake/service/impl/HotakeSysNoticeTypeServiceImpl.java +++ /dev/null @@ -1,192 +0,0 @@ -package com.vetti.hotake.service.impl; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import cn.hutool.core.collection.CollectionUtil; -import com.vetti.common.constant.SysDictDataConstants; -import com.vetti.common.core.service.BaseServiceImpl; -import com.vetti.common.enums.FillTypeEnum; -import com.vetti.common.utils.DateUtils; -import com.vetti.hotake.domain.HotakeSysFile; -import com.vetti.hotake.domain.dto.HotakeSysNoticeTypeDto; -import com.vetti.hotake.service.IHotakeSysFileService; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import com.vetti.hotake.mapper.HotakeSysNoticeTypeMapper; -import com.vetti.hotake.domain.HotakeSysNoticeType; -import com.vetti.hotake.service.IHotakeSysNoticeTypeService; -import org.springframework.web.multipart.MultipartFile; - -import javax.annotation.Resource; - -/** - * 通知类型Service业务层处理 - * - * @author ID - * @date 2025-11-01 - */ -@SuppressWarnings("all") -@Service -public class HotakeSysNoticeTypeServiceImpl extends BaseServiceImpl implements IHotakeSysNoticeTypeService { - @Autowired - private HotakeSysNoticeTypeMapper hotakeSysNoticeTypeMapper; - @Autowired - IHotakeSysFileService hotakeSysFileService; - - private final String MINIO_BUCKET_NAME = "noticetype-fs"; - - /** - * 查询通知类型 - * - * @param id 通知类型主键 - * @return 通知类型 - */ - @Transactional(readOnly = true) - @Override - public HotakeSysNoticeTypeDto selectHotakeSysNoticeTypeById(Long id) { - HotakeSysNoticeType data = hotakeSysNoticeTypeMapper.selectHotakeSysNoticeTypeById(id); - List urls = new ArrayList<>(); - if (data != null) { - if (CollectionUtil.isNotEmpty(data.getImagePath())) { - Map m = hotakeSysFileService.url( - data.getImagePath().stream().map(s -> Long.parseLong(s)).toArray(Long[]::new) - ); - if (CollectionUtil.isNotEmpty(m)) { - m.forEach((k, v) -> urls.add(v)); - } - } - } - return HotakeSysNoticeTypeDto.build(urls, data); - } - - /** - * 查询通知类型列表 - * - * @param hotakeSysNoticeType 通知类型 - * @return 通知类型 - */ - @Transactional(readOnly = true) - @Override - public List selectHotakeSysNoticeTypeList(HotakeSysNoticeType hotakeSysNoticeType) { - List reList = new ArrayList<>(); - hotakeSysNoticeType.setIsDel("0"); - List list = hotakeSysNoticeTypeMapper.selectHotakeSysNoticeTypeList(hotakeSysNoticeType); - if (CollectionUtil.isNotEmpty(list)) { - list.forEach(e -> { - List urls = new ArrayList<>(); - if (CollectionUtil.isNotEmpty(e.getImagePath())) { - Map m = hotakeSysFileService.url( - e.getImagePath().stream().map(s -> Long.parseLong(s)).toArray(Long[]::new) - ); - if (CollectionUtil.isNotEmpty(m)) { - m.forEach((k, v) -> urls.add(v)); - } - } - reList.add(HotakeSysNoticeTypeDto.build(urls, e)); - }); - } - return reList; - } - - /** - * 新增通知类型 - * - * @param hotakeSysNoticeType 通知类型 - * @return 结果 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public int insertHotakeSysNoticeType(List files, HotakeSysNoticeType hotakeSysNoticeType) { - fill(FillTypeEnum.INSERT.getCode(), hotakeSysNoticeType); - if (CollectionUtil.isNotEmpty(files)) { - List l = new ArrayList(); - for (MultipartFile file : files) { - HotakeSysFile sf = uploadFile(file); - l.add(sf.getId() + ""); - } - hotakeSysNoticeType.setImagePath(l); - } - return hotakeSysNoticeTypeMapper.insertHotakeSysNoticeType(hotakeSysNoticeType); - } - - private HotakeSysFile uploadFile(MultipartFile file) { - HotakeSysFile commandSysFile = new HotakeSysFile(); - commandSysFile.setCode(System.currentTimeMillis() + ""); - commandSysFile.setMinioBucketName(MINIO_BUCKET_NAME); - return hotakeSysFileService.insertHotakeSysFile(file, commandSysFile); - } - - /** - * 修改通知类型 - * - * @param hotakeSysNoticeType 通知类型 - * @return 结果 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public int updateHotakeSysNoticeType(List files, HotakeSysNoticeType hotakeSysNoticeType) { - fill(FillTypeEnum.UPDATE.getCode(), hotakeSysNoticeType); - if (CollectionUtils.isNotEmpty(files)) { - List l = new ArrayList(); - for (MultipartFile file : files) { - HotakeSysFile sf = uploadFile(file); - l.add(sf.getId() + ""); - } - hotakeSysNoticeType.setImagePath(l); - } - return hotakeSysNoticeTypeMapper.updateHotakeSysNoticeType(hotakeSysNoticeType); - } - - /** - * 批量删除通知类型 - * - * @param ids 需要删除的通知类型主键 - * @return 结果 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public int deleteHotakeSysNoticeTypeByIds(Long[] ids) { - if (ids != null && ids.length > 0) { - for (Long id : ids) { - HotakeSysNoticeType hotakeSysNoticeType = selectHotakeSysNoticeTypeById(id); - hotakeSysNoticeType.setIsDel("1"); - fill(FillTypeEnum.UPDATE.getCode(), hotakeSysNoticeType); - hotakeSysNoticeTypeMapper.updateHotakeSysNoticeType(hotakeSysNoticeType); - - } - } - return 1; - } - - /** - * 删除通知类型信息 - * - * @param id 通知类型主键 - * @return 结果 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public int deleteHotakeSysNoticeTypeById(Long id) { - HotakeSysNoticeType hotakeSysNoticeType = selectHotakeSysNoticeTypeById(id); - hotakeSysNoticeType.setIsDel("1"); - fill(FillTypeEnum.UPDATE.getCode(), hotakeSysNoticeType); - return hotakeSysNoticeTypeMapper.updateHotakeSysNoticeType(hotakeSysNoticeType); - } - - /** - * 批量新增通知类型 - * - * @param hotakeSysNoticeTypeList 通知类型列表 - * @return 结果 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public int batchInsertHotakeSysNoticeType(List hotakeSysNoticeTypeList) { - return hotakeSysNoticeTypeMapper.batchInsertHotakeSysNoticeType(hotakeSysNoticeTypeList); - } -} diff --git a/vetti-hotakes/src/main/resources/mapper/hotake/HotakeSysFileMapper.xml b/vetti-hotakes/src/main/resources/mapper/hotake/HotakeSysFileMapper.xml new file mode 100644 index 0000000..dc50c6d --- /dev/null +++ b/vetti-hotakes/src/main/resources/mapper/hotake/HotakeSysFileMapper.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + select id, minio_bucket_name, code, file_name, file_type, file_size, storage_path, file_md5, upload_platform, available, create_by, create_time, update_by, update_time, remark from hotake_sys_file + + + + + + + + insert into Hotake_sys_file + + minio_bucket_name, + code, + file_name, + file_type, + file_size, + storage_path, + file_md5, + upload_platform, + available, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{minioBucketName}, + #{code}, + #{fileName}, + #{fileType}, + #{fileSize}, + #{storagePath}, + #{fileMd5}, + #{uploadPlatform}, + #{available}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + + update Hotake_sys_file + + minio_bucket_name = #{minioBucketName}, + code = #{code}, + file_name = #{fileName}, + file_type = #{fileType}, + file_size = #{fileSize}, + storage_path = #{storagePath}, + file_md5 = #{fileMd5}, + upload_platform = #{uploadPlatform}, + available = #{available}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete from Hotake_sys_file where id = #{id} + + + + delete from Hotake_sys_file where id in + + #{id} + + + + + insert into Hotake_sys_file( id, minio_bucket_name, code, file_name, file_type, file_size, storage_path, file_md5, upload_platform, available, create_by, create_time, update_by, update_time, remark,) values + + ( #{item.id}, #{item.minioBucketName}, #{item.code}, #{item.fileName}, #{item.fileType}, #{item.fileSize}, #{item.storagePath}, #{item.fileMd5}, #{item.uploadPlatform}, #{item.available}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark},) + + + + + + \ No newline at end of file diff --git a/vetti-hotakes/src/main/resources/mapper/hotake/HotakeSysNoticeMapper.xml b/vetti-hotakes/src/main/resources/mapper/hotake/HotakeSysNoticeMapper.xml new file mode 100644 index 0000000..4b0fc81 --- /dev/null +++ b/vetti-hotakes/src/main/resources/mapper/hotake/HotakeSysNoticeMapper.xml @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + select id, + notice_type_id, + cv_id, + notice_title, + notice_content, + send_user_id, + receive_user_id, + is_view, + is_del, + create_by, + create_time, + update_by, + update_time, + remark + from hotake_sys_notice + + + + + + + + insert into hotake_sys_notice + + notice_type_id, + cv_id, + notice_title, + notice_content, + send_user_id, + receive_user_id, + is_view, + image_path, + is_del, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{noticeTypeId}, + #{cvId}, + #{noticeTitle}, + #{noticeContent}, + #{sendUserId}, + #{receiveUserId}, + #{isView}, + #{imagePath, typeHandler=com.vetti.common.handle.JsonTypeHandler}, + #{isDel}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + + update hotake_sys_notice + + notice_type_id = #{noticeTypeId}, + cv_id = #{cvId}, + notice_title = #{noticeTitle}, + notice_content = #{noticeContent}, + send_user_id = #{sendUserId}, + receive_user_id = #{receiveUserId}, + is_view = #{isView}, + image_path = + #{imagePath, typeHandler=com.vetti.common.handle.JsonTypeHandler}, + + is_del = #{isDel}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete + from hotake_sys_notice + where id = #{id} + + + + delete from hotake_sys_notice where id in + + #{id} + + + + + insert into hotake_sys_notice( id, notice_type_id, cv_id, notice_title, notice_content, send_user_id, + receive_user_id, is_view,image_path, is_del, create_by, create_time, update_by, update_time, remark,) values + + ( #{item.id}, #{item.noticeTypeId}, #{item.cvId}, #{item.noticeTitle}, #{item.noticeContent}, + #{item.sendUserId}, #{item.receiveUserId}, + #{item.isView},#{item.imagePath, typeHandler=com.vetti.common.handle.JsonTypeHandler}, #{item.isDel}, + #{item.createBy}, + #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark},) + + + \ No newline at end of file diff --git a/vetti-hotakes/src/main/resources/mapper/hotake/HotakeSysNoticeTypeMapper.xml b/vetti-hotakes/src/main/resources/mapper/hotake/HotakeSysNoticeTypeMapper.xml deleted file mode 100644 index 0d84583..0000000 --- a/vetti-hotakes/src/main/resources/mapper/hotake/HotakeSysNoticeTypeMapper.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - - - - - - - - - - select id, - type_name, - image_path, - is_del, - create_by, - create_time, - update_by, - update_time, - remark - from hotake_sys_notice_type - - - - - - - - insert into hotake_sys_notice_type - - type_name, - image_path, - is_del, - create_by, - create_time, - update_by, - update_time, - remark, - - - #{typeName}, - #{imagePath, typeHandler=com.vetti.common.handle.JsonTypeHandler}, - #{isDel}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - #{remark}, - - - - - update hotake_sys_notice_type - - type_name = #{typeName}, - image_path = - #{imagePath, typeHandler=com.vetti.common.handle.JsonTypeHandler}, - - is_del = #{isDel}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - remark = #{remark}, - - where id = #{id} - - - - delete - from hotake_sys_notice_type - where id = #{id} - - - - delete from hotake_sys_notice_type where id in - - #{id} - - - - - insert into hotake_sys_notice_type( id, type_name, image_path, is_del, create_by, create_time, update_by, - update_time, remark,) values - - ( #{item.id}, #{item.typeName}, #{item.imagePath, typeHandler=com.vetti.common.handle.JsonTypeHandler}, - #{item.isDel}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark},) - - - \ No newline at end of file