diff --git a/src/main/java/com/youlai/system/controller/NoticeController.java b/src/main/java/com/youlai/system/controller/NoticeController.java new file mode 100644 index 00000000..67325ea9 --- /dev/null +++ b/src/main/java/com/youlai/system/controller/NoticeController.java @@ -0,0 +1,81 @@ +package com.youlai.system.controller; + +import com.youlai.system.service.NoticeService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.youlai.system.model.form.NoticeForm; +import com.youlai.system.model.query.NoticeQuery; +import com.youlai.system.model.vo.NoticeVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.youlai.system.common.result.PageResult; +import com.youlai.system.common.result.Result; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import jakarta.validation.Valid; + +/** + * 通知公告前端控制层 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Tag(name = "通知公告接口") +@RestController +@RequestMapping("/api/v1/notices") +@RequiredArgsConstructor +public class NoticeController { + + private final NoticeService noticeService; + + @Operation(summary = "通知公告分页列表") + @GetMapping("/page") + @PreAuthorize("@ss.hasPerm('system:notice:query')") + public PageResult getNoticePage(NoticeQuery queryParams ) { + IPage result = noticeService.getNoticePage(queryParams); + return PageResult.success(result); + } + + @Operation(summary = "新增通知公告") + @PostMapping + @PreAuthorize("@ss.hasPerm('system:notice:add')") + public Result saveNotice(@RequestBody @Valid NoticeForm formData ) { + boolean result = noticeService.saveNotice(formData); + return Result.judge(result); + } + + @Operation(summary = "获取通知公告表单数据") + @GetMapping("/{id}/form") + @PreAuthorize("@ss.hasPerm('system:notice:edit')") + public Result getNoticeForm( + @Parameter(description = "通知公告ID") @PathVariable Long id + ) { + NoticeForm formData = noticeService.getNoticeFormData(id); + return Result.success(formData); + } + + @Operation(summary = "修改通知公告") + @PutMapping(value = "/{id}") + @PreAuthorize("@ss.hasPerm('system:notice:edit')") + public Result updateNotice( + @Parameter(description = "通知公告ID") @PathVariable Long id, + @RequestBody @Validated NoticeForm formData + ) { + boolean result = noticeService.updateNotice(id, formData); + return Result.judge(result); + } + + @Operation(summary = "删除通知公告") + @DeleteMapping("/{ids}") + @PreAuthorize("@ss.hasPerm('system:notice:delete')") + public Result deleteNotices( + @Parameter(description = "通知公告ID,多个以英文逗号(,)分割") @PathVariable String ids + ) { + boolean result = noticeService.deleteNotices(ids); + return Result.judge(result); + } +} diff --git a/src/main/java/com/youlai/system/controller/NoticeStatusController.java b/src/main/java/com/youlai/system/controller/NoticeStatusController.java new file mode 100644 index 00000000..dbf5b414 --- /dev/null +++ b/src/main/java/com/youlai/system/controller/NoticeStatusController.java @@ -0,0 +1,81 @@ +package com.youlai.system.controller; + +import com.youlai.system.service.NoticeStatusService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.youlai.system.model.form.NoticeStatusForm; +import com.youlai.system.model.query.NoticeStatusQuery; +import com.youlai.system.model.vo.NoticeStatusVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.youlai.system.common.result.PageResult; +import com.youlai.system.common.result.Result; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import jakarta.validation.Valid; + +/** + * 用户公告状态前端控制层 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Tag(name = "用户公告状态接口") +@RestController +@RequestMapping("/api/v1/noticeStatuss") +@RequiredArgsConstructor +public class NoticeStatusController { + + private final NoticeStatusService noticeStatusService; + + @Operation(summary = "用户公告状态分页列表") + @GetMapping("/page") + @PreAuthorize("@ss.hasPerm('system:noticeStatus:query')") + public PageResult getNoticeStatusPage(NoticeStatusQuery queryParams ) { + IPage result = noticeStatusService.getNoticeStatusPage(queryParams); + return PageResult.success(result); + } + + @Operation(summary = "新增用户公告状态") + @PostMapping + @PreAuthorize("@ss.hasPerm('system:noticeStatus:add')") + public Result saveNoticeStatus(@RequestBody @Valid NoticeStatusForm formData ) { + boolean result = noticeStatusService.saveNoticeStatus(formData); + return Result.judge(result); + } + + @Operation(summary = "获取用户公告状态表单数据") + @GetMapping("/{id}/form") + @PreAuthorize("@ss.hasPerm('system:noticeStatus:edit')") + public Result getNoticeStatusForm( + @Parameter(description = "用户公告状态ID") @PathVariable Long id + ) { + NoticeStatusForm formData = noticeStatusService.getNoticeStatusFormData(id); + return Result.success(formData); + } + + @Operation(summary = "修改用户公告状态") + @PutMapping(value = "/{id}") + @PreAuthorize("@ss.hasPerm('system:noticeStatus:edit')") + public Result updateNoticeStatus( + @Parameter(description = "用户公告状态ID") @PathVariable Long id, + @RequestBody @Validated NoticeStatusForm formData + ) { + boolean result = noticeStatusService.updateNoticeStatus(id, formData); + return Result.judge(result); + } + + @Operation(summary = "删除用户公告状态") + @DeleteMapping("/{ids}") + @PreAuthorize("@ss.hasPerm('system:noticeStatus:delete')") + public Result deleteNoticeStatuss( + @Parameter(description = "用户公告状态ID,多个以英文逗号(,)分割") @PathVariable String ids + ) { + boolean result = noticeStatusService.deleteNoticeStatuss(ids); + return Result.judge(result); + } +} diff --git a/src/main/java/com/youlai/system/converter/NoticeConverter.java b/src/main/java/com/youlai/system/converter/NoticeConverter.java new file mode 100644 index 00000000..a676ef3c --- /dev/null +++ b/src/main/java/com/youlai/system/converter/NoticeConverter.java @@ -0,0 +1,20 @@ +package com.youlai.system.converter; + +import org.mapstruct.Mapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.youlai.system.model.entity.Notice; +import com.youlai.system.model.form.NoticeForm; + +/** + * 通知公告对象转换器 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Mapper(componentModel = "spring") +public interface NoticeConverter{ + + NoticeForm toForm(Notice entity); + + Notice toEntity(NoticeForm formData); +} \ No newline at end of file diff --git a/src/main/java/com/youlai/system/converter/NoticeStatusConverter.java b/src/main/java/com/youlai/system/converter/NoticeStatusConverter.java new file mode 100644 index 00000000..02002bb8 --- /dev/null +++ b/src/main/java/com/youlai/system/converter/NoticeStatusConverter.java @@ -0,0 +1,20 @@ +package com.youlai.system.converter; + +import org.mapstruct.Mapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.youlai.system.model.entity.NoticeStatus; +import com.youlai.system.model.form.NoticeStatusForm; + +/** + * 用户公告状态对象转换器 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Mapper(componentModel = "spring") +public interface NoticeStatusConverter{ + + NoticeStatusForm toForm(NoticeStatus entity); + + NoticeStatus toEntity(NoticeStatusForm formData); +} \ No newline at end of file diff --git a/src/main/java/com/youlai/system/mapper/NoticeMapper.java b/src/main/java/com/youlai/system/mapper/NoticeMapper.java new file mode 100644 index 00000000..b70a76e3 --- /dev/null +++ b/src/main/java/com/youlai/system/mapper/NoticeMapper.java @@ -0,0 +1,28 @@ +package com.youlai.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.youlai.system.model.entity.Notice; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.youlai.system.model.query.NoticeQuery; +import com.youlai.system.model.vo.NoticeVO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 通知公告Mapper接口 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Mapper +public interface NoticeMapper extends BaseMapper { + + /** + * 获取通知公告分页数据 + * + * @param page 分页对象 + * @param queryParams 查询参数 + * @return + */ + Page getNoticePage(Page page, NoticeQuery queryParams); + +} diff --git a/src/main/java/com/youlai/system/mapper/NoticeStatusMapper.java b/src/main/java/com/youlai/system/mapper/NoticeStatusMapper.java new file mode 100644 index 00000000..99fdc8bf --- /dev/null +++ b/src/main/java/com/youlai/system/mapper/NoticeStatusMapper.java @@ -0,0 +1,28 @@ +package com.youlai.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.youlai.system.model.entity.NoticeStatus; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.youlai.system.model.query.NoticeStatusQuery; +import com.youlai.system.model.vo.NoticeStatusVO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 用户公告状态Mapper接口 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Mapper +public interface NoticeStatusMapper extends BaseMapper { + + /** + * 获取用户公告状态分页数据 + * + * @param page 分页对象 + * @param queryParams 查询参数 + * @return + */ + Page getNoticeStatusPage(Page page, NoticeStatusQuery queryParams); + +} diff --git a/src/main/java/com/youlai/system/model/entity/Notice.java b/src/main/java/com/youlai/system/model/entity/Notice.java new file mode 100644 index 00000000..eff59fa4 --- /dev/null +++ b/src/main/java/com/youlai/system/model/entity/Notice.java @@ -0,0 +1,70 @@ +package com.youlai.system.model.entity; + +import lombok.Getter; +import lombok.Setter; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableName; +import com.youlai.system.common.base.BaseEntity; + +/** + * 通知公告实体对象 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Getter +@Setter +@TableName("sys_notice") +public class Notice extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** + * 通知标题 + */ + private String title; + /** + * 通知内容 + */ + private String content; + /** + * 通知类型 + */ + private Integer noticeType; + /** + * 发布人 + */ + private Long release; + /** + * 优先级(0-低 1-中 2-高) + */ + private Integer priority; + /** + * 目标类型(0-全体 1-指定) + */ + private Integer tarType; + /** + * 发布状态(0-未发布 1已发布 2已撤回) + */ + private Integer sendStatus; + /** + * 发布时间 + */ + private LocalDateTime sendTime; + /** + * 撤回时间 + */ + private LocalDateTime recallTime; + /** + * 创建人ID + */ + private Long createBy; + /** + * 更新人ID + */ + private Long updateBy; + /** + * 逻辑删除标识(0-未删除 1-已删除) + */ + private Integer isDelete; +} diff --git a/src/main/java/com/youlai/system/model/entity/NoticeStatus.java b/src/main/java/com/youlai/system/model/entity/NoticeStatus.java new file mode 100644 index 00000000..b8d83fb3 --- /dev/null +++ b/src/main/java/com/youlai/system/model/entity/NoticeStatus.java @@ -0,0 +1,38 @@ +package com.youlai.system.model.entity; + +import lombok.Getter; +import lombok.Setter; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableName; +import com.youlai.system.common.base.BaseEntity; + +/** + * 用户公告状态实体对象 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Getter +@Setter +@TableName("sys_notice_status") +public class NoticeStatus extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** + * 公共通知id + */ + private Long noticeId; + /** + * 用户id + */ + private Integer userId; + /** + * 读取状态,0未读,1已读取 + */ + private Long readStatus; + /** + * 用户阅读时间 + */ + private LocalDateTime readTiem; +} diff --git a/src/main/java/com/youlai/system/model/form/NoticeForm.java b/src/main/java/com/youlai/system/model/form/NoticeForm.java new file mode 100644 index 00000000..08cb06d7 --- /dev/null +++ b/src/main/java/com/youlai/system/model/form/NoticeForm.java @@ -0,0 +1,67 @@ +package com.youlai.system.model.form; + +import java.io.Serial; +import java.io.Serializable; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import java.time.LocalDateTime; +import jakarta.validation.constraints.*; + +/** + * 通知公告表单对象 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Getter +@Setter +@Schema(description = "通知公告表单对象") +public class NoticeForm implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Schema(description = "通知标题") + @NotBlank(message = "通知标题不能为空") + @Size(max=50, message="通知标题长度不能超过50个字符") + private String title; + + @Schema(description = "通知内容") + @NotBlank(message = "通知内容不能为空") + @Size(max=65535, message="通知内容长度不能超过65535个字符") + private String content; + + @Schema(description = "通知类型") + @NotNull(message = "通知类型不能为空") + private Integer noticeType; + + @Schema(description = "发布人") + @NotNull(message = "发布人不能为空") + private Long release; + + @Schema(description = "优先级(0-低 1-中 2-高)") + private Integer priority; + + @Schema(description = "目标类型(0-全体 1-指定)") + private Integer tarType; + + @Schema(description = "发布状态(0-未发布 1已发布 2已撤回)") + private Integer sendStatus; + + @Schema(description = "发布时间") + @NotNull(message = "发布时间不能为空") + private LocalDateTime sendTime; + + @Schema(description = "撤回时间") + @NotNull(message = "撤回时间不能为空") + private LocalDateTime recallTime; + + @Schema(description = "创建人ID") + private Long createBy; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + +} diff --git a/src/main/java/com/youlai/system/model/form/NoticeStatusForm.java b/src/main/java/com/youlai/system/model/form/NoticeStatusForm.java new file mode 100644 index 00000000..ecb061ce --- /dev/null +++ b/src/main/java/com/youlai/system/model/form/NoticeStatusForm.java @@ -0,0 +1,37 @@ +package com.youlai.system.model.form; + +import java.io.Serial; +import java.io.Serializable; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import java.time.LocalDateTime; + +/** + * 用户公告状态表单对象 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Getter +@Setter +@Schema(description = "用户公告状态表单对象") +public class NoticeStatusForm implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Schema(description = "公共通知id") + private Long noticeId; + + @Schema(description = "用户id") + private Integer userId; + + @Schema(description = "读取状态,0未读,1已读取") + private Long readStatus; + + @Schema(description = "用户阅读时间") + private LocalDateTime readTiem; + + +} diff --git a/src/main/java/com/youlai/system/model/query/NoticeQuery.java b/src/main/java/com/youlai/system/model/query/NoticeQuery.java new file mode 100644 index 00000000..2269fce1 --- /dev/null +++ b/src/main/java/com/youlai/system/model/query/NoticeQuery.java @@ -0,0 +1,50 @@ +package com.youlai.system.model.query; + +import com.youlai.system.common.base.BasePageQuery; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import java.time.LocalDateTime; + +/** + * 通知公告分页查询对象 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Schema(description ="通知公告查询对象") +@Getter +@Setter +public class NoticeQuery extends BasePageQuery { + + private static final long serialVersionUID = 1L; + private Long id; + @Schema(description = "通知标题") + private String title; + @Schema(description = "通知内容") + private String content; + @Schema(description = "通知类型") + private Integer noticeType; + @Schema(description = "发布人") + private Long release; + @Schema(description = "优先级(0-低 1-中 2-高)") + private Integer priority; + @Schema(description = "目标类型(0-全体 1-指定)") + private Integer tarType; + @Schema(description = "发布状态(0-未发布 1已发布 2已撤回)") + private Integer sendStatus; + @Schema(description = "发布时间") + private LocalDateTime sendTime; + @Schema(description = "撤回时间") + private LocalDateTime recallTime; + @Schema(description = "创建人ID") + private Long createBy; + @Schema(description = "创建时间") + private LocalDateTime createTime; + @Schema(description = "更新人ID") + private Long updateBy; + @Schema(description = "更新时间") + private LocalDateTime updateTime; + @Schema(description = "逻辑删除标识(0-未删除 1-已删除)") + private Integer isDelete; +} diff --git a/src/main/java/com/youlai/system/model/query/NoticeStatusQuery.java b/src/main/java/com/youlai/system/model/query/NoticeStatusQuery.java new file mode 100644 index 00000000..b9964061 --- /dev/null +++ b/src/main/java/com/youlai/system/model/query/NoticeStatusQuery.java @@ -0,0 +1,31 @@ +package com.youlai.system.model.query; + +import com.youlai.system.common.base.BasePageQuery; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import java.time.LocalDateTime; + +/** + * 用户公告状态分页查询对象 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Schema(description ="用户公告状态查询对象") +@Getter +@Setter +public class NoticeStatusQuery extends BasePageQuery { + + private static final long serialVersionUID = 1L; + @Schema(description = "id") + private Long id; + @Schema(description = "公共通知id") + private Long noticeId; + @Schema(description = "用户id") + private Integer userId; + @Schema(description = "读取状态,0未读,1已读取") + private Long readStatus; + @Schema(description = "用户阅读时间") + private LocalDateTime readTiem; +} diff --git a/src/main/java/com/youlai/system/model/vo/NoticeStatusVO.java b/src/main/java/com/youlai/system/model/vo/NoticeStatusVO.java new file mode 100644 index 00000000..ff99b9fd --- /dev/null +++ b/src/main/java/com/youlai/system/model/vo/NoticeStatusVO.java @@ -0,0 +1,33 @@ +package com.youlai.system.model.vo; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import java.time.LocalDateTime; + +/** + * 用户公告状态视图对象 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Getter +@Setter +@Schema( description = "用户公告状态视图对象") +public class NoticeStatusVO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Schema(description = "公共通知id") + private Long noticeId; + @Schema(description = "用户id") + private Integer userId; + @Schema(description = "读取状态,0未读,1已读取") + private Long readStatus; + @Schema(description = "用户阅读时间") + private LocalDateTime readTiem; +} diff --git a/src/main/java/com/youlai/system/model/vo/NoticeVO.java b/src/main/java/com/youlai/system/model/vo/NoticeVO.java new file mode 100644 index 00000000..349566ab --- /dev/null +++ b/src/main/java/com/youlai/system/model/vo/NoticeVO.java @@ -0,0 +1,41 @@ +package com.youlai.system.model.vo; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import java.time.LocalDateTime; + +/** + * 通知公告视图对象 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Getter +@Setter +@Schema( description = "通知公告视图对象") +public class NoticeVO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Schema(description = "通知标题") + private String title; + @Schema(description = "通知内容") + private String content; + @Schema(description = "通知类型") + private Integer noticeType; + @Schema(description = "发布人") + private Long release; + @Schema(description = "优先级(0-低 1-中 2-高)") + private Integer priority; + @Schema(description = "目标类型(0-全体 1-指定)") + private Integer tarType; + @Schema(description = "发布状态(0-未发布 1已发布 2已撤回)") + private Integer sendStatus; + @Schema(description = "发布时间") + private LocalDateTime sendTime; +} diff --git a/src/main/java/com/youlai/system/service/NoticeService.java b/src/main/java/com/youlai/system/service/NoticeService.java new file mode 100644 index 00000000..7885c757 --- /dev/null +++ b/src/main/java/com/youlai/system/service/NoticeService.java @@ -0,0 +1,58 @@ +package com.youlai.system.service; + +import com.youlai.system.model.entity.Notice; +import com.youlai.system.model.form.NoticeForm; +import com.youlai.system.model.query.NoticeQuery; +import com.youlai.system.model.vo.NoticeVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 通知公告服务类 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +public interface NoticeService extends IService { + + /** + *通知公告分页列表 + * + * @return + */ + IPage getNoticePage(NoticeQuery queryParams); + + /** + * 获取通知公告表单数据 + * + * @param id 通知公告ID + * @return + */ + NoticeForm getNoticeFormData(Long id); + + /** + * 新增通知公告 + * + * @param formData 通知公告表单对象 + * @return + */ + boolean saveNotice(NoticeForm formData); + + /** + * 修改通知公告 + * + * @param id 通知公告ID + * @param formData 通知公告表单对象 + * @return + */ + boolean updateNotice(Long id, NoticeForm formData); + + /** + * 删除通知公告 + * + * @param ids 通知公告ID,多个以英文逗号(,)分割 + * @return + */ + boolean deleteNotices(String ids); + +} diff --git a/src/main/java/com/youlai/system/service/NoticeStatusService.java b/src/main/java/com/youlai/system/service/NoticeStatusService.java new file mode 100644 index 00000000..6d3cc0ac --- /dev/null +++ b/src/main/java/com/youlai/system/service/NoticeStatusService.java @@ -0,0 +1,58 @@ +package com.youlai.system.service; + +import com.youlai.system.model.entity.NoticeStatus; +import com.youlai.system.model.form.NoticeStatusForm; +import com.youlai.system.model.query.NoticeStatusQuery; +import com.youlai.system.model.vo.NoticeStatusVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 用户公告状态服务类 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +public interface NoticeStatusService extends IService { + + /** + *用户公告状态分页列表 + * + * @return + */ + IPage getNoticeStatusPage(NoticeStatusQuery queryParams); + + /** + * 获取用户公告状态表单数据 + * + * @param id 用户公告状态ID + * @return + */ + NoticeStatusForm getNoticeStatusFormData(Long id); + + /** + * 新增用户公告状态 + * + * @param formData 用户公告状态表单对象 + * @return + */ + boolean saveNoticeStatus(NoticeStatusForm formData); + + /** + * 修改用户公告状态 + * + * @param id 用户公告状态ID + * @param formData 用户公告状态表单对象 + * @return + */ + boolean updateNoticeStatus(Long id, NoticeStatusForm formData); + + /** + * 删除用户公告状态 + * + * @param ids 用户公告状态ID,多个以英文逗号(,)分割 + * @return + */ + boolean deleteNoticeStatuss(String ids); + +} diff --git a/src/main/java/com/youlai/system/service/impl/NoticeServiceImpl.java b/src/main/java/com/youlai/system/service/impl/NoticeServiceImpl.java new file mode 100644 index 00000000..0490df3e --- /dev/null +++ b/src/main/java/com/youlai/system/service/impl/NoticeServiceImpl.java @@ -0,0 +1,103 @@ +package com.youlai.system.service.impl; + +import com.youlai.system.model.vo.NoticeVO; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.youlai.system.mapper.NoticeMapper; +import com.youlai.system.service.NoticeService; +import com.youlai.system.model.entity.Notice; +import com.youlai.system.model.form.NoticeForm; +import com.youlai.system.model.query.NoticeQuery; +import com.youlai.system.converter.NoticeConverter; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; + +/** + * 通知公告服务实现类 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Service +@RequiredArgsConstructor +public class NoticeServiceImpl extends ServiceImpl implements NoticeService { + + private final NoticeConverter noticeConverter; + + /** + * 获取通知公告分页列表 + * + * @param queryParams 查询参数 + * @return {@link IPage} 通知公告分页列表 + */ + @Override + public IPage getNoticePage(NoticeQuery queryParams) { + Page pageVO = this.baseMapper.getNoticePage( + new Page<>(queryParams.getPageNum(), queryParams.getPageSize()), + queryParams + ); + return pageVO; + } + + /** + * 获取通知公告表单数据 + * + * @param id 通知公告ID + * @return + */ + @Override + public NoticeForm getNoticeFormData(Long id) { + Notice entity = this.getById(id); + return noticeConverter.toForm(entity); + } + + /** + * 新增通知公告 + * + * @param formData 通知公告表单对象 + * @return + */ + @Override + public boolean saveNotice(NoticeForm formData) { + Notice entity = noticeConverter.toEntity(formData); + return this.save(entity); + } + + /** + * 更新通知公告 + * + * @param id 通知公告ID + * @param formData 通知公告表单对象 + * @return + */ + @Override + public boolean updateNotice(Long id,NoticeForm formData) { + Notice entity = noticeConverter.toEntity(formData); + return this.updateById(entity); + } + + /** + * 删除通知公告 + * + * @param ids 通知公告ID,多个以英文逗号(,)分割 + * @return + */ + @Override + public boolean deleteNotices(String ids) { + Assert.isTrue(StrUtil.isNotBlank(ids), "删除的通知公告数据为空"); + // 逻辑删除 + List idList = Arrays.stream(ids.split(",")) + .map(Long::parseLong) + .toList(); + return this.removeByIds(idList); + } + +} diff --git a/src/main/java/com/youlai/system/service/impl/NoticeStatusServiceImpl.java b/src/main/java/com/youlai/system/service/impl/NoticeStatusServiceImpl.java new file mode 100644 index 00000000..37b7804e --- /dev/null +++ b/src/main/java/com/youlai/system/service/impl/NoticeStatusServiceImpl.java @@ -0,0 +1,104 @@ +package com.youlai.system.service.impl; + +import com.youlai.system.model.vo.NoticeStatusVO; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.youlai.system.mapper.NoticeStatusMapper; +import com.youlai.system.service.NoticeStatusService; +import com.youlai.system.model.entity.NoticeStatus; +import com.youlai.system.model.form.NoticeStatusForm; +import com.youlai.system.model.query.NoticeStatusQuery; +import com.youlai.system.converter.NoticeStatusConverter; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; + +/** + * 用户公告状态服务实现类 + * + * @author youlaitech + * @since 2024-08-08 11:46 + */ +@Service +@RequiredArgsConstructor +public class NoticeStatusServiceImpl extends ServiceImpl implements NoticeStatusService { + + private final NoticeStatusConverter noticeStatusConverter; + + /** + * 获取用户公告状态分页列表 + * + * @param queryParams 查询参数 + * @return {@link IPage} 用户公告状态分页列表 + */ + @Override + public IPage getNoticeStatusPage(NoticeStatusQuery queryParams) { + Page pageVO = this.baseMapper.getNoticeStatusPage( + new Page(queryParams.getPageNum(), queryParams.getPageSize()), + queryParams + ); + return pageVO; + } + + + /** + * 获取用户公告状态表单数据 + * + * @param id 用户公告状态ID + * @return + */ + @Override + public NoticeStatusForm getNoticeStatusFormData(Long id) { + NoticeStatus entity = this.getById(id); + return noticeStatusConverter.toForm(entity); + } + + /** + * 新增用户公告状态 + * + * @param formData 用户公告状态表单对象 + * @return + */ + @Override + public boolean saveNoticeStatus(NoticeStatusForm formData) { + NoticeStatus entity = noticeStatusConverter.toEntity(formData); + return this.save(entity); + } + + /** + * 更新用户公告状态 + * + * @param id 用户公告状态ID + * @param formData 用户公告状态表单对象 + * @return + */ + @Override + public boolean updateNoticeStatus(Long id,NoticeStatusForm formData) { + NoticeStatus entity = noticeStatusConverter.toEntity(formData); + return this.updateById(entity); + } + + /** + * 删除用户公告状态 + * + * @param ids 用户公告状态ID,多个以英文逗号(,)分割 + * @return + */ + @Override + public boolean deleteNoticeStatuss(String ids) { + Assert.isTrue(StrUtil.isNotBlank(ids), "删除的用户公告状态数据为空"); + // 逻辑删除 + List idList = Arrays.stream(ids.split(",")) + .map(Long::parseLong) + .toList(); + return this.removeByIds(idList); + } + +} diff --git a/src/main/resources/mapper/NoticeMapper.xml b/src/main/resources/mapper/NoticeMapper.xml new file mode 100644 index 00000000..d3ba0a1e --- /dev/null +++ b/src/main/resources/mapper/NoticeMapper.xml @@ -0,0 +1,67 @@ + + + + + + + + diff --git a/src/main/resources/mapper/NoticeStatusMapper.xml b/src/main/resources/mapper/NoticeStatusMapper.xml new file mode 100644 index 00000000..873e756a --- /dev/null +++ b/src/main/resources/mapper/NoticeStatusMapper.xml @@ -0,0 +1,34 @@ + + + + + + + +