Kaynağa Gözat

banner更新方法完善(默认字段验证)

Sakana 4 gün önce
ebeveyn
işleme
5a2e4e65f6

+ 12 - 1
edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/mode/dto/tenant/BannerDto.java

@@ -1,5 +1,6 @@
 package edu.travel.remote.feign.mode.dto.tenant;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 import java.util.Date;
@@ -42,7 +43,7 @@ public class BannerDto {
      */
     private String mode;
     /**
-     * 是否默认
+     * 是否默认 0 否 1是
      */
     private Integer isDefault;
     /**
@@ -53,5 +54,15 @@ public class BannerDto {
      * 结束时间
      */
     private Date endTime;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    /**
+     * 更新时间
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
 
 }

+ 13 - 0
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/entity/ShopBanner.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import edu.travel.entity.BaseEntity;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -89,5 +90,17 @@ public class ShopBanner extends BaseEntity {
      */
     @TableField(value = "`enable`")
     private Integer enable;
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    /**
+     * 更新时间
+     */
+    @TableField(value = "update_time")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
 
 }

+ 2 - 0
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/ShopBannerService.java

@@ -18,4 +18,6 @@ public interface ShopBannerService extends IService<ShopBanner>{
     RPCBaseResponse<String> uploadBannerImage(MultipartFile file);
 
     RPCBaseResponse<BannerVo> saveBannerCountry(BannerDto banner);
+
+    RPCBaseResponse<BannerVo> updateBannerCountry(BannerDto banner);
 }

+ 77 - 0
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/impl/ShopBannerServiceImpl.java

@@ -96,6 +96,11 @@ public class ShopBannerServiceImpl extends ServiceImpl<ShopBannerMapper, ShopBan
         return error(); // 如果文件类型不支持,返回错误响应
     }
 
+    /**
+     * 新增轮播图信息
+     * @param banner
+     * @return
+     */
     @Override
     public RPCBaseResponse<BannerVo> saveBannerCountry(BannerDto banner) {
         // 验证输入参数的有效性
@@ -162,6 +167,78 @@ public class ShopBannerServiceImpl extends ServiceImpl<ShopBannerMapper, ShopBan
         }
     }
 
+    /**
+     * 更新横幅信息
+     * @param banner
+     * @return
+     */
+    @Override
+    public RPCBaseResponse<BannerVo> updateBannerCountry(BannerDto banner) {
+        // 验证输入参数的有效性
+        if (ObjectUtil.isEmpty(banner) || ObjectUtil.isEmpty(banner.getId())) {
+            return error("Banner data cannot be null and id must be provided");
+        }
+
+        // 检查 isDefault 是否被输入
+        if (banner.getIsDefault() == null) {
+            return error("isDefault must be provided");
+        }
+
+        // 如果 isDefault 为 0,检查 startTime 和 endTime
+        if (banner.getIsDefault() == 0) {
+            if (ObjectUtil.isEmpty(banner.getStartTime()) || ObjectUtil.isEmpty(banner.getEndTime())) {
+                return error("startTime and endTime must be provided when isDefault is 0");
+            }
+        }
+
+        try {
+            // 使用 uploadAdapter.getFormId 查找出 file_path 和 fileType
+            RPCBaseResponse<EduFileVo> fileResponse = uploadAdapter.getFormId(banner.getImageId());
+            if (fileResponse.getData() == null) {
+                return error("Failed to retrieve file information");
+            }
+            EduFileVo fileData = fileResponse.getData();
+            String filePath = fileData.getFilePath(); // 假设 EduFileDTO 有 getFilePath 方法
+            String fileType = fileData.getFileType(); // 假设 EduFileDTO 有 getFileType 方法
+
+            // 查找现有的 ShopBanner 对象进行更新
+            ShopBanner shopBanner = this.getById(banner.getId());
+            if (shopBanner == null) {
+                return error("Banner not found");
+            }
+
+            // 更新 BannerVo 对象
+            BannerVo bannerVo = new BannerVo();
+            bannerVo.setUrl(filePath); // 设置文件路径
+            bannerVo.setUrlType("image".equalsIgnoreCase(fileType) ? 0 : 1); // 假设0为图片,1为视频
+            bannerVo.setContent(banner.getContent()); // 设置名称
+            bannerVo.setCountryId(banner.getCountryId()); // 设置国家
+            bannerVo.setLinkUrl(banner.getLinkUrl()); // 设置链接地址
+            bannerVo.setMode(banner.getMode());
+            bannerVo.setId(banner.getId()); // 保持ID一致
+
+            // 将 bannerVo 转换为 shopBanner,并设置其他字段
+            BeanUtil.copyProperties(bannerVo, shopBanner);
+            shopBanner.setEnable(0); // 示例:设置为启用状态
+            shopBanner.setUpdateTime(new Date()); // 设置当前时间为更新时间
+
+            // 设置 isDefault、startTime 和 endTime 字段
+            shopBanner.setIsDefault(banner.getIsDefault());
+            if (banner.getIsDefault() == 0) {
+                shopBanner.setStartTime(banner.getStartTime());
+                shopBanner.setEndTime(banner.getEndTime());
+            }
+
+            // 调用 mapper 更新到数据库
+            this.updateById(shopBanner);
+
+            return success(bannerVo); // 返回成功的响应
+        } catch (Exception e) {
+            e.printStackTrace();
+            return error("Failed to update banner country");
+        }
+    }
+
 
 
 }

+ 7 - 0
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/ShopBannerController.java

@@ -49,6 +49,13 @@ public class ShopBannerController extends BaseController<ShopBanner> implements
         return shopBannerService.saveBannerCountry(banner);
     }
     /**
+     * 更新轮播图信息(通过上传返回id自动填充)
+     */
+    @PostMapping("/updateBannerCountry")
+    public RPCBaseResponse<BannerVo> updateBannerCountry(BannerDto banner){
+        return shopBannerService.updateBannerCountry(banner);
+    }
+    /**
      * 上传banner图片
      * @param
      * @return