Jelajahi Sumber

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

Sakana 4 hari lalu
induk
melakukan
5c25bbdab3

+ 2 - 1
edu-travel-adapter/edu-travel-adapter-upload/src/main/java/edu/travel/adapter/service/upload/UploadAdapter.java

@@ -9,6 +9,7 @@ import edu.travel.remote.upload.vo.EduFileVo;
 import edu.travel.rpc.RPCBaseResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -49,7 +50,7 @@ public class UploadAdapter  {
         return rpcBaseResponse;
     }
     @AdapterAnnotation
-    public RPCBaseResponse<EduFileVo> getFormId(String id) {
+    public RPCBaseResponse<EduFileVo> getFormId(@RequestParam("id") String id) {
         return uploadRemoteController.getFormId(id);
     }
     @AdapterAnnotation

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

@@ -2,6 +2,8 @@ package edu.travel.remote.feign.mode.dto.tenant;
 
 import lombok.Data;
 
+import java.util.Date;
+
 @Data
 public class BannerDto {
     /**
@@ -13,7 +15,10 @@ public class BannerDto {
      * 图片/视频
      */
     private String url;
-
+    /**
+     * 图片id(上传方法返回)
+     */
+    private String imageId;
     /**
      * 判断图片/视频,默认0,0图片,1视频
      */
@@ -36,5 +41,17 @@ public class BannerDto {
      * mode 0 首页轮播图
      */
     private String mode;
+    /**
+     * 是否默认
+     */
+    private Integer isDefault;
+    /**
+     * 开始时间
+     */
+    private Date startTime;
+    /**
+     * 结束时间
+     */
+    private Date endTime;
 
 }

+ 4 - 1
edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/mode/vo/banner/BannerVo.java

@@ -27,7 +27,10 @@ public class BannerVo {
      * 国家
      */
     private String countryId;
-
+    /**
+     * 模块
+     */
+    private String mode;
     /**
      * 链接地址
      */

+ 1 - 1
edu-travel-remote/edu-travel-remote-upload/src/main/java/edu/travel/remote/upload/UploadRemoteController.java

@@ -62,5 +62,5 @@ public interface UploadRemoteController extends RemoteBaseController<EduFileVo,
      * 通过id获取文件
      */
     @GetMapping("/getFormId")
-    RPCBaseResponse<EduFileVo> getFormId(String id);
+    RPCBaseResponse<EduFileVo> getFormId(@RequestParam("id")String id);
 }

+ 6 - 0
edu-travel-service/edu-travel-service-tenement/pom.xml

@@ -139,6 +139,12 @@
             <version>1.0-SNAPSHOT</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-adapter-country</artifactId>
+            <version>1.0-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
     <profiles>

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

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

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

@@ -8,10 +8,12 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import edu.travel.adapter.service.country.CountryAdapter;
 import edu.travel.adapter.service.upload.UploadAdapter;
 import edu.travel.remote.feign.mode.dto.tenant.BannerDto;
 import edu.travel.remote.feign.mode.vo.banner.BannerVo;
 import edu.travel.remote.upload.dto.EduFileDTO;
+import edu.travel.remote.upload.vo.EduFileVo;
 import edu.travel.rpc.RPCBaseResponse;
 import edu.travel.tenant.constant.BaseConstant;
 import edu.travel.tenant.entity.ShopBanner;
@@ -33,6 +35,8 @@ import static edu.travel.rpc.RPCBaseResponse.success;
 public class ShopBannerServiceImpl extends ServiceImpl<ShopBannerMapper, ShopBanner> implements ShopBannerService {
     @Autowired
     private UploadAdapter uploadAdapter;
+    @Autowired
+    private CountryAdapter countryAdapter;
     @Override
     public List<BannerVo> getBanner(BannerDto mode) {
        List<BannerVo> list = new ArrayList<>();
@@ -91,4 +95,73 @@ public class ShopBannerServiceImpl extends ServiceImpl<ShopBannerMapper, ShopBan
         }
         return error(); // 如果文件类型不支持,返回错误响应
     }
+
+    @Override
+    public RPCBaseResponse<BannerVo> saveBannerCountry(BannerDto banner) {
+        // 验证输入参数的有效性
+        if (ObjectUtil.isEmpty(banner)) {
+            return error("Banner data cannot be null");
+        }
+
+        // 检查 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 false");
+            }
+        }
+
+        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 方法
+
+            // 创建新的 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());
+
+            // 这里可以进行其他必要的字段设置,比如与 banner 相关的其他信息
+            bannerVo.setId(banner.getId()); // 如果需要设置ID,可以从DTO中获取
+
+            // 保存横幅信息到数据库,假设我们有一个方法 saveBanner
+            ShopBanner shopBanner = new ShopBanner();
+            // 将 bannerVo 转换为 shopBanner (可以使用 BeanUtil.copyProperties 或自定义转换)
+            BeanUtil.copyProperties(bannerVo, shopBanner);
+            // 设置其他必要字段
+            shopBanner.setEnable(0); // 示例:设置为启用状态
+            shopBanner.setCreateTime(new Date()); // 设置当前时间为创建时间
+
+            // 设置 isDefault、startTime 和 endTime 字段
+            shopBanner.setIsDefault(banner.getIsDefault());
+            if (banner.getIsDefault() == 0) {
+                shopBanner.setStartTime(banner.getStartTime());
+                shopBanner.setEndTime(banner.getEndTime());
+            }
+
+            // 调用 mapper 保存到数据库
+            this.save(shopBanner);
+
+            return success(bannerVo); // 返回成功的响应
+        } catch (Exception e) {
+            e.printStackTrace();
+            return error("Failed to save banner country");
+        }
+    }
+
+
+
 }

+ 33 - 4
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/ShopBannerController.java

@@ -41,7 +41,13 @@ public class ShopBannerController extends BaseController<ShopBanner> implements
     public RPCBaseResponse<List<BannerVo>> getBanner(BannerDto banner){
         return success(shopBannerService.getBanner(banner));
     }
-
+    /**
+     * 新增轮播图(通过上传返回id自动填充)
+     */
+    @PostMapping("/saveBannerCountry")
+    public RPCBaseResponse<BannerVo> saveBannerCountry (BannerDto banner){
+        return shopBannerService.saveBannerCountry(banner);
+    }
     /**
      * 上传banner图片
      * @param
@@ -51,6 +57,12 @@ public class ShopBannerController extends BaseController<ShopBanner> implements
     public RPCBaseResponse<String> uploadBannerImage(MultipartFile file){
         return shopBannerService.uploadBannerImage(file);
     }
+
+    /**
+     * 根据id获取banner
+     * @param id
+     * @return
+     */
     @Override
     @GetMapping("/getFormId")
     public RPCBaseResponse<BannerVo> getFormId(String id) {
@@ -60,8 +72,13 @@ public class ShopBannerController extends BaseController<ShopBanner> implements
         return shopBannerVoRPCBaseResponse;
     }
 
+    /**
+     * 更新banner
+     * @param entity
+     * @return
+     */
     @Override
-    @GetMapping("/updateFormTarget")
+    @GetMapping("/updateTargetFormId")
     public RPCBaseResponse<BannerVo> updateTargetFormId(@RequestBody BannerDto entity) {
         ShopBanner shopBanner = new ShopBanner();
         BeanUtils.copyProperties(entity, shopBanner);
@@ -71,6 +88,11 @@ public class ShopBannerController extends BaseController<ShopBanner> implements
         return shopBannerVoRPCBaseResponse;
     }
 
+    /**
+     * 新增banner
+     * @param entity
+     * @return
+     */
     @Override
     @GetMapping("/saveFormTarget")
     public RPCBaseResponse<BannerVo> saveFormTarget(BannerDto entity) {
@@ -82,7 +104,11 @@ public class ShopBannerController extends BaseController<ShopBanner> implements
         return shopBannerVoRPCBaseResponse;
     }
 
-
+    /**
+     * 删除轮播图
+     * @param ids
+     * @return
+     */
     @Override
     @GetMapping("/deleteFormTarget")
     public RPCBaseResponse<BannerVo> deleteTargetFormId(List<String> ids) {
@@ -92,6 +118,10 @@ public class ShopBannerController extends BaseController<ShopBanner> implements
         return shopBannerVoRPCBaseResponse;
     }
 
+    /**
+     * 获取所有轮播图
+     * @return
+     */
     @Override
     @GetMapping("/getAllForm")
     public RPCBaseResponse<List<BannerVo>> getAllForm() {
@@ -100,5 +130,4 @@ public class ShopBannerController extends BaseController<ShopBanner> implements
         BeanUtils.copyProperties(countryRPCBaseResponse, baseCountryVoRPCBaseResponse);
         return baseCountryVoRPCBaseResponse;
     }
-
 }

+ 1 - 1
edu-travel-service/edu-travel-service-upload/src/main/java/edu/travel/upload/web/UploadController.java

@@ -160,7 +160,7 @@ public class UploadController extends BaseController<EduFile> implements UploadR
      */
     @Override
     @GetMapping("/getFormId")
-    public RPCBaseResponse<EduFileVo> getFormId(String id) {
+    public RPCBaseResponse<EduFileVo> getFormId(@RequestParam("id")String id) {
         RPCBaseResponse<EduFile> eduFileRPCBaseResponse = super.getId(id);
         RPCBaseResponse<EduFileVo> eduFileVoRPCBaseResponse = new RPCBaseResponse<>();
         BeanUtils.copyProperties(eduFileRPCBaseResponse, eduFileVoRPCBaseResponse);