Prechádzať zdrojové kódy

开发完成中台 运营活动列表和 详情

lutong 2 mesiacov pred
rodič
commit
8343404c9c

+ 6 - 0
alien-entity/src/main/java/shop/alien/entity/storePlatform/vo/StoreOperationalActivityVO.java

@@ -54,5 +54,11 @@ public class StoreOperationalActivityVO extends StoreOperationalActivity {
 
     @ApiModelProperty(value = "活动详情图片")
     private String activityDetailImgUrl;
+
+    @ApiModelProperty(value = "活动详情图片URL列表")
+    private java.util.List<String> activityDetailImgUrlList;
+
+    @ApiModelProperty(value = "活动类型名称")
+    private String activityTypeName;
 }
 

+ 1 - 1
alien-store/src/main/java/shop/alien/store/controller/OperationalActivityController.java

@@ -63,7 +63,7 @@ public class OperationalActivityController {
             @RequestParam(value = "activityName", required = false) String activityName) {
         log.info("OperationalActivityController.pageActivityDetail storeId={}, storeName={}, pageNum={}, pageSize={}, status={}, activityName={}", storeId, storeName, pageNum, pageSize, status, activityName);
         try {
-            IPage<StoreOperationalActivityVO> result = activityService.pageActivityDetail(storeId, storeName, pageNum, pageSize, status, activityName);
+            IPage<StoreOperationalActivityVO> result = activityService.pageActivityDetail(storeId, storeName, pageNum, pageSize, status, activityName, null);
             return R.data(result);
         } catch (IllegalArgumentException e) {
             return R.fail(e.getMessage());

+ 8 - 5
alien-store/src/main/java/shop/alien/store/service/OperationalActivityService.java

@@ -24,13 +24,16 @@ public interface OperationalActivityService {
     /**
      * 根据门店条件分页查询运营活动
      *
-     * @param storeId   门店ID
-     * @param storeName 门店名称(模糊)
-     * @param pageNum   页码
-     * @param pageSize  每页数量
+     * @param storeId      门店ID
+     * @param storeName    门店名称(模糊)
+     * @param pageNum      页码
+     * @param pageSize     每页数量
+     * @param activityStatus 活动状态
+     * @param activityName 活动名称(模糊)
+     * @param activityType 活动类型(COMMENT-评论有礼, MARKETING-营销活动)
      * @return 活动分页结果
      */
-    IPage<StoreOperationalActivityVO> pageActivityDetail(Integer storeId, String storeName, Integer pageNum, Integer pageSize, Integer activityStatus, String activityName);
+    IPage<StoreOperationalActivityVO> pageActivityDetail(Integer storeId, String storeName, Integer pageNum, Integer pageSize, Integer activityStatus, String activityName, String activityType);
 
     /**
      * 根据活动ID获取活动详情

+ 41 - 8
alien-store/src/main/java/shop/alien/store/service/impl/OperationalActivityServiceImpl.java

@@ -79,8 +79,8 @@ public class OperationalActivityServiceImpl implements OperationalActivityServic
     }
 
     @Override
-    public IPage<StoreOperationalActivityVO> pageActivityDetail(Integer storeId, String storeName, Integer pageNum, Integer pageSize, Integer activityStatus, String activityName) {
-        log.info("OperationalActivityServiceImpl.pageActivityDetail: storeId={}, storeName={}, pageNum={}, pageSize={}, activityStatus={}, activityName={}", storeId, storeName, pageNum, pageSize, activityStatus, activityName);
+    public IPage<StoreOperationalActivityVO> pageActivityDetail(Integer storeId, String storeName, Integer pageNum, Integer pageSize, Integer activityStatus, String activityName, String activityType) {
+        log.info("OperationalActivityServiceImpl.pageActivityDetail: storeId={}, storeName={}, pageNum={}, pageSize={}, activityStatus={}, activityName={}, activityType={}", storeId, storeName, pageNum, pageSize, activityStatus, activityName, activityType);
 
 //        if (storeId == null && StringUtils.isBlank(storeName)) {
 //            throw new IllegalArgumentException("请至少提供商户ID或商户名称");
@@ -118,6 +118,9 @@ public class OperationalActivityServiceImpl implements OperationalActivityServic
         if (StringUtils.isNotBlank(activityName)) {
             wrapper.like(StoreOperationalActivity::getActivityName, activityName);
         }
+        if (StringUtils.isNotBlank(activityType)) {
+            wrapper.eq(StoreOperationalActivity::getActivityType, activityType);
+        }
 //
 //        if (!storeIds.isEmpty()) {
 //            wrapper.in(StoreOperationalActivity::getStoreId, storeIds);
@@ -134,6 +137,7 @@ public class OperationalActivityServiceImpl implements OperationalActivityServic
             StoreOperationalActivityVO vo = new StoreOperationalActivityVO();
             BeanUtils.copyProperties(activity, vo);
             vo.setStatusName(resolveStatusName(activity.getStatus()));
+            vo.setActivityTypeName(resolveActivityTypeName(activity.getActivityType()));
 
             if (activity.getCouponId() != null) {
                 LifeDiscountCoupon coupon = lifeDiscountCouponMapper.selectById(activity.getCouponId());
@@ -168,6 +172,7 @@ public class OperationalActivityServiceImpl implements OperationalActivityServic
         StoreOperationalActivityVO vo = new StoreOperationalActivityVO();
         BeanUtils.copyProperties(activity, vo);
         vo.setStatusName(resolveStatusName(activity.getStatus()));
+        vo.setActivityTypeName(resolveActivityTypeName(activity.getActivityType()));
 
         if (activity.getCouponId() != null) {
             LifeDiscountCoupon coupon = lifeDiscountCouponMapper.selectById(activity.getCouponId());
@@ -241,24 +246,52 @@ public class OperationalActivityServiceImpl implements OperationalActivityServic
         if (vo == null || vo.getStoreId() == null || vo.getId() == null) {
             return;
         }
+        // 查询活动标题图(单张)
         StoreImg titleImg = imgMapper.selectOne(new LambdaQueryWrapper<StoreImg>()
                 .eq(StoreImg::getStoreId, vo.getStoreId())
                 .eq(StoreImg::getBusinessId, vo.getId())
                 .eq(StoreImg::getImgType, 26)
-                .eq(StoreImg::getDeleteFlag, 0));
+                .eq(StoreImg::getDeleteFlag, 0)
+                .orderByAsc(StoreImg::getImgSort)
+                .last("LIMIT 1"));
         if (titleImg != null) {
             vo.setActivityTitleImg(titleImg);
             vo.setActivityTitleImgUrl(titleImg.getImgUrl());
         }
 
-        StoreImg detailImg = imgMapper.selectOne(new LambdaQueryWrapper<StoreImg>()
+        // 查询活动详情图(多张)
+        List<StoreImg> detailImgs = imgMapper.selectList(new LambdaQueryWrapper<StoreImg>()
                 .eq(StoreImg::getStoreId, vo.getStoreId())
                 .eq(StoreImg::getBusinessId, vo.getId())
                 .eq(StoreImg::getImgType, 27)
-                .eq(StoreImg::getDeleteFlag, 0));
-        if (detailImg != null) {
-            vo.setActivityDetailImg(detailImg);
-            vo.setActivityDetailImgUrl(detailImg.getImgUrl());
+                .eq(StoreImg::getDeleteFlag, 0)
+                .orderByAsc(StoreImg::getImgSort));
+        if (detailImgs != null && !detailImgs.isEmpty()) {
+            // 设置第一张详情图(兼容旧字段)
+            vo.setActivityDetailImg(detailImgs.get(0));
+            vo.setActivityDetailImgUrl(detailImgs.get(0).getImgUrl());
+            // 设置详情图列表
+            List<String> detailImgUrls = new ArrayList<>();
+            for (StoreImg img : detailImgs) {
+                if (img != null && img.getImgUrl() != null && !img.getImgUrl().trim().isEmpty()) {
+                    detailImgUrls.add(img.getImgUrl().trim());
+                }
+            }
+            vo.setActivityDetailImgUrlList(detailImgUrls);
+        }
+    }
+
+    private String resolveActivityTypeName(String activityType) {
+        if (StringUtils.isBlank(activityType)) {
+            return null;
+        }
+        switch (activityType) {
+            case "COMMENT":
+                return "评论有礼";
+            case "MARKETING":
+                return "营销活动";
+            default:
+                return activityType;
         }
     }
 }