Просмотр исходного кода

新增查看商品参与的活动列表接口

codingliang 2 лет назад
Родитель
Сommit
89f7674ec1

+ 35 - 0
src/main/java/com/sqx/modules/activity/controller/app/AppActivityGoodsController.java

@@ -0,0 +1,35 @@
+package com.sqx.modules.activity.controller.app;
+
+import com.sqx.common.utils.Result;
+import com.sqx.modules.activity.service.ActivityGoodsService;
+import com.sqx.modules.activity.vo.ActivityVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+* 活动商品
+* @author : codingliang
+* @date : 2024-6-17
+*/
+@Api(tags = "活动-app活动商品")
+@RestController
+@RequestMapping("app/activity-goods")
+@RequiredArgsConstructor
+public class AppActivityGoodsController {
+
+   private final ActivityGoodsService activityGoodsService;
+
+   @GetMapping("{goodsId}")
+   @ApiOperation("查看商品参与的活动列表")
+   public Result getActivityListByGoodsId(@PathVariable Long goodsId) {
+       List<ActivityVO> activityVOList = activityGoodsService.getActivityListByGoodsId(goodsId);
+       return Result.success().put("data", activityVOList);
+   }
+}

+ 7 - 2
src/main/java/com/sqx/modules/activity/dao/ActivityGoodsDao.java

@@ -1,10 +1,14 @@
 package com.sqx.modules.activity.dao;
 package com.sqx.modules.activity.dao;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sqx.modules.activity.entity.Activity;
 import com.sqx.modules.activity.entity.ActivityGoods;
 import com.sqx.modules.activity.entity.ActivityGoods;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 
- /**
+import java.util.List;
+
+/**
  * 活动商品
  * 活动商品
  * @author : codingliang
  * @author : codingliang
  * @date : 2024-6-17
  * @date : 2024-6-17
@@ -12,4 +16,5 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 @Mapper
 public interface ActivityGoodsDao extends BaseMapper<ActivityGoods> {
 public interface ActivityGoodsDao extends BaseMapper<ActivityGoods> {
 
 
-}
+     List<Activity> getActivityListByGoodsId(@Param("goodsId") Long goodsId);
+ }

+ 10 - 0
src/main/java/com/sqx/modules/activity/service/ActivityGoodsService.java

@@ -3,6 +3,9 @@ package com.sqx.modules.activity.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.sqx.modules.activity.dto.ActivityGoodsDTO;
 import com.sqx.modules.activity.dto.ActivityGoodsDTO;
 import com.sqx.modules.activity.entity.ActivityGoods;
 import com.sqx.modules.activity.entity.ActivityGoods;
+import com.sqx.modules.activity.vo.ActivityVO;
+
+import java.util.List;
 
 
 /**
 /**
  * 活动商品
  * 活动商品
@@ -14,4 +17,11 @@ public interface ActivityGoodsService extends IService<ActivityGoods> {
     void updateActivityGoods(ActivityGoodsDTO activityGoodsDTO);
     void updateActivityGoods(ActivityGoodsDTO activityGoodsDTO);
 
 
     void deleteByActivityShopId(Long activityId);
     void deleteByActivityShopId(Long activityId);
+
+    /**
+     * 查询商品参与的活动
+     * @param goodsId 商品id
+     * @return
+     */
+    List<ActivityVO> getActivityListByGoodsId(Long goodsId);
 }
 }

+ 10 - 0
src/main/java/com/sqx/modules/activity/service/impl/ActivityGoodsServiceImpl.java

@@ -8,10 +8,13 @@ import com.sqx.common.exception.SqxException;
 import com.sqx.common.utils.SpringContextUtils;
 import com.sqx.common.utils.SpringContextUtils;
 import com.sqx.modules.activity.dao.ActivityGoodsDao;
 import com.sqx.modules.activity.dao.ActivityGoodsDao;
 import com.sqx.modules.activity.dto.ActivityGoodsDTO;
 import com.sqx.modules.activity.dto.ActivityGoodsDTO;
+import com.sqx.modules.activity.entity.Activity;
 import com.sqx.modules.activity.entity.ActivityGoods;
 import com.sqx.modules.activity.entity.ActivityGoods;
 import com.sqx.modules.activity.entity.ActivityShop;
 import com.sqx.modules.activity.entity.ActivityShop;
 import com.sqx.modules.activity.service.ActivityGoodsService;
 import com.sqx.modules.activity.service.ActivityGoodsService;
 import com.sqx.modules.activity.service.ActivityShopService;
 import com.sqx.modules.activity.service.ActivityShopService;
+import com.sqx.modules.activity.util.ActivityUtil;
+import com.sqx.modules.activity.vo.ActivityVO;
 import com.sqx.modules.datacentre.entity.SysUserShop;
 import com.sqx.modules.datacentre.entity.SysUserShop;
 import com.sqx.modules.sys.entity.SysUserEntity;
 import com.sqx.modules.sys.entity.SysUserEntity;
 import com.sqx.modules.sys.service.SysUserShopService;
 import com.sqx.modules.sys.service.SysUserShopService;
@@ -20,6 +23,7 @@ import org.apache.shiro.SecurityUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
+import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 /**
 /**
@@ -60,6 +64,12 @@ public class ActivityGoodsServiceImpl extends ServiceImpl<ActivityGoodsDao, Acti
         this.remove(queryWrapper);
         this.remove(queryWrapper);
     }
     }
 
 
+    @Override
+    public List<ActivityVO> getActivityListByGoodsId(Long goodsId) {
+        List<Activity> activities = baseMapper.getActivityListByGoodsId(goodsId);
+        return activities.stream().map(ActivityUtil::convertActivityEntityToVO).collect(Collectors.toList());
+    }
+
     private void checkAuth(ActivityGoodsDTO activityGoodsDTO) {
     private void checkAuth(ActivityGoodsDTO activityGoodsDTO) {
         ActivityShop activityShop = getActivityShopService().getById(activityGoodsDTO.getActivityShopId());
         ActivityShop activityShop = getActivityShopService().getById(activityGoodsDTO.getActivityShopId());
 
 

+ 4 - 25
src/main/java/com/sqx/modules/activity/service/impl/ActivityServiceImpl.java

@@ -15,15 +15,16 @@ import com.sqx.common.utils.PageUtils;
 import com.sqx.modules.activity.dao.ActivityDao;
 import com.sqx.modules.activity.dao.ActivityDao;
 import com.sqx.modules.activity.dto.ActivityDTO;
 import com.sqx.modules.activity.dto.ActivityDTO;
 import com.sqx.modules.activity.dto.ActivityOfFullReductionDTO;
 import com.sqx.modules.activity.dto.ActivityOfFullReductionDTO;
+import com.sqx.modules.activity.dto.ActivityOfGlobalDiscountDTO;
 import com.sqx.modules.activity.dto.ActivityOfTimeIntervalDTO;
 import com.sqx.modules.activity.dto.ActivityOfTimeIntervalDTO;
 import com.sqx.modules.activity.dto.ActivityQueryDTO;
 import com.sqx.modules.activity.dto.ActivityQueryDTO;
-import com.sqx.modules.activity.dto.ActivityOfGlobalDiscountDTO;
 import com.sqx.modules.activity.entity.Activity;
 import com.sqx.modules.activity.entity.Activity;
 import com.sqx.modules.activity.entity.ActivityShop;
 import com.sqx.modules.activity.entity.ActivityShop;
 import com.sqx.modules.activity.enums.ActivityTypeEnum;
 import com.sqx.modules.activity.enums.ActivityTypeEnum;
 import com.sqx.modules.activity.enums.FullActivityTypeEnum;
 import com.sqx.modules.activity.enums.FullActivityTypeEnum;
 import com.sqx.modules.activity.service.ActivityService;
 import com.sqx.modules.activity.service.ActivityService;
 import com.sqx.modules.activity.service.ActivityShopService;
 import com.sqx.modules.activity.service.ActivityShopService;
+import com.sqx.modules.activity.util.ActivityUtil;
 import com.sqx.modules.activity.vo.ActivityVO;
 import com.sqx.modules.activity.vo.ActivityVO;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
@@ -54,7 +55,7 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityDao, Activity> impl
     public ActivityVO getActivityById(Long id) {
     public ActivityVO getActivityById(Long id) {
         Activity activity = this.findById(id);
         Activity activity = this.findById(id);
 
 
-        return convertEntityToVO(activity);
+        return ActivityUtil.convertActivityEntityToVO(activity);
     }
     }
 
 
     @Override
     @Override
@@ -73,7 +74,7 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityDao, Activity> impl
         IPage<Activity> page = this.page(pages, queryWrapper);
         IPage<Activity> page = this.page(pages, queryWrapper);
         PageUtils pageUtils = new PageUtils(page);
         PageUtils pageUtils = new PageUtils(page);
 
 
-        List<ActivityVO> vos = pageUtils.getList().stream().map(e -> this.convertEntityToVO((Activity) e)).collect(Collectors.toList());
+        List<ActivityVO> vos = pageUtils.getList().stream().map(e -> ActivityUtil.convertActivityEntityToVO((Activity) e)).collect(Collectors.toList());
         pageUtils.setList(vos);
         pageUtils.setList(vos);
         return pageUtils;
         return pageUtils;
     }
     }
@@ -155,28 +156,6 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityDao, Activity> impl
     }
     }
 
 
     /**
     /**
-     * 活动实体类转成vo类
-     * @param activity 活动实体
-     * @return vo
-     */
-    private ActivityVO convertEntityToVO(Activity activity) {
-        ActivityVO vo = new ActivityVO();
-        BeanUtils.copyProperties(activity, vo);
-
-        String type = activity.getType();
-        String config = activity.getConfig();
-
-        if (ActivityTypeEnum.TIME.getTypeCode().equals(type)) {
-            vo.setTimeIntervalInfos(JSONUtil.toList(JSONUtil.parseArray(config), ActivityOfTimeIntervalDTO.class));
-        } else if (ActivityTypeEnum.FULL.getTypeCode().equals(type)) {
-            vo.setFullReductionInfo(JSONUtil.toBean(config, ActivityOfFullReductionDTO.class));
-        } else if (ActivityTypeEnum.GLOBAL.getTypeCode().equals(type)) {
-            vo.setGlobalDiscountsInfo(JSONUtil.toBean(config, ActivityOfGlobalDiscountDTO.class));
-        }
-        return vo;
-    }
-
-    /**
      * 根据id获取活动信息
      * 根据id获取活动信息
      *    如id对应记录不存在,则抛出数据不存在异常
      *    如id对应记录不存在,则抛出数据不存在异常
      * @param id 活动id
      * @param id 活动id

+ 35 - 0
src/main/java/com/sqx/modules/activity/util/ActivityUtil.java

@@ -0,0 +1,35 @@
+package com.sqx.modules.activity.util;
+
+import cn.hutool.json.JSONUtil;
+import com.sqx.modules.activity.dto.ActivityOfFullReductionDTO;
+import com.sqx.modules.activity.dto.ActivityOfGlobalDiscountDTO;
+import com.sqx.modules.activity.dto.ActivityOfTimeIntervalDTO;
+import com.sqx.modules.activity.entity.Activity;
+import com.sqx.modules.activity.enums.ActivityTypeEnum;
+import com.sqx.modules.activity.vo.ActivityVO;
+import org.springframework.beans.BeanUtils;
+
+/**
+ * activity工具集合
+ *
+ * @author : codingliang
+ * @date : 2024-06-22 18:01
+ */
+public class ActivityUtil {
+    public static ActivityVO convertActivityEntityToVO(Activity activity) {
+        ActivityVO vo = new ActivityVO();
+        BeanUtils.copyProperties(activity, vo);
+
+        String type = activity.getType();
+        String config = activity.getConfig();
+
+        if (ActivityTypeEnum.TIME.getTypeCode().equals(type)) {
+            vo.setTimeIntervalInfos(JSONUtil.toList(JSONUtil.parseArray(config), ActivityOfTimeIntervalDTO.class));
+        } else if (ActivityTypeEnum.FULL.getTypeCode().equals(type)) {
+            vo.setFullReductionInfo(JSONUtil.toBean(config, ActivityOfFullReductionDTO.class));
+        } else if (ActivityTypeEnum.GLOBAL.getTypeCode().equals(type)) {
+            vo.setGlobalDiscountsInfo(JSONUtil.toBean(config, ActivityOfGlobalDiscountDTO.class));
+        }
+        return vo;
+    }
+}

+ 24 - 0
src/main/resources/mapper/activity/ActivityGoodsDao.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sqx.modules.activity.dao.ActivityGoodsDao">
+
+    <select id="getActivityListByGoodsId" resultType="com.sqx.modules.activity.entity.Activity">
+        select
+            a.*
+        from
+            (
+                select
+                    t.activity_shop_id,
+                    substring_index( substring_index( t.goods_ids, ',', n.n ), ',', - 1 ) goods_id
+                from
+                        ( select 1 as n union select 2 union select 3 union select 4 ) n
+                            inner join activity_goods t on char_length( t.goods_ids )- char_length(
+                            replace ( t.goods_ids, ',', '' ))>= n.n - 1
+                order by
+                    n.n
+            ) tmp
+                left join activity_shop ach on ach.id = tmp.activity_shop_id
+                left join activity a on ach.activity_id = a.id
+        where tmp.goods_id = #{goodsId}
+    </select>
+</mapper>