From 96b0128ef43ce48af25389a911476cb6b5a426b1 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Sun, 7 Apr 2024 14:12:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-2106):=20Banner=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=AE=9E=E7=8E=B0=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/api/ApplicationVersionApi.java | 2 +- .../request/CreateApplicationVersionReq.java | 10 ++++ .../request/CreateBannerOperationLogReq.java | 59 +++++++++++++++++++ .../request/PageBannerOperationLogReq.java | 1 - .../request/UpdateApplicationVersionReq.java | 5 ++ .../ApplicationVersionController.java | 2 +- .../service/BannerOperationLogService.java | 4 ++ .../impl/BannerOperationLogServiceImpl.java | 8 +++ .../service/impl/BannerServiceImpl.java | 32 ++++++++++ 9 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/CreateBannerOperationLogReq.java diff --git a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/ApplicationVersionApi.java b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/ApplicationVersionApi.java index 57e8bb53..8c10e616 100644 --- a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/ApplicationVersionApi.java +++ b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/ApplicationVersionApi.java @@ -52,7 +52,7 @@ public interface ApplicationVersionApi { * @return void */ @GetMapping("/api/applicationVersion/delete") - ApiResult deleteById(@RequestParam("id") Long id); + ApiResult deleteById(@RequestParam("id") Long id, @RequestParam("personId") Long personId); /** * 分页查询 diff --git a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/CreateApplicationVersionReq.java b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/CreateApplicationVersionReq.java index ae575801..d58dc9cf 100644 --- a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/CreateApplicationVersionReq.java +++ b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/CreateApplicationVersionReq.java @@ -67,4 +67,14 @@ public class CreateApplicationVersionReq { * 更新后是否弹窗提醒,0不提醒,1提醒,默认0 */ private int remind; + + /** + * 创建人 + */ + private Long createBy; + + /** + * 更新人 + */ + private Long updateBy; } \ No newline at end of file diff --git a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/CreateBannerOperationLogReq.java b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/CreateBannerOperationLogReq.java new file mode 100644 index 00000000..4b92901a --- /dev/null +++ b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/CreateBannerOperationLogReq.java @@ -0,0 +1,59 @@ +package cn.axzo.nanopart.api.request; + +import cn.axzo.nanopart.api.enums.RecodeTypeEnum; +import com.alibaba.fastjson.JSONObject; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * @author chenwenjian + * @version 1.0 + * @date 2024/4/7 13:38 + */ +@Data +@Builder +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class CreateBannerOperationLogReq { + + + /** + * 类型:banner,material + */ + private RecodeTypeEnum recodeType; + + /** + * 记录id + */ + private Long recodeId; + + /** + * 操作类型,新增,编辑,删除 + */ + private String operationType; + + /** + * 新数据 + */ + private JSONObject newData; + + /** + * 旧数据 + */ + private JSONObject oldData; + + /** + * 创建人 + */ + private Long createBy; + + /** + * 更新人 + */ + private Long updateBy; + +} diff --git a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/PageBannerOperationLogReq.java b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/PageBannerOperationLogReq.java index dff87a28..1854a712 100644 --- a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/PageBannerOperationLogReq.java +++ b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/PageBannerOperationLogReq.java @@ -22,7 +22,6 @@ import java.time.LocalDateTime; @AllArgsConstructor public class PageBannerOperationLogReq { - /** * 类型:banner,material */ diff --git a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/UpdateApplicationVersionReq.java b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/UpdateApplicationVersionReq.java index 1d92623b..c0d47977 100644 --- a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/UpdateApplicationVersionReq.java +++ b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/UpdateApplicationVersionReq.java @@ -56,4 +56,9 @@ public class UpdateApplicationVersionReq { * 更新后是否弹窗提醒,0不提醒,1提醒,默认0 */ private int remind; + + /** + * 更新人 + */ + private Long updateBy; } diff --git a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/ApplicationVersionController.java b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/ApplicationVersionController.java index 471ad1a9..69a17442 100644 --- a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/ApplicationVersionController.java +++ b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/ApplicationVersionController.java @@ -33,7 +33,7 @@ public class ApplicationVersionController implements ApplicationVersionApi { } @Override - public ApiResult deleteById(Long id) { + public ApiResult deleteById(Long id, Long personId) { return null; } diff --git a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/BannerOperationLogService.java b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/BannerOperationLogService.java index da8c021d..0bb491c2 100644 --- a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/BannerOperationLogService.java +++ b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/BannerOperationLogService.java @@ -1,9 +1,13 @@ package cn.axzo.nanopart.server.service; +import cn.axzo.nanopart.api.request.CreateBannerOperationLogReq; + /** * @author chenwenjian * @version 1.0 * @date 2024/4/5 18:06 */ public interface BannerOperationLogService { + + Long create(CreateBannerOperationLogReq req); } diff --git a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/impl/BannerOperationLogServiceImpl.java b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/impl/BannerOperationLogServiceImpl.java index f8d21659..2e62f014 100644 --- a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/impl/BannerOperationLogServiceImpl.java +++ b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/impl/BannerOperationLogServiceImpl.java @@ -1,8 +1,10 @@ package cn.axzo.nanopart.server.service.impl; +import cn.axzo.nanopart.api.request.CreateBannerOperationLogReq; import cn.axzo.nanopart.server.dao.BannerOperationLogDao; import cn.axzo.nanopart.server.domain.BannerOperationLog; import cn.axzo.nanopart.server.service.BannerOperationLogService; +import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -17,4 +19,10 @@ import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class BannerOperationLogServiceImpl extends ServiceImpl implements BannerOperationLogService { + @Override + public Long create(CreateBannerOperationLogReq req) { + BannerOperationLog bannerOperationLog = BeanUtil.copyProperties(req, BannerOperationLog.class); + this.save(bannerOperationLog); + return bannerOperationLog.getId(); + } } diff --git a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/impl/BannerServiceImpl.java b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/impl/BannerServiceImpl.java index 199f1356..e7666dcf 100644 --- a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/impl/BannerServiceImpl.java +++ b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/impl/BannerServiceImpl.java @@ -1,6 +1,8 @@ package cn.axzo.nanopart.server.service.impl; import cn.axzo.framework.domain.ServiceException; +import cn.axzo.nanopart.api.enums.RecodeTypeEnum; +import cn.axzo.nanopart.api.request.CreateBannerOperationLogReq; import cn.axzo.nanopart.api.request.CreateBannerReq; import cn.axzo.nanopart.api.request.DetailBannerReq; import cn.axzo.nanopart.api.request.PageBannerReq; @@ -13,6 +15,7 @@ import cn.axzo.nanopart.server.service.BannerOperationLogService; import cn.axzo.nanopart.server.service.BannerService; import cn.axzo.pokonyan.dao.converter.PageConverter; import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -21,6 +24,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.Objects; @@ -58,13 +62,32 @@ public class BannerServiceImpl extends ServiceImpl implements * * @param req {@link UpdateBannerReq} */ + @Transactional(rollbackFor = Exception.class) @Override public void update(UpdateBannerReq req) { // 校验占位图宽高比例 req.getAspectRatio().checkAspectRatio(); + Banner oldBanner = this.selectById(req.getId()); + if (Objects.isNull(oldBanner)) { + return; + } + LambdaUpdateChainWrapper updateLambdaQueryChain = buildUpdateLambdaQueryChain(req); update(updateLambdaQueryChain); + + Banner newBanner = this.selectById(req.getId()); + + // 记录操作日志 + CreateBannerOperationLogReq updateLogReq = new CreateBannerOperationLogReq() + .setRecodeType(RecodeTypeEnum.BANNER) + .setRecodeId(req.getId()) + .setOperationType("update") + .setOldData((JSONObject) JSONObject.toJSON(oldBanner)) + .setNewData((JSONObject) JSONObject.toJSON(newBanner)) + .setCreateBy(req.getUpdateBy()) + .setUpdateBy(req.getUpdateBy()); + bannerOperationLogService.create(updateLogReq); } /** @@ -88,6 +111,7 @@ public class BannerServiceImpl extends ServiceImpl implements * @param req {@link CreateBannerReq} * @return bannerId */ + @Transactional(rollbackFor = Exception.class) @Override public Long create(CreateBannerReq req) { // 对站点code进行校重 @@ -101,6 +125,14 @@ public class BannerServiceImpl extends ServiceImpl implements this.save(banner); // 记录日志 + CreateBannerOperationLogReq createLogReq = new CreateBannerOperationLogReq() + .setRecodeType(RecodeTypeEnum.BANNER) + .setRecodeId(banner.getId()) + .setOperationType("create") + .setNewData((JSONObject) JSONObject.toJSON(banner)) + .setCreateBy(req.getCreateBy()) + .setUpdateBy(req.getUpdateBy()); + bannerOperationLogService.create(createLogReq); return banner.getId(); }