Selaa lähdekoodia

添加活动商品新增权限校验

codingliang 2 vuotta sitten
vanhempi
commit
28b7aeba8f

+ 1 - 1
src/main/java/com/sqx/modules/activity/dto/ActivityGoodsDTO.java

@@ -22,6 +22,6 @@ public class ActivityGoodsDTO {
 
     @ApiModelProperty(value = "商品id集合", required = true)
     @NotNull(message = "商品id集合不能为空")
-    @Size(message = "商品id集合不能为空")
+    @Size(min = 1, message = "商品id集合不能为空")
     private List<Long> goodsIds;
 }

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

@@ -1,13 +1,22 @@
 package com.sqx.modules.activity.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sqx.common.exception.SqxException;
+import com.sqx.common.utils.SpringContextUtils;
 import com.sqx.modules.activity.dao.ActivityGoodsDao;
 import com.sqx.modules.activity.dto.ActivityGoodsDTO;
 import com.sqx.modules.activity.entity.ActivityGoods;
+import com.sqx.modules.activity.entity.ActivityShop;
 import com.sqx.modules.activity.service.ActivityGoodsService;
+import com.sqx.modules.activity.service.ActivityShopService;
+import com.sqx.modules.datacentre.entity.SysUserShop;
+import com.sqx.modules.sys.entity.SysUserEntity;
+import com.sqx.modules.sys.service.SysUserShopService;
 import lombok.RequiredArgsConstructor;
+import org.apache.shiro.SecurityUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -22,9 +31,18 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 public class ActivityGoodsServiceImpl extends ServiceImpl<ActivityGoodsDao, ActivityGoods> implements ActivityGoodsService {
 
+    private final SysUserShopService sysUserShopService;
+
+    private ActivityShopService getActivityShopService() {
+        return SpringContextUtils.applicationContext.getBean(ActivityShopService.class);
+    }
+
     @Transactional
     @Override
     public void updateActivityGoods(ActivityGoodsDTO activityGoodsDTO) {
+        // 检查权限
+        checkAuth(activityGoodsDTO);
+
         // 删除活动商家原有商品
         deleteByActivityShopId(activityGoodsDTO.getActivityShopId());
 
@@ -42,4 +60,22 @@ public class ActivityGoodsServiceImpl extends ServiceImpl<ActivityGoodsDao, Acti
         this.remove(queryWrapper);
     }
 
+    private void checkAuth(ActivityGoodsDTO activityGoodsDTO) {
+        ActivityShop activityShop = getActivityShopService().getById(activityGoodsDTO.getActivityShopId());
+
+        if (ObjectUtil.isNull(activityShop)) {
+            throw new SqxException("无效的activityShopId");
+        }
+
+        SysUserEntity user = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
+        // 1平台管理员、2商户管理员
+        Integer userType = user.getUserType();
+        if (userType.intValue() == 2) {
+            Long curShopId = activityShop.getShopId();
+            SysUserShop userShop = sysUserShopService.getByUserId(user.getUserId());
+            if (ObjectUtil.notEqual(curShopId, userShop.getShopId())) {
+                throw new SqxException("权限不足:商户管理员只能添加自己店铺的商品到活动中");
+            }
+        }
+    }
 }