From c93ff88e0e0dcd62b622b84b71c0e7d6ec08948b Mon Sep 17 00:00:00 2001 From: JiyangTang Date: Fri, 8 Mar 2024 18:40:47 +0800 Subject: [PATCH] modify --- .../admin/controller/NoticeController.java | 33 +++++++++++ .../admin/domain/req/NoticeLogQueryParam.java | 32 ++++++++++ .../admin/domain/res/NoticeLogRes.java | 58 +++++++++++++++++++ .../admin/schedule/NoticeSchedule.java | 4 +- .../admin/services/INoticeLogService.java | 5 ++ .../services/impl/NoticeLogServiceImpl.java | 22 +++++++ .../src/main/resources/bootstrap-local.yml | 4 +- .../src/main/resources/bootstrap-prod.yml | 4 +- .../src/main/resources/bootstrap-test.yml | 4 +- .../src/main/resources/bootstrap-local.yml | 4 +- .../src/main/resources/bootstrap-prod.yml | 4 +- .../src/main/resources/bootstrap-test.yml | 4 +- baogutang-common/pom.xml | 11 ++++ .../common/constants/ErrorCodeEnum.java | 2 + .../baogutang/common/domain/PageParam.java | 41 +++++++++++++ .../domain/{Page.java => PageUtil.java} | 10 ++-- .../common/utils/MyBatisPlusPageUtil.java | 45 ++++++++++++++ .../src/main/resources/bootstrap-local.yml | 4 +- .../src/main/resources/bootstrap-prod.yml | 4 +- 19 files changed, 272 insertions(+), 23 deletions(-) create mode 100644 baogutang-admin/src/main/java/top/baogutang/admin/controller/NoticeController.java create mode 100644 baogutang-admin/src/main/java/top/baogutang/admin/domain/req/NoticeLogQueryParam.java create mode 100644 baogutang-admin/src/main/java/top/baogutang/admin/domain/res/NoticeLogRes.java create mode 100644 baogutang-common/src/main/java/top/baogutang/common/domain/PageParam.java rename baogutang-common/src/main/java/top/baogutang/common/domain/{Page.java => PageUtil.java} (71%) create mode 100644 baogutang-common/src/main/java/top/baogutang/common/utils/MyBatisPlusPageUtil.java diff --git a/baogutang-admin/src/main/java/top/baogutang/admin/controller/NoticeController.java b/baogutang-admin/src/main/java/top/baogutang/admin/controller/NoticeController.java new file mode 100644 index 0000000..aecd176 --- /dev/null +++ b/baogutang-admin/src/main/java/top/baogutang/admin/controller/NoticeController.java @@ -0,0 +1,33 @@ +package top.baogutang.admin.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import top.baogutang.admin.domain.res.NoticeLogRes; +import top.baogutang.admin.services.INoticeLogService; +import top.baogutang.common.constants.NoticeTypeEnum; +import top.baogutang.common.domain.PageUtil; +import top.baogutang.common.domain.Results; + +import javax.annotation.Resource; + +/** + * @description: + * @author: nikooh + * @date: 2024/02/22 : 11:49 + */ +@RequestMapping("api/v1/notice") +@RestController +public class NoticeController { + + @Resource + private INoticeLogService noticeLogService; + + @GetMapping("/page") + public Results> pageQuery(@RequestParam(name = "pageNum", required = false, defaultValue = "1") Integer pageNum, + @RequestParam(name = "pageSize", required = false, defaultValue = "20") Integer pageSize, + @RequestParam(name = "noticeType", required = false) NoticeTypeEnum noticeType) { + return Results.ok(noticeLogService.queryPage(pageNum, pageSize, noticeType)); + } +} diff --git a/baogutang-admin/src/main/java/top/baogutang/admin/domain/req/NoticeLogQueryParam.java b/baogutang-admin/src/main/java/top/baogutang/admin/domain/req/NoticeLogQueryParam.java new file mode 100644 index 0000000..149f98b --- /dev/null +++ b/baogutang-admin/src/main/java/top/baogutang/admin/domain/req/NoticeLogQueryParam.java @@ -0,0 +1,32 @@ +package top.baogutang.admin.domain.req; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import top.baogutang.common.constants.NoticeTypeEnum; +import top.baogutang.common.domain.PageParam; + +import java.io.Serializable; + +/** + * @description: + * @author: nikooh + * @date: 2024/02/22 : 13:55 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +public class NoticeLogQueryParam extends PageParam implements Serializable { + + private static final long serialVersionUID = 4745304392774888914L; + + private NoticeTypeEnum noticeType; + + public NoticeLogQueryParam(Integer pageNum, Integer pageSize, NoticeTypeEnum noticeType) { + this.setPageNum(pageNum); + this.setPageSize(pageSize); + this.noticeType = noticeType; + } +} diff --git a/baogutang-admin/src/main/java/top/baogutang/admin/domain/res/NoticeLogRes.java b/baogutang-admin/src/main/java/top/baogutang/admin/domain/res/NoticeLogRes.java new file mode 100644 index 0000000..3c2c392 --- /dev/null +++ b/baogutang-admin/src/main/java/top/baogutang/admin/domain/res/NoticeLogRes.java @@ -0,0 +1,58 @@ +package top.baogutang.admin.domain.res; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @description: + * @author: nikooh + * @date: 2024/02/22 : 11:53 + */ +@Data +public class NoticeLogRes implements Serializable { + + private static final long serialVersionUID = 8076035880845304425L; + + private Long id; + + /** + * 公告 + */ + private String noticeType; + + private Long noticeId; + + /** + * 标题 + */ + private String title; + + /** + * 类型 + */ + private String type; + + /** + * 封面 + */ + private String cover; + + /** + * 创作者 + */ + private String noticeCreator; + + /** + * 内容 + */ + private String detailUrl; + + /** + * 创建时间 + */ + private Date noticeCreatedAt; + + private Date createTime; +} diff --git a/baogutang-admin/src/main/java/top/baogutang/admin/schedule/NoticeSchedule.java b/baogutang-admin/src/main/java/top/baogutang/admin/schedule/NoticeSchedule.java index 67e5091..92fc075 100644 --- a/baogutang-admin/src/main/java/top/baogutang/admin/schedule/NoticeSchedule.java +++ b/baogutang-admin/src/main/java/top/baogutang/admin/schedule/NoticeSchedule.java @@ -14,7 +14,7 @@ import top.baogutang.admin.services.INoticeLogService; import top.baogutang.admin.services.IWxMsgPushService; import top.baogutang.admin.utils.DingTalkMsgPushUtils; import top.baogutang.common.constants.NoticeTypeEnum; -import top.baogutang.common.domain.Page; +import top.baogutang.common.domain.PageUtil; import top.baogutang.common.domain.Results; import top.baogutang.common.properties.WxMsgPushProperties; import top.baogutang.common.utils.OkHttpUtil; @@ -58,7 +58,7 @@ public class NoticeSchedule { public void edgeNotice() { Arrays.stream(NoticeTypeEnum.values()) .forEach(noticeType -> { - Results> results = OkHttpUtil.get(noticeType.getListUrl(), null, null, new TypeReference>>() { + Results> results = OkHttpUtil.get(noticeType.getListUrl(), null, null, new TypeReference>>() { }); log.info(">>>>>>>>>>请求获取:{}公告返回数据:{}<<<<<<<<<<", noticeType.getDesc(), JSON.toJSONString(results)); if (Objects.isNull(results)) { diff --git a/baogutang-admin/src/main/java/top/baogutang/admin/services/INoticeLogService.java b/baogutang-admin/src/main/java/top/baogutang/admin/services/INoticeLogService.java index 20a9798..64b205d 100644 --- a/baogutang-admin/src/main/java/top/baogutang/admin/services/INoticeLogService.java +++ b/baogutang-admin/src/main/java/top/baogutang/admin/services/INoticeLogService.java @@ -1,7 +1,10 @@ package top.baogutang.admin.services; import top.baogutang.admin.dao.entity.NoticeLogEntity; +import top.baogutang.admin.domain.res.NoticeLogRes; import top.baogutang.common.constants.NoticeTypeEnum; +import top.baogutang.common.domain.PageUtil; +import top.baogutang.common.domain.Results; import java.util.Date; import java.util.List; @@ -35,5 +38,7 @@ public interface INoticeLogService { * @return notice数据 */ List queryLogByConditions(Long noticeId, NoticeTypeEnum noticeType); + + PageUtil queryPage(Integer pageNum, Integer pageSize, NoticeTypeEnum noticeType); } diff --git a/baogutang-admin/src/main/java/top/baogutang/admin/services/impl/NoticeLogServiceImpl.java b/baogutang-admin/src/main/java/top/baogutang/admin/services/impl/NoticeLogServiceImpl.java index 4e11a6f..2843740 100644 --- a/baogutang-admin/src/main/java/top/baogutang/admin/services/impl/NoticeLogServiceImpl.java +++ b/baogutang-admin/src/main/java/top/baogutang/admin/services/impl/NoticeLogServiceImpl.java @@ -1,19 +1,26 @@ package top.baogutang.admin.services.impl; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import top.baogutang.admin.dao.entity.NoticeLogEntity; import top.baogutang.admin.dao.mapper.NoticeLogMapper; +import top.baogutang.admin.domain.req.NoticeLogQueryParam; +import top.baogutang.admin.domain.res.NoticeLogRes; import top.baogutang.admin.services.INoticeLogService; import top.baogutang.common.constants.NoticeTypeEnum; +import top.baogutang.common.domain.PageUtil; +import top.baogutang.common.utils.MyBatisPlusPageUtil; import javax.annotation.Resource; import java.util.Date; import java.util.List; +import java.util.Objects; /** * @description: @@ -51,4 +58,19 @@ public class NoticeLogServiceImpl extends ServiceImpl queryPage(Integer pageNum, Integer pageSize, NoticeTypeEnum noticeType) { + NoticeLogQueryParam queryParam = new NoticeLogQueryParam(pageNum, pageSize, noticeType); + return MyBatisPlusPageUtil.page(page -> noticeLogMapper.selectPage(page, Wrappers.lambdaQuery(NoticeLogEntity.class) + .eq(Objects.nonNull(queryParam.getNoticeType()), NoticeLogEntity::getNoticeType, queryParam.getNoticeType().getDesc()) + .eq(NoticeLogEntity::getDeleted, Boolean.FALSE) + .orderByDesc(NoticeLogEntity::getCreateTime)), queryParam, this::geneResFromEntity); + } + + private NoticeLogRes geneResFromEntity(NoticeLogEntity noticeLogEntity) { + NoticeLogRes noticeLogRes = new NoticeLogRes(); + BeanUtils.copyProperties(noticeLogEntity, noticeLogRes); + return noticeLogRes; + } } diff --git a/baogutang-admin/src/main/resources/bootstrap-local.yml b/baogutang-admin/src/main/resources/bootstrap-local.yml index f1f4c45..78e6c52 100644 --- a/baogutang-admin/src/main/resources/bootstrap-local.yml +++ b/baogutang-admin/src/main/resources/bootstrap-local.yml @@ -4,9 +4,9 @@ spring: cloud: nacos: discovery: - server-addr: 222.186.131.30:8848 + server-addr: 180.97.221.51:8848 config: - server-addr: 222.186.131.30:8848 + server-addr: 180.97.221.51:8848 namespace: 1877a228-6bff-46b9-a442-829473c3adc7 file-extension: yml refresh-enabled: true diff --git a/baogutang-admin/src/main/resources/bootstrap-prod.yml b/baogutang-admin/src/main/resources/bootstrap-prod.yml index 764cd0b..dba630b 100644 --- a/baogutang-admin/src/main/resources/bootstrap-prod.yml +++ b/baogutang-admin/src/main/resources/bootstrap-prod.yml @@ -4,9 +4,9 @@ spring: cloud: nacos: discovery: - server-addr: 222.186.131.30:8848 + server-addr: 180.97.221.51:8848 config: - server-addr: 222.186.131.30:8848 + server-addr: 180.97.221.51:8848 namespace: fe5388cc-76bc-44d6-ba20-034f97c567e5 file-extension: yml refresh-enabled: true diff --git a/baogutang-admin/src/main/resources/bootstrap-test.yml b/baogutang-admin/src/main/resources/bootstrap-test.yml index a636c66..ce4facf 100644 --- a/baogutang-admin/src/main/resources/bootstrap-test.yml +++ b/baogutang-admin/src/main/resources/bootstrap-test.yml @@ -4,9 +4,9 @@ spring: cloud: nacos: discovery: - server-addr: 42.51.4.235:8848 + server-addr: 180.97.221.51:8848 config: - server-addr: 42.51.4.235:8848 + server-addr: 180.97.221.51:8848 namespace: 7e44b734-781d-4c21-a524-4bad1557d95f file-extension: yml refresh-enabled: true diff --git a/baogutang-business/src/main/resources/bootstrap-local.yml b/baogutang-business/src/main/resources/bootstrap-local.yml index b4ce353..cbdbb8c 100644 --- a/baogutang-business/src/main/resources/bootstrap-local.yml +++ b/baogutang-business/src/main/resources/bootstrap-local.yml @@ -4,9 +4,9 @@ spring: cloud: nacos: discovery: - server-addr: 222.186.131.30:8848 + server-addr: 180.97.221.51:8848 config: - server-addr: 222.186.131.30:8848 + server-addr: 180.97.221.51:8848 namespace: 1877a228-6bff-46b9-a442-829473c3adc7 file-extension: yml refresh-enabled: true diff --git a/baogutang-business/src/main/resources/bootstrap-prod.yml b/baogutang-business/src/main/resources/bootstrap-prod.yml index 6875663..612d406 100644 --- a/baogutang-business/src/main/resources/bootstrap-prod.yml +++ b/baogutang-business/src/main/resources/bootstrap-prod.yml @@ -4,9 +4,9 @@ spring: cloud: nacos: discovery: - server-addr: 222.186.131.30:8848 + server-addr: 180.97.221.51:8848 config: - server-addr: 222.186.131.30:8848 + server-addr: 180.97.221.51:8848 namespace: fe5388cc-76bc-44d6-ba20-034f97c567e5 file-extension: yml refresh-enabled: true diff --git a/baogutang-business/src/main/resources/bootstrap-test.yml b/baogutang-business/src/main/resources/bootstrap-test.yml index 80c633a..0804453 100644 --- a/baogutang-business/src/main/resources/bootstrap-test.yml +++ b/baogutang-business/src/main/resources/bootstrap-test.yml @@ -4,9 +4,9 @@ spring: cloud: nacos: discovery: - server-addr: 42.51.4.235:8848 + server-addr: 180.97.221.51:8848 config: - server-addr: 42.51.4.235:8848 + server-addr: 180.97.221.51:8848 namespace: 7e44b734-781d-4c21-a524-4bad1557d95f file-extension: yml refresh-enabled: true diff --git a/baogutang-common/pom.xml b/baogutang-common/pom.xml index 49cb02d..b239e79 100644 --- a/baogutang-common/pom.xml +++ b/baogutang-common/pom.xml @@ -33,9 +33,20 @@ org.springframework.boot spring-boot-starter-integration + org.springframework.boot spring-boot-starter-data-redis + + + io.lettuce + lettuce-core + + + + + redis.clients + jedis org.springframework.cloud diff --git a/baogutang-common/src/main/java/top/baogutang/common/constants/ErrorCodeEnum.java b/baogutang-common/src/main/java/top/baogutang/common/constants/ErrorCodeEnum.java index dca509c..48573a6 100644 --- a/baogutang-common/src/main/java/top/baogutang/common/constants/ErrorCodeEnum.java +++ b/baogutang-common/src/main/java/top/baogutang/common/constants/ErrorCodeEnum.java @@ -70,6 +70,8 @@ public enum ErrorCodeEnum { E_EXEC_SCRIPT_ERROR(81011037, "脚本执行失败"), + E_PAGE_QUERY_ERROR(81011038, "分页查询异常"), + ; private final int code; diff --git a/baogutang-common/src/main/java/top/baogutang/common/domain/PageParam.java b/baogutang-common/src/main/java/top/baogutang/common/domain/PageParam.java new file mode 100644 index 0000000..d9f2616 --- /dev/null +++ b/baogutang-common/src/main/java/top/baogutang/common/domain/PageParam.java @@ -0,0 +1,41 @@ +package top.baogutang.common.domain; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @description: + * @author: nikooh + * @date: 2024/02/22 : 11:22 + */ +@Data +public class PageParam implements Serializable { + + private static final long serialVersionUID = 5353838683455028860L; + + private Integer pageNum; + + private Integer pageSize; + + public Integer getPageNum() { + pageNum = pageNum == null ? 1 : pageNum; + return pageNum; + } + + public void setPageNum(Integer pageNum) { + this.pageNum = pageNum; + } + + public Integer getPageSize() { + if (pageSize == null || pageSize > 100) { + pageSize = 10; + } + return pageSize; + } + + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize; + } + +} diff --git a/baogutang-common/src/main/java/top/baogutang/common/domain/Page.java b/baogutang-common/src/main/java/top/baogutang/common/domain/PageUtil.java similarity index 71% rename from baogutang-common/src/main/java/top/baogutang/common/domain/Page.java rename to baogutang-common/src/main/java/top/baogutang/common/domain/PageUtil.java index e80db23..ae19fcd 100644 --- a/baogutang-common/src/main/java/top/baogutang/common/domain/Page.java +++ b/baogutang-common/src/main/java/top/baogutang/common/domain/PageUtil.java @@ -17,17 +17,17 @@ import java.util.List; @Builder @AllArgsConstructor @NoArgsConstructor -public class Page implements Serializable { +public class PageUtil implements Serializable { private static final long serialVersionUID = 7521438130006292396L; - private Integer totalCount; + private Long currPage; - private Integer pageSize; + private Long pageSize; - private Integer totalPage; + private Long totalCount; - private Integer currPage; + private Long totalPage; private List list; } diff --git a/baogutang-common/src/main/java/top/baogutang/common/utils/MyBatisPlusPageUtil.java b/baogutang-common/src/main/java/top/baogutang/common/utils/MyBatisPlusPageUtil.java new file mode 100644 index 0000000..12bd305 --- /dev/null +++ b/baogutang-common/src/main/java/top/baogutang/common/utils/MyBatisPlusPageUtil.java @@ -0,0 +1,45 @@ +package top.baogutang.common.utils; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; +import top.baogutang.common.domain.PageParam; +import top.baogutang.common.domain.PageUtil; + +import java.util.List; +import java.util.function.Function; +import java.util.function.UnaryOperator; +import java.util.stream.Collectors; + +/** + * @description: + * @author: nikooh + * @date: 2024/02/22 : 11:21 + */ +@Slf4j +public class MyBatisPlusPageUtil { + + private MyBatisPlusPageUtil() { + // private constructor + } + + /** + * general method of paging query + * + * @param queryFunction page query function + * @param pageParam page param + * @param beanCastFunction bean cast function + * @param entity class + * @param query parameter + * @param return bean + * @return pageUtils + */ + public static PageUtil page(UnaryOperator> queryFunction, U pageParam, Function beanCastFunction) { + Page pageReq = new Page<>(pageParam.getPageNum(), pageParam.getPageSize()); + Page pageRes = queryFunction.apply(pageReq); + List rPageRes = pageRes.getRecords().stream() + .map(beanCastFunction) + .collect(Collectors.toList()); + return new PageUtil<>(pageRes.getCurrent(), pageRes.getSize(), pageRes.getTotal(), pageRes.getPages(), rPageRes); + } + +} diff --git a/baogutang-generate/src/main/resources/bootstrap-local.yml b/baogutang-generate/src/main/resources/bootstrap-local.yml index 807471d..95f0e8e 100644 --- a/baogutang-generate/src/main/resources/bootstrap-local.yml +++ b/baogutang-generate/src/main/resources/bootstrap-local.yml @@ -4,9 +4,9 @@ spring: cloud: nacos: discovery: - server-addr: 222.186.131.30:8848 + server-addr: 180.97.221.51:8848 config: - server-addr: 222.186.131.30:8848 + server-addr: 180.97.221.51:8848 namespace: 1877a228-6bff-46b9-a442-829473c3adc7 file-extension: yml refresh-enabled: true diff --git a/baogutang-generate/src/main/resources/bootstrap-prod.yml b/baogutang-generate/src/main/resources/bootstrap-prod.yml index faf6b81..5beee24 100644 --- a/baogutang-generate/src/main/resources/bootstrap-prod.yml +++ b/baogutang-generate/src/main/resources/bootstrap-prod.yml @@ -4,9 +4,9 @@ spring: cloud: nacos: discovery: - server-addr: 222.186.131.30:8848 + server-addr: 180.97.221.51:8848 config: - server-addr: 222.186.131.30:8848 + server-addr: 180.97.221.51:8848 namespace: fe5388cc-76bc-44d6-ba20-034f97c567e5 file-extension: yml refresh-enabled: true