ソースを参照

店铺参与新活动时新增旧活动自动退出逻辑

codingliang 1 年間 前
コミット
f4585ec808

+ 7 - 0
src/main/java/com/sqx/modules/activity/service/ActivityService.java

@@ -56,4 +56,11 @@ public interface ActivityService extends IService<Activity> {
     OrderSuitActivityVO getOrderBestActivity(Long orderId);
 
     ActivityOrderVO selectByOrder(Long orderId);
+
+    /**
+     * 根据活动id查询
+     * @param ids
+     * @return
+     */
+    List<ActivityVO> getActivityByIds(List<Long> ids);
 }

+ 6 - 0
src/main/java/com/sqx/modules/activity/service/impl/ActivityServiceImpl.java

@@ -475,4 +475,10 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityDao, Activity> impl
     public ActivityOrderVO selectByOrder(Long orderId) {
         return activityDao.selectByOrder(orderId);
     }
+
+    @Override
+    public List<ActivityVO> getActivityByIds(List<Long> ids) {
+        List<Activity> activities = baseMapper.selectBatchIds(ids);
+        return activities.stream().map(ActivityUtil::convertActivityEntityToVO).collect(Collectors.toList());
+    }
 }

+ 31 - 5
src/main/java/com/sqx/modules/activity/service/impl/ActivityShopServiceImpl.java

@@ -15,7 +15,6 @@ import com.sqx.common.utils.Constant;
 import com.sqx.common.utils.PageUtils;
 import com.sqx.common.utils.SpringContextUtils;
 import com.sqx.modules.activity.bo.ShopActivityBO;
-import com.sqx.modules.activity.dao.ActivityDao;
 import com.sqx.modules.activity.dao.ActivityShopDao;
 import com.sqx.modules.activity.dto.ActivityGoodsDTO;
 import com.sqx.modules.activity.dto.JoinActivityDTO;
@@ -38,7 +37,6 @@ import com.sqx.modules.sys.service.SysUserShopService;
 import lombok.RequiredArgsConstructor;
 import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -57,9 +55,6 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 public class ActivityShopServiceImpl extends ServiceImpl<ActivityShopDao, ActivityShop> implements ActivityShopService {
 
-    @Autowired
-    private ActivityDao activityDao;
-
     private final ActivityGoodsService activityGoodsService;
     private final SysUserShopService sysUserShopService;
 
@@ -83,6 +78,9 @@ public class ActivityShopServiceImpl extends ServiceImpl<ActivityShopDao, Activi
 
         List<ActivityShop> activityShops = new ArrayList<>();
         for (Long shopId : dto.getShopIds()) {
+            // 自动退出活动
+            autoExitActivity(shopId);
+
             // 判断当前店铺已经加入的活动数量
             LambdaQueryWrapper<ActivityShop> queryWrapper = Wrappers.lambdaQuery();
             queryWrapper.eq(ActivityShop::getShopId, shopId);
@@ -126,6 +124,34 @@ public class ActivityShopServiceImpl extends ServiceImpl<ActivityShopDao, Activi
         return activityShops.stream().map(ActivityShop::getId).collect(Collectors.toList());
     }
 
+    /**
+     * 自动退出活动
+     * @param shopId 店铺id
+     */
+    private void autoExitActivity(Long shopId) {
+        LambdaQueryWrapper<ActivityShop> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(ActivityShop::getShopId, shopId);
+        List<ActivityShop> oldActivityShops = list(queryWrapper);
+
+        if (oldActivityShops.size() > 0) {
+            ActivityService activityService = SpringContextUtils.applicationContext.getBean(ActivityService.class);
+            List<ActivityVO> activityVOS = activityService.getActivityByIds(oldActivityShops.stream().map(ActivityShop::getActivityId).collect(Collectors.toList()));
+
+            Date currentDate = new Date();
+            activityVOS = activityVOS.stream().filter(e -> currentDate.after(e.getStartTime()) && currentDate.before(e.getEndTime())).collect(Collectors.toList());
+
+            // 目前还未被删除的活动、且在有效期内的活动id集合
+            List<Long> existActivityIds = activityVOS.stream().map(ActivityVO::getId).collect(Collectors.toList());
+
+            List<ActivityShop> waitDelList = oldActivityShops.stream().filter(e -> !existActivityIds.contains(e.getActivityId())).collect(Collectors.toList());
+
+            if (waitDelList.size() > 0) {
+                this.removeByIds(waitDelList);
+            }
+        }
+
+    }
+
     @Transactional
     @Override
     public void quitActivity(QuitActivityDTO dto) {

+ 1 - 3
src/main/java/com/sqx/modules/order/service/impl/AppAppOrderServiceImpl.java

@@ -1795,12 +1795,10 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
         try {
             return updateOrders(order);
         } catch (Exception e) {
-            e.printStackTrace();
-            log.error("修改订单异常:" + e.getMessage(), e);
+            throw e;
         } finally {
             reentrantReadWriteLock.writeLock().unlock();
         }
-        return Result.error("系统繁忙,请稍后再试!");
     }
 
     @Override