Procházet zdrojové kódy

新增商户加入活动权限判断逻辑

codingliang před 2 roky
rodič
revize
13f870ef2f

+ 25 - 7
src/main/java/com/sqx/modules/activity/service/impl/ActivityShopServiceImpl.java

@@ -10,15 +10,19 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sqx.common.constant.MyConstant;
 import com.sqx.common.exception.SqxException;
 import com.sqx.common.query.PageQuery;
+import com.sqx.common.utils.Constant;
 import com.sqx.common.utils.PageUtils;
+import com.sqx.common.utils.SpringContextUtils;
 import com.sqx.modules.activity.dao.ActivityShopDao;
 import com.sqx.modules.activity.dto.JoinActivityDTO;
 import com.sqx.modules.activity.dto.QuitActivityDTO;
 import com.sqx.modules.activity.entity.ActivityShop;
 import com.sqx.modules.activity.enums.LimitTypeEnum;
 import com.sqx.modules.activity.service.ActivityGoodsService;
+import com.sqx.modules.activity.service.ActivityService;
 import com.sqx.modules.activity.service.ActivityShopService;
 import com.sqx.modules.activity.vo.ActivityShopVO;
+import com.sqx.modules.activity.vo.ActivityVO;
 import com.sqx.modules.activity.vo.ShopActivityGroupVO;
 import com.sqx.modules.activity.vo.ShopActivityVO;
 import com.sqx.modules.datacentre.entity.SysUserShop;
@@ -45,11 +49,11 @@ public class ActivityShopServiceImpl extends ServiceImpl<ActivityShopDao, Activi
 
     private final ActivityGoodsService activityGoodsService;
     private final SysUserShopService sysUserShopService;
-     
+
     @Override
     public void joinActivity(JoinActivityDTO dto) {
         // 权限校验
-        checkAuth(dto.getShopIds());
+        checkAuth(dto.getShopIds(), dto.getActivityId());
 
         // 校验参数
         checkParam(dto);
@@ -83,7 +87,7 @@ public class ActivityShopServiceImpl extends ServiceImpl<ActivityShopDao, Activi
     @Transactional
     @Override
     public void quitActivity(QuitActivityDTO dto) {
-        checkAuth(Arrays.asList(dto.getShopId()));
+        checkAuth(Arrays.asList(dto.getShopId()), null);
 
         LambdaQueryWrapper<ActivityShop> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(ActivityShop::getShopId, dto.getShopId());
@@ -105,7 +109,7 @@ public class ActivityShopServiceImpl extends ServiceImpl<ActivityShopDao, Activi
         ActivityShop activityShop = this.getById(activityShopId);
 
         if (ObjectUtil.isNotNull(activityShop)) {
-            checkAuth(Arrays.asList(activityShop.getShopId()));
+            checkAuth(Arrays.asList(activityShop.getShopId()), null);
 
             this.removeById(activityShopId);
 
@@ -157,20 +161,34 @@ public class ActivityShopServiceImpl extends ServiceImpl<ActivityShopDao, Activi
      * 检查权限
      *  判断当前用户对相关的店铺有没有操作权限
      * @param shopIds 店铺列表
+     * @param activityId 活动id,退出活动时可以不传
      */
-    private void checkAuth(List<Long> shopIds) {
+    private void checkAuth(List<Long> shopIds, Long activityId) {
         SysUserEntity user = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
         // 1平台管理员、2商户管理员
         Integer userType = user.getUserType();
         if (userType.intValue() == 2) {
             if (shopIds.size() > 1) {
-                throw new SqxException("权限不足:商户管理员只能添加自己的店铺到活动中");
+                throw new SqxException("权限不足:商户管理员只能操作自己的店铺加入或退出活动");
             }
 
             Long curShopId = shopIds.get(0);
             SysUserShop userShop = sysUserShopService.getByUserId(user.getUserId());
             if (ObjectUtil.notEqual(curShopId, userShop.getShopId())) {
-                throw new SqxException("权限不足:商户管理员只能添加自己的店铺到活动中");
+                throw new SqxException("权限不足:商户管理员只能操作自己的店铺加入或退出活动");
+            }
+
+            // activityId不为null表示加入活动时验证
+            if (ObjectUtil.isNotNull(activityId)) {
+                ActivityService activityService = SpringContextUtils.applicationContext.getBean(ActivityService.class);
+                ActivityVO activity = activityService.getActivityById(activityId);
+                if (ObjectUtil.isNull(activity)) {
+                    throw new SqxException("无效的活动id");
+                }
+
+                if (!StrUtil.equals(activity.getAllowShop(), Constant.YES)) {
+                    throw new SqxException("当前活动不允许商户主动加入,请联系平台管理员加入");
+                }
             }
         }
     }

+ 1 - 1
src/main/resources/mapper/activity/ActivityGoodsDao.xml

@@ -37,7 +37,7 @@
                     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
+                left join activity a on ach.activity_id = a.id and a.type != '1'
         where a.del_flag = '0'
           and tmp.goods_id in
               <foreach collection="goodsIds" open="(" close=")" separator="," item="item">