.gitignore
@@ -15,6 +15,6 @@ target *.yaml *.yml #*.yaml #*.yml *.log pom.xml
@@ -13,7 +13,7 @@ <parent> <groupId>com.xiaopeng.logan</groupId> <artifactId>logan-parent</artifactId> <version>2.2.0</version> <version>2.3.5</version> </parent> <properties> xp-api/src/main/java/com/xiaopeng/api/factory/operation/SysLogClientFallbackFactory.java
New file @@ -0,0 +1,24 @@ package com.xiaopeng.api.factory.operation; import com.xiaopeng.api.feignClient.operation.SysLogClient; import com.xiaopeng.api.model.operation.SysOperLog; import com.xiaopeng.common.core.domain.R; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; @Slf4j @Component public class SysLogClientFallbackFactory implements FallbackFactory<SysLogClient> { @Override public SysLogClient create(Throwable cause) { return new SysLogClient(){ @Override public R saveLog(SysOperLog sysOperLog) { log.error("保存系统日志记录失败:{}", cause.getMessage()); return R.fail("保存系统日志记录失败"); } }; } } xp-api/src/main/java/com/xiaopeng/api/feignClient/operation/SysLogClient.java
New file @@ -0,0 +1,20 @@ package com.xiaopeng.api.feignClient.operation; import com.xiaopeng.api.factory.operation.SysLogClientFallbackFactory; import com.xiaopeng.api.model.operation.SysOperLog; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; @FeignClient(contextId = "SysLogClient", value = ServiceNameConstantsEnum.XP_OPERATION_SERVICE, fallbackFactory = SysLogClientFallbackFactory.class) public interface SysLogClient { /** * 保存系统日志 * @param sysOperLog */ @PostMapping("/operlog/saveLog") R saveLog(SysOperLog sysOperLog); } xp-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@ com.xiaopeng.api.factory.operation.SysLogClientFallbackFactory xp-common/xp-common-core/src/main/java/com/xiaopeng/common/core/dto/ServiceNameConstantsEnum.java
New file @@ -0,0 +1,53 @@ package com.xiaopeng.common.core.dto; /** * 服务名称常量枚举类 */ public interface ServiceNameConstantsEnum { /** * 账户服务 */ String XP_ACCOUNT_SERVICE = "xp-account"; /** * 自动驾驶服务 */ String XP_AUTOMATIC_PILOT_SERVICE = "xp-automaticPilot"; /** * 行程服务 */ String XP_ITINERARY_SERVICE = "xp-itinerary"; /** * 运维服务 */ String XP_MAINTENANCE_SERVICE = "xp-maintenance"; /** * 地图服务 */ String XP_MAP_SERVICE = "xp-map"; /** * 运营服务 */ String XP_OPERATION_SERVICE = "xp-operation"; /** * 订单服务 */ String XP_ORDER_SERVICE = "xp-order"; /** * 支付服务 */ String XP_PAYMENT_SERVICE = "xp-payment"; /** * 推送服务 */ String XP_PUSH_MESSAGE_SERVICE = "xp-pushMessage"; /** * 远程驾驶服务 */ String XP_REMOTE_DRIVING_SERVICE = "xp-remoteDriving"; /** * 车辆车队服务 */ String XP_VEHICLE_CONVOY_SERVICE = "xp-vehicleConvoy"; } xp-common/xp-common-datascope/src/main/java/com/xiaopeng/common/datascope/aspect/DataScopeAspect.java
@@ -2,6 +2,10 @@ import java.util.ArrayList; import java.util.List; import com.xiaopeng.api.model.account.SysRole; import com.xiaopeng.api.model.account.SysUser; import com.xiaopeng.api.vo.account.LoginUser; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @@ -12,8 +16,6 @@ import com.xiaopeng.common.core.web.domain.BaseEntity; import com.xiaopeng.common.datascope.annotation.DataScope; import com.xiaopeng.common.security.utils.SecurityUtils; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; /** * 数据过滤处理 xp-common/xp-common-log/src/main/java/com/xiaopeng/common/log/service/AsyncLogService.java
@@ -1,8 +1,9 @@ package com.xiaopeng.common.log.service; import com.xiaopeng.api.feignClient.operation.SysLogClient; import com.xiaopeng.api.model.operation.SysOperLog; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import com.xiaopeng.common.core.constant.SecurityConstants; import javax.annotation.Resource; @@ -13,14 +14,15 @@ */ @Service public class AsyncLogService { @Resource private RemoteLogService remoteLogService; private SysLogClient sysLogClient; /** * 保存系统日志记录 */ @Async public void saveSysLog(SysOperLog sysOperLog) throws Exception { remoteLogService.saveLog(sysOperLog, SecurityConstants.INNER); sysLogClient.saveLog(sysOperLog); } } xp-common/xp-common-security/src/main/java/com/xiaopeng/common/security/annotation/EnableCustomConfig.java
@@ -20,7 +20,7 @@ // 表示通过aop框架暴露该代理对象,AopContext能够访问 @EnableAspectJAutoProxy(exposeProxy = true) // 指定要扫描的Mapper类的包的路径 @MapperScan("com.ruoyi.**.mapper") @MapperScan("com.xiaopeng.**.mapper") // 开启线程异步执行 @EnableAsync // 自动加载类 xp-common/xp-common-security/src/main/java/com/xiaopeng/common/security/annotation/EnableRyFeignClients.java
@@ -17,7 +17,7 @@ { String[] value() default {}; String[] basePackages() default { "com.ruoyi" }; String[] basePackages() default { "com.xiaopeng" }; Class<?>[] basePackageClasses() default {}; xp-common/xp-common-security/src/main/java/com/xiaopeng/common/security/aspect/PreAuthorizeAspect.java
@@ -31,9 +31,9 @@ /** * 定义AOP签名 (切入所有使用鉴权注解的方法) */ public static final String POINTCUT_SIGN = " @annotation(com.ruoyi.common.security.annotation.RequiresLogin) || " + "@annotation(com.ruoyi.common.security.annotation.RequiresPermissions) || " + "@annotation(com.ruoyi.common.security.annotation.RequiresRoles)"; public static final String POINTCUT_SIGN = " @annotation(com.xiaopeng.common.security.annotation.RequiresLogin) || " + "@annotation(com.xiaopeng.common.security.annotation.RequiresPermissions) || " + "@annotation(com.xiaopeng.common.security.annotation.RequiresRoles)"; /** * 声明AOP签名 xp-gateway/src/main/java/com/xiaopeng/gateway/GatewayApplication.java
New file @@ -0,0 +1,19 @@ package com.xiaopeng.gateway; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; /** * 网关启动程序 * * @author ruoyi */ @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); System.out.println("(♥◠‿◠)ノ゙ 网关启动成功 ლ(´ڡ`ლ)゙ \n"); } } xp-gateway/src/main/java/com/xiaopeng/gateway/RuoYiGatewayApplication.java
File was deleted xp-gateway/src/main/java/com/xiaopeng/gateway/config/CaptchaConfig.java
@@ -62,7 +62,7 @@ // KAPTCHA_SESSION_KEY properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCodeMath"); // 验证码文本生成器 properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.ruoyi.gateway.config.KaptchaTextCreator"); properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.xiaopeng.gateway.config.KaptchaTextCreator"); // 验证码文本字符间距 默认为2 properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3"); // 验证码文本字符长度 默认为5 xp-modules/xp-file/src/main/java/com/xiaopeng/file/controller/SysFileController.java
@@ -1,5 +1,6 @@ package com.xiaopeng.file.controller; import com.xiaopeng.api.model.operation.SysFile; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -9,7 +10,6 @@ import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.utils.file.FileUtils; import com.xiaopeng.file.service.ISysFileService; import com.ruoyi.system.api.domain.SysFile; /** * 文件请求处理 xp-modules/xp-file/src/main/resources/logback.xml
@@ -58,7 +58,7 @@ </appender> <!-- 系统模块日志级别控制 --> <logger name="com.ruoyi" level="info" /> <logger name="com.xiaopeng" level="info" /> <!-- Spring日志级别控制 --> <logger name="org.springframework" level="warn" /> xp-modules/xp-job/src/main/resources/logback.xml
@@ -58,7 +58,7 @@ </appender> <!-- 系统模块日志级别控制 --> <logger name="com.ruoyi" level="info" /> <logger name="com.xiaopeng" level="info" /> <!-- Spring日志级别控制 --> <logger name="org.springframework" level="warn" /> xp-service/xp-account/src/main/java/com/xiaopeng/account/AccountApplication.java
@@ -25,6 +25,6 @@ public class AccountApplication { public static void main(String[] args) { SpringApplication.run(AccountApplication.class, args); System.out.println("(♥◠‿◠)ノ゙ 账户模块启动成功 ლ(´ڡ`ლ)゙ "); System.out.println("(♥◠‿◠)ノ゙ 账户模块启动成功 ლ(´ڡ`ლ)゙ \n"); } } xp-service/xp-account/src/main/java/com/xiaopeng/account/vo/AddCompanyUserDto.java
@@ -1,6 +1,6 @@ package com.xiaopeng.account.vo; import com.ruoyi.system.api.domain.SysUser; import com.xiaopeng.api.model.account.SysUser; import lombok.Data; import javax.validation.constraints.NotNull; xp-service/xp-account/src/main/java/com/xiaopeng/account/vo/CompanyUserVo.java
@@ -1,7 +1,6 @@ package com.xiaopeng.account.vo; //import com.ruoyi.management.api.model.TCompanyShop; import com.ruoyi.system.api.domain.SysUser; import com.xiaopeng.api.model.account.SysUser; import lombok.Data; import javax.validation.constraints.NotBlank; xp-service/xp-automaticPilot/src/main/java/com/xiaopeng/automaticPilot/AutomaticPilotApplication.java
@@ -24,6 +24,6 @@ public class AutomaticPilotApplication { public static void main(String[] args) { SpringApplication.run(AutomaticPilotApplication.class, args); System.out.println("(♥◠‿◠)ノ゙ 自动驾驶模块启动成功 ლ(´ڡ`ლ)゙ "); System.out.println("(♥◠‿◠)ノ゙ 自动驾驶模块启动成功 ლ(´ڡ`ლ)゙ \n"); } } xp-service/xp-itinerary/src/main/java/com/xiaopeng/itinerary/ItineraryApplication.java
@@ -24,6 +24,6 @@ public class ItineraryApplication { public static void main(String[] args) { SpringApplication.run(ItineraryApplication.class, args); System.out.println("(♥◠‿◠)ノ゙ 行程模块启动成功 ლ(´ڡ`ლ)゙ "); System.out.println("(♥◠‿◠)ノ゙ 行程模块启动成功 ლ(´ڡ`ლ)゙ \n"); } } xp-service/xp-maintenance/src/main/java/com/xiaopeng/maintenance/MaintenanceApplication.java
@@ -24,6 +24,6 @@ public class MaintenanceApplication { public static void main(String[] args) { SpringApplication.run(MaintenanceApplication.class, args); System.out.println("(♥◠‿◠)ノ゙ 运维模块启动成功 ლ(´ڡ`ლ)゙ "); System.out.println("(♥◠‿◠)ノ゙ 运维模块启动成功 ლ(´ڡ`ლ)゙ \n"); } } xp-service/xp-map/src/main/java/com/xiaopeng/map/MapApplication.java
@@ -24,6 +24,6 @@ public class MapApplication { public static void main(String[] args) { SpringApplication.run(MapApplication.class, args); System.out.println("(♥◠‿◠)ノ゙ 地图模块启动成功 ლ(´ڡ`ლ)゙ "); System.out.println("(♥◠‿◠)ノ゙ 地图模块启动成功 ლ(´ڡ`ლ)゙ \n"); } } xp-service/xp-operation/src/main/java/com/xiaopeng/operation/OperationApplication.java
@@ -24,6 +24,6 @@ public class OperationApplication { public static void main(String[] args) { SpringApplication.run(OperationApplication.class, args); System.out.println("(♥◠‿◠)ノ゙ 运营模块启动成功 ლ(´ڡ`ლ)゙ "); System.out.println("(♥◠‿◠)ノ゙ 运营模块启动成功 ლ(´ڡ`ლ)゙ \n"); } } xp-service/xp-operation/src/main/java/com/xiaopeng/operation/controller/SysOperlogController.java
@@ -4,6 +4,7 @@ import javax.servlet.http.HttpServletResponse; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.utils.StringUtils; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.security.annotation.Logical; @@ -88,4 +89,16 @@ public AjaxResult add(@RequestBody SysOperLog operLog) { return toAjax(operLogService.insertOperlog(operLog)); } /** * 保存系统日志 * @param sysOperLog * @return */ @PostMapping("/saveLog") public R saveLog(@RequestBody SysOperLog sysOperLog) { operLogService.save(sysOperLog); return R.ok(); } } xp-service/xp-order/src/main/java/com/xiaopeng/order/OrderApplication.java
@@ -24,6 +24,6 @@ public class OrderApplication { public static void main(String[] args) { SpringApplication.run(OrderApplication.class, args); System.out.println("(♥◠‿◠)ノ゙ 订单模块启动成功 ლ(´ڡ`ლ)゙ "); System.out.println("(♥◠‿◠)ノ゙ 订单模块启动成功 ლ(´ڡ`ლ)゙ \n"); } } xp-service/xp-payment/src/main/java/com/xiaopeng/payment/PaymentApplication.java
@@ -24,6 +24,6 @@ public class PaymentApplication { public static void main(String[] args) { SpringApplication.run(PaymentApplication.class, args); System.out.println("(♥◠‿◠)ノ゙ 支付模块启动成功 ლ(´ڡ`ლ)゙ "); System.out.println("(♥◠‿◠)ノ゙ 支付模块启动成功 ლ(´ڡ`ლ)゙ \n"); } } xp-service/xp-pushMessage/src/main/java/com/xiaopeng/pushMessage/PushMessageApplication.java
@@ -24,6 +24,6 @@ public class PushMessageApplication { public static void main(String[] args) { SpringApplication.run(PushMessageApplication.class, args); System.out.println("(♥◠‿◠)ノ゙ 消息推送模块启动成功 ლ(´ڡ`ლ)゙ "); System.out.println("(♥◠‿◠)ノ゙ 消息推送模块启动成功 ლ(´ڡ`ლ)゙ \n"); } } xp-service/xp-remoteDriving/src/main/java/com/xiaopeng/remoteDriving/RemoteDrivingApplication.java
@@ -24,6 +24,6 @@ public class RemoteDrivingApplication { public static void main(String[] args) { SpringApplication.run(RemoteDrivingApplication.class, args); System.out.println("(♥◠‿◠)ノ゙ 远程驾驶模块启动成功 ლ(´ڡ`ლ)゙ "); System.out.println("(♥◠‿◠)ノ゙ 远程驾驶模块启动成功 ლ(´ڡ`ლ)゙ \n"); } } xp-service/xp-vehicleConvoy/src/main/java/com/xiaopeng/vehicleConvoy/VehicleConvoyApplication.java
@@ -24,6 +24,6 @@ public class VehicleConvoyApplication { public static void main(String[] args) { SpringApplication.run(VehicleConvoyApplication.class, args); System.out.println("(♥◠‿◠)ノ゙ 车辆车队模块启动成功 ლ(´ڡ`ლ)゙ "); System.out.println("(♥◠‿◠)ノ゙ 车辆车队模块启动成功 ლ(´ڡ`ლ)゙ \n"); } } xp-service/xp-vehicleConvoy/src/main/resources/bootstrap.yml
@@ -56,52 +56,52 @@ type: nacos nacos: # 开发环境 # server-addr: 192.168.110.169:8848 # namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # group: DEFAULT_GROUP # data-id: seata-server.properties # username: nacos # password: nacos # 生产环境 server-addr: 192.168.0.137:8848,192.168.0.123:8848 namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a server-addr: 192.168.110.80:8848 namespace: 5185ac4b-6369-48eb-a21b-a7cbc441c5f1 group: DEFAULT_GROUP data-id: seata-server.properties username: nacos password: nacos # 生产环境 # server-addr: 192.168.0.137:8848,192.168.0.123:8848 # namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a # group: DEFAULT_GROUP # data-id: seata-server.properties # username: nacos # password: nacos registry: type: nacos nacos: application: seata-server # 开发环境 # server-addr: 192.168.110.169:8848 # namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # group: DEFAULT_GROUP # username: nacos # password: nacos # 生产环境 server-addr: 192.168.0.137:8848,192.168.0.123:8848 namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a server-addr: 192.168.110.80:8848 namespace: 5185ac4b-6369-48eb-a21b-a7cbc441c5f1 group: DEFAULT_GROUP username: nacos password: nacos # 生产环境 # server-addr: 192.168.0.137:8848,192.168.0.123:8848 # namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a # group: DEFAULT_GROUP # username: nacos # password: nacos cloud: nacos: discovery: # 开发环境 # server-addr: 192.168.110.169:8848 # nacos注册中心地址 # namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间 # group: DEFAULT_GROUP # application: seata-server #Nacos 中 Seata 名称 # username: nacos # password: nacos # 生产环境 server-addr: 192.168.0.137:8848,192.168.0.123:8848 namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a server-addr: 192.168.110.80:8848 namespace: 5185ac4b-6369-48eb-a21b-a7cbc441c5f1 group: DEFAULT_GROUP application: seata-server #Nacos 中 Seata 名称 username: nacos password: nacos # 生产环境 # server-addr: 192.168.0.137:8848,192.168.0.123:8848 # namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a # group: DEFAULT_GROUP # application: seata-server #Nacos 中 Seata 名称 # username: nacos # password: nacos sentinel: transport: dashboard: 192.168.0.137:8080 # Sentinel控制台地址