Browse Source

fix: 政策添加政策详情,可修改数量

luofeiyun 6 days ago
parent
commit
91c8fffc7f

+ 66 - 3
ship-module-marketing/ship-module-marketing-biz/src/main/java/com/yc/ship/module/marketing/controller/admin/policydetail/PolicyDetailController.java

@@ -1,5 +1,14 @@
 package com.yc.ship.module.marketing.controller.admin.policydetail;
 
+import com.yc.ship.framework.common.util.collection.CollectionUtils;
+import com.yc.ship.framework.common.util.collection.MapUtils;
+import com.yc.ship.module.marketing.controller.admin.policy.vo.PolicyRespVO;
+import com.yc.ship.module.marketing.dal.dataobject.policy.PolicyDO;
+import com.yc.ship.module.marketing.service.policy.PolicyService;
+import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO;
+import com.yc.ship.module.product.service.voyage.VoyageService;
+import com.yc.ship.module.resource.dal.dataobject.ship.ResourceShipDO;
+import com.yc.ship.module.resource.service.ship.ResourceShipService;
 import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
@@ -38,6 +47,15 @@ public class PolicyDetailController {
     @Resource
     private PolicyDetailService policyDetailService;
 
+    @Resource
+    private PolicyService policyService;
+
+    @Resource
+    private ResourceShipService resourceShipService;
+
+    @Resource
+    private VoyageService voyageService;
+
     @PostMapping("/create")
     @Operation(summary = "创建政策详情")
     @PreAuthorize("@ss.hasPermission('marketing:policy-detail:create')")
@@ -68,15 +86,60 @@ public class PolicyDetailController {
     @PreAuthorize("@ss.hasPermission('marketing:policy-detail:query')")
     public CommonResult<PolicyDetailRespVO> getPolicyDetail(@RequestParam("id") Long id) {
         PolicyDetailDO policyDetail = policyDetailService.getPolicyDetail(id);
-        return success(BeanUtils.toBean(policyDetail, PolicyDetailRespVO.class));
+        PolicyDetailRespVO policyDetailRespVO = BeanUtils.toBean(policyDetail, PolicyDetailRespVO.class);
+        PolicyDO policy = policyService.getPolicy(policyDetail.getPolicyId());
+        if(policy != null) {
+            policyDetailRespVO.setPolicyName(policy.getName());
+            policyDetailRespVO.setEarlyDays(policy.getEarlyDays());
+            policyDetailRespVO.setDiscountType(policy.getDiscountType());
+            policyDetailRespVO.setDiscount(policy.getDiscount());
+            policyDetailRespVO.setEffectiveTime(policy.getEffectiveTime());
+        }
+        ResourceShipDO ship = resourceShipService.getShip(policyDetail.getShipId());
+        if(ship != null) {
+            policyDetailRespVO.setShipName(ship.getName());
+        }
+        VoyageDO voyage = voyageService.getVoyage(policyDetail.getVoyageId());
+        if(voyage != null) {
+            policyDetailRespVO.setVoyageName(voyage.getName());
+        }
+        return success(policyDetailRespVO);
     }
 
     @GetMapping("/page")
     @Operation(summary = "获得政策详情分页")
     @PreAuthorize("@ss.hasPermission('marketing:policy-detail:query')")
     public CommonResult<PageResult<PolicyDetailRespVO>> getPolicyDetailPage(@Valid PolicyDetailPageReqVO pageReqVO) {
-        PageResult<PolicyDetailDO> pageResult = policyDetailService.getPolicyDetailPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, PolicyDetailRespVO.class));
+        PageResult<PolicyDetailDO> page = policyDetailService.getPolicyDetailPage(pageReqVO);
+        PageResult<PolicyDetailRespVO> pageResult = BeanUtils.toBean(page, PolicyDetailRespVO.class);
+        List<PolicyDetailRespVO> list = pageResult.getList();
+        List<Long> policyIds = CollectionUtils.convertList(list, PolicyDetailRespVO::getPolicyId);
+        List<PolicyDO> policyDOS = policyService.getByIds(policyIds);
+        Map<Long, PolicyDO> policyDOMap = CollectionUtils.convertMap(policyDOS, PolicyDO::getId);
+        List<Long> shipIds = CollectionUtils.convertList(list, PolicyDetailRespVO::getShipId);
+        List<ResourceShipDO> shipList = resourceShipService.getList(shipIds);
+        Map<Long, ResourceShipDO> shipDOMap = CollectionUtils.convertMap(shipList, ResourceShipDO::getId);
+
+        List<Long> voyageIds = CollectionUtils.convertList(list, PolicyDetailRespVO::getVoyageId);
+        List<VoyageDO> voyageDOS = voyageService.getList(voyageIds);
+        Map<Long, VoyageDO> voyageDOMap = CollectionUtils.convertMap(voyageDOS, VoyageDO::getId);
+
+        list.stream().forEach(policyDetailRespVO -> {
+            MapUtils.findAndThen(shipDOMap, policyDetailRespVO.getShipId(), resourceShipDO -> {
+                policyDetailRespVO.setShipName(resourceShipDO.getName());
+            });
+            MapUtils.findAndThen(voyageDOMap, policyDetailRespVO.getVoyageId(), voyageDO -> {
+                policyDetailRespVO.setVoyageName(voyageDO.getName());
+            });
+            MapUtils.findAndThen(policyDOMap, policyDetailRespVO.getPolicyId(), policyDO -> {
+                policyDetailRespVO.setPolicyName(policyDO.getName());
+                policyDetailRespVO.setEarlyDays(policyDO.getEarlyDays());
+                policyDetailRespVO.setDiscountType(policyDO.getDiscountType());
+                policyDetailRespVO.setDiscount(policyDO.getDiscount());
+                policyDetailRespVO.setEffectiveTime(policyDO.getEffectiveTime());
+            });
+        });
+        return success(pageResult);
     }
 
     @GetMapping("/export-excel")

+ 42 - 0
ship-module-marketing/ship-module-marketing-biz/src/main/java/com/yc/ship/module/marketing/controller/admin/policydetail/vo/PolicyDetailRespVO.java

@@ -1,7 +1,11 @@
 package com.yc.ship.module.marketing.controller.admin.policydetail.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
+
+import java.math.BigDecimal;
 import java.util.*;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.time.LocalDateTime;
@@ -20,14 +24,23 @@ public class PolicyDetailRespVO {
     @ExcelProperty("政策ID")
     private Long policyId;
 
+    @Schema(description = "政策名称", example = "政策名称")
+    private String policyName;
+
     @Schema(description = "游轮ID", example = "7173")
     @ExcelProperty("游轮ID")
     private Long shipId;
 
+    @Schema(description = "游轮名称", example = "游轮名称")
+    private String shipName;
+
     @Schema(description = "航次ID", example = "13069")
     @ExcelProperty("航次ID")
     private Long voyageId;
 
+    @Schema(description = "航次名称", example = "航次名称")
+    private String voyageName;
+
     @Schema(description = "房型ID", example = "16253")
     @ExcelProperty("房型ID")
     private Long roomModelId;
@@ -40,4 +53,33 @@ public class PolicyDetailRespVO {
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
+    /**
+     * 区域IDS
+     */
+    @Schema(description = "区域IDS")
+    private List<Long> areaIds;
+    /**
+     * 房型IDS
+     */
+    @Schema(description = "房型IDS")
+    private List<Long> roomModelIds;
+
+    @Schema(description = "提前天数", example = "1")
+    private Integer earlyDays;
+
+    @Schema(description = "优惠方式(1金额2折扣)", example = "2")
+    @ExcelProperty("优惠方式(1金额2折扣)")
+    private Integer discountType;
+
+    @Schema(description = "优惠金额或者折扣", example = "3756")
+    @ExcelProperty("优惠金额或者折扣")
+    private BigDecimal discount;
+
+    @Schema(description = "有效期")
+    @ExcelProperty("有效期")
+    private LocalDateTime effectiveTime;
+
+    @Schema(description = "剩余优惠间数", example = "1")
+    private BigDecimal surplusNum;
+
 }

+ 4 - 14
ship-module-marketing/ship-module-marketing-biz/src/main/java/com/yc/ship/module/marketing/controller/admin/policydetail/vo/PolicyDetailSaveReqVO.java

@@ -2,6 +2,8 @@ package com.yc.ship.module.marketing.controller.admin.policydetail.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
+
+import java.math.BigDecimal;
 import java.util.*;
 import javax.validation.constraints.*;
 
@@ -12,19 +14,7 @@ public class PolicyDetailSaveReqVO {
     @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5755")
     private Long id;
 
-    @Schema(description = "政策ID", example = "19009")
-    private Long policyId;
-
-    @Schema(description = "游轮ID", example = "7173")
-    private Long shipId;
-
-    @Schema(description = "航次ID", example = "13069")
-    private Long voyageId;
-
-    @Schema(description = "房型ID", example = "16253")
-    private Long roomModelId;
-
-    @Schema(description = "区域IDS", example = "4141")
-    private String areaId;
+    @Schema(description = "剩余优惠间数", example = "1")
+    private BigDecimal surplusNum;
 
 }

+ 3 - 0
ship-module-marketing/ship-module-marketing-biz/src/main/java/com/yc/ship/module/marketing/service/policy/PolicyService.java

@@ -6,6 +6,7 @@ import com.yc.ship.module.marketing.controller.admin.policy.vo.*;
 import com.yc.ship.module.marketing.dal.dataobject.policy.PolicyDO;
 import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.framework.common.pojo.PageParam;
+import com.yc.ship.module.marketing.dal.dataobject.policydetail.PolicyDetailDO;
 
 /**
  * 营销政策 Service 接口
@@ -66,4 +67,6 @@ public interface PolicyService {
      * @return
      */
     List<PolicyRespVO> getUsablePolicyByVoyageId(Long voyageId, Long orderId);
+
+    List<PolicyDO> getByIds(List<Long> policyIds);
 }

+ 8 - 0
ship-module-marketing/ship-module-marketing-biz/src/main/java/com/yc/ship/module/marketing/service/policy/PolicyServiceImpl.java

@@ -199,4 +199,12 @@ public class PolicyServiceImpl implements PolicyService {
         return policyRespVOS;
     }
 
+    @Override
+    public List<PolicyDO> getByIds(List<Long> policyIds) {
+        if(CollectionUtils.isAnyEmpty(policyIds)) {
+            return Collections.emptyList();
+        }
+        return policyMapper.selectList(policyIds);
+    }
+
 }