diff --git a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/BannerApi.java b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/BannerApi.java index d2c11f75..924d71b7 100644 --- a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/BannerApi.java +++ b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/BannerApi.java @@ -6,6 +6,7 @@ import cn.axzo.nanopart.api.request.CreateBannerReq; import cn.axzo.nanopart.api.request.DetailBannerReq; import cn.axzo.nanopart.api.request.PageBannerReq; import cn.axzo.nanopart.api.request.UpdateBannerReq; +import cn.axzo.nanopart.api.request.UpdateStatusReq; import cn.axzo.nanopart.api.response.DetailBannerResp; import cn.axzo.nanopart.api.response.PageBannerResp; import org.springframework.cloud.openfeign.FeignClient; @@ -49,6 +50,15 @@ public interface BannerApi { @PostMapping("/api/banner/update") ApiResult update(@RequestBody @Valid UpdateBannerReq req); + /** + * 更新banner状态 + * + * @param req {@link UpdateStatusReq} + * @return void + */ + @PostMapping("/api/banner/updateStatus") + ApiResult updateStatus(@RequestBody @Valid UpdateStatusReq req); + /** * 详情 * diff --git a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/MaterialApi.java b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/MaterialApi.java index 0fd422b2..ec3a44d8 100644 --- a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/MaterialApi.java +++ b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/MaterialApi.java @@ -7,6 +7,7 @@ import cn.axzo.nanopart.api.request.DetailMaterialReq; import cn.axzo.nanopart.api.request.ListMaterialByBannerCodeReq; import cn.axzo.nanopart.api.request.PageMaterialReq; import cn.axzo.nanopart.api.request.UpdateMaterialReq; +import cn.axzo.nanopart.api.request.UpdateStatusReq; import cn.axzo.nanopart.api.response.MaterialResp; import cn.axzo.nanopart.api.response.PageMaterialResp; import org.springframework.cloud.openfeign.FeignClient; @@ -51,6 +52,15 @@ public interface MaterialApi { @PostMapping("/api/material/update") ApiResult update(@RequestBody @Valid UpdateMaterialReq req); + /** + * 更新banner状态 + * + * @param req {@link UpdateStatusReq} + * @return void + */ + @PostMapping("/api/material/updateStatus") + ApiResult updateStatus(@RequestBody @Valid UpdateStatusReq req); + /** * 详情 * @@ -78,5 +88,4 @@ public interface MaterialApi { @PostMapping("/api/material/listByBannerCode") ApiResult> listMaterialByBannerCode(@RequestBody @Valid ListMaterialByBannerCodeReq req); - } 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 d58dc9cf..d4f38a20 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 @@ -11,7 +11,7 @@ import lombok.experimental.Accessors; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import java.time.LocalDateTime; +import java.util.Date; /** * @author chenwenjian @@ -47,7 +47,7 @@ public class CreateApplicationVersionReq { * 发布时间 */ @NotNull(message ="发版时间不能为空") - private LocalDateTime releaseTime; + private Date releaseTime; /** * 版本描述 diff --git a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/CreateMaterialReq.java b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/CreateMaterialReq.java index c2b962f9..e3eeea5b 100644 --- a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/CreateMaterialReq.java +++ b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/CreateMaterialReq.java @@ -14,7 +14,7 @@ import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import java.time.LocalDateTime; +import java.util.Date; import java.util.List; /** @@ -45,12 +45,12 @@ public class CreateMaterialReq { /** * 有效期-开始时间 */ - private LocalDateTime startTime; + private Date startTime; /** * 有效期-结束时间 */ - private LocalDateTime endTime; + private Date endTime; /** * 优先级,数字越小,优先级越高; 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 1854a712..e124820e 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 @@ -8,7 +8,7 @@ import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import javax.validation.constraints.NotNull; -import java.time.LocalDateTime; +import java.util.Date; /** * @author chenwenjian @@ -37,12 +37,12 @@ public class PageBannerOperationLogReq { /** * 操作时间范围-开始时间 */ - private LocalDateTime startTime; + private Date startTime; /** * 操作时间范围-结束时间 */ - private LocalDateTime endTime; + private Date endTime; /** * 页码 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 c0d47977..7e2f51ab 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 @@ -9,7 +9,7 @@ import lombok.experimental.Accessors; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import java.time.LocalDateTime; +import java.util.Date; /** * @author chenwenjian @@ -36,7 +36,7 @@ public class UpdateApplicationVersionReq { * 发布时间 */ @NotNull(message ="发版时间不能为空") - private LocalDateTime releaseTime; + private Date releaseTime; /** * 版本描述 diff --git a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/UpdateMaterialReq.java b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/UpdateMaterialReq.java index 58abe325..cc8171c4 100644 --- a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/UpdateMaterialReq.java +++ b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/UpdateMaterialReq.java @@ -2,6 +2,7 @@ package cn.axzo.nanopart.api.request; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; @@ -12,6 +13,7 @@ import javax.validation.constraints.NotNull; * @version 1.0 * @date 2024/4/3 11:47 */ +@EqualsAndHashCode(callSuper = true) @Data @Accessors(chain = true) @NoArgsConstructor diff --git a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/UpdateStatusReq.java b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/UpdateStatusReq.java new file mode 100644 index 00000000..47707592 --- /dev/null +++ b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/request/UpdateStatusReq.java @@ -0,0 +1,35 @@ +package cn.axzo.nanopart.api.request; + +import cn.axzo.nanopart.api.enums.StatusEnum; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotNull; + +/** + * 广告位和素材更新上下架状态 + * + * @author chenwenjian + * @version 1.0 + * @date 2024/4/8 16:18 + */ +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class UpdateStatusReq { + + @NotNull(message = "id不能为空") + private Long id; + + /** + * 状态 + * {@link StatusEnum} + */ + @NotNull(message = "状态不能为空") + private StatusEnum status; + + private Long updateBy; +} diff --git a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/response/GetVersionUpdateRemindContentResp.java b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/response/GetVersionUpdateRemindContentResp.java index b1e06e91..aa013e33 100644 --- a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/response/GetVersionUpdateRemindContentResp.java +++ b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/response/GetVersionUpdateRemindContentResp.java @@ -8,7 +8,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; -import java.time.LocalDateTime; +import java.util.Date; /** * @author chenwenjian @@ -42,5 +42,10 @@ public class GetVersionUpdateRemindContentResp { /** * 发布时间 */ - private LocalDateTime releaseTime; + private Date releaseTime; + + /** + * 版本描述 + */ + private String description; } diff --git a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/response/PageApplicationVersionResp.java b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/response/PageApplicationVersionResp.java index 8e9061e8..5688270f 100644 --- a/banner/banner-api/src/main/java/cn/axzo/nanopart/api/response/PageApplicationVersionResp.java +++ b/banner/banner-api/src/main/java/cn/axzo/nanopart/api/response/PageApplicationVersionResp.java @@ -9,7 +9,6 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; -import java.time.LocalDateTime; import java.util.Date; /** @@ -44,7 +43,7 @@ public class PageApplicationVersionResp { /** * 发布时间 */ - private LocalDateTime releaseTime; + private Date releaseTime; /** * 版本描述 diff --git a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/BannerController.java b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/BannerController.java index e2cfa9d5..75b13590 100644 --- a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/BannerController.java +++ b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/BannerController.java @@ -7,6 +7,7 @@ import cn.axzo.nanopart.api.request.CreateBannerReq; import cn.axzo.nanopart.api.request.DetailBannerReq; import cn.axzo.nanopart.api.request.PageBannerReq; import cn.axzo.nanopart.api.request.UpdateBannerReq; +import cn.axzo.nanopart.api.request.UpdateStatusReq; import cn.axzo.nanopart.api.response.DetailBannerResp; import cn.axzo.nanopart.api.response.PageBannerResp; import cn.axzo.nanopart.server.service.BannerService; @@ -44,6 +45,12 @@ public class BannerController implements BannerApi { return ApiResult.ok(); } + @Override + public ApiResult updateStatus(UpdateStatusReq req) { + bannerService.updateStatus(req); + return ApiResult.ok(); + } + @Override public ApiResult detail(DetailBannerReq req) { return ApiResult.ok(bannerService.detail(req)); diff --git a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/MaterialController.java b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/MaterialController.java index 4ec50804..f6a12d2f 100644 --- a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/MaterialController.java +++ b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/controller/MaterialController.java @@ -8,6 +8,7 @@ import cn.axzo.nanopart.api.request.DetailMaterialReq; import cn.axzo.nanopart.api.request.ListMaterialByBannerCodeReq; import cn.axzo.nanopart.api.request.PageMaterialReq; import cn.axzo.nanopart.api.request.UpdateMaterialReq; +import cn.axzo.nanopart.api.request.UpdateStatusReq; import cn.axzo.nanopart.api.response.MaterialResp; import cn.axzo.nanopart.api.response.PageMaterialResp; import cn.axzo.nanopart.server.service.MaterialService; @@ -47,6 +48,12 @@ public class MaterialController implements MaterialApi { return ApiResult.ok(); } + @Override + public ApiResult updateStatus(UpdateStatusReq req) { + materialService.updateStatus(req); + return ApiResult.ok(); + } + @Override public ApiResult detail(DetailMaterialReq req) { return ApiResult.ok(materialService.detail(req)); diff --git a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/domain/ApplicationVersion.java b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/domain/ApplicationVersion.java index a2ef09b2..18232ccb 100644 --- a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/domain/ApplicationVersion.java +++ b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/domain/ApplicationVersion.java @@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; -import java.time.LocalDateTime; +import java.util.Date; /** * 应用版本信息 @@ -54,7 +54,7 @@ public class ApplicationVersion extends BaseEntity { * 发布时间 */ @TableField(value = "release_time") - private LocalDateTime releaseTime; + private Date releaseTime; /** * 版本描述 diff --git a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/BannerService.java b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/BannerService.java index c9b2be05..d0aafc2f 100644 --- a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/BannerService.java +++ b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/BannerService.java @@ -4,6 +4,7 @@ import cn.axzo.nanopart.api.request.CreateBannerReq; import cn.axzo.nanopart.api.request.DetailBannerReq; import cn.axzo.nanopart.api.request.PageBannerReq; import cn.axzo.nanopart.api.request.UpdateBannerReq; +import cn.axzo.nanopart.api.request.UpdateStatusReq; import cn.axzo.nanopart.api.response.DetailBannerResp; import cn.axzo.nanopart.api.response.PageBannerResp; import cn.axzo.nanopart.server.domain.Banner; @@ -27,4 +28,6 @@ public interface BannerService { void update(UpdateBannerReq req); DetailBannerResp detail(DetailBannerReq req); + + void updateStatus(UpdateStatusReq req); } diff --git a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/MaterialService.java b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/MaterialService.java index d189ed48..49b812de 100644 --- a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/MaterialService.java +++ b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/MaterialService.java @@ -5,6 +5,7 @@ import cn.axzo.nanopart.api.request.DetailMaterialReq; import cn.axzo.nanopart.api.request.ListMaterialByBannerCodeReq; import cn.axzo.nanopart.api.request.PageMaterialReq; import cn.axzo.nanopart.api.request.UpdateMaterialReq; +import cn.axzo.nanopart.api.request.UpdateStatusReq; import cn.axzo.nanopart.api.response.MaterialResp; import cn.axzo.nanopart.api.response.PageMaterialResp; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -36,4 +37,6 @@ public interface MaterialService { void update(UpdateMaterialReq req); MaterialResp detail(DetailMaterialReq req); + + void updateStatus(UpdateStatusReq req); } 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 8e6b68dc..371b1112 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 @@ -7,6 +7,7 @@ import cn.axzo.nanopart.api.request.CreateBannerReq; import cn.axzo.nanopart.api.request.DetailBannerReq; import cn.axzo.nanopart.api.request.PageBannerReq; import cn.axzo.nanopart.api.request.UpdateBannerReq; +import cn.axzo.nanopart.api.request.UpdateStatusReq; import cn.axzo.nanopart.api.response.DetailBannerResp; import cn.axzo.nanopart.api.response.PageBannerResp; import cn.axzo.nanopart.server.mapper.BannerDao; @@ -90,6 +91,34 @@ public class BannerServiceImpl extends ServiceImpl implements bannerOperationLogService.create(updateLogReq); } + /** + * 更新banner状态 + * + * @param req void + */ + @Transactional(rollbackFor = Exception.class) + @Override + public void updateStatus(UpdateStatusReq req) { + Banner oldBanner = this.selectById(req.getId()); + if (Objects.isNull(oldBanner)) { + return; + } + + oldBanner.setStatus(req.getStatus()); + updateById(oldBanner); + Banner newBanner = this.selectById(req.getId()); + // 记录操作日志 + CreateBannerOperationLogReq updateLogReq = new CreateBannerOperationLogReq() + .setRecodeType(RecodeTypeEnum.BANNER) + .setRecodeId(req.getId()) + .setOperationType("updateStatus") + .setOldData((JSONObject) JSONObject.toJSON(oldBanner)) + .setNewData((JSONObject) JSONObject.toJSON(newBanner)) + .setCreateBy(req.getUpdateBy()) + .setUpdateBy(req.getUpdateBy()); + bannerOperationLogService.create(updateLogReq); + } + /** * 详情 * diff --git a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/impl/MaterialServiceImpl.java b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/impl/MaterialServiceImpl.java index 541d7a6b..f48626a1 100644 --- a/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/impl/MaterialServiceImpl.java +++ b/banner/banner-server/src/main/java/cn/axzo/nanopart/server/service/impl/MaterialServiceImpl.java @@ -9,6 +9,7 @@ import cn.axzo.nanopart.api.request.DetailMaterialReq; import cn.axzo.nanopart.api.request.ListMaterialByBannerCodeReq; import cn.axzo.nanopart.api.request.PageMaterialReq; import cn.axzo.nanopart.api.request.UpdateMaterialReq; +import cn.axzo.nanopart.api.request.UpdateStatusReq; import cn.axzo.nanopart.api.response.MaterialResp; import cn.axzo.nanopart.api.response.PageMaterialResp; import cn.axzo.nanopart.server.domain.Banner; @@ -148,6 +149,33 @@ public class MaterialServiceImpl extends ServiceImpl impl bannerOperationLogService.create(updateLogReq); } + /** + * 更新状态 + * + * @param req {@link UpdateStatusReq} + */ + @Transactional(rollbackFor = Exception.class) + @Override + public void updateStatus(UpdateStatusReq req) { + Material oldMaterial = this.getById(req.getId()); + if (Objects.isNull(oldMaterial)) { + return; + } + + oldMaterial.setStatus(req.getStatus()); + updateById(oldMaterial); + Material newMaterial = this.getById(req.getId()); + // 记录操作日志 + CreateBannerOperationLogReq updateLogReq = new CreateBannerOperationLogReq() + .setRecodeType(RecodeTypeEnum.BANNER) + .setRecodeId(req.getId()) + .setOperationType("updateStatus") + .setOldData((JSONObject) JSONObject.toJSON(oldMaterial)) + .setNewData((JSONObject) JSONObject.toJSON(newMaterial)) + .setCreateBy(req.getUpdateBy()) + .setUpdateBy(req.getUpdateBy()); + bannerOperationLogService.create(updateLogReq); + } /** * 详情 *