diff --git a/dq-financial-api/src/main/java/com/daqing/financial/hrauth/SystemLogControllerApi.java b/dq-financial-api/src/main/java/com/daqing/financial/hrauth/SystemLogControllerApi.java new file mode 100644 index 00000000..8e027de1 --- /dev/null +++ b/dq-financial-api/src/main/java/com/daqing/financial/hrauth/SystemLogControllerApi.java @@ -0,0 +1,24 @@ +package com.daqing.financial.hrauth; + +import com.daqing.framework.domain.crms.request.CustomerRequest; +import com.daqing.framework.domain.hrms.request.LoginRequest; +import com.daqing.framework.domain.hrms.request.UserLoginRequest; +import com.daqing.framework.model.response.ResponseResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +/** + * @Author: gongsj. + * @Description: 登录controllerApi定义 + * @Date:Created in 2020/09/07 11:33. + * @Modified By: + */ +@Api(value = "系统日志相关操作", tags = "提供系统日志相关操作") +public interface SystemLogControllerApi { + + @ApiOperation(value = "系统日志列表") + ResponseResult list(Integer page, Integer size); + + @ApiOperation(value = "登录日志列表") + ResponseResult loginLogList(Integer page, Integer size); +} diff --git a/dq-financial-crms/src/main/java/com/daqing/financial/crms/config/CorsConfig.java b/dq-financial-crms/src/main/java/com/daqing/financial/crms/config/CorsConfig.java index a5336047..ee5a7119 100644 --- a/dq-financial-crms/src/main/java/com/daqing/financial/crms/config/CorsConfig.java +++ b/dq-financial-crms/src/main/java/com/daqing/financial/crms/config/CorsConfig.java @@ -1,33 +1,50 @@ -package com.daqing.financial.crms.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 实现基本的跨域请求 - * - * @auther River - * @date 2020/9/25 15:09 - */ -@Configuration -public class CorsConfig { - - @Bean - public CorsFilter corsFilter() { - final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource(); - final CorsConfiguration corsConfiguration = new CorsConfiguration(); - /*是否允许请求带有验证信息*/ - corsConfiguration.setAllowCredentials(true); - /*允许访问的客户端域名*/ - corsConfiguration.addAllowedOrigin("*"); - /*允许服务端访问的客户端请求头*/ - corsConfiguration.addAllowedHeader("*"); - /*允许访问的方法名,GET POST等*/ - corsConfiguration.addAllowedMethod("*"); - urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration); - return new CorsFilter(urlBasedCorsConfigurationSource); - } -} +//package com.daqing.financial.crms.config; +// +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.servlet.HandlerInterceptor; +//import org.springframework.web.servlet.ModelAndView; +//import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +//import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +// +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletResponse; +// +///** +// * 实现基本的跨域请求 +// * +// * @auther River +// * @date 2020/9/25 15:09 +// */ +//@Configuration +//public class CorsConfig extends WebMvcConfigurerAdapter { +// +// +// @Override +// public void addInterceptors(InterceptorRegistry registry) { +// registry.addInterceptor(new HandlerInterceptor() { +// @Override +// public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) +// throws Exception { +// // boolean isTrue = envConfig.getIsDev();//判断是测试服才需要解决跨域问题 +// //if (isTrue) { +// response.addHeader("Access-Control-Allow-Origin", "*"); +// response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); +// response.addHeader("Access-Control-Allow-Headers", +// "Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,token"); +// // } +// return true; +// } +// +// @Override +// public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, +// ModelAndView modelAndView) throws Exception { +// +// } +// +// @Override +// public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, +// Exception ex) throws Exception { +// } +// }); +// } +//} diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/aspect/SysLogAspect.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/aspect/SysLogAspect.java index 4601ad31..5944c7d4 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/aspect/SysLogAspect.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/aspect/SysLogAspect.java @@ -22,20 +22,15 @@ import java.util.HashMap; import java.util.Map; /** - * @ClassName actionLogAspect + * @ClassName SysLogAspect * @Description 操作日志切面 - * @Author Rogers - * @Date 2020/7/3 23:24 + * @Date 2020/9/30 * @Version 1.0 */ @Slf4j @Aspect @Component public class SysLogAspect { -/* @Resource - private ISystemLogService logService; - @Resource - private SystemLogMapper systemLogMapper;*/ @Resource private Operation operation; diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/SystemLogController.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/SystemLogController.java new file mode 100644 index 00000000..0c35c1bf --- /dev/null +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/SystemLogController.java @@ -0,0 +1,55 @@ +package com.daqing.financial.hrauth.controller; + +import com.daqing.financial.hrauth.SystemLogControllerApi; +import com.daqing.financial.hrauth.UserLoginControllerApi; +import com.daqing.financial.hrauth.annotation.Log; +import com.daqing.financial.hrauth.enums.OperationType; +import com.daqing.financial.hrauth.enums.OperationUnit; +import com.daqing.financial.hrauth.service.LoginLogService; +import com.daqing.financial.hrauth.service.SystemLogService; +import com.daqing.financial.hrauth.service.UserLoginService; +import com.daqing.framework.domain.hrms.EmployeeEntity; +import com.daqing.framework.domain.hrms.SystemLog; +import com.daqing.framework.domain.hrms.request.LoginRequest; +import com.daqing.framework.domain.hrms.request.UserLoginRequest; +import com.daqing.framework.model.response.ResponseResult; +import com.daqing.framework.utils.PageUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + + +/** + * @auther River + * @date 2020/9/22 15:27 + */ +@RestController +@RequestMapping("/hrms/auth/systemLog") +@Api(tags = {"日志管理"}) +public class SystemLogController implements SystemLogControllerApi { + + @Autowired + private SystemLogService systemLogService; + @Autowired + private LoginLogService loginLogService; + + @GetMapping("/list") + @Log(detail = "系统日志列表",level = 3,operationUnit = OperationUnit.ROLE,operationType = OperationType.SELECT) + public ResponseResult list(@RequestParam("page") Integer page, + @RequestParam("size") Integer size) { + PageUtils data = systemLogService.queryPage(page, size); + return new ResponseResult().SUCCESS(data); + } + + @GetMapping("/loginLogList") + @Log(detail = "登录日志列表",level = 3,operationUnit = OperationUnit.ROLE,operationType = OperationType.SELECT) + public ResponseResult loginLogList(@RequestParam("page") Integer page, + @RequestParam("size") Integer size) { + PageUtils data = loginLogService.queryPage(page, size); + return new ResponseResult().SUCCESS(data); + } + +} diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/LoginLogMapper.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/LoginLogMapper.java index d1553d2d..e1fd08c6 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/LoginLogMapper.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/LoginLogMapper.java @@ -1,9 +1,12 @@ package com.daqing.financial.hrauth.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.daqing.framework.domain.hrms.LoginLog; import org.apache.ibatis.annotations.Mapper; @Mapper public interface LoginLogMapper extends BaseMapper { + IPage pageByCondition(Page page); } diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/SystemLogMapper.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/SystemLogMapper.java index 6a7c9e30..65e9ab37 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/SystemLogMapper.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/SystemLogMapper.java @@ -2,17 +2,19 @@ package com.daqing.financial.hrauth.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.daqing.framework.domain.hrms.SystemLog; import org.apache.ibatis.annotations.Mapper; /** - * @ClassName UserActionMapper + * @ClassName SystemLogMapper * @Description 用户动作记录 - * @Author Rogers - * @Date 2020/7/3 22:08 + * @Date 2020/9/30 * @Version 1.0 */ @Mapper public interface SystemLogMapper extends BaseMapper { + IPage pageByCondition(Page page); } diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/LoginLogService.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/LoginLogService.java index 125dba58..6b193507 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/LoginLogService.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/LoginLogService.java @@ -2,6 +2,8 @@ package com.daqing.financial.hrauth.service; import com.baomidou.mybatisplus.extension.service.IService; import com.daqing.framework.domain.hrms.LoginLog; +import com.daqing.framework.utils.PageUtils; public interface LoginLogService extends IService { + PageUtils queryPage(Integer page, Integer size); } diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/SystemLogService.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/SystemLogService.java new file mode 100644 index 00000000..fa5f6dac --- /dev/null +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/SystemLogService.java @@ -0,0 +1,11 @@ +package com.daqing.financial.hrauth.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.daqing.framework.domain.hrms.EmployeeEntity; +import com.daqing.framework.domain.hrms.LoginLog; +import com.daqing.framework.domain.hrms.SystemLog; +import com.daqing.framework.utils.PageUtils; + +public interface SystemLogService extends IService { + PageUtils queryPage(Integer page, Integer size); +} diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/LoginLogServiceImpl.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/LoginLogServiceImpl.java index 6550f4ff..7d07640f 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/LoginLogServiceImpl.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/LoginLogServiceImpl.java @@ -1,11 +1,28 @@ package com.daqing.financial.hrauth.service.impl; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.daqing.financial.hrauth.dao.LoginLogMapper; import com.daqing.financial.hrauth.service.LoginLogService; import com.daqing.framework.domain.hrms.LoginLog; +import com.daqing.framework.domain.hrms.SystemLog; +import com.daqing.framework.utils.PageUtils; import org.springframework.stereotype.Service; @Service public class LoginLogServiceImpl extends ServiceImpl implements LoginLogService { + @Override + public PageUtils queryPage(Integer page, Integer size) { + //分页参数 + if (page <= 0) { + page = 1; + } + if (size <= 0) { + size = 10; + } + IPage loginLogVo = this.getBaseMapper().pageByCondition(new Page(page, size)); + + return new PageUtils(loginLogVo); + } } diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/SystemLogServiceImpl.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/SystemLogServiceImpl.java new file mode 100644 index 00000000..5caf8410 --- /dev/null +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/SystemLogServiceImpl.java @@ -0,0 +1,32 @@ +package com.daqing.financial.hrauth.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.daqing.financial.hrauth.dao.LoginLogMapper; +import com.daqing.financial.hrauth.dao.SystemLogMapper; +import com.daqing.financial.hrauth.service.LoginLogService; +import com.daqing.financial.hrauth.service.SystemLogService; +import com.daqing.framework.domain.hrms.EmployeeEntity; +import com.daqing.framework.domain.hrms.LoginLog; +import com.daqing.framework.domain.hrms.SystemLog; +import com.daqing.framework.domain.hrms.ext.EmployeeVO; +import com.daqing.framework.utils.PageUtils; +import org.springframework.stereotype.Service; + +@Service +public class SystemLogServiceImpl extends ServiceImpl implements SystemLogService { + @Override + public PageUtils queryPage(Integer page, Integer size) { + //分页参数 + if (page <= 0) { + page = 1; + } + if (size <= 0) { + size = 10; + } + IPage systemLogVo = this.getBaseMapper().pageByCondition(new Page(page, size)); + + return new PageUtils(systemLogVo); + } +} diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java index 0551e573..e6566726 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java @@ -134,9 +134,9 @@ public class UserLoginServiceImpl extends ServiceImpl } //登录成功,token生成 - long times = 84600; + long times = 8460000; if(loginRequest.getTenDayEffective() == 1){ - times = 846000; + times = 846000000; } String token = JwtUtils.createJWT(userEntity.getId()+"","token", times); Token userToken = tokenService.getOne(new QueryWrapper().eq("user_id", userEntity.getId())); diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/util/IpUtils.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/util/IpUtils.java index f663abee..96b09c81 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/util/IpUtils.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/util/IpUtils.java @@ -8,8 +8,7 @@ import java.util.Enumeration; /** * @ClassName IpUtils * @Description Ip工具类,获取ip - * @Author Rogers - * @Date 2020/7/4 14:36 + * @Date 2020/9/30 * @Version 1.0 */ public class IpUtils { diff --git a/dq-financial-hrms-auth/src/main/resources/mapper/hrmsauth/LoginLogMapper.xml b/dq-financial-hrms-auth/src/main/resources/mapper/hrmsauth/LoginLogMapper.xml new file mode 100644 index 00000000..efadb287 --- /dev/null +++ b/dq-financial-hrms-auth/src/main/resources/mapper/hrmsauth/LoginLogMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/dq-financial-hrms-auth/src/main/resources/mapper/hrmsauth/SystemLogMapper.xml b/dq-financial-hrms-auth/src/main/resources/mapper/hrmsauth/SystemLogMapper.xml new file mode 100644 index 00000000..04ed9930 --- /dev/null +++ b/dq-financial-hrms-auth/src/main/resources/mapper/hrmsauth/SystemLogMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/dq-financial-hrms/src/main/java/com/daqing/financial/hrms/config/CorsConfig.java b/dq-financial-hrms/src/main/java/com/daqing/financial/hrms/config/CorsConfig.java index 25645947..552094b0 100644 --- a/dq-financial-hrms/src/main/java/com/daqing/financial/hrms/config/CorsConfig.java +++ b/dq-financial-hrms/src/main/java/com/daqing/financial/hrms/config/CorsConfig.java @@ -1,33 +1,33 @@ -package com.daqing.financial.hrms.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -/** - * 实现基本的跨域请求 - * - * @auther River - * @date 2020/9/25 15:09 - */ -@Configuration -public class CorsConfig { - - @Bean - public CorsFilter corsFilter() { - final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource(); - final CorsConfiguration corsConfiguration = new CorsConfiguration(); - /*是否允许请求带有验证信息*/ - corsConfiguration.setAllowCredentials(true); - /*允许访问的客户端域名*/ - corsConfiguration.addAllowedOrigin("*"); - /*允许服务端访问的客户端请求头*/ - corsConfiguration.addAllowedHeader("*"); - /*允许访问的方法名,GET POST等*/ - corsConfiguration.addAllowedMethod("*"); - urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration); - return new CorsFilter(urlBasedCorsConfigurationSource); - } -} +//package com.daqing.financial.hrms.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.cors.CorsConfiguration; +//import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +//import org.springframework.web.filter.CorsFilter; +// +///** +// * 实现基本的跨域请求 +// * +// * @auther River +// * @date 2020/9/25 15:09 +// */ +//@Configuration +//public class CorsConfig { +// +// @Bean +// public CorsFilter corsFilter() { +// final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource(); +// final CorsConfiguration corsConfiguration = new CorsConfiguration(); +// /*是否允许请求带有验证信息*/ +// corsConfiguration.setAllowCredentials(true); +// /*允许访问的客户端域名*/ +// corsConfiguration.addAllowedOrigin("*"); +// /*允许服务端访问的客户端请求头*/ +// corsConfiguration.addAllowedHeader("*"); +// /*允许访问的方法名,GET POST等*/ +// corsConfiguration.addAllowedMethod("*"); +// urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration); +// return new CorsFilter(urlBasedCorsConfigurationSource); +// } +//} diff --git a/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/ApiGlobalFilter.java b/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/ApiGlobalFilter.java index 6a488534..2ac4eb5f 100644 --- a/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/ApiGlobalFilter.java +++ b/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/ApiGlobalFilter.java @@ -14,6 +14,9 @@ import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.http.server.reactive.ServerHttpResponse; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.reactive.CorsWebFilter; +import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; diff --git a/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/FinancialCorsConfiguration.java b/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/FinancialCorsConfiguration.java index 70d59b30..9995fd9f 100644 --- a/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/FinancialCorsConfiguration.java +++ b/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/FinancialCorsConfiguration.java @@ -1,5 +1,9 @@ package com.daqing.financial.gateway.config; +import org.springframework.cloud.client.discovery.DiscoveryClient; +import org.springframework.cloud.gateway.discovery.DiscoveryClientRouteDefinitionLocator; +import org.springframework.cloud.gateway.discovery.DiscoveryLocatorProperties; +import org.springframework.cloud.gateway.route.RouteDefinitionLocator; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; @@ -24,4 +28,9 @@ public class FinancialCorsConfiguration { source.registerCorsConfiguration("/**",corsConfiguration); return new CorsWebFilter(source); } + @Bean + public RouteDefinitionLocator discoveryClientRouteDefinitionLocator(DiscoveryClient discoveryClient, + DiscoveryLocatorProperties properties) { + return new DiscoveryClientRouteDefinitionLocator(discoveryClient, properties); + } } diff --git a/dq-govern-gateway/src/main/resources/jwt.properties b/dq-govern-gateway/src/main/resources/jwt.properties index 72852b09..6bef2a95 100644 --- a/dq-govern-gateway/src/main/resources/jwt.properties +++ b/dq-govern-gateway/src/main/resources/jwt.properties @@ -1,4 +1,7 @@ jwt.ignoreUrlList=/apiHrmsAuth/hrms/auth/userlogin/getBackPwd,\ /apiHrmsAuth/hrms/auth/userlogin/login,\ /apiHrmsAuth/hrms/auth/userlogin/verifyMobile,\ - /api-crms/sweagger-ui.html \ No newline at end of file + /api-crms/sweagger-ui.html,\ + /api-crms/crms/customer/excelTemplate,\ + /api-crms/crms/customer/excelExport,\ + /api-crms/crms/customer/excelImport \ No newline at end of file