فهرست منبع

Merge branch 'master' of http://git.ydd100.cn/wangtao01/liebao-cloud

wangtao 3 سال پیش
والد
کامیت
fafb2d10cb

+ 21 - 21
lb-app/src/main/java/com/ydd/app/config/EnvConfig.java

@@ -1,21 +1,21 @@
-package com.ydd.app.config;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Configuration;
-
-/**
- *  获取当前环境
- * @author 叶君翔
- * @date 2022/03/02 15:44
- */
-@Configuration
-public class EnvConfig {
-
-    @Value("${spring.profiles.active}")
-    private String profiles;
-
-    public String getProfiles() {
-        return profiles;
-    }
-
-}
+//package com.ydd.app.config;
+//
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.context.annotation.Configuration;
+//
+///**
+// *  获取当前环境
+// * @author 叶君翔
+// * @date 2022/03/02 15:44
+// */
+//@Configuration
+//public class EnvConfig {
+//
+//    @Value("${spring.profiles.active}")
+//    private String profiles;
+//
+//    public String getProfiles() {
+//        return profiles;
+//    }
+//
+//}

+ 1 - 1
lb-app/src/main/java/com/ydd/app/interceptor/AuthorizationInterceptor.java

@@ -2,9 +2,9 @@ package com.ydd.app.interceptor;
 
 
 import com.alibaba.fastjson.JSON;
-import com.ydd.app.config.EnvConfig;
 import com.ydd.common.annotation.AccessToken;
 import com.ydd.common.annotation.NoSign;
+import com.ydd.common.config.EnvConfig;
 import com.ydd.common.constant.HttpStatus;
 import com.ydd.common.core.domain.Result;
 import com.ydd.common.utils.ServletUtils;

+ 3 - 3
lb-module/src/main/java/com/ydd/module/service/impl/ShopWaimaiServiceImpl.java

@@ -167,17 +167,17 @@ public class ShopWaimaiServiceImpl extends ServiceImpl<ShopWaimaiMapper, ShopWai
 
     @Override
     public List<WaimaiAuthListDto> findWMListByMobile(String mobile, String waimaiId) {
-        return null;
+        return baseMapper.findWMListByMobile(mobile,waimaiId);
     }
 
     @Override
     public Integer findSyncMt(String epoid) {
-        return null;
+        return baseMapper.findSyncMt(epoid);
     }
 
     @Override
     public Integer findSyncEle(String thirdShopId) {
-        return null;
+        return baseMapper.findSyncEle(thirdShopId);
     }
 
     @SneakyThrows

+ 1 - 1
lb-module/src/main/java/com/ydd/system/mapper/SysRoleMapper.java

@@ -113,6 +113,6 @@ public interface SysRoleMapper
      */
     public int deleteRoleByIds(Long[] roleIds);
 
-
     String selectRoleNameByUserId(Long userId);
+
 }

+ 1 - 0
lb-module/src/main/java/com/ydd/system/service/ISysRoleService.java

@@ -143,4 +143,5 @@ public interface ISysRoleService
      * @return 角色名
      */
     String selectRoleNameByUserId(Long userId);
+
 }

+ 0 - 1
lb-module/src/main/java/com/ydd/system/service/ISysUserService.java

@@ -202,5 +202,4 @@ public interface ISysUserService
      */
     List<Long> selectIdByRoleIds(List<Long> roleIds);
 
-
 }

+ 1 - 0
lb-module/src/main/java/com/ydd/system/service/impl/SysUserServiceImpl.java

@@ -559,4 +559,5 @@ public class SysUserServiceImpl implements ISysUserService
     public List<Long> selectIdByRoleIds(List<Long> roleIds) {
         return userRoleMapper.getUserIdsByRoleIds(roleIds);
     }
+
 }

+ 4 - 4
lb-module/src/main/resources/mapper/system/SysRoleMapper.xml

@@ -160,9 +160,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 	<select id="selectRoleNameByUserId" resultType="java.lang.String">
 		select GROUP_CONCAT(r.role_name)
-		from sys_role r
-		left join sys_user_role ur on ur.role_id = r.role_id
-		where ur.user_id = #{userId}
-	</select>
+        from sys_role r
+	    left join sys_user_role ur on ur.role_id = r.role_id
+	    where ur.user_id = #{userId}
+    </select>
 
 </mapper>

+ 2 - 1
lb-module/src/main/resources/mapper/system/SysUserRoleMapper.xml

@@ -48,4 +48,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			#{roleId}
 		</foreach>
 	</select>
-</mapper> 
+
+</mapper>

+ 34 - 0
lb-web/src/main/java/com/ydd/web/config/WebMvcConfig.java

@@ -0,0 +1,34 @@
+package com.ydd.web.config;
+
+import com.ydd.web.interceptor.BindAgentInterceptor;
+import com.ydd.web.interceptor.DomainInterceptor;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * web全局配置
+ * @author 叶君翔
+ * @date 2022/03/16 10:06
+ */
+@Configuration
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+public class WebMvcConfig implements WebMvcConfigurer {
+
+    private final BindAgentInterceptor bindAgentInterceptor;
+
+    private final DomainInterceptor domainInterceptor;
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+
+        registry.addInterceptor(domainInterceptor).addPathPatterns("/**")
+                .excludePathPatterns("/swagger/**");
+
+        registry.addInterceptor(bindAgentInterceptor).addPathPatterns("/**")
+                .excludePathPatterns("/swagger/**");
+    }
+
+}

+ 14 - 4
lb-web/src/main/java/com/ydd/web/controller/AgentController.java

@@ -1,29 +1,31 @@
 package com.ydd.web.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ydd.common.annotation.BindAgent;
 import com.ydd.common.annotation.Log;
+import com.ydd.common.constant.Constants;
 import com.ydd.common.core.controller.BaseController;
 import com.ydd.common.core.domain.Result;
 import com.ydd.common.core.domain.entity.SysUser;
 import com.ydd.common.core.page.TableDataInfo;
 import com.ydd.common.enums.BusinessType;
 import com.ydd.common.enums.UserTypeEnums;
+import com.ydd.ecloud.core.utils.HttpContextUtils;
 import com.ydd.module.domain.Agent;
 import com.ydd.module.dto.BaseConfgMinDto;
 import com.ydd.module.request.AgentBindRulePackageRequest;
 import com.ydd.module.service.IAgentService;
 import com.ydd.system.service.ISysConfigService;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 代理商Controller
@@ -67,9 +69,17 @@ public class AgentController extends BaseController {
      * 查询代理商列表
      */
     @GetMapping("/list")
+    @BindAgent
     public TableDataInfo list(Agent agent) {
         startPage();
         SysUser user = getSysUser();
+        // 允许查看的代理商数据
+        HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
+        Object obj = request.getAttribute(Constants.SYS_USER_BIND_AGENT);
+        if (obj instanceof List) {
+            List<Long> agentIds = (List) obj;
+            user.setAgentIds(agentIds);
+        }
         List<Agent> list = iAgentService.queryList(agent,user);
         return getDataTable(list);
     }

+ 24 - 0
lb-web/src/main/java/com/ydd/web/controller/MemberController.java

@@ -4,15 +4,19 @@ import java.util.*;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydd.common.annotation.BindAgent;
+import com.ydd.common.constant.Constants;
 import com.ydd.common.core.domain.entity.SysUser;
 import com.ydd.common.core.page.PageResult;
 import com.ydd.common.enums.UserTypeEnums;
+import com.ydd.ecloud.core.utils.HttpContextUtils;
 import com.ydd.module.domain.ProfitsMerchant;
 import com.ydd.module.enums.MemberTypeEnum;
 import com.ydd.module.enums.StatusEnum;
 import com.ydd.module.service.IAgentService;
 import com.ydd.module.service.IMerchantService;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -25,6 +29,8 @@ import com.ydd.module.service.IMemberService;
 import com.ydd.common.utils.poi.ExcelUtil;
 import com.ydd.common.core.page.TableDataInfo;
 
+import javax.servlet.http.HttpServletRequest;
+
 /**
  * 会员Controller
  *
@@ -67,6 +73,7 @@ public class MemberController extends BaseController {
      */
     @PreAuthorize("@ss.hasPermi('module:member:list')")
     @GetMapping("/list")
+    @BindAgent
     public TableDataInfo list(Member member) {
         SysUser user = getSysUser();
         List<Long> agentIds = new ArrayList<>();
@@ -78,6 +85,23 @@ public class MemberController extends BaseController {
             agentIds.addAll(lowerAgentIds);
             member.setAgentIds(agentIds);
         }
+
+        // 允许查看的代理商数据
+        List<Long> bindAgentIds = new ArrayList<>();
+        HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
+        Object obj = request.getAttribute(Constants.SYS_USER_BIND_AGENT);
+        if (obj instanceof List) {
+            bindAgentIds = (List) obj;
+        }
+        if (CollectionUtils.isNotEmpty(bindAgentIds)) {
+            if (CollectionUtils.isNotEmpty(member.getAgentIds())) {
+                agentIds.retainAll(bindAgentIds);
+                member.setAgentIds(agentIds);
+            } else {
+                member.setAgentIds(bindAgentIds);
+            }
+        }
+
         startPage();
         List<Member> list = iMemberService.queryList(member);
         return getDataTable(list);

+ 53 - 4
lb-web/src/main/java/com/ydd/web/controller/MerchantController.java

@@ -2,7 +2,9 @@ package com.ydd.web.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydd.common.annotation.BindAgent;
 import com.ydd.common.annotation.Log;
+import com.ydd.common.constant.Constants;
 import com.ydd.common.core.controller.BaseController;
 import com.ydd.common.core.domain.Result;
 import com.ydd.common.core.domain.entity.SysUser;
@@ -12,6 +14,7 @@ import com.ydd.common.enums.BusinessType;
 import com.ydd.common.enums.UserTypeEnums;
 import com.ydd.common.utils.poi.ExcelUtil;
 import com.ydd.module.domain.Agent;
+import com.ydd.ecloud.core.utils.HttpContextUtils;
 import com.ydd.module.domain.DspDelivery;
 import com.ydd.module.domain.Merchant;
 import com.ydd.module.domain.MerchantCategory;
@@ -22,9 +25,9 @@ import lombok.RequiredArgsConstructor;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -88,6 +91,7 @@ public class MerchantController extends BaseController {
      */
     // @PreAuthorize("@ss.hasPermi('module:merchant:list')")
     @GetMapping("/list")
+    @BindAgent
     public TableDataInfo list(SystemMerchantDto merchantDto) {
         SysUser user = getSysUser();
 
@@ -113,6 +117,20 @@ public class MerchantController extends BaseController {
             return getDataTable(new ArrayList<>());
           }
         }
+        // 允许查看的代理商数据
+        List<Long> agentIds = new ArrayList<>();
+        HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
+        Object obj = request.getAttribute(Constants.SYS_USER_BIND_AGENT);
+        if (obj instanceof List) {
+            agentIds = (List) obj;
+        }
+        if (CollectionUtils.isNotEmpty(agentIds)) {
+            if (CollectionUtils.isNotEmpty(agents)) {
+                agents.retainAll(agentIds);
+            } else {
+                agents.addAll(agentIds);
+            }
+        }
         startPage();
         List<Merchant> list = iMerchantService.queryList(merchantDto, agents, agentList);
         return getDataTable(list);
@@ -121,8 +139,16 @@ public class MerchantController extends BaseController {
      * 查询客户商家配送平台列表(达达和顺丰)
      */
     @GetMapping("/shop/delivery/list")
+    @BindAgent
     public Result getShopDeliveryList(Page page, Merchant merchant) {
-        PageResult pageResult = iShopDeliveryBindService.getShopDeliveryList(page,merchant);
+        // 允许查看的代理商数据
+        List<Long> agentIds = new ArrayList<>();
+        HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
+        Object obj = request.getAttribute(Constants.SYS_USER_BIND_AGENT);
+        if (obj instanceof List) {
+            agentIds = (List) obj;
+        }
+        PageResult pageResult = iShopDeliveryBindService.getShopDeliveryList(page,merchant, agentIds);
         Map map = new HashMap();
         map.put("page",pageResult);
         Result result = Result.success();
@@ -142,8 +168,16 @@ public class MerchantController extends BaseController {
         return result;
     }
     @GetMapping("/shop/delivery/verify")
+    @BindAgent
     public Result verify(Page page, Merchant merchant) {
         SysUser user = getSysUser();
+        // 允许查看的代理商数据
+        HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
+        Object obj = request.getAttribute(Constants.SYS_USER_BIND_AGENT);
+        if (obj instanceof List) {
+            List<Long> agentIds = (List) obj;
+            user.setAgentIds(agentIds);
+        }
         PageResult pageResult = iShopDeliveryService.verify(page,merchant,user);
         Map map = new HashMap();
         map.put("page",pageResult);
@@ -183,9 +217,9 @@ public class MerchantController extends BaseController {
      */
     @PostMapping("/shop/delivery/handle")
     public Result shopDeliveryHandle(@RequestBody ShopDeliveryDto shopDeliveryDto) {
-        String flg = "";//iShopDeliveryService.shopDeliveryHandle(shopDeliveryDto);
+//        String flg = iShopDeliveryService.shopDeliveryHandle(shopDeliveryDto);
         Result result = Result.success();
-        result.put("data",flg);
+        result.put("data", "");
         return result;
     }
 
@@ -206,6 +240,7 @@ public class MerchantController extends BaseController {
     // @PreAuthorize("@ss.hasPermi('module:merchant:export')" )
     @Log(title = "客户商家" , businessType = BusinessType.EXPORT)
     @GetMapping("/export" )
+    @BindAgent
     public Result export(MerchantExportDto merchant) {
         SysUser user = getSysUser();
         if (user.getType().equals(UserTypeEnums.AGENT.getCode()) && merchant.getAgentId() == null){
@@ -216,6 +251,20 @@ public class MerchantController extends BaseController {
         if (merchant.getAgentId() != null) {
             agents = iAgentService.listAgent(merchant.getAgentId());
         }
+        // 允许查看的代理商数据
+        List<Long> agentIds = Lists.newArrayList();
+        HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
+        Object obj = request.getAttribute(Constants.SYS_USER_BIND_AGENT);
+        if (obj instanceof List) {
+            agentIds = (List) obj;
+        }
+        if (CollectionUtils.isNotEmpty(agentIds)) {
+            if (CollectionUtils.isNotEmpty(agents)) {
+                agents.retainAll(agentIds);
+            } else {
+                agents.addAll(agentIds);
+            }
+        }
 
         List<MerchantExportDto> list = iMerchantService.selectExportList(merchant, agents);
         ExcelUtil<MerchantExportDto> util = new ExcelUtil<>(MerchantExportDto.class);

+ 36 - 1
lb-web/src/main/java/com/ydd/web/controller/OrderController.java

@@ -1,7 +1,9 @@
 package com.ydd.web.controller;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydd.common.annotation.BindAgent;
 import com.ydd.common.annotation.Log;
+import com.ydd.common.constant.Constants;
 import com.ydd.common.core.controller.BaseController;
 import com.ydd.common.core.domain.Result;
 import com.ydd.common.core.domain.entity.SysUser;
@@ -9,6 +11,7 @@ import com.ydd.common.core.page.PageResult;
 import com.ydd.common.enums.BusinessType;
 import com.ydd.common.enums.UserTypeEnums;
 import com.ydd.common.utils.poi.ExcelUtil;
+import com.ydd.ecloud.core.utils.HttpContextUtils;
 import com.ydd.module.domain.Order;
 import com.ydd.module.dto.OrderExportDto;
 import com.ydd.module.dto.SystemOrderDto;
@@ -21,7 +24,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.*;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 配送订单Controller
@@ -43,11 +50,20 @@ public class OrderController extends BaseController {
      */
     @PreAuthorize("@ss.hasPermi('module:order:list')")
     @GetMapping("/list")
+    @BindAgent
     public Result list(Page page, SystemOrderDto order, Integer merchantId) {
         SysUser user = getSysUser();
         if (user.getType().equals(UserTypeEnums.AGENT.getCode()) && user.getAgentId() != null){
             order.setAgentId(user.getAgentId());
         }
+        // 允许查看的代理商数据
+        HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
+        Object obj = request.getAttribute(Constants.SYS_USER_BIND_AGENT);
+        if (obj instanceof List) {
+            List<Long> agentIds = (List) obj;
+            user.setAgentIds(agentIds);
+        }
+
 //        PageResult pageResult = iOrderService.queryPageList(page,order,user,merchantId);
         PageResult pageResult = iOrderService.queryPageListNew(page,order,user,merchantId);
         Map map = new HashMap();
@@ -63,11 +79,20 @@ public class OrderController extends BaseController {
     @PreAuthorize("@ss.hasPermi('module:order:export')" )
     @Log(title = "配送订单" , businessType = BusinessType.EXPORT)
     @GetMapping("/export" )
+    @BindAgent
     public Result export(SystemOrderDto order) {
         SysUser user = getSysUser();
         if (user.getType().equals(UserTypeEnums.AGENT.getCode()) && user.getAgentId() != null) {
             order.setAgentId(user.getAgentId());
         }
+        // 允许查看的代理商数据
+        HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
+        Object obj = request.getAttribute(Constants.SYS_USER_BIND_AGENT);
+        if (obj instanceof List) {
+            List<Long> agentIds = (List) obj;
+            user.setAgentIds(agentIds);
+        }
+
         List<OrderExportDto> list = iOrderService.selectExportOrder(order,user,null);
         ExcelUtil<OrderExportDto> util = new ExcelUtil<OrderExportDto>(OrderExportDto.class);
         return util.exportExcel(list, "配送订单统计" );
@@ -117,11 +142,21 @@ public class OrderController extends BaseController {
      * 订单数量统计 通过状态  1待接单 2取货中 3配送中 4平台完成
      */
     @PostMapping("/sumByStatus")
+    @BindAgent
     public Result sumByStatus(@RequestBody List<SystemOrderDto.DeliveryStatus> deliveryStatusList, SystemOrderDto order) {
         SysUser sysUser = getSysUser();
         if (sysUser.getType().equals(UserTypeEnums.AGENT.getCode()) && sysUser.getAgentId() != null){
             order.setAgentId(sysUser.getAgentId());
         }
+
+        // 允许查看的代理商数据
+        HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
+        Object obj = request.getAttribute(Constants.SYS_USER_BIND_AGENT);
+        if (obj instanceof List) {
+            List<Long> agentIds = (List) obj;
+            sysUser.setAgentIds(agentIds);
+        }
+
         // order.setDeliveryStatus(deliveryStatus);
         // JSONArray array = JSONArray.parseArray(data);
         // List<SystemOrderDto.DeliveryStatus> deliveryStatusList = JSONObject.parseArray(array.toString(), SystemOrderDto.DeliveryStatus.class);

+ 21 - 0
lb-web/src/main/java/com/ydd/web/controller/PersonnelController.java

@@ -1,21 +1,27 @@
 package com.ydd.web.controller;
 
+import com.ydd.common.annotation.BindAgent;
 import com.ydd.common.annotation.Log;
+import com.ydd.common.constant.Constants;
 import com.ydd.common.core.controller.BaseController;
 import com.ydd.common.core.domain.Result;
 import com.ydd.common.core.domain.entity.SysUser;
 import com.ydd.common.core.page.TableDataInfo;
 import com.ydd.common.enums.BusinessType;
 import com.ydd.common.enums.UserTypeEnums;
+import com.ydd.ecloud.core.utils.HttpContextUtils;
 import com.ydd.module.domain.Personnel;
 import com.ydd.module.service.IAgentService;
 import com.ydd.module.service.IPersonnelService;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
@@ -38,6 +44,7 @@ public class PersonnelController extends BaseController {
      * 查询员工列表
      */
     @GetMapping("/list")
+    @BindAgent
     public TableDataInfo list(Personnel personnel) {
         SysUser user = getSysUser();
         if (user.getType().equals(UserTypeEnums.AGENT.getCode()) && personnel.getAgentId() == null){
@@ -49,6 +56,20 @@ public class PersonnelController extends BaseController {
             agents = iAgentService.listAgent(personnel.getAgentId().longValue());
         }
 
+        // 允许查看的代理商数据
+        List<Long> agentIds = new ArrayList<>();
+        HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
+        Object obj = request.getAttribute(Constants.SYS_USER_BIND_AGENT);
+        if (obj instanceof List) {
+            agentIds = (List) obj;
+        }
+        if (CollectionUtils.isNotEmpty(agentIds)) {
+            if (CollectionUtils.isNotEmpty(agents)) {
+                agents.retainAll(agentIds);
+            } else {
+                agents.addAll(agentIds);
+            }
+        }
         startPage();
         List<Personnel> list = iPersonnelService.queryList(personnel,user,agents);
         return getDataTable(list);

+ 74 - 0
lb-web/src/main/java/com/ydd/web/interceptor/DomainInterceptor.java

@@ -0,0 +1,74 @@
+package com.ydd.web.interceptor;
+
+import com.alibaba.fastjson.JSON;
+import com.ydd.common.config.EnvConfig;
+import com.ydd.common.constant.Constants;
+import com.ydd.common.constant.HttpStatus;
+import com.ydd.common.core.domain.Result;
+import com.ydd.common.core.domain.entity.SysRole;
+import com.ydd.common.core.domain.entity.SysUser;
+import com.ydd.common.core.domain.model.LoginUser;
+import com.ydd.common.utils.ServletUtils;
+import com.ydd.framework.web.service.TokenService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 请求域名拦截
+ *
+ * @author 叶君翔
+ * @date 2022-03-18 10:39
+ */
+@Slf4j
+@Configuration
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+public class DomainInterceptor extends HandlerInterceptorAdapter {
+
+    private final EnvConfig envConfig;
+
+    private final TokenService tokenService;
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
+        String serverName = request.getServerName();
+        log.info("请求域名: {}", serverName);
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        if (serverName != null && !serverName.contains("localhost") && !Objects.isNull(loginUser)) {
+            // 登录域名校验
+            SysUser sysUser = loginUser.getUser();
+            if (sysUser == null) {
+                return true;
+            }
+            List<SysRole> roles = sysUser.getRoles();
+            if (CollectionUtils.isEmpty(roles) || roles.get(0).getRoleId() == null) {
+                return true;
+            }
+            // 外部角色
+            if (Constants.EXTERNAL_ROLE_IDS.contains(roles.get(0).getRoleId())) {
+                if (!serverName.contains(Constants.getExternalDomain(envConfig.getProfiles()))) {
+                    log.warn("域名错误,请求被拦截!");
+                    ServletUtils.renderString(response, JSON.toJSONString(Result.error(HttpStatus.ERROR, "用户不存在!")));
+                    return false;
+                }
+            } else {
+                // 内部角色
+                if (!serverName.contains(Constants.getInSideDomain(envConfig.getProfiles()))) {
+                    log.warn("域名错误,请求被拦截!");
+                    ServletUtils.renderString(response, JSON.toJSONString(Result.error(HttpStatus.ERROR, "用户不存在!")));
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
+}