Parcourir la source

新增情侣套餐用户端接口

codingliang il y a 10 mois
Parent
commit
b28f5ba933

+ 5 - 0
src/main/java/com/sqx/modules/lovers/dao/LoversSetDao.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sqx.modules.lovers.dto.LoversSetQueryDTO;
 import com.sqx.modules.lovers.entity.LoversSet;
+import com.sqx.modules.lovers.vo.AppLoversSetShortVO;
 import com.sqx.modules.lovers.vo.LoversSetVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -12,4 +13,8 @@ import org.apache.ibatis.annotations.Param;
 @Mapper
 public interface LoversSetDao extends BaseMapper<LoversSet> {
     IPage<LoversSetVO> pages(@Param("pages") Page<LoversSetVO> pages, @Param("queryDTO") LoversSetQueryDTO queryDTO);
+
+    IPage<AppLoversSetShortVO> listForApp(@Param("pages") Page<AppLoversSetShortVO> pages, @Param("queryDTO") LoversSetQueryDTO queryDTO);
+
+    LoversSetVO getDetailById(Long id);
 }

+ 15 - 0
src/main/java/com/sqx/modules/lovers/service/LoversSetService.java

@@ -5,6 +5,7 @@ import com.sqx.common.utils.PageUtils;
 import com.sqx.modules.lovers.dto.LoversSetAddDTO;
 import com.sqx.modules.lovers.dto.LoversSetQueryDTO;
 import com.sqx.modules.lovers.entity.LoversSet;
+import com.sqx.modules.lovers.vo.LoversSetVO;
 
 import java.util.List;
 
@@ -23,4 +24,18 @@ public interface LoversSetService extends IService<LoversSet> {
      * @param status 状态 1-正常 2-停用
      */
     void updateStatus(Long id, String status);
+
+    /**
+     * 用户端套餐列表
+     * @param queryDTO 查询参数
+     * @return 套餐分页列表
+     */
+    PageUtils listForApp(LoversSetQueryDTO queryDTO);
+
+    /**
+     * 根据套餐id查询详情
+     * @param id 套餐id
+     * @return 套餐详情
+     */
+    LoversSetVO getDetailById(Long id);
 }

+ 13 - 0
src/main/java/com/sqx/modules/lovers/service/impl/LoversSetServiceImpl.java

@@ -12,6 +12,7 @@ import com.sqx.modules.lovers.dto.LoversSetQueryDTO;
 import com.sqx.modules.lovers.entity.LoversSet;
 import com.sqx.modules.lovers.service.LoversSetContentService;
 import com.sqx.modules.lovers.service.LoversSetService;
+import com.sqx.modules.lovers.vo.AppLoversSetShortVO;
 import com.sqx.modules.lovers.vo.LoversSetVO;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -75,4 +76,16 @@ public class LoversSetServiceImpl extends ServiceImpl<LoversSetDao, LoversSet> i
         loversSet.setSetStatus(status);
         this.updateById(loversSet);
     }
+
+    @Override
+    public PageUtils listForApp(LoversSetQueryDTO queryDTO) {
+        IPage<AppLoversSetShortVO> page = baseMapper.listForApp(new Page<>(queryDTO.getPage(), queryDTO.getLimit()), queryDTO);
+        PageUtils pageUtils = new PageUtils(page);
+        return pageUtils;
+    }
+
+    @Override
+    public LoversSetVO getDetailById(Long id) {
+        return baseMapper.getDetailById(id);
+    }
 }

+ 58 - 0
src/main/java/com/sqx/modules/lovers/vo/AppLoversSetShortVO.java

@@ -0,0 +1,58 @@
+package com.sqx.modules.lovers.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 用户端套餐简略信息
+ * @author codingliang
+ * @date 2025-08-25
+ */
+@Data
+public class AppLoversSetShortVO {
+
+    @ApiModelProperty("主键id")
+    private Long id;
+
+    @ApiModelProperty("套餐名称")
+    private String name;
+
+    @ApiModelProperty("套餐子名称")
+    private String subName;
+
+    @ApiModelProperty("套餐标签;多个标签之间使用,分割")
+    private String setTag;
+
+    @ApiModelProperty("服务标签;多个标签之间使用,分割")
+    private String serviceTag;
+
+    @ApiModelProperty("价格")
+    private BigDecimal price;
+
+    @ApiModelProperty("原价")
+    private BigDecimal originalPrice;
+
+    @ApiModelProperty("图片;多张图片使用,分割,第一张为主图")
+    private String imgs;
+
+    @ApiModelProperty("套餐类型;1月度套餐,2季度套餐,3年度套餐,4自定义")
+    private String setType;
+
+    @ApiModelProperty("适用性别;1男、2女")
+    private String suitSex;
+
+    @ApiModelProperty("套餐开始时间")
+    private LocalDateTime startTime;
+
+    @ApiModelProperty("套餐结束时间")
+    private LocalDateTime endTime;
+
+    @ApiModelProperty("自定义时间段开始时间;type为4自定义时必填")
+    private LocalDateTime selfStartTime;
+
+    @ApiModelProperty("自定义时间段结束时间;type为4自定义时必填")
+    private LocalDateTime selfEndTime;
+}

+ 6 - 0
src/main/java/com/sqx/modules/lovers/vo/LoversSetVO.java

@@ -47,6 +47,12 @@ public class LoversSetVO {
     @ApiModelProperty("规则id")
     private Long ruleId;
 
+    @ApiModelProperty("规则名称")
+    private String ruleName;
+
+    @ApiModelProperty("规则内容")
+    private String ruleContent;
+
     @ApiModelProperty("状态;1可用、2不可用")
     private String setStatus;
 

+ 84 - 0
src/main/resources/mapper/lovers/LoversSetDao.xml

@@ -15,6 +15,8 @@
         <result column="set_type" property="setType"/>
         <result column="suit_sex" property="suitSex"/>
         <result column="rule_id" property="ruleId"/>
+        <result column="ruleName" property="ruleName"/>
+        <result column="ruleContent" property="ruleContent"/>
         <result column="set_status" property="setStatus"/>
         <result column="sub_order_generate_time" property="subOrderGenerateTime"/>
         <result column="start_time" property="startTime"/>
@@ -55,6 +57,8 @@
             s.set_type,
             s.suit_sex,
             s.rule_id,
+            r.name as ruleName,
+            r.content as ruleContent,
             s.set_status,
             s.sub_order_generate_time,
             s.start_time,
@@ -74,6 +78,7 @@
             scd.detail_original_price
         FROM
             lovers_set s
+            left join lovers_set_rule r on r.id = s.rule_id
             left join lovers_set_content sc on sc.lovers_set_id = s.id
             left join lovers_set_content_detail scd on scd.lovers_set_content_id = sc.id
         WHERE
@@ -90,4 +95,83 @@
             and s.suit_sex = #{queryDTO.suitSex}
         </if>
     </select>
+
+    <select id="listForApp" resultType="com.sqx.modules.lovers.vo.AppLoversSetShortVO">
+        SELECT
+            s.id,
+            s.name,
+            s.sub_name,
+            s.set_tag,
+            s.service_tag,
+            s.price,
+            s.original_price,
+            s.imgs,
+            s.set_type,
+            s.suit_sex,
+            s.rule_id,
+            s.set_status,
+            s.sub_order_generate_time,
+            s.start_time,
+            s.end_time,
+            s.self_start_time,
+            s.self_end_time
+        FROM
+            lovers_set s
+        WHERE
+            s.del_flag = 0
+            and s.set_status = 1
+        <if test="queryDTO.name != null and queryDTO.name != ''">
+            and s.name like concat('%', #{queryDTO.name}, '%')
+        </if>
+        <if test="queryDTO.setType != null and queryDTO.setType != ''">
+            and s.set_type = #{queryDTO.setType}
+        </if>
+        <if test="queryDTO.suitSex != null and queryDTO.suitSex != ''">
+            and s.suit_sex = #{queryDTO.suitSex}
+        </if>
+    </select>
+
+    <select id="getDetailById" resultMap="LoversSetVOMap">
+        SELECT
+        s.id,
+        s.name,
+        s.sub_name,
+        s.set_tag,
+        s.service_tag,
+        s.price,
+        s.original_price,
+        s.imgs,
+        s.set_type,
+        s.suit_sex,
+        s.rule_id,
+        r.name as ruleName,
+        r.content as ruleContent,
+        s.set_status,
+        s.sub_order_generate_time,
+        s.start_time,
+        s.end_time,
+        s.self_start_time,
+        s.self_end_time,
+        sc.id as contentId,
+        sc.sort,
+        sc.content_name as contentName,
+        scd.id as contentDetailId,
+        scd.goods_id,
+        scd.goods_name,
+        scd.shop_id,
+        scd.shop_name,
+        scd.num,
+        scd.detail_price,
+        scd.detail_original_price
+        FROM
+        lovers_set s
+        left join lovers_set_rule r on r.id = s.rule_id
+        left join lovers_set_content sc on sc.lovers_set_id = s.id
+        left join lovers_set_content_detail scd on scd.lovers_set_content_id = sc.id
+        WHERE
+            s.del_flag = 0
+            and s.id = #{id}
+            and sc.del_flag = 0
+            and scd.del_flag = 0
+    </select>
 </mapper>