From 4d7a208f388e42e7dd83dab0e38eadfa0847de1c Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期三, 11 十二月 2024 19:24:10 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile --- ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SwaggerHandler.java | 100 +- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/IPartnerService.java | 5 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 10 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java | 12 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TRepair.java | 3 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java | 24 ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java | 10 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java | 29 nacos_config_export_20241211152150.zip | 0 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java | 2 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java | 27 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java | 9 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderInvoiceController.java | 25 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java | 8 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java | 6 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java | 43 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java | 23 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityStatisticsController.java | 8 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java | 25 ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java | 152 ++-- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TCarportController.java | 8 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java | 8 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java | 24 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageListDTO.java | 4 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java | 15 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TNoticeController.java | 14 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java | 2 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java | 2 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysMenuController.java | 2 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileNotificationController.java | 4 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java | 10 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java | 22 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java | 15 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityController.java | 19 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java | 5 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java | 16 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java | 48 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java | 39 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java | 26 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java | 12 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TFaultMessageServiceImpl.java | 21 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/CodeController.java | 65 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java | 18 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/domain/SiteMenu.java | 153 ++++ ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java | 43 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java | 11 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/THtmlController.java | 13 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java | 6 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingLotServiceImpl.java | 3 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java | 35 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java | 15 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java | 195 ++-- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/RedisLock.java | 47 + ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 50 + ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java | 20 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java | 16 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TMonitoringEquipmentServiceImpl.java | 6 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 141 ++- ruoyi-service/ruoyi-account/src/test/java/com/ruoyi/account/RuoYiAccountApplicationTests.java | 24 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserTagController.java | 18 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 130 ++- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java | 2 ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/RuoYiChargingPileApplicationTests.java | 17 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java | 17 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RegionController.java | 4 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java | 22 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java | 43 + ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TFaultMessageController.java | 5 /dev/null | 72 - ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java | 20 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java | 11 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLoginLogController.java | 5 ruoyi-gateway/pom.xml | 30 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java | 18 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java | 55 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java | 19 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java | 52 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java | 9 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java | 10 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java | 19 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TFaultMessage.java | 3 81 files changed, 1,611 insertions(+), 668 deletions(-) diff --git a/nacos_config_export_20240805184122.zip b/nacos_config_export_20240805184122.zip deleted file mode 100644 index 1844473..0000000 --- a/nacos_config_export_20240805184122.zip +++ /dev/null Binary files differ diff --git a/nacos_config_export_20241211152150.zip b/nacos_config_export_20241211152150.zip new file mode 100644 index 0000000..f312029 --- /dev/null +++ b/nacos_config_export_20241211152150.zip Binary files differ diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/domain/SiteMenu.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/domain/SiteMenu.java new file mode 100644 index 0000000..31b6597 --- /dev/null +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/domain/SiteMenu.java @@ -0,0 +1,153 @@ +package com.ruoyi.chargingPile.api.domain; + + +import java.util.Arrays; + +/** + * @author zhibing.pu + * @Date 2024/8/9 15:28 + */ +public enum SiteMenu { + //站点管理 + SITE_LIST("/data/site"), + //站点计费策略 + SITE_ACCOUNTING_STRATEGY("/data/site/accounting_strategy"), + //站点编辑 + SITE_UPDATE("/data/site/update"), + //站点删除 + SITE_DELETE("/data/site/delete"), + //充电桩信息 + CHARGING_PILE("/data/charging_pile"), + //充电桩查看 + CHARGING_PILE_QUERY_INFO("/data/charging_pile/query_info"), + //充电桩编辑 + CHARGING_PILE_UPDATE("/data/charging_pile/update"), + //充电桩删除 + CHARGING_PILE_DELETE("/data/charging_pile/delete"), + //充电桩新增接口 + CHARGING_PILE_ADD_CHARGING_GUN("/data/charging_pile/add_charging_gun"), + //接口信息 + CHARGING_GUN("/data/charging_gun"), + //接口编辑 + CHARGING_GUN_UPDATE("/data/charging_gun/update"), + //接口删除 + CHARGING_GUN_DELETE("/data/charging_gun/delete"), + //接口查看费率 + CHARGING_GUN_VIEW_RATES("/data/charging_gun/view_rates"), + //接口下载二维码 + CHARGING_GUN_DOWNLOAD_QR_CODE("/data/charging_gun/download_qr_code"), + //接口查看详情 + CHARGING_GUN_QUERY_INFO("/data/charging_gun/query_info"), + //接口结束充电 + CHARGING_GUN_END_CHARGE("/data/charging_gun/end_charge"), + //停车场配置 + PARKING_LOT("/data/parking_lot"), + //停车场查看 + PARKING_LOT_QUERY_INFO("/data/parking_lot/query_info"), + //停车场编辑 + PARKING_LOT_UPDATE("/data/parking_lot/update"), + //停车场删除 + PARKING_LOT_DELETE("/data/parking_lot/delete"), + //停车场监控 + PARKING_LOT_MONITOR("/data/parking_lot/monitor"), + //停车场新增车库 + PARKING_LOT_ADD_GARAGE("/data/parking_lot/add_garage"), + //监控管理 + MONITOR("/data/monitor"), + //监控查看 + MONITOR_QUERY_INFO("/data/monitor/query_info"), + //充电桩订单 + CHARGING_PILE_ORDER("/data/charging_pile_order"), + //记录 + CHARGING_PILE_ORDER_RECORD("/data/charging_pile_order/record"), + //充电订单监控记录 + CHARGING_PILE_ORDER_MONITORING_RECORD("/data/charging_pile_order/monitoring_record"), + //详情 + CHARGING_PILE_ORDER_MONITORING_RECORD_INFO("/data/charging_pile_order/monitoring_record/info"), + //删除 + CHARGING_PILE_ORDER_MONITORING_RECORD_DEL("/data/charging_pile_order/monitoring_record/del"), + //订单申诉 + ORDER_APPEAL("/data/order_appeal"), + //查看 + ORDER_APPEAL_VIEW("/data/order_appeal/view"), + //处理 + ORDER_APPEAL_HANDLE("/data/order_appeal/handle"), + //停车记录 + PARKING_RECORD("/data/parking_record"), + //查看 + PARKING_RECORD_VIEW("/data/parking_record/view"), + //已出场 + PARKING_RECORD_EXIT_PARKING_LOT("/data/parking_record/exit_parking_lot"), + //充电评价 + CHARGE_EVALUATION("/data/charge_evaluation"), + //回复 + CHARGE_EVALUATION_ANSWER("/data/charge_evaluation/answer"), + //删除 + CHARGE_EVALUATION_DEL("/data/charge_evaluation/del"), + //充电时段统计 + CHARGING_PERIOD_STATISTICS("/data/charging_period_statistics"), + //订单详情 + CHARGING_PERIOD_STATISTICS_ORDER_INFO("/data/charging_period_statistics/order_info"), + //充电曲线 + CHARGING_PERIOD_STATISTICS_CHARGING_CURVE("/data/charging_period_statistics/charging_curve"), + //充电算账单 + CHARGE_BILL_ORDER("/data/charge_bill_order"), + //下载 + CHARGE_BILL_ORDER_DOWNLOAD("/data/charge_bill_order/download"), + //停车缴费订单 + PARKING_PAYMENT_ORDER("/data/parking_payment_order"), + //账户结算账单 + ACCOUNT_SETTLEMENT("/data/account_settlement"), + //下载 + ACCOUNT_SETTLEMENT_DOWNLOAD("/data/account_settlement/download"), + //结算汇总表 + SETTLEMENT_SUMMARY("/data/settlement_summary"), + //结算表记录 + BALANCE_SHEET_RECORD("/data/balance_sheet_record"), + //下载 + BALANCE_SHEET_RECORD_DOWNLOAD("/data/balance_sheet_record/download"), + //删除 + BALANCE_SHEET_RECORD_DEL("/data/balance_sheet_record/del"), + //生成结算表 + GENERATE_STATEMENT("/data/generate_statement"), + //充电设施监控 + CHARGING_FACILITY_MONITORING("/data/charging_facility_monitoring"), + //故障信息列表 + FAULT_INFORMATION_LIST("/data/fault_information_list"), + //删除 + FAULT_INFORMATION_LIST_DEL("/data/fault_information_list/del"), + //报修记录 + REPAIR_RECORD("/data/repair_record"), + //删除 + REPAIR_RECORD_DEL("/data/repair_record/del"), + //电站分布 + POWER_STATION_DISTRIBUTION("/data/power_station_distribution"), + //充电运营分析 + CHARGING_OPERATION_ANALYSIS("/data/charging_operation_analysis"), + //充电用户分析 + CHARGING_USER_ANALYSIS("/data/charging_user_analysis"), + //设备运营分析 + PLANT_OPERATION_ANALYSIS("/data/plant_operation_analysis"), + //车场运营分析 + PARKING_OPERATION_ANALYSIS("/data/parking_operation_analysis") + ; + private String value; + + + SiteMenu(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static SiteMenu getSiteMenu(String v){ + SiteMenu siteMenu = Arrays.stream(SiteMenu.values()).filter(s -> s.getValue().equals(v)).findFirst().get(); + return siteMenu; + } +} diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java index f5053f5..48c7f0f 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java @@ -34,6 +34,11 @@ public R<Set<Integer>> authSite(Integer partnerId, String siteMenu) { return R.fail("获取合作商授权的站点数据失败:" + throwable.getMessage()); } + + @Override + public Boolean authMenu(Integer partnerId, Integer siteId, String siteMenu) { + return false; + } }; } } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java index 5d3aa49..2dc29b0 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java @@ -37,4 +37,14 @@ */ @PostMapping("/partner/authSite/{partnerId}") R<Set<Integer>> authSite(@PathVariable("partnerId") Integer partnerId, @RequestParam("siteMenu") String siteMenu); + + /** + * 判断合作商权限 + * @param partnerId + * @param siteId + * @param siteMenu + * @return + */ + @PostMapping("/partner/authMenu/{partnerId}") + Boolean authMenu(@PathVariable("partnerId") Integer partnerId, @RequestParam("siteId") Integer siteId, @RequestParam("siteMenu") String siteMenu); } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TFaultMessage.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TFaultMessage.java index aa03bed..5dbc974 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TFaultMessage.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TFaultMessage.java @@ -72,5 +72,8 @@ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField("end_time") private LocalDateTime endTime; + @ApiModelProperty(value = "删除权限") + @TableField(exist = false) + private boolean authDelete = true; } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TRepair.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TRepair.java index 7038166..6d3b172 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TRepair.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TRepair.java @@ -59,6 +59,9 @@ @DateTimeFormat(pattern = "yyyy-MM-ddTHH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime repairTime; + @ApiModelProperty(value = "删除权限") + @TableField(exist = false) + private boolean authDelete = true; } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java index ef266a0..9266a9a 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java @@ -57,6 +57,10 @@ * 用户信息 */ private SysUser sysUser; + /** + * 用户类型(系统用户,小程序用户) + */ + private String userType; public String getToken() { @@ -147,4 +151,12 @@ { this.sysUser = sysUser; } + + public String getUserType() { + return userType; + } + + public void setUserType(String userType) { + this.userType = userType; + } } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java index 0748dd4..108f0ac 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java @@ -11,7 +11,7 @@ * 缓存有效期,默认720(分钟) */ public final static long EXPIRATION = 720; - public final static long EXPIRATION_APPLET = 7*24*60*60; + public final static long EXPIRATION_APPLET = 7 * 24 * 60; /** * 缓存刷新时间,默认120(分钟) diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java index fa04637..e3f0a35 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java @@ -3,6 +3,12 @@ import java.util.Collection; import java.util.HashSet; import java.util.Set; + +import com.ruoyi.common.core.utils.JwtUtils; +import com.ruoyi.common.security.handler.GlobalExceptionHandler; +import io.jsonwebtoken.Claims; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.util.PatternMatchUtils; import com.ruoyi.common.core.context.SecurityContextHolder; import com.ruoyi.common.core.exception.auth.NotLoginException; @@ -25,6 +31,7 @@ */ public class AuthLogic { + private static final Logger log = LoggerFactory.getLogger(AuthLogic.class); /** 所有权限标识 */ private static final String ALL_PERMISSION = "*:*:*"; @@ -74,11 +81,17 @@ { throw new NotLoginException("未提供token"); } + Claims claims = JwtUtils.parseToken(token); + String userType = JwtUtils.getUserType(claims); LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser == null) + if (loginUser == null && "system".equals(userType)) { throw new NotLoginException("无效的token"); } + if(loginUser == null && "applet".equals(userType)){ + loginUser = new LoginUser(); + } + loginUser.setUserType(userType); return loginUser; } @@ -154,6 +167,9 @@ public void checkPermiAnd(String... permissions) { Set<String> permissionList = getPermiList(); + if(null == permissionList || permissionList.size() == 0){ + return; + } for (String permission : permissions) { if (!hasPermi(permissionList, permission)) @@ -171,6 +187,9 @@ public void checkPermiOr(String... permissions) { Set<String> permissionList = getPermiList(); + if(null == permissionList){ + return; + } for (String permission : permissions) { if (hasPermi(permissionList, permission)) @@ -337,6 +356,10 @@ try { LoginUser loginUser = getLoginUser(); + String userType = loginUser.getUserType(); + if(null != userType && "applet".equals(userType)){ + return null; + } return loginUser.getPermissions(); } catch (Exception e) diff --git a/ruoyi-gateway/pom.xml b/ruoyi-gateway/pom.xml index f858a41..eb0d3a8 100644 --- a/ruoyi-gateway/pom.xml +++ b/ruoyi-gateway/pom.xml @@ -81,22 +81,22 @@ </dependency> <!-- Swagger --> - <dependency> - <groupId>io.springfox</groupId> - <artifactId>springfox-swagger-ui</artifactId> - <version>${swagger.fox.version}</version> - </dependency> - <dependency> - <groupId>io.springfox</groupId> - <artifactId>springfox-swagger2</artifactId> - <version>${swagger.fox.version}</version> - </dependency> +<!-- <dependency>--> +<!-- <groupId>io.springfox</groupId>--> +<!-- <artifactId>springfox-swagger-ui</artifactId>--> +<!-- <version>${swagger.fox.version}</version>--> +<!-- </dependency>--> +<!-- <dependency>--> +<!-- <groupId>io.springfox</groupId>--> +<!-- <artifactId>springfox-swagger2</artifactId>--> +<!-- <version>${swagger.fox.version}</version>--> +<!-- </dependency>--> - <dependency> - <groupId>com.github.xiaoymin</groupId> - <artifactId>knife4j-micro-spring-boot-starter</artifactId> - <version>2.0.8</version> - </dependency> +<!-- <dependency>--> +<!-- <groupId>com.github.xiaoymin</groupId>--> +<!-- <artifactId>knife4j-micro-spring-boot-starter</artifactId>--> +<!-- <version>2.0.8</version>--> +<!-- </dependency>--> <!-- 引入Druid依赖,阿里巴巴所提供的数据源 --> <dependency> diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java index 495dd46..239eb2a 100644 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java +++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java @@ -1,76 +1,76 @@ -package com.ruoyi.gateway.config; - -import java.util.ArrayList; -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.gateway.config.GatewayProperties; -import org.springframework.cloud.gateway.route.RouteLocator; -import org.springframework.cloud.gateway.support.NameUtils; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Component; -import org.springframework.web.reactive.config.ResourceHandlerRegistry; -import org.springframework.web.reactive.config.WebFluxConfigurer; -import springfox.documentation.swagger.web.SwaggerResource; -import springfox.documentation.swagger.web.SwaggerResourcesProvider; - -/** - * 聚合系统接口 - * - * @author ruoyi - */ -@Component -public class SwaggerProvider implements SwaggerResourcesProvider, WebFluxConfigurer { - /** - * Swagger2默认的url后缀 - */ - public static final String SWAGGER2URL = "/v2/api-docs"; - - /** - * 网关路由 - */ - @Lazy - @Autowired - private RouteLocator routeLocator; - - @Autowired - private GatewayProperties gatewayProperties; - - /** - * 聚合其他服务接口 - * - * @return - */ - @Override - public List<SwaggerResource> get() { - List<SwaggerResource> resourceList = new ArrayList<>(); - List<String> routes = new ArrayList<>(); - // 获取网关中配置的route - routeLocator.getRoutes().subscribe(route -> routes.add(route.getId())); - gatewayProperties.getRoutes().stream() - .filter(routeDefinition -> routes - .contains(routeDefinition.getId())) - .forEach(routeDefinition -> routeDefinition.getPredicates().stream() - .filter(predicateDefinition -> "Path".equalsIgnoreCase(predicateDefinition.getName())) - .filter(predicateDefinition -> !"ruoyi-auth".equalsIgnoreCase(routeDefinition.getId())) - .forEach(predicateDefinition -> resourceList - .add(swaggerResource(routeDefinition.getId(), predicateDefinition.getArgs() - .get(NameUtils.GENERATED_NAME_PREFIX + "0").replace("/**", SWAGGER2URL))))); - return resourceList; - } - - private SwaggerResource swaggerResource(String name, String location) { - SwaggerResource swaggerResource = new SwaggerResource(); - swaggerResource.setName(name); - swaggerResource.setLocation(location); - swaggerResource.setSwaggerVersion("2.0"); - return swaggerResource; - } - - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - /** swagger-ui 地址 */ - registry.addResourceHandler("/swagger-ui/**", "*/doc.html") - .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/"); - } -} +//package com.ruoyi.gateway.config; +// +//import java.util.ArrayList; +//import java.util.List; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.cloud.gateway.config.GatewayProperties; +//import org.springframework.cloud.gateway.route.RouteLocator; +//import org.springframework.cloud.gateway.support.NameUtils; +//import org.springframework.context.annotation.Lazy; +//import org.springframework.stereotype.Component; +//import org.springframework.web.reactive.config.ResourceHandlerRegistry; +//import org.springframework.web.reactive.config.WebFluxConfigurer; +//import springfox.documentation.swagger.web.SwaggerResource; +//import springfox.documentation.swagger.web.SwaggerResourcesProvider; +// +///** +// * 聚合系统接口 +// * +// * @author ruoyi +// */ +//@Component +//public class SwaggerProvider implements SwaggerResourcesProvider, WebFluxConfigurer { +// /** +// * Swagger2默认的url后缀 +// */ +// public static final String SWAGGER2URL = "/v2/api-docs"; +// +// /** +// * 网关路由 +// */ +// @Lazy +// @Autowired +// private RouteLocator routeLocator; +// +// @Autowired +// private GatewayProperties gatewayProperties; +// +// /** +// * 聚合其他服务接口 +// * +// * @return +// */ +// @Override +// public List<SwaggerResource> get() { +// List<SwaggerResource> resourceList = new ArrayList<>(); +// List<String> routes = new ArrayList<>(); +// // 获取网关中配置的route +// routeLocator.getRoutes().subscribe(route -> routes.add(route.getId())); +// gatewayProperties.getRoutes().stream() +// .filter(routeDefinition -> routes +// .contains(routeDefinition.getId())) +// .forEach(routeDefinition -> routeDefinition.getPredicates().stream() +// .filter(predicateDefinition -> "Path".equalsIgnoreCase(predicateDefinition.getName())) +// .filter(predicateDefinition -> !"ruoyi-auth".equalsIgnoreCase(routeDefinition.getId())) +// .forEach(predicateDefinition -> resourceList +// .add(swaggerResource(routeDefinition.getId(), predicateDefinition.getArgs() +// .get(NameUtils.GENERATED_NAME_PREFIX + "0").replace("/**", SWAGGER2URL))))); +// return resourceList; +// } +// +// private SwaggerResource swaggerResource(String name, String location) { +// SwaggerResource swaggerResource = new SwaggerResource(); +// swaggerResource.setName(name); +// swaggerResource.setLocation(location); +// swaggerResource.setSwaggerVersion("2.0"); +// return swaggerResource; +// } +// +// @Override +// public void addResourceHandlers(ResourceHandlerRegistry registry) { +// /** swagger-ui 地址 */ +// registry.addResourceHandler("/swagger-ui/**", "*/doc.html") +// .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/"); +// } +//} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SwaggerHandler.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SwaggerHandler.java index eeb58a1..9fc2126 100644 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SwaggerHandler.java +++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/SwaggerHandler.java @@ -1,50 +1,50 @@ -package com.ruoyi.gateway.handler; - -import java.util.Optional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import reactor.core.publisher.Mono; -import springfox.documentation.swagger.web.SecurityConfiguration; -import springfox.documentation.swagger.web.SecurityConfigurationBuilder; -import springfox.documentation.swagger.web.SwaggerResourcesProvider; -import springfox.documentation.swagger.web.UiConfiguration; -import springfox.documentation.swagger.web.UiConfigurationBuilder; - -@RestController -@RequestMapping("/swagger-resources") -public class SwaggerHandler { - private final SwaggerResourcesProvider swaggerResources; - @Autowired(required = false) - private SecurityConfiguration securityConfiguration; - @Autowired(required = false) - private UiConfiguration uiConfiguration; - - @Autowired - public SwaggerHandler(SwaggerResourcesProvider swaggerResources) { - this.swaggerResources = swaggerResources; - } - - @GetMapping("/configuration/security") - public Mono<ResponseEntity<SecurityConfiguration>> securityConfiguration() { - return Mono.just(new ResponseEntity<>( - Optional.ofNullable(securityConfiguration).orElse(SecurityConfigurationBuilder.builder().build()), - HttpStatus.OK)); - } - - @GetMapping("/configuration/ui") - public Mono<ResponseEntity<UiConfiguration>> uiConfiguration() { - return Mono.just(new ResponseEntity<>( - Optional.ofNullable(uiConfiguration).orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK)); - } - - @SuppressWarnings("rawtypes") - @GetMapping("") - public Mono<ResponseEntity> swaggerResources() { - return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK))); - } -} +//package com.ruoyi.gateway.handler; +// +//import java.util.Optional; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.ResponseEntity; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +//import reactor.core.publisher.Mono; +//import springfox.documentation.swagger.web.SecurityConfiguration; +//import springfox.documentation.swagger.web.SecurityConfigurationBuilder; +//import springfox.documentation.swagger.web.SwaggerResourcesProvider; +//import springfox.documentation.swagger.web.UiConfiguration; +//import springfox.documentation.swagger.web.UiConfigurationBuilder; +// +//@RestController +//@RequestMapping("/swagger-resources") +//public class SwaggerHandler { +// private final SwaggerResourcesProvider swaggerResources; +// @Autowired(required = false) +// private SecurityConfiguration securityConfiguration; +// @Autowired(required = false) +// private UiConfiguration uiConfiguration; +// +// @Autowired +// public SwaggerHandler(SwaggerResourcesProvider swaggerResources) { +// this.swaggerResources = swaggerResources; +// } +// +// @GetMapping("/configuration/security") +// public Mono<ResponseEntity<SecurityConfiguration>> securityConfiguration() { +// return Mono.just(new ResponseEntity<>( +// Optional.ofNullable(securityConfiguration).orElse(SecurityConfigurationBuilder.builder().build()), +// HttpStatus.OK)); +// } +// +// @GetMapping("/configuration/ui") +// public Mono<ResponseEntity<UiConfiguration>> uiConfiguration() { +// return Mono.just(new ResponseEntity<>( +// Optional.ofNullable(uiConfiguration).orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK)); +// } +// +// @SuppressWarnings("rawtypes") +// @GetMapping("") +// public Mono<ResponseEntity> swaggerResources() { +// return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK))); +// } +//} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLoginLogController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLoginLogController.java index 7982c50..de6a003 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLoginLogController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLoginLogController.java @@ -4,6 +4,8 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.system.api.domain.SysLoginLog; import com.ruoyi.system.service.ISysLoginLogService; import com.ruoyi.system.service.ISysUserService; @@ -27,7 +29,7 @@ - + @RequiresPermissions(value = {"/entryLog"}, logical = Logical.OR) @GetMapping("/pageList") @ApiOperation(value = "获取登录日志列表", tags = {"管理后台-登录日志"}) public AjaxResult<PageInfo<SysLoginLog>> pageList(String name, BasePage basePage){ @@ -36,6 +38,7 @@ } + @RequiresPermissions(value = {"/entryLog/add"}, logical = Logical.OR) @PostMapping("/addLoginLog") @ApiOperation(value = "添加登录日志", tags = {"管理后台-登录日志"}) public AjaxResult addLoginLog(@RequestBody SysLoginLog loginLog){ diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysMenuController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysMenuController.java index 6049585..1dafd6e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysMenuController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysMenuController.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Map; +import com.ruoyi.common.security.annotation.Logical; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.system.domain.SysMenu; import com.ruoyi.system.domain.SysMenus; @@ -48,6 +49,7 @@ /** * 获取菜单列表 */ + @RequiresPermissions(value = {"/roleManagement"}, logical = Logical.OR) @GetMapping("/list") @ApiOperation("所有菜单列表") public AjaxResult list() diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java index 8eefd52..2c72a37 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.common.security.annotation.Logical; import com.ruoyi.system.query.SysOperLogQuery; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -38,6 +39,7 @@ private ISysOperLogService operLogService; + @RequiresPermissions(value = {"/operationLog/list"}, logical = Logical.OR) @GetMapping("/list") @ApiOperation(value = "获取操作日志列表", tags = {"管理后台-操作日志"}) public AjaxResult<PageInfo<SysOperLog>> list(SysOperLogQuery query) { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java index ebe7214..927370a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java @@ -18,6 +18,7 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.common.security.annotation.Logical; import com.ruoyi.other.api.domain.TRoleSite; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.system.api.model.GetSysRoleByIds; @@ -86,6 +87,9 @@ private SiteClient siteClient; + + @RequiresPermissions(value = {"/systemUserManagement", "/systemUserManagement/add", "/systemUserManagement/update", "/roleManagement", "/partners", + "/partners/add", "/partners/seleete", "/partners/update"}, logical = Logical.OR) @ApiOperation(value = "获取角色列表", tags = {"管理后台-系统用户管理"}) @GetMapping("/list") public AjaxResult list() { @@ -94,6 +98,7 @@ } + @RequiresPermissions(value = {"/roleManagement"}, logical = Logical.OR) @ResponseBody @GetMapping("/listPage") @ApiOperation(value = "获取角色列表", tags = {"管理后台-角色管理"}) @@ -119,6 +124,7 @@ } + @RequiresPermissions(value = {"/roleManagement/add"}, logical = Logical.OR) @ResponseBody @PostMapping("/roleAdd") @ApiOperation(value = "添加角色", tags = {"管理后台-角色管理"}) @@ -141,19 +147,23 @@ role.setCreateBy(SecurityUtils.getUsername()); role.setCreateTime(new Date()); roleService.insertRole(role); + //添加站点权限 - List<TRoleSite> roleSites = new ArrayList<>(); - for (Integer siteId : dto.getSiteIds()) { - TRoleSite roleSite = new TRoleSite(); - roleSite.setRoleId(role.getRoleId().intValue()); - roleSite.setSiteId(siteId); - roleSites.add(roleSite); + if(null != dto.getSiteIds()){ + List<TRoleSite> roleSites = new ArrayList<>(); + for (Integer siteId : dto.getSiteIds()) { + TRoleSite roleSite = new TRoleSite(); + roleSite.setRoleId(role.getRoleId().intValue()); + roleSite.setSiteId(siteId); + roleSites.add(roleSite); + } + roleSiteClient.addRoleSite(roleSites); } - roleSiteClient.addRoleSite(roleSites); return AjaxResult.success(); } + @RequiresPermissions(value = {"/roleManagement/info", "/roleManagement/update"}, logical = Logical.OR) @GetMapping("/roleInfo") @ApiOperation(value = "角色详情", tags = {"管理后台-角色管理"}) public AjaxResult roleInfo(@RequestParam Long id) { @@ -197,6 +207,7 @@ } + @RequiresPermissions(value = {"/roleManagement/update"}, logical = Logical.OR) @PostMapping("/roleUpdate") @ApiOperation(value = "编辑角色", tags = {"管理后台-角色管理"}) @GlobalTransactional(rollbackFor = Exception.class)//分布式事务 @@ -256,6 +267,7 @@ /** * 删除角色 */ + @RequiresPermissions(value = {"/roleManagement/del"}, logical = Logical.OR) @Log(title = "角色管理", businessType = BusinessType.DELETE) @DeleteMapping("/{roleIds}") @ApiOperation(value = "删除角色", tags = {"管理后台-角色管理"}) @@ -267,6 +279,7 @@ /** * 查询已分配用户角色列表 */ + @RequiresPermissions("/roleManagement") @GetMapping("/authUser/allocatedList") public TableDataInfo allocatedList(SysUser user) { startPage(); @@ -277,6 +290,7 @@ /** * 查询未分配用户角色列表 */ + @RequiresPermissions("/roleManagement") @GetMapping("/authUser/unallocatedList") public TableDataInfo unallocatedList(SysUser user) { startPage(); @@ -288,6 +302,7 @@ /** * 获取对应角色部门树列表 */ + @RequiresPermissions("") @GetMapping(value = "/deptTree/{roleId}") public AjaxResult deptTree(@PathVariable("roleId") Long roleId) { AjaxResult ajax = AjaxResult.success(); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java index 3f9784c..067624c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java @@ -11,6 +11,7 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.common.security.annotation.Logical; import com.ruoyi.other.api.domain.TUserSite; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; @@ -89,6 +90,7 @@ /** * 获取用户列表 */ + @RequiresPermissions(value = {"/systemUserManagement", "/roleManagement/info"}, logical = Logical.OR) @GetMapping("/list") @ApiOperation(value = "获取系统用户列表", tags = {"管理后台-系统用户管理", "管理后台-角色管理"}) public AjaxResult list(GetSysUserList getSysUserList) { @@ -109,6 +111,7 @@ /** * 新增用户 */ + @RequiresPermissions(value = {"/systemUserManagement/add"}, logical = Logical.OR) @Log(title = "用户管理", businessType = BusinessType.INSERT) @PostMapping("/add") @ApiOperation(value = "添加系统用户", tags = {"管理后台-系统用户管理"}) @@ -145,6 +148,7 @@ } + @RequiresPermissions(value = {"/systemUserManagement/add", "/systemUserManagement/update"}, logical = Logical.OR) @GetMapping("/verifyUserNameRepeat/{username}") @ApiOperation(value = "校验账号是否重复", tags = {"管理后台-系统用户管理"}) public AjaxResult verifyUserNameRepeat(@PathVariable String username){ @@ -156,6 +160,9 @@ return success(); } + + + @RequiresPermissions(value = {"/systemUserManagement/update"}, logical = Logical.OR) @GetMapping("/getRoleSiteName/{roleId}") @ApiOperation(value = "获取角色对应的站点名称", tags = {"管理后台-系统用户管理"}) public AjaxResult<List<String>> getRoleSiteName(@PathVariable Integer roleId){ @@ -200,6 +207,7 @@ /** * 修改用户 */ + @RequiresPermissions(value = {"/systemUserManagement/update"}, logical = Logical.OR) @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping("/update") @ApiOperation(value = "编辑系统用户", tags = {"管理后台-系统用户管理"}) @@ -264,6 +272,7 @@ /** * 删除用户 */ + @RequiresPermissions(value = {"/systemUserManagement/del"}, logical = Logical.OR) @Log(title = "用户管理", businessType = BusinessType.DELETE) @DeleteMapping("/{userIds}") @ApiOperation(value = "删除系统用户", tags = {"管理后台-系统用户管理"}) @@ -277,6 +286,7 @@ + @RequiresPermissions(value = {"/systemUserManagement/forbidden"}, logical = Logical.OR) @PostMapping("/shopUserStart") @ApiOperation(value = "账号管理--禁用/启用", tags = {"管理后台-系统用户管理"}) public AjaxResult shopUserStart(@RequestBody ShopUserStart shopUserStart) { @@ -527,6 +537,7 @@ /** * 重置密码 */ + @RequiresPermissions(value = {"/systemUserManagement/reset_passwords"}, logical = Logical.OR) @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping("/resetPwd") @ApiOperation(value = "重置密码", tags = {"管理后台-系统用户管理"}) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java index 2b2d386..0ddf5fa 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java @@ -96,9 +96,13 @@ @ApiOperation(tags = {"小程序-用户地址"},value = "设置默认地址") @GetMapping(value = "/setDefaultAddress") public AjaxResult<String> setDefaultAddress(@RequestParam(value = "id") Long id) { + TAppUserAddress appUserAddress = appUserAddressService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!appUserAddress.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); + } // 修改用户默认地址 appUserAddressService.updateDefaultAddress(1,tokenService.getLoginUserApplet().getUserId()); - TAppUserAddress appUserAddress = appUserAddressService.getById(id); appUserAddress.setDefaultAddress(1); appUserAddressService.updateById(appUserAddress); return AjaxResult.success(); @@ -110,8 +114,13 @@ @ApiOperation(tags = {"小程序-用户地址"},value = "修改用户地址") @PostMapping(value = "/update") public AjaxResult<Boolean> update(@RequestBody TAppUserAddress dto) { + Long userId = tokenService.getLoginUserApplet().getUserId(); + TAppUserAddress userAddress = appUserAddressService.getById(dto.getId()); + if(!userAddress.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); + } // 用户id - dto.setAppUserId(tokenService.getLoginUserApplet().getUserId()); + dto.setAppUserId(userId); // 修改用户默认地址 appUserAddressService.updateDefaultAddress(dto.getDefaultAddress(),dto.getAppUserId()); return AjaxResult.ok(appUserAddressService.updateById(dto)); @@ -126,6 +135,10 @@ @GetMapping(value = "/getDetailById") public R<TAppUserAddress> getDetailById(@RequestParam(value = "id")Long id) { TAppUserAddress appUserAddress = appUserAddressService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!appUserAddress.getAppUserId().equals(userId)){ + return R.fail("权限不足"); + } appUserAddress.setUid(appUserAddress.getId().toString()); return R.ok(appUserAddress); } @@ -136,6 +149,11 @@ @ApiOperation(tags = {"小程序-用户地址"},value = "删除用户地址") @DeleteMapping(value = "/deleteById") public AjaxResult<Boolean> deleteById(@RequestParam("id") Long id) { + TAppUserAddress appUserAddress = appUserAddressService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!appUserAddress.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); + } return AjaxResult.ok(appUserAddressService.removeById(id)); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java index e97b7bc..fca9ac4 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java @@ -29,6 +29,8 @@ import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; import com.ruoyi.common.redis.service.RedisService; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.auth.AuthUtil; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; @@ -45,6 +47,7 @@ import com.ruoyi.other.api.feignClient.IntegralRuleClient; import com.ruoyi.other.api.feignClient.OtherClient; import com.ruoyi.other.api.feignClient.VipClient; +import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.LoginUserApplet; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -163,7 +166,7 @@ } - + @RequiresPermissions(value = {"/company"}, logical = Logical.OR) @ApiOperation(value = "单位管理列表", tags = {"用户管理-单位管理"}) @PostMapping(value = "/unit/page") public R<Page<TCompany>> unitPage(@RequestBody UnitListQueryDto unitListQueryDto) { @@ -176,8 +179,10 @@ } return R.ok(data); } - - + + + + @RequiresPermissions(value = {"/appUser/list", "/appUser/add", "/appUser/update", "/appUser/updateCompany"}, logical = Logical.OR) @ApiOperation(value = "单位下拉框", tags = {"用户管理-单位管理"}) @GetMapping(value = "/unit/select") public R<List<TCompany>> unitSelect() { @@ -189,8 +194,10 @@ return R.ok(pageR.getData().getRecords()); } - - + + + + @RequiresPermissions(value = {"/company/add", "/company/update"}, logical = Logical.OR) @ApiOperation(value = "单位管理添加或编辑", tags = {"用户管理-单位管理"}) @PostMapping(value = "/unit/addOrUpdate") @Log(title = "【单位管理】添加或编辑单位", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE) @@ -199,10 +206,10 @@ otherClient.unitAddorUpadate(tCompany); return R.ok(); } - - - - + + + + @RequiresPermissions(value = {"/company/del"}, logical = Logical.OR) @ApiOperation(value = "单位管理删除", tags = {"用户管理-单位管理"}) @DeleteMapping(value = "/unit/delete") @Log(title = "【单位管理】删除单位", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @@ -218,8 +225,9 @@ return R.ok(); } - - + + + @RequiresPermissions(value = {"/appUser/list"}, logical = Logical.OR) @ApiOperation(value = "用户列表", tags = {"用户管理-用户列表"}) @PostMapping(value = "/user/page") public R<Page<TAppUser>> userPage(@RequestBody UserListQueryDto userListQueryDto) { @@ -283,7 +291,9 @@ } return R.ok(page); } - + + + @RequiresPermissions(value = {"/vipList"}, logical = Logical.OR) @ApiOperation(value = "会员列表", tags = {"用户管理-会员列表"}) @PostMapping(value = "/user/vip/page") public R<Page<TAppUser>> vipPage(@RequestBody UserListQueryDto userListQueryDto) { @@ -349,7 +359,9 @@ } return R.ok(page); } - + + + @RequiresPermissions(value = {"/coupon/send"}, logical = Logical.OR) @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券发放-选择人员") @PostMapping("/choiceUser") public R<Page<TAppUser>> choiceUser(@RequestBody ChoiceUserListQueryDto userListQueryDto) { @@ -405,8 +417,9 @@ } return R.ok(page); } - - + + + @RequiresPermissions(value = {"/appUser/add", "/appUser/update"}, logical = Logical.OR) @ApiOperation(value = "用户添加编辑", tags = {"用户管理-用户列表"}) @PostMapping(value = "/user/addOrUpdate") @Log(title = "【用户列表】添加编辑用户", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE) @@ -453,7 +466,9 @@ appUserService.saveOrUpdate(tAppUser); return R.ok(); } - + + + @RequiresPermissions(value = {"/appUser/select", "/vipList/select"}, logical = Logical.OR) @ApiOperation(value = "用户详情", tags = {"用户管理-用户列表"}) @GetMapping(value = "/user/detail/{id}") public R<UserDetailDto> userDetail(@PathVariable Long id) { @@ -488,7 +503,8 @@ return R.ok(userDetailDto); } - + + @RequiresPermissions(value = {"/appUser/select", "/vipList/select"}, logical = Logical.OR) @ApiOperation(value = "用户详情积分明细", tags = {"后台-用户管理-用户列表","小程序-个人中心"}) @PostMapping(value = "/user/points/page") public R<Page<TAppUserIntegralChange>> pointsDetail(@RequestBody PointsQueryDto pointsQueryDto) { @@ -543,6 +559,10 @@ @GetMapping(value = "/user/points/detail") public R<TAppUserIntegralChange> pointsDetail(String id) { TAppUserIntegralChange byId = integralChangeService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!byId.getAppUserId().equals(userId)){ + return R.fail("权限不足"); + } if (byId.getChangeType()==6) { TExchangeOrder data = exchangeOrderClient.orderDetail(Long.valueOf(byId.getExtension())).getData(); if (data != null) { @@ -554,7 +574,8 @@ } return R.ok(byId); } - + + @RequiresPermissions(value = {"/appUser/freeze"}, logical = Logical.OR) @ApiOperation(value = "冻结解冻用户", tags = {"后台-用户管理-用户列表"}) @PostMapping(value = "/user/status/change") @Log(title = "【用户列表】冻结解冻用户", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @@ -565,7 +586,9 @@ appUserService.updateById(appUser); return R.ok(); } - + + + @RequiresPermissions(value = {"/appUser/updateCompany"}, logical = Logical.OR) @ApiOperation(value = "修改单位", tags = {"后台-用户管理-用户列表"}) @PostMapping(value = "/user/unit/change") @Log(title = "【用户列表】修改用户单位", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @@ -577,7 +600,9 @@ } return R.ok(); } - + + + @RequiresPermissions(value = {"/appUser/del"}, logical = Logical.OR) @ApiOperation(value = "删除用户", tags = {"后台-用户管理-用户列表"}) @DeleteMapping(value = "/user/delete") @Log(title = "【用户列表】删除用户", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @@ -615,10 +640,6 @@ appUserInfoDto.setVipCouponNum(count); appUserInfoDto.setIsVip(1); appUserInfoDto.setVipExpireTime(byId.getVipEndTime()); - - - - } //判断当天是否签到 Long count = signService.lambdaQuery().eq(TAppUserSign::getAppUserId,userId).eq(TAppUserSign::getSignDay, LocalDate.now()).count(); @@ -634,14 +655,7 @@ appUserInfoDto.setUserCars(list); appUserInfoDto.setFirstAdd(byId.getFirstAdd()!=null?byId.getFirstAdd():0); appUserInfoDto.setPoints(byId.getPoints()==null?0:byId.getPoints()); - - - - - return R.ok(appUserInfoDto); - - } @@ -652,9 +666,7 @@ TAppUser byId = appUserService.getById(userId); byId.setAvatar(url); appUserService.updateById(byId); - return R.ok(); - } @ApiOperation(value = "优惠卷列表不分页(1可使用2不可用)", tags = {"小程序-个人中心"}) @@ -716,12 +728,17 @@ @PostMapping(value = "/user/coupon/getById") public R<TAppCoupon> couponGetById(@RequestParam("id")Long id) { TAppCoupon appCoupon = appCouponService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!appCoupon.getAppUserId().equals(userId)){ + return R.fail("权限不足"); + } appCoupon.setUid(id.toString()); return R.ok(appCoupon); } - - - + + + + @RequiresPermissions(value = {"/appUser/giftVip", "/appUser/gift_vip"}, logical = Logical.OR) @ApiOperation(value = "赠送会员", tags = {"用户管理-用户列表"}) @PostMapping(value = "/user/give/vip") @Log(title = "【用户列表】赠送会员", businessType = BusinessType.OTHER,operatorType = OperatorType.MANAGE) @@ -813,9 +830,13 @@ } // 获取当前用户信息 Long userId = tokenService.getLoginUserApplet().getUserId(); - TAppUser appUser = appUserService.getById(userId); - appUser.setPhone(dto.getPhone()); - appUserService.updateById(appUser); + TAppUser appUser = appUserService.getOne(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhone, dto.getPhone()).eq(TAppUser::getDelFlag, 0).eq(TAppUser::getStatus, 3)); + if (Objects.nonNull(appUser)){ + return AjaxResult.error("手机号已使用,请更换其他手机号"); + } + TAppUser appUser1 = appUserService.getById(userId); + appUser1.setPhone(dto.getPhone()); + appUserService.updateById(appUser1); return AjaxResult.success(); } @@ -1017,7 +1038,13 @@ @ApiOperation(value = "添加编辑车辆", tags = {"小程序-个人中心-车辆"}) @PostMapping(value = "/user/car/addOrUpdate") public R carAdd(@RequestBody TAppUserCar appUserCar) { - + if(null != appUserCar.getId()){ + TAppUserCar userCar = appUserCarService.getById(appUserCar.getId()); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!userCar.getAppUserId().equals(userId)){ + return R.fail("权限不足"); + } + } LoginUserApplet loginUserApplet = tokenService.getLoginUserApplet(); Long userId = loginUserApplet.getUserId(); TAppUser byId = appUserService.getById(userId); @@ -1095,6 +1122,11 @@ @ApiOperation(value = "添加编辑车辆", tags = {"小程序-个人中心-车辆"}) @GetMapping(value = "/user/car/delete") public R carDelete(String id) { + TAppUserCar appUserCar = appUserCarService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!appUserCar.getAppUserId().equals(userId)){ + return R.fail("权限不足"); + } boolean b = appUserCarService.removeById(id); return R.ok(); } @@ -1102,6 +1134,10 @@ @GetMapping(value = "/user/car/detail") public R<TAppUserCar> carDetail(String id) { TAppUserCar byId = appUserCarService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!byId.getAppUserId().equals(userId)){ + return R.fail("权限不足"); + } return R.ok(byId); } @@ -1200,6 +1236,29 @@ return R.ok(result3); } } - + + + @PostMapping(value = "/user/logOut") + @ApiOperation(value = "退出登录", tags = {"小程序-个人中心"}) + public AjaxResult logOut(){ + String token = tokenService.getLoginUserApplet().getToken(); + redisService.deleteObject("login_tokens:" + token); + return AjaxResult.success(); + } + + + + @PostMapping("/refresh") + @ApiOperation(value = "刷新token过期时间", tags = {"小程序-个人中心"}) + public R<?> refresh(HttpServletRequest request) { + LoginUserApplet loginUser = tokenService.getLoginUserAppletToken(request); + if (StringUtils.isNotNull(loginUser)) { + // 刷新令牌有效期 + tokenService.refreshToken1(loginUser); + return R.ok(); + } + return R.ok(); + } + } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserTagController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserTagController.java index dd40be3..54bd6b0 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserTagController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserTagController.java @@ -6,6 +6,8 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.other.api.dto.TagListQueryDto; import com.ruoyi.account.api.model.TAppUserTag; import com.ruoyi.account.service.TAppUserTagService; @@ -33,7 +35,9 @@ private OtherClient otherClient; @Resource private TAppUserTagService appUserTagService; - + + + @RequiresPermissions(value = {"/coupon", "/userTag"}, logical = Logical.OR) @ApiOperation(value = "标签管理列表", tags = {"用户管理-用户标签管理"}) @PostMapping(value = "/tags/page") public R<Page<TUserTag>> tagPage(@RequestBody TagListQueryDto tagListQueryDto) { @@ -46,6 +50,9 @@ } return R.ok(data); } + + + @RequiresPermissions(value = {"/appUser/list"}, logical = Logical.OR) @ApiOperation(value = "标签管理列表", tags = {"用户管理-用户标签管理"}) @GetMapping(value = "/tags/select") public R<List<TUserTag>> select() { @@ -55,8 +62,9 @@ R<Page<TUserTag>> pageR = otherClient.queryTagPage(tagListQueryDto); return R.ok(pageR.getData().getRecords()); } - - + + + @RequiresPermissions(value = {"/userTag/add", "/userTag/update"}, logical = Logical.OR) @ApiOperation(value = "标签添加或修改", tags = {"用户管理-用户标签管理"}) @PostMapping(value = "/tags/add") @Log(title = "【用户标签管理】标签添加或修改", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE) @@ -65,7 +73,9 @@ otherClient.addorUpdateTag(tUserTag); return R.ok(); } - + + + @RequiresPermissions(value = {"/userTag/del"}, logical = Logical.OR) @ApiOperation(value = "标签删除", tags = {"用户管理-用户标签管理"}) @DeleteMapping(value = "/tags/delete") @Log(title = "【用户标签管理】删除标签", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java index f501947..b5cfe15 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java @@ -79,6 +79,10 @@ @ApiOperation(value = "获取开票抬头详情数据", tags = {"小程序-充电发票"}) public AjaxResult<TInvoiceInformation> getInvoiceInformationInfo(@PathVariable String id){ TInvoiceInformation information = invoiceInformationService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!information.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); + } return AjaxResult.success(information); } @@ -89,6 +93,11 @@ @ApiOperation(value = "编辑开票抬头数据", tags = {"小程序-充电发票"}) public AjaxResult editInvoiceInformation(@RequestBody TInvoiceInformation invoiceInformation){ Long userId = tokenService.getLoginUserApplet().getUserId(); + TInvoiceInformation information = invoiceInformationService.getById(invoiceInformation.getId()); + if(!information.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); + } + //如果当前是默认抬头,则需要去除其他的默认配置 if(null != invoiceInformation.getIsDefault() && 1 == invoiceInformation.getIsDefault()){ TInvoiceInformation one = invoiceInformationService.getOne(new LambdaQueryWrapper<TInvoiceInformation>().eq(TInvoiceInformation::getDelFlag, 0) diff --git a/ruoyi-service/ruoyi-account/src/test/java/com/ruoyi/account/RuoYiAccountApplicationTests.java b/ruoyi-service/ruoyi-account/src/test/java/com/ruoyi/account/RuoYiAccountApplicationTests.java index 5d28046..af00dff 100644 --- a/ruoyi-service/ruoyi-account/src/test/java/com/ruoyi/account/RuoYiAccountApplicationTests.java +++ b/ruoyi-service/ruoyi-account/src/test/java/com/ruoyi/account/RuoYiAccountApplicationTests.java @@ -1,8 +1,30 @@ package com.ruoyi.account; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.system.api.model.LoginUserApplet; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; + +import java.util.HashMap; +import java.util.Map; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiAccountApplication.class) public class RuoYiAccountApplicationTests { - + @Autowired + private TokenService tokenService; + + @Test + public void test(){ + LoginUserApplet loginUserApplet = new LoginUserApplet(); + loginUserApplet.setUserId(1839480334642704385L); + loginUserApplet.setUserIdStr("1839480334642704385"); + loginUserApplet.setName("158****3127"); + loginUserApplet.setPhone("15828353127"); + loginUserApplet.setAvatar(""); + loginUserApplet.setAddress(""); + Map<String, Object> tokenInfos = new HashMap<>(); + System.err.println(tokenService.createTokenApplet(loginUserApplet)); + } } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/CodeController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/CodeController.java index 71006ef..1fd839d 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/CodeController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/CodeController.java @@ -19,6 +19,9 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; import java.util.Objects; import java.util.concurrent.TimeUnit; @@ -28,7 +31,7 @@ @Autowired private RedisService redisService; - @Autowired + @Resource private AppUserClient appUserClient; @Autowired private TChargingPileNotificationService chargingPileNotificationService; @@ -41,11 +44,36 @@ */ @ApiOperation(value = "获取验证码",notes = "获取验证码",tags = {"更换手机号获取验证码"}) @GetMapping("/getCode") - public AjaxResult getCode(@RequestParam("phone") String phone) - { + public AjaxResult getCode(@RequestParam("phone") String phone) { + String regex = "^1[3-9]\\d{9}$"; + if(!phone.matches(regex)){ + return AjaxResult.error("无效的手机号"); + } + Map<String, Object> cacheMap = redisService.getCacheMap("sms_code_" + phone); + if(null == cacheMap || cacheMap.size() == 0){ + cacheMap = new HashMap<>(); + cacheMap.put("timestamp", System.currentTimeMillis()); + cacheMap.put("time", 1); + redisService.setCacheMap("sms_code_" + phone, cacheMap, 300); + }else{ + Integer time = (Integer) cacheMap.get("time"); + Long timestamp = (Long) cacheMap.get("timestamp"); + if(System.currentTimeMillis() - timestamp > 60000){ + cacheMap.put("timestamp", System.currentTimeMillis()); + cacheMap.put("time", 1); + redisService.setCacheMap("sms_code_" + phone, cacheMap, 300); + } else if(System.currentTimeMillis() - timestamp <= 60000 && time < 3){ + time++; + cacheMap.put("time", time); + redisService.setCacheMap("sms_code_" + phone, cacheMap, 300); + }else if(System.currentTimeMillis() - timestamp < 60000 && time >= 3){ + return AjaxResult.error("请求太频繁,请稍后再试!"); + } + } + TAppUser appUser = appUserClient.selectByPhone(phone).getData(); if (Objects.nonNull(appUser)){ - return AjaxResult.error("该手机号已绑定账号"); + return AjaxResult.error(); } String code = MsgUtil.createCode(); redisService.setCacheObject(phone+ Constants.UPDATE_PHONE,code,5L, TimeUnit.MINUTES); @@ -69,8 +97,33 @@ */ @ApiOperation(value = "获取验证码",notes = "获取验证码",tags = {"申请建桩获取验证码"}) @GetMapping("/getApplyCode") - public AjaxResult getApplyCode(@RequestParam("phone") String phone) - { + public AjaxResult getApplyCode(@RequestParam("phone") String phone) { + String regex = "^1[3-9]\\d{9}$"; + if(!phone.matches(regex)){ + return AjaxResult.error("无效的手机号"); + } + Map<String, Object> cacheMap = redisService.getCacheMap("sms_code_" + phone); + if(null == cacheMap || cacheMap.size() == 0){ + cacheMap = new HashMap<>(); + cacheMap.put("timestamp", System.currentTimeMillis()); + cacheMap.put("time", 1); + redisService.setCacheMap("sms_code_" + phone, cacheMap, 300); + }else{ + Integer time = (Integer) cacheMap.get("time"); + Long timestamp = (Long) cacheMap.get("timestamp"); + if(System.currentTimeMillis() - timestamp > 60000){ + cacheMap.put("timestamp", System.currentTimeMillis()); + cacheMap.put("time", 1); + redisService.setCacheMap("sms_code_" + phone, cacheMap, 300); + } else if(System.currentTimeMillis() - timestamp <= 60000 && time < 3){ + time++; + cacheMap.put("time", time); + redisService.setCacheMap("sms_code_" + phone, cacheMap, 300); + }else if(System.currentTimeMillis() - timestamp < 60000 && time >= 3){ + return AjaxResult.error("请求太频繁,请稍后再试!"); + } + } + String code = MsgUtil.createCode(); redisService.setCacheObject(phone+ Constants.APPLY_CHARGING,code,5L, TimeUnit.MINUTES); SendMessageDTO sendMessageDTO = new SendMessageDTO(); diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java index 93905fa..ece9acb 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java @@ -1,13 +1,12 @@ package com.ruoyi.chargingPile.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.ruoyi.chargingPile.api.dto.GetPermissionConfigurationDTO; import com.ruoyi.chargingPile.api.dto.PartnerListDTO; import com.ruoyi.chargingPile.api.model.Partner; import com.ruoyi.chargingPile.api.query.GetPartnerList; import com.ruoyi.chargingPile.api.query.SetPermissionConfiguration; -import com.ruoyi.chargingPile.domain.SiteMenu; +import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.dto.ResetPassword; import com.ruoyi.chargingPile.service.IPartnerService; import com.ruoyi.common.core.domain.R; @@ -16,6 +15,8 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; @@ -47,6 +48,7 @@ + @RequiresPermissions(value = {"/balanceSheetRecord", "/partners", "/chargingPile/add", "/chargingPile/select", "/chargingPile/update"}, logical = Logical.OR) @ResponseBody @GetMapping("/getPartnerList") @ApiOperation(value = "获取合作商列表", tags = {"管理后台-合作商管理"}) @@ -56,6 +58,8 @@ } + + @RequiresPermissions(value = {"/partners/add"}, logical = Logical.OR) @ResponseBody @PostMapping("/addPartner") @ApiOperation(value = "添加合作商", tags = {"管理后台-合作商管理"}) @@ -66,6 +70,7 @@ + @RequiresPermissions(value = {"/partners/seleete", "/partners/update"}, logical = Logical.OR) @ResponseBody @GetMapping("/getPartner/{id}") @ApiOperation(value = "获取合作商详情", tags = {"管理后台-合作商管理", "管理后台-充电桩信息"}) @@ -76,6 +81,9 @@ Partner partner = partnerService.getPartner(id); return AjaxResult.success(partner); } + + + @ResponseBody @GetMapping("/getPartnerR/{id}") public R<Partner> getPartnerR(@PathVariable("id") Integer id){ @@ -85,6 +93,7 @@ + @RequiresPermissions(value = {"/partners/update"}, logical = Logical.OR) @ResponseBody @PostMapping("/editPartner") @ApiOperation(value = "编辑合作商", tags = {"管理后台-合作商管理"}) @@ -95,6 +104,7 @@ + @RequiresPermissions(value = {"/partners/del"}, logical = Logical.OR) @ResponseBody @DeleteMapping("/delPartner") @ApiOperation(value = "删除合作商", tags = {"管理后台-合作商管理"}) @@ -107,6 +117,7 @@ } + @RequiresPermissions(value = {"/partners/resetPassword"}, logical = Logical.OR) @ResponseBody @PostMapping("/resetPassword") @ApiOperation(value = "合作商重置密码", tags = {"管理后台-合作商管理"}) @@ -117,6 +128,9 @@ @Autowired private TokenService tokenService; + + + @RequiresPermissions(value = {"/site/add", "/site/update"}, logical = Logical.OR) @ResponseBody @GetMapping("/getPartner") @ApiOperation(value = "获取所有合作商", tags = {"管理后台-站点管理"}) @@ -134,6 +148,8 @@ + + @RequiresPermissions(value = {"/site/partner_authority"}, logical = Logical.OR) @ResponseBody @GetMapping("/getPermissionConfiguration/{siteId}") @ApiOperation(value = "获取合作商权限设置", tags = {"管理后台-站点管理"}) @@ -143,6 +159,7 @@ } + @RequiresPermissions(value = {"/site/partner_authority"}, logical = Logical.OR) @ResponseBody @PostMapping("/setPermissionConfiguration/{siteId}") @ApiOperation(value = "设置合作商权限", tags = {"管理后台-站点管理"}) @@ -172,7 +189,19 @@ */ @PostMapping("/authSite/{partnerId}") public R<Set<Integer>> authSite(@PathVariable("partnerId") Integer partnerId, @RequestParam("siteMenu") String siteMenu){ - Set<Integer> integers = partnerService.authSite(partnerId, SiteMenu.valueOf(siteMenu)); + Set<Integer> integers = partnerService.authSite(partnerId, SiteMenu.getSiteMenu(siteMenu)); return R.ok(integers); } + + /** + * 判断合作商权限 + * @param partnerId + * @param siteId + * @param siteMenu + * @return + */ + @PostMapping("/authMenu/{partnerId}") + public Boolean authMenu(@PathVariable("partnerId") Integer partnerId, @RequestParam("siteId") Integer siteId, @RequestParam("siteMenu") String siteMenu){ + return partnerService.authMenu(partnerId, siteId, SiteMenu.getSiteMenu(siteMenu)); + } } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java index 2677245..67d1285 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java @@ -19,7 +19,7 @@ import com.ruoyi.chargingPile.api.query.SiteDetailQuery; import com.ruoyi.chargingPile.api.query.SiteQuery; import com.ruoyi.chargingPile.api.vo.*; -import com.ruoyi.chargingPile.domain.SiteMenu; +import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.dto.ChargingPercentBack; import com.ruoyi.common.core.dto.ChargingOrderGroup; import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; @@ -31,6 +31,8 @@ import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.api.feignClient.ChargingOrderClient; @@ -55,7 +57,6 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; -import java.time.LocalDate; import java.time.LocalTime; import java.time.temporal.ChronoUnit; import java.util.*; @@ -237,6 +238,9 @@ return R.ok(siteInfoVO); } + @RequiresPermissions(value = {"/systemUserManagement/update", "/site", "/platformRevenueAnalysis", "/chargingOperationAnalysis", + "/chargingUserAnalysis", "/operationMaintenanceAnalysis", "/chargingEquipmentMonitoring", "/activityExpense", "/chargeEvaluation/list", + "/parkingLot", "/workbench"}, logical = Logical.OR) @GetMapping("/getSiteList") @ApiOperation(value = "获取站点列表", tags = {"管理后台-站点管理"}) public AjaxResult<PageInfo<GetSiteListDTO>> getSiteList(GetSiteList siteList){ @@ -251,9 +255,10 @@ PageInfo<GetSiteListDTO> list = siteService.getSiteList1(userId); return R.ok(list.getRecords()); } - - - + + + + @RequiresPermissions(value = {"/chargeDistribution"}, logical = Logical.OR) @GetMapping("/map/getSiteList") @ApiOperation(value = "获取站点", tags = {"管理后台-数据分析-电站分析"}) public R<List<GetSiteListDTO>> getMapSiteList(GetSiteList siteList){ @@ -301,8 +306,9 @@ } return R.ok(list.getRecords()); } - - + + + @RequiresPermissions(value = {"/chargeDistribution"}, logical = Logical.OR) @GetMapping("/map/getPercent") @ApiOperation(value = "获取该充电站的利用率", tags = {"管理后台-数据分析-电站分析"}) public R getPercent(Integer siteId){ @@ -330,6 +336,10 @@ private SiteClient siteClient; + + + + @RequiresPermissions(value = {"/chargeDistribution"}, logical = Logical.OR) @PostMapping("/map/getPercentByprovinceCode") @ApiOperation(value = "获取该充电站的利用率", tags = {"管理后台-数据分析-电站分析"}) public R getPercentByCityCode(@RequestBody ChargingPercentProvinceDto chargingPercentProvinceDto){ @@ -398,18 +408,25 @@ public AjaxResult<List<Site>> getSiteList1(){ return AjaxResult.success(siteService.list(new QueryWrapper<>())); } - + + @RequiresPermissions(value = {"/systemUserManagement", "/site", "/faultInformationList", "/repairRecord", "/balanceSheetRecord", "/chargingPileOrder", + "/chargeOrderMonitoring", "/chargingPile", "/chargingGun"}, logical = Logical.OR) @GetMapping("/getSiteListGun") @ApiOperation(value = "获取站点列表 不分页", tags = {"管理后台-接口信息使用"}) public AjaxResult<List<Site>> getSiteListGun(){ return AjaxResult.success(siteService.getSiteListGun()); } - + + + @RequiresPermissions(value = {"/parkingLot/add", "/parkingLot/select", "/parkingLot/update"}, logical = Logical.OR) @GetMapping("/getSiteListParkLot") @ApiOperation(value = "获取站点列表不分页", tags = {"管理后台-停车场绑定"}) public AjaxResult<List<Site>> getSiteListParkLot(){ return AjaxResult.success(siteService.getSiteListParkLot()); } + + + @ApiOperation(value = "获取站点分页列表", tags = {"小程序-站点管理-首页"}) @PostMapping("/pageList") public AjaxResult<PageInfo<SiteVO>> pageList(@Validated @RequestBody SiteQuery query, HttpServletRequest request){ @@ -417,6 +434,8 @@ return AjaxResult.success(siteService.pageList(query,isLogin)); } + + @ApiOperation(value = "获取站点列表", tags = {"小程序-站点管理-地图导航站点"}) @PostMapping("/getMapSiteList") public AjaxResult<List<SiteVO>> getMapSiteList(@Validated @RequestBody SiteQuery query, HttpServletRequest request){ @@ -456,8 +475,10 @@ public AjaxResult<Map<String,ChargingGunCountVO>> getChargingGunCount(@RequestParam(value = "siteId")@ApiParam(value = "站点id", required = true)Integer siteId){ return AjaxResult.success(chargingGunService.getChargingGunCount(siteId)); } - + + + @RequiresPermissions(value = {"/site/add"}, logical = Logical.OR) @ResponseBody @PostMapping("/addSite") @ApiOperation(value = "添加站点", tags = {"管理后台-站点管理"}) @@ -468,6 +489,7 @@ + @RequiresPermissions(value = {"/site/update"}, logical = Logical.OR) @ResponseBody @PostMapping("/getSiteInfo/{id}") @ApiOperation(value = "获取站点详情", tags = {"管理后台-站点管理"}) @@ -478,6 +500,7 @@ + @RequiresPermissions(value = {"/site/update"}, logical = Logical.OR) @ResponseBody @PostMapping("/editSite") @ApiOperation(value = "编辑站点", tags = {"管理后台-站点管理"}) @@ -486,6 +509,9 @@ return siteService.editSite(site); } + + + @RequiresPermissions(value = {"/site/del", "/site/batch_del"}, logical = Logical.OR) @ResponseBody @DeleteMapping("/delSite") @ApiOperation(value = "删除站点", tags = {"管理后台-站点管理"}) @@ -498,6 +524,8 @@ } + + @RequiresPermissions(value = {"/site/accounting_strategy"}, logical = Logical.OR) @ResponseBody @PostMapping("/setAccountingStrategy/{id}") @ApiOperation(value = "设置站点计费策略", tags = {"管理后台-站点管理"}) @@ -512,6 +540,8 @@ } + @RequiresPermissions(value = {"/roleManagement/add", "/roleManagement/info", "/roleManagement/update", "/systemNotification", "/chargingPeriodStatistics", + "/parkingPaymentOrder", "/generateStatement", "/chargingPile/add", "/chargingPile/select", "/chargingPile/update"}, logical = Logical.OR) @ResponseBody @GetMapping("/getAllSiteList") @ApiOperation(value = "获取所有站点数据", tags = {"管理后台-充电桩信息", "管理后台-系统用户管理", "管理后台-角色管理", "管理后台-系统通知", "管理后台-充电评价"}) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java index 1bb2f6e..de5b1ac 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java @@ -23,6 +23,8 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.integration.api.feignClient.IntegrationClient; @@ -80,6 +82,8 @@ /** * 查询计费策略列表 */ + @RequiresPermissions(value = {"/site/add", "/site/update", "/site/accounting_strategy", "/chargingPile/add_charging_gun", "/chargingPile/accountingStrategy", + "/chargingGun/update", "/accountingStrategy"}, logical = Logical.OR) @ApiOperation(tags = {"后台-计费策略"},value = "查询计费策略分页列表") @PostMapping(value = "/pageList") public AjaxResult<PageInfo<TAccountingStrategyVO>> pageList(@RequestBody TAccountingStrategyQuery query) { @@ -89,6 +93,8 @@ /** * 查询计费策略明细列表 */ + @RequiresPermissions(value = {"/billingTemplateAudit/info", "/site/accounting_strategy", "/chargingGun/select_rate", "/accountingStrategy", + "/accountingStrategy/select", "/accountingStrategy/update"}, logical = Logical.OR) @ApiOperation(tags = {"后台-计费策略", "管理后台-站点管理", "管理后台-充电桩信息"},value = "查询计费策略明细列表") @GetMapping(value = "/queryAccountingStrategyDetailByStrategyId") public AjaxResult<List<TAccountingStrategyDetailVO>> queryAccountingStrategyDetailByStrategyId(@RequestParam("strategyId") Integer strategyId) { @@ -137,6 +143,7 @@ /** * 修改计费策略 */ + @RequiresPermissions(value = {"/accountingStrategy/update"}, logical = Logical.OR) @Log(title = "【计费策略】修改计费策略", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-计费策略", "管理后台-站点管理"},value = "修改计费策略") @PostMapping(value = "/update") @@ -213,6 +220,7 @@ /** * 查看计费策略详情 */ + @RequiresPermissions(value = {"/site/accounting_strategy", "/accountingStrategy/select", "/accountingStrategy/update"}, logical = Logical.OR) @ApiOperation(tags = {"后台-计费策略", "管理后台-站点管理"},value = "查看计费策略详情") @GetMapping(value = "/getDetailById") public AjaxResult<TAccountingStrategyVO> getDetailById(@RequestParam("id") Integer id) { @@ -286,6 +294,7 @@ /** * 删除计费策略 */ + @RequiresPermissions(value = {"/accountingStrategy/del"}, logical = Logical.OR) @Log(title = "【计费策略】删除计费策略", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-计费策略"},value = "删除计费策略") @DeleteMapping(value = "/deleteById") @@ -305,6 +314,7 @@ /** * 批量删除计费策略 */ + @RequiresPermissions(value = {"/accountingStrategy/del"}, logical = Logical.OR) @Log(title = "【计费策略】批量删除计费策略", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-计费策略"},value = "批量删除计费策略") @DeleteMapping(value = "/deleteByIds") @@ -329,9 +339,10 @@ List<TAccountingStrategyVO> list = accountingStrategyService.getPlatformAccountingStrategy(); return AjaxResult.success(list); } - - - + + + + @RequiresPermissions(value = {"/billingTemplateAudit"}, logical = Logical.OR) @ApiOperation(tags = {"后台-申请表单-计费模板审核"},value = "查询计费审核分页列表") @PostMapping(value = "/auth/pageList") public AjaxResult<PageInfo<TAccountingStrategyVO>> authPageList(@RequestBody TAccountingStrategyQuery query) { @@ -339,7 +350,8 @@ return AjaxResult.ok(accountingStrategyService.pageList1(query)); } - + + @RequiresPermissions(value = {"/billingTemplateAudit/audit"}, logical = Logical.OR) @ApiOperation(tags = {"后台-申请表单-计费模板审核"},value = "审核") @PostMapping(value = "/auth/pass") @Log(title = "【计费模板审核】审核计费模板", businessType = BusinessType.OTHER,operatorType = OperatorType.MANAGE) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java index c6a43eb..ecf60cb 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java @@ -15,6 +15,8 @@ import com.ruoyi.common.core.web.domain.BasePojo; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.order.api.model.ExportUidDto; @@ -134,7 +136,9 @@ dto.setAppUserId(userId); return AjaxResult.ok(applyChargingPileService.save(dto)); } - + + + @RequiresPermissions(value = {"/pileApplication/add"}, logical = Logical.OR) @Log(title = "【申请建桩】添加建桩申请", businessType = BusinessType.INSERT) @ApiOperation(tags = {"后台-申请表单-申请建桩"},value = "建桩申请") @PostMapping(value = "/manage/add") @@ -142,7 +146,9 @@ return AjaxResult.ok(applyChargingPileService.save(dto)); } - + + + @RequiresPermissions(value = {"/pileApplication"}, logical = Logical.OR) @ApiOperation(tags = {"后台-申请表单-申请建桩"},value = "列表") @PostMapping(value = "/page") public AjaxResult<Page<TApplyChargingPile>> page(@RequestBody ApplyChargingQuery applyChargingQuery) { @@ -152,8 +158,9 @@ .page(Page.of(applyChargingQuery.getPageCurr(), applyChargingQuery.getPageSize())); return AjaxResult.ok(page); } - - + + + @RequiresPermissions(value = {"/pileApplication/export"}, logical = Logical.OR) @ApiOperation(tags = {"后台-申请表单-申请建桩"},value = "导出") @PutMapping(value = "/export") @Log(title = "【申请建桩】导出建桩申请列表", businessType = BusinessType.EXPORT) @@ -267,7 +274,9 @@ } return R.ok(); } - + + + @RequiresPermissions(value = {"/chargeBill/download"}, logical = Logical.OR) @ApiOperation(value = "下载-已出账", tags = {"管理后台-充电算账单"}) @PutMapping("/downloadBill") @Log(title = "【充电算账单】下载算账单", businessType = BusinessType.EXPORT) @@ -310,6 +319,10 @@ } return R.ok(); } + + + + @RequiresPermissions(value = {"/accountSettlementStatement/download"}, logical = Logical.OR) @ApiOperation(value = "下载", tags = {"管理后台-账户结算账单"}) @PutMapping("/downloadAccount") @Log(title = "【账户结算账单】下载账单", businessType = BusinessType.EXPORT) @@ -366,7 +379,10 @@ } return R.ok(); } - + + + + @RequiresPermissions(value = {"/summarySettlement/export", "/balanceSheetRecord/download"}, logical = Logical.OR) @ApiOperation(value = "导出", tags = {"管理后台-结算汇总表"}) @PutMapping("/downloadSettlementTotal") @Log(title = "【结算汇总表】下载汇总表", businessType = BusinessType.EXPORT) @@ -402,6 +418,9 @@ } return R.ok(); } + + + @Resource private OtherClient otherClient; @Resource @@ -689,14 +708,16 @@ ); return pattern.matcher(url).matches(); } - + + @RequiresPermissions(value = {"/pileApplication/select"}, logical = Logical.OR) @ApiOperation(tags = {"后台-申请表单-申请建桩"},value = "详情") @PostMapping(value = "/detail/{id}") public AjaxResult<TApplyChargingPile> detail(@PathVariable Integer id) { return AjaxResult.ok(applyChargingPileService.getById(id)); } - + + @RequiresPermissions(value = {"/pileApplication/remark"}, logical = Logical.OR) @ApiOperation(tags = {"后台-申请表单-申请建桩"},value = "修改备注") @PostMapping(value = "/remark") @Log(title = "【申请建桩】修改备注", businessType = BusinessType.UPDATE) @@ -706,6 +727,8 @@ applyChargingPileService.updateById(byId); return AjaxResult.success(); } + + @RequiresPermissions(value = {"/pileApplication/del"}, logical = Logical.OR) @ApiOperation(tags = {"后台-申请表单-申请建桩"},value = "删除") @DeleteMapping(value = "/remark") @Log(title = "【申请建桩】删除建桩申请", businessType = BusinessType.DELETE) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TCarportController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TCarportController.java index 56e736a..66a452d 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TCarportController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TCarportController.java @@ -12,6 +12,8 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -45,6 +47,7 @@ /** * 通过停车场id查询车库及车道信息 */ + @RequiresPermissions(value = {"/parkingLot"}, logical = Logical.OR) @ApiOperation(tags = {"后台-车库"},value = "通过停车场id查询车库及车道信息") @GetMapping(value = "/queryCarportByParkId") public AjaxResult<List<TCarportVO>> queryCarportByParkId(@RequestParam(value = "parkingLotId", required = true) Integer parkingLotId) { @@ -55,6 +58,7 @@ /** * 添加车库管理 */ + @RequiresPermissions(value = {"/parkingLot/add_garage"}, logical = Logical.OR) @Log(title = "【车库】添加车库", businessType = BusinessType.INSERT) @ApiOperation(tags = {"后台-车库"},value = "添加车库") @PostMapping(value = "/add") @@ -65,6 +69,7 @@ /** * 修改车库 */ + @RequiresPermissions(value = {"/parkingLot/update_garage"}, logical = Logical.OR) @Log(title = "【车库】修改车库", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-车库"},value = "修改车库") @PostMapping(value = "/update") @@ -75,6 +80,7 @@ /** * 查看车库详情 */ + @RequiresPermissions(value = {"/parkingLot/update_garage"}, logical = Logical.OR) @ApiOperation(tags = {"后台-车库"},value = "查看车库详情") @GetMapping(value = "/getDetailById") public AjaxResult<TCarport> getDetailById(@RequestParam("id") Integer id) { @@ -84,6 +90,7 @@ /** * 删除车库 */ + @RequiresPermissions(value = {"/parkingLot/del_garage"}, logical = Logical.OR) @Log(title = "【车库】删除车库", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-车库"},value = "删除车库") @DeleteMapping(value = "/deleteById") @@ -97,6 +104,7 @@ /** * 批量删除车库 */ + @RequiresPermissions(value = {"/parkingLot/del_garage"}, logical = Logical.OR) @Log(title = "【车库】批量删除车库", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-车库"},value = "批量删除车库") @DeleteMapping(value = "/deleteByIds") diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java index cc000f4..f618ef1 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java @@ -24,6 +24,8 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.api.feignClient.ChargingOrderClient; @@ -70,6 +72,7 @@ /** * 查询充电枪列表 */ + @RequiresPermissions(value = {"/chargingPile", "/chargingGun"}, logical = Logical.OR) @ApiOperation(tags = {"后台-充电枪", "管理后台-充电桩信息"},value = "查询充电枪分页列表") @PostMapping(value = "/pageList") public AjaxResult<PageInfo<TChargingGunVO>> pageList(@RequestBody TChargingGunQuery query) { @@ -79,6 +82,7 @@ /** * 添加充电枪管理 */ + @RequiresPermissions(value = {"/chargingPile/add_charging_gun"}, logical = Logical.OR) @Log(title = "【充电桩信息】添加充电枪", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"管理后台-充电桩信息"},value = "添加充电枪") @PostMapping(value = "/add") @@ -89,6 +93,7 @@ /** * 修改充电枪 */ + @RequiresPermissions(value = {"/chargingGun/update"}, logical = Logical.OR) @Log(title = "【充电桩信息】修改充电枪", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"管理后台-充电桩信息"},value = "修改充电枪") @PostMapping(value = "/update") @@ -99,6 +104,7 @@ /** * 查看充电枪详情 */ + @RequiresPermissions(value = {"/chargingGun/update", "/chargingGun/select"}, logical = Logical.OR) @ApiOperation(tags = {"后台-充电枪", "管理后台-充电桩信息"},value = "查看充电枪详情") @GetMapping(value = "/getDetailById") public AjaxResult<TChargingGun> getDetailById(@RequestParam("id") Integer id) { @@ -108,6 +114,7 @@ /** * 删除充电枪 */ + @RequiresPermissions(value = {"/chargingGun/del"}, logical = Logical.OR) @Log(title = "【充电桩信息】删除充电枪", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"管理后台-充电桩信息"},value = "删除充电枪") @DeleteMapping(value = "/deleteById") @@ -120,6 +127,7 @@ /** * 批量删除充电枪 */ + @RequiresPermissions(value = {"/chargingGun/del"}, logical = Logical.OR) @Log(title = "【充电桩信息】批量删除充电枪", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-充电枪"},value = "批量删除充电枪") @DeleteMapping(value = "/deleteByIds") @@ -131,6 +139,7 @@ /** * 结束充电 */ + @RequiresPermissions(value = {"/chargingGun/end_charging"}, logical = Logical.OR) @Log(title = "【充电桩信息】结束充电", businessType = BusinessType.OTHER,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-充电枪"},value = "结束充电") @PutMapping(value = "/stopCharging") @@ -144,6 +153,7 @@ + @RequiresPermissions(value = {"/chargingGun/download_qr_code"}, logical = Logical.OR) @ApiOperation(tags = {"管理后台-充电桩信息"},value = "下载二维码") @GetMapping(value = "/downloadQRCode/{id}") @Log(title = "【充电桩信息】下载二维码", businessType = BusinessType.OTHER,operatorType = OperatorType.MANAGE) @@ -196,6 +206,7 @@ /** * 设备状态统计 */ + @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR) @ApiOperation(tags = {"后台-工作台"},value = "设备状态统计") @PutMapping(value = "/gunStatusStatistics") public R<GunStatusStatisticsVO> gunStatusStatistics() { diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java index 644e120..86b27c7 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java @@ -28,6 +28,8 @@ import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; import com.ruoyi.common.redis.service.RedisService; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.vo.TChargingOrderVo; @@ -119,7 +121,10 @@ return R.ok(chargingPileService.list(Wrappers.lambdaQuery(TChargingPile.class) .in(!siteIds.isEmpty(),TChargingPile::getSiteId,siteIds))); } - + + + + @RequiresPermissions(value = {"/chargingPile", "/chargingGun"}, logical = Logical.OR) @ResponseBody @GetMapping("/pageChargingPileList") @ApiOperation(value = "获取充电桩列表数据", tags = {"管理后台-充电桩信息"}) @@ -127,7 +132,9 @@ PageInfo<PageChargingPileListDTO> list = chargingPileService.pageChargingPileList(page); return AjaxResult.success(list); } - + + + @RequiresPermissions(value = {"/chargingPile/add"}, logical = Logical.OR) @ResponseBody @Log(title = "【充电桩信息】添加充电桩数据", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE) @PostMapping("/addChargingPile") @@ -135,8 +142,9 @@ public AjaxResult addChargingPile(@RequestBody TChargingPile chargingPile){ return chargingPileService.addChargingPile(chargingPile); } - - + + + @RequiresPermissions(value = {"/chargingPile/select", "/chargingPile/update"}, logical = Logical.OR) @ResponseBody @GetMapping("/getChargingPile/{id}") @ApiOperation(value = "获取充电桩详情数据", tags = {"管理后台-充电桩信息"}) @@ -144,8 +152,9 @@ TChargingPile chargingPile = chargingPileService.getChargingPile(id); return AjaxResult.success(chargingPile); } - - + + + @RequiresPermissions(value = {"/chargingPile/update"}, logical = Logical.OR) @ResponseBody @Log(title = "【充电桩信息】编辑充电桩数据", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @PostMapping("/editChargingPile") @@ -153,9 +162,10 @@ public AjaxResult editChargingPile(@RequestBody TChargingPile chargingPile){ return chargingPileService.editChargingPile(chargingPile); } - - - + + + + @RequiresPermissions(value = {"/chargingPile/del", "/chargingPile/batch_del"}, logical = Logical.OR) @ResponseBody @DeleteMapping("/delChargingPile") @Log(title = "【充电桩信息】删除充电桩", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @@ -166,8 +176,9 @@ public AjaxResult delChargingPile(@RequestParam("id") Integer[] id){ return chargingPileService.delChargingPile(id); } - - + + + @RequiresPermissions(value = {"/chargingPile/accountingStrategy"}, logical = Logical.OR) @ResponseBody @Log(title = "【充电桩信息】批量设置计费策略", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @PostMapping("/batchSetAccountingStrategy") @@ -176,8 +187,9 @@ chargingPileService.batchSetAccountingStrategy(setAccountingStrategy); return AjaxResult.success(); } - - + + + @RequiresPermissions(value = {"/chargingEquipmentMonitoring"}, logical = Logical.OR) @ResponseBody @GetMapping("/chargeMonitoring/{siteId}") @ApiOperation(value = "获取充电设施监控数据", tags = {"管理后台-充电设备监控"}) @@ -185,8 +197,9 @@ ChargeMonitoring chargeMonitoring = chargingPileService.chargeMonitoring(siteId); return AjaxResult.success(chargeMonitoring); } - - + + + @RequiresPermissions(value = {"/chargingEquipmentMonitoring"}, logical = Logical.OR) @ResponseBody @GetMapping("/getChargingGunCountMonitoring/{siteId}") @ApiOperation(value = "获取充电枪各种状态汇总监控数据", tags = {"管理后台-充电设备监控"}) @@ -194,8 +207,9 @@ ChargingGunCountMonitoring chargingGunCountMonitoring = chargingPileService.getChargingGunCountMonitoring(siteId); return AjaxResult.success(chargingGunCountMonitoring); } - - + + + @RequiresPermissions(value = {"/operationMaintenanceAnalysis", "/chargingEquipmentMonitoring"}, logical = Logical.OR) @ResponseBody @GetMapping("/getChargingGunMonitoring") @ApiOperation(value = "获取充电枪监控数据", tags = {"管理后台-充电设备监控"}) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileNotificationController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileNotificationController.java index 0a6bd79..b9061f4 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileNotificationController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileNotificationController.java @@ -9,6 +9,8 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -32,6 +34,7 @@ + @RequiresPermissions(value = {"/systemNotification"}, logical = Logical.OR) @ResponseBody @GetMapping("/chargingPileNotificationPageList") @ApiOperation(value = "获取系统通知列表数据", tags = {"管理后台-系统通知"}) @@ -41,6 +44,7 @@ } + @RequiresPermissions(value = {"/systemNotification/del"}, logical = Logical.OR) @ResponseBody @DeleteMapping("/delChargingPileNotification") @ApiOperation(value = "删除系统通知", tags = {"管理后台-系统通知"}) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TFaultMessageController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TFaultMessageController.java index a85a941..4d98961 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TFaultMessageController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TFaultMessageController.java @@ -14,6 +14,8 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -58,6 +60,7 @@ * @param basePage * @return */ + @RequiresPermissions(value = {"/faultInformationList"}, logical = Logical.OR) @ResponseBody @GetMapping("/getFaultMessageList") @ApiOperation(value = "获取故障信息列表数据", tags = {"管理后台-设备监控"}) @@ -69,6 +72,7 @@ } + @RequiresPermissions(value = {"/faultInformationList/add"}, logical = Logical.OR) @ResponseBody @PostMapping("/addFaultMessage") @ApiOperation(value = "添加故障信息", tags = {"管理后台-设备监控"}) @@ -79,6 +83,7 @@ } + @RequiresPermissions(value = {"/faultInformationList/del"}, logical = Logical.OR) @ResponseBody @DeleteMapping("/delFaultMessage/{id}") @ApiOperation(value = "删除故障信息", tags = {"管理后台-设备监控"}) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java index 7db9f8c..f086096 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java @@ -21,6 +21,8 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -62,6 +64,7 @@ /** * 查询停车场列表 */ + @RequiresPermissions(value = {"/parkingLot"}, logical = Logical.OR) @ApiOperation(tags = {"后台-停车场"},value = "查询停车场分页列表") @PostMapping(value = "/pageList") public AjaxResult<PageInfo<TParkingLotVO>> pageList(@RequestBody TParkingLotQuery query) { @@ -71,6 +74,7 @@ /** * 查询停车场列表 */ + @RequiresPermissions(value = {"/parkingOperationAnalysis", "/workbench"}, logical = Logical.OR) @ApiOperation(tags = {"后台-停车场"},value = "查询停车场列表") @PostMapping(value = "/list") public AjaxResult<List<TParkingLotVO>> list(@RequestBody TParkingLotQuery query) { @@ -80,6 +84,7 @@ /** * 添加停车场管理 */ + @RequiresPermissions(value = {"/parkingLot/add"}, logical = Logical.OR) @Log(title = "【停车场】添加停车场", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-停车场"},value = "添加停车场") @PostMapping(value = "/add") @@ -90,6 +95,7 @@ /** * 修改停车场 */ + @RequiresPermissions(value = {"/parkingLot/update"}, logical = Logical.OR) @Log(title = "【停车场】修改停车场", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-停车场"},value = "修改停车场") @PostMapping(value = "/update") @@ -100,6 +106,7 @@ /** * 查看停车场详情 */ + @RequiresPermissions(value = {"/parkingLot/select", "/parkingLot/update"}, logical = Logical.OR) @ApiOperation(tags = {"后台-停车场"},value = "查看停车场详情") @GetMapping(value = "/getDetailById") public AjaxResult<TParkingLot> getDetailById(@RequestParam("id") Integer id) { @@ -109,6 +116,7 @@ /** * 删除停车场 */ + @RequiresPermissions(value = {"/parkingLot/del"}, logical = Logical.OR) @Log(title = "【停车场】删除停车场", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-停车场"},value = "删除停车场") @DeleteMapping(value = "/deleteById") @@ -125,6 +133,7 @@ /** * 批量删除停车场 */ + @RequiresPermissions(value = {"/parkingLot/batch_del"}, logical = Logical.OR) @Log(title = "【停车场】批量删除停车场", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-停车场"},value = "批量删除停车场") @DeleteMapping(value = "/deleteByIds") @@ -147,11 +156,16 @@ return R.ok(parkingLotService.getOne(Wrappers.lambdaQuery(TParkingLot.class) .eq(TParkingLot::getSiteId, siteId))); } - + + + @RequiresPermissions(value = {"/paymentOrder/order"}, logical = Logical.OR) @GetMapping(value = "/getRecordById") public R<TParkingRecord> getRecordById(@RequestParam("id") Long id){ return R.ok(parkingRecordService.getById(id)); } + + + @PostMapping(value = "/getRecordAmount") public R<BigDecimal> getRecordAmount(@RequestParam("sixBefore") LocalDate sixBefore){ BigDecimal sum = parkingRecordService.getSum(sixBefore); diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java index 8d71d90..b797113 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java @@ -25,6 +25,8 @@ import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.order.api.query.TOrderInvoiceQuery; import com.ruoyi.order.api.vo.TCharingUserEquimentVO; import com.ruoyi.order.api.vo.TOrderInvoiceVO; @@ -68,6 +70,9 @@ @Resource private TokenService tokenService; + + + @RequiresPermissions(value = {"/parkingRecord"}, logical = Logical.OR) @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "列表") @PostMapping(value = "/page") public R<Page<TParkingRecord>> page(@RequestBody ParkingRecordPageQuery query) { @@ -109,12 +114,17 @@ } return R.ok(page); } - + + + @RequiresPermissions(value = {"/parkingPaymentOrder"}, logical = Logical.OR) @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "停车缴费订单列表") @PostMapping(value = "/pageList") public R<TParkingRecordPageInfoVO> pageList(@RequestBody ParkingRecordQuery query) { return R.ok(parkingRecordService.pageList(query)); } + + + @RequiresPermissions(value = {"/parkingPaymentOrder/export"}, logical = Logical.OR) @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "导出") @PutMapping("/export") @Log(title = "【停车记录】导出停车记录", businessType = BusinessType.EXPORT,operatorType = OperatorType.MANAGE) @@ -160,12 +170,18 @@ } } } + + + + @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "详情") @GetMapping(value = "/detail") public R<TParkingRecord> detail(Long id) { return R.ok(parkingRecordService.getById(id)); } - + + + @RequiresPermissions(value = {"/parkingRecord/already_appeared"}, logical = Logical.OR) @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "出场") @GetMapping(value = "/out") @Log(title = "【停车记录】修改出场状态", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @@ -222,7 +238,9 @@ public void addParkingRecord(@RequestBody TParkingRecord parkingRecord){ parkingRecordService.save(parkingRecord); } - + + + @RequiresPermissions(value = {"/parkingOperationAnalysis"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/parking/data") @ApiOperation(value = "统计", tags = {"管理后台-数据分析-车场运营分析"}) @@ -307,6 +325,9 @@ return R.ok(tParkLotRecordVO); } + + + private static Map<String, Object> findMapWithTimeValue(List<Map<String, Object>> charMap1,String timeValue) { for (Map<String, Object> map : charMap1) { if (map.containsKey("time") && map.get("time").equals(timeValue)) { @@ -315,6 +336,8 @@ } return null; // 如果没有找到,返回 null } + + private Map<String, Object> findMapWithDateValue(List<Map<String, Object>> list, String date) { for (Map<String, Object> map : list) { @@ -324,6 +347,10 @@ } return null; } + + + + @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/parking/work") @ApiOperation(value = "停车订单统计", tags = {"管理后台-工作台"}) @@ -353,6 +380,11 @@ return R.ok(tParkLotRecordCountVo); } + + + + + @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/parking/work1") @ApiOperation(value = "停车订单统计", tags = {"管理后台-工作台"}) @@ -380,7 +412,10 @@ return R.ok(tParkLotRecordCountVo); } - + + + + @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/parking/income") @ApiOperation(value = "停车收入统计", tags = {"管理后台-工作台"}) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java index fd964e2..565ecbe 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java @@ -12,6 +12,8 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; @@ -60,6 +62,8 @@ return AjaxResult.success(); } + + @RequiresPermissions(value = {"/repairRecord"}, logical = Logical.OR) @ResponseBody @GetMapping("/getRepairList") @ApiOperation(value = "获取报修记录列表数据", tags = {"管理后台-设备监控"}) @@ -73,6 +77,7 @@ + @RequiresPermissions(value = {"/repairRecord/add"}, logical = Logical.OR) @ResponseBody @PostMapping("/addRepair") @ApiOperation(value = "添加报修记录", tags = {"管理后台-设备监控"}) @@ -83,6 +88,7 @@ } + @RequiresPermissions(value = {"/repairRecord/del"}, logical = Logical.OR) @ResponseBody @DeleteMapping("/delRepair/{id}") @ApiOperation(value = "删除报修记录", tags = {"管理后台-设备监控"}) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java index dfe127a..644b9f5 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java @@ -11,6 +11,8 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.integration.api.feignClient.SwitchwayGateClient; import com.ruoyi.integration.api.vo.SwitchwayGateReq; import io.swagger.annotations.Api; @@ -55,6 +57,7 @@ /** * 添加车道管理 */ + @RequiresPermissions(value = {"/parkingLot/add_lane"}, logical = Logical.OR) @Log(title = "【停车场配置】添加车道", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-车道"},value = "添加车道") @PostMapping(value = "/add") @@ -66,6 +69,7 @@ /** * 修改车道 */ + @RequiresPermissions(value = {"/parkingLot/update_lane"}, logical = Logical.OR) @Log(title = "【停车场配置】修改车道", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-车道"},value = "修改车道") @PostMapping(value = "/update") @@ -76,6 +80,7 @@ /** * 查看车道详情 */ + @RequiresPermissions(value = {"/parkingLot/update_lane"}, logical = Logical.OR) @ApiOperation(tags = {"后台-车道"},value = "查看车道详情") @GetMapping(value = "/getDetailById") public AjaxResult<TVehicleRamp> getDetailById(@RequestParam("id") Integer id) { @@ -85,6 +90,7 @@ /** * 删除车道 */ + @RequiresPermissions(value = {"/parkingLot/del_lane"}, logical = Logical.OR) @Log(title = "【停车场配置】删除车道", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-车道"},value = "删除车道") @DeleteMapping(value = "/deleteById") @@ -95,6 +101,7 @@ /** * 批量删除车道 */ + @RequiresPermissions(value = {"/parkingLot/del_lane"}, logical = Logical.OR) @Log(title = "【停车场配置】批量删除车道", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-车道"},value = "批量删除车道") @DeleteMapping(value = "/deleteByIds") @@ -106,6 +113,7 @@ /** * 开关闸车道 */ + @RequiresPermissions(value = {"/parkingLot/open_gate", "/parkingLot/close_gate"}, logical = Logical.OR) @Log(title = "【停车场配置】开关闸车道", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-车道"},value = "开关闸车道") @PostMapping(value = "/openOrDown") diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/domain/SiteMenu.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/domain/SiteMenu.java deleted file mode 100644 index dfe5f0f..0000000 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/domain/SiteMenu.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.ruoyi.chargingPile.domain; - - -/** - * @author zhibing.pu - * @Date 2024/8/9 15:28 - */ -public enum SiteMenu { - //站点管理 - SITE_LIST("/data/site"), - //站点计费策略 - SITE_ACCOUNTING_STRATEGY("/data/site/accounting_strategy"), - //站点编辑 - SITE_UPDATE("/data/site/update"), - //站点删除 - SITE_DELETE("/data/site/delete"), - //充电桩信息 - CHARGING_PILE("/data/charging_pile"), - //充电桩查看 - CHARGING_PILE_QUERY_INFO("/data/charging_pile/query_info"), - //充电桩编辑 - CHARGING_PILE_UPDATE("/data/charging_pile/update"), - //充电桩删除 - CHARGING_PILE_DELETE("/data/charging_pile/delete"), - //充电桩新增接口 - CHARGING_PILE_ADD_CHARGING_GUN("/data/charging_pile/add_charging_gun"), - //接口信息 - CHARGING_GUN("/data/charging_gun"), - //接口编辑 - CHARGING_GUN_UPDATE("/data/charging_gun/update"), - //接口删除 - CHARGING_GUN_DELETE("/data/charging_gun/delete"), - //接口查看费率 - CHARGING_GUN_VIEW_RATES("/data/charging_gun/view_rates"), - //接口下载二维码 - CHARGING_GUN_DOWNLOAD_QR_CODE("/data/charging_gun/download_qr_code"), - //接口查看详情 - CHARGING_GUN_QUERY_INFO("/data/charging_gun/query_info"), - //接口结束充电 - CHARGING_GUN_END_CHARGE("/data/charging_gun/end_charge"), - //停车场配置 - PARKING_LOT("/data/parking_lot"), - //停车场查看 - PARKING_LOT_QUERY_INFO("/data/parking_lot/query_info"), - //停车场编辑 - PARKING_LOT_UPDATE("/data/parking_lot/update"), - //停车场删除 - PARKING_LOT_DELETE("/data/parking_lot/delete"), - //停车场监控 - PARKING_LOT_MONITOR("/data/parking_lot/monitor"), - //停车场新增车库 - PARKING_LOT_ADD_GARAGE("/data/parking_lot/add_garage"), - //监控管理 - MONITOR("/data/monitor"), - //监控查看 - MONITOR_QUERY_INFO("/data/monitor/query_info"), - ; - private String value; - - - SiteMenu(String value) { - this.value = value; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } -} diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/IPartnerService.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/IPartnerService.java index 24b0edf..3a6570d 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/IPartnerService.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/IPartnerService.java @@ -6,13 +6,10 @@ import com.ruoyi.chargingPile.api.model.Partner; import com.ruoyi.chargingPile.api.query.GetPartnerList; import com.ruoyi.chargingPile.api.query.SetPermissionConfiguration; -import com.ruoyi.chargingPile.domain.SiteMenu; +import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.dto.ResetPassword; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; import java.util.List; import java.util.Set; diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java index ea74c61..f56c4b4 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java @@ -7,7 +7,7 @@ import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.chargingPile.api.query.GetPartnerList; import com.ruoyi.chargingPile.api.query.SetPermissionConfiguration; -import com.ruoyi.chargingPile.domain.SiteMenu; +import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.dto.ResetPassword; import com.ruoyi.chargingPile.mapper.PartnerMapper; import com.ruoyi.chargingPile.service.*; @@ -15,7 +15,6 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; -import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysRole; @@ -25,12 +24,7 @@ import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.GetSysRoleByIds; import com.ruoyi.system.api.model.SysUserRoleVo; -import io.seata.core.context.RootContext; -import io.seata.core.exception.TransactionException; import io.seata.spring.annotation.GlobalTransactional; -import io.seata.tm.api.GlobalTransaction; -import io.seata.tm.api.GlobalTransactionContext; -import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java index 7ece0a0..f39014b 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java @@ -15,12 +15,10 @@ import com.ruoyi.chargingPile.api.query.SiteQuery; import com.ruoyi.chargingPile.api.vo.SiteDetailVO; import com.ruoyi.chargingPile.api.vo.SiteVO; -import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO; -import com.ruoyi.chargingPile.domain.SiteMenu; +import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.mapper.SiteMapper; import com.ruoyi.chargingPile.service.*; import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.utils.ServletUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; @@ -37,7 +35,6 @@ import com.ruoyi.system.api.model.SysUserRoleVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -88,6 +85,9 @@ @Resource private TAccountingStrategyDetailService accountingStrategyDetailService; + + @Resource + private TPartnerSiteService partnerSiteService; /** @@ -214,6 +214,16 @@ if(null != one && !one.getCode().equals(site.getCode())){ return AjaxResult.error("站点编号重复"); } + + Site site1 = this.getById(site.getId()); + if(!site1.getPartnerId().equals(site.getPartnerId())){ + List<TPartnerSite> list = partnerSiteService.list(new LambdaQueryWrapper<TPartnerSite>().eq(TPartnerSite::getPartnerId, site1.getPartnerId()).eq(TPartnerSite::getSiteId, site.getId())); + for (TPartnerSite partnerSite : list) { + partnerSite.setPartnerId(site.getPartnerId()); + partnerSiteService.updateById(partnerSite); + } + } + this.updateById(site); return AjaxResult.success(); } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java index 9152d4b..1ab951e 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java @@ -6,17 +6,13 @@ import com.ruoyi.chargingPile.api.dto.TChargingGunDTO; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; -import com.ruoyi.chargingPile.api.model.TAccountingStrategy; -import com.ruoyi.chargingPile.api.feignClient.SiteClient; -import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.query.TChargingGunQuery; import com.ruoyi.chargingPile.api.vo.*; -import com.ruoyi.chargingPile.domain.SiteMenu; +import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.mapper.TChargingGunMapper; import com.ruoyi.chargingPile.service.IPartnerService; -import com.ruoyi.chargingPile.service.TAccountingStrategyService; import com.ruoyi.chargingPile.service.TChargingGunService; import com.ruoyi.chargingPile.service.TChargingPileService; import com.ruoyi.common.core.enums.status.ChargingGunModeEnum; diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java index 67bc2b5..f294382 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingPileNotification; -import com.ruoyi.chargingPile.domain.SiteMenu; +import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.mapper.TChargingPileNotificationMapper; import com.ruoyi.chargingPile.service.IPartnerService; import com.ruoyi.chargingPile.service.TChargingPileNotificationService; diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java index 1286328..470d14c 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java @@ -2,7 +2,6 @@ import com.alibaba.fastjson.JSON; 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.ruoyi.account.api.feignClient.AppUserCarClient; import com.ruoyi.account.api.model.TAppUserCar; @@ -10,9 +9,8 @@ import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.chargingPile.api.query.BatchSetAccountingStrategy; import com.ruoyi.chargingPile.api.query.PageChargingPileList; -import com.ruoyi.chargingPile.api.vo.TChargingGunVO; import com.ruoyi.chargingPile.api.vo.TChargingPileVO; -import com.ruoyi.chargingPile.domain.SiteMenu; +import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.dto.ChargeMonitoring; import com.ruoyi.chargingPile.dto.ChargingGunCountMonitoring; import com.ruoyi.chargingPile.dto.ChargingGunMonitoring; @@ -22,7 +20,6 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; -import com.ruoyi.common.core.web.domain.BasePojo; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; @@ -33,9 +30,6 @@ import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; import com.ruoyi.integration.api.model.QrCodeDelivery; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; -import com.ruoyi.integration.api.vo.AddDevice; -import com.ruoyi.integration.api.vo.AddDeviceResp; -import com.ruoyi.integration.api.vo.DeleteDeviceResp; import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; @@ -55,7 +49,6 @@ import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * <p> @@ -377,7 +370,7 @@ Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); if(2 == roleType){ - siteIds = partnerService.authSite(objectId, SiteMenu.SITE_LIST); + siteIds = partnerService.authSite(objectId, SiteMenu.CHARGING_FACILITY_MONITORING); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 if(!SecurityUtils.isAdmin(tokenService.getLoginUser().getUserid())){ @@ -469,7 +462,7 @@ Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); if(2 == roleType){ - siteIds = partnerService.authSite(objectId, SiteMenu.SITE_LIST); + siteIds = partnerService.authSite(objectId, SiteMenu.CHARGING_FACILITY_MONITORING); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 if(!SecurityUtils.isAdmin(tokenService.getLoginUser().getUserid())){ @@ -521,7 +514,7 @@ Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); if(2 == roleType){ - siteIds = partnerService.authSite(objectId, SiteMenu.SITE_LIST); + siteIds = partnerService.authSite(objectId, SiteMenu.CHARGING_FACILITY_MONITORING); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 if(admin.getData()!=1){ diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TFaultMessageServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TFaultMessageServiceImpl.java index ee91db1..cf8eeb4 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TFaultMessageServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TFaultMessageServiceImpl.java @@ -1,19 +1,14 @@ package com.ruoyi.chargingPile.service.impl; -import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.dto.SendMessageDTO; import com.ruoyi.account.api.feignClient.AppUserClient; -import com.ruoyi.chargingPile.api.feignClient.PartnerClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TFaultMessage; -import com.ruoyi.chargingPile.domain.SiteMenu; +import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.mapper.TFaultMessageMapper; import com.ruoyi.chargingPile.service.*; -import com.ruoyi.common.core.constant.MsgConstants; -import com.ruoyi.common.core.utils.HttpUtils; -import com.ruoyi.common.core.utils.MsgUtil; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; @@ -103,14 +98,14 @@ @Override public List<TFaultMessage> getFaultMessageList(PageInfo<TFaultMessage> pageInfo, Integer siteId) { //校验合作商权限 + SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); + Integer roleType = sysUser.getRoleType(); + Integer objectId = sysUser.getObjectId(); List<Integer> siteIds = new ArrayList<>(); if(null == siteId || 0 == siteId){ - SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); - Integer roleType = sysUser.getRoleType(); - Integer objectId = sysUser.getObjectId(); //合作商 if(roleType == 2){ - Set<Integer> data = partnerService.authSite(objectId, SiteMenu.SITE_LIST); + Set<Integer> data = partnerService.authSite(objectId, SiteMenu.FAULT_INFORMATION_LIST); siteIds = new ArrayList<>(data); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 @@ -125,6 +120,10 @@ }else{ siteIds.add(siteId); } - return this.baseMapper.getFaultMessageList(pageInfo, siteIds); + List<TFaultMessage> faultMessageList = this.baseMapper.getFaultMessageList(pageInfo, siteIds); + for (TFaultMessage faultMessage : faultMessageList) { + faultMessage.setAuthDelete(roleType == 1 ? true : partnerService.authMenu(objectId, faultMessage.getSiteId(), SiteMenu.FAULT_INFORMATION_LIST_DEL)); + } + return faultMessageList; } } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TMonitoringEquipmentServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TMonitoringEquipmentServiceImpl.java index afce0c1..2dee85d 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TMonitoringEquipmentServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TMonitoringEquipmentServiceImpl.java @@ -5,7 +5,7 @@ import com.ruoyi.chargingPile.api.query.TMonitoringEquipmentQuery; import com.ruoyi.chargingPile.api.vo.TMonitoringEquipmentVO; import com.ruoyi.chargingPile.api.vo.TParkingLotVO; -import com.ruoyi.chargingPile.domain.SiteMenu; +import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.mapper.TMonitoringEquipmentMapper; import com.ruoyi.chargingPile.service.IPartnerService; import com.ruoyi.chargingPile.service.TMonitoringEquipmentService; @@ -13,17 +13,13 @@ import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; -import com.ruoyi.other.api.feignClient.RoleSiteClient; -import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; -import java.util.HashSet; import java.util.List; -import java.util.Set; import java.util.stream.Collectors; /** diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingLotServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingLotServiceImpl.java index 6753ba0..4985685 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingLotServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingLotServiceImpl.java @@ -1,11 +1,10 @@ package com.ruoyi.chargingPile.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.chargingPile.api.dto.PageChargingPileListDTO; import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.query.TParkingLotQuery; import com.ruoyi.chargingPile.api.vo.TParkingLotVO; -import com.ruoyi.chargingPile.domain.SiteMenu; +import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.mapper.TParkingLotMapper; import com.ruoyi.chargingPile.service.IPartnerService; import com.ruoyi.chargingPile.service.TParkingLotService; diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java index 385ede4..03182bb 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java @@ -8,10 +8,8 @@ import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.model.TParkingRecord; import com.ruoyi.chargingPile.api.query.ParkingRecordQuery; -import com.ruoyi.chargingPile.api.vo.TParkingLotVO; import com.ruoyi.chargingPile.api.vo.TParkingRecordPageInfoVO; import com.ruoyi.chargingPile.api.vo.TParkingRecordVO; -import com.ruoyi.chargingPile.domain.SiteMenu; import com.ruoyi.chargingPile.dto.ParkingRecordQueryDto; import com.ruoyi.chargingPile.mapper.SiteMapper; import com.ruoyi.chargingPile.mapper.TParkingLotMapper; diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java index 3eaf1ed..f2669a2 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java @@ -3,18 +3,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.dto.SendMessageDTO; import com.ruoyi.account.api.feignClient.AppUserClient; -import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TRepair; -import com.ruoyi.chargingPile.domain.SiteMenu; +import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.mapper.TRepairMapper; import com.ruoyi.chargingPile.service.*; -import com.ruoyi.common.core.constant.MsgConstants; -import com.ruoyi.common.core.utils.HttpUtils; -import com.ruoyi.common.core.utils.MsgUtil; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; @@ -32,7 +26,6 @@ import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Set; @@ -85,14 +78,13 @@ public List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, String name, Integer siteId) { //校验合作商权限 List<Integer> siteIds = new ArrayList<>(); + SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); + Integer roleType = sysUser.getRoleType(); + Integer objectId = sysUser.getObjectId(); if(null == siteId || 0 == siteId){ - - SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); - Integer roleType = sysUser.getRoleType(); - Integer objectId = sysUser.getObjectId(); //合作商 if(roleType == 2){ - Set<Integer> data = partnerService.authSite(objectId, SiteMenu.SITE_LIST); + Set<Integer> data = partnerService.authSite(objectId, SiteMenu.REPAIR_RECORD); siteIds = new ArrayList<>(data); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 @@ -107,7 +99,11 @@ }else{ siteIds.add(siteId); } - return this.baseMapper.getRepairList(pageInfo, name, siteIds); + List<TRepair> repairList = this.baseMapper.getRepairList(pageInfo, name, siteIds); + for (TRepair repair : repairList) { + repair.setAuthDelete(roleType == 1 ? true : partnerService.authMenu(objectId, repair.getSiteId(), SiteMenu.REPAIR_RECORD_DEL)); + } + return repairList; } @Override diff --git a/ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/RuoYiChargingPileApplicationTests.java b/ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/RuoYiChargingPileApplicationTests.java index 7b8f452..9163b5f 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/RuoYiChargingPileApplicationTests.java +++ b/ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/RuoYiChargingPileApplicationTests.java @@ -1,8 +1,21 @@ package com.ruoyi.chargingPile; +import com.alibaba.fastjson2.JSON; +import com.ruoyi.chargingPile.api.dto.GetPermissionConfigurationDTO; +import com.ruoyi.chargingPile.service.IPartnerService; +import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiChargingPileApplicationTests.class) -public class RuoYiChargingPileApplicationTests { +import javax.annotation.Resource; +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiChargingPileApplication.class) +public class RuoYiChargingPileApplicationTests { + @Resource + private IPartnerService partnerService; + + @Test + public void test(){ + GetPermissionConfigurationDTO permissionConfiguration = partnerService.getPermissionConfiguration(9, 15); + System.err.println(JSON.toJSONString(permissionConfiguration)); + } } diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java index c69b333..268335c 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/config/IotDAConfig.java @@ -31,5 +31,21 @@ * Instance-Id配置 d21a37d3-c578-43aa-a1ab-be3854e7c337 */ private String instanceId; + /** + * 设备ID + */ + private String deviceId; + /** + * 是否开启测试 + */ + private Boolean test; + /** + * 测试设备ID + */ + private String testDeviceId; + /** + * 测试充电桩号 + */ + private String testDriverCode; } diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java index 0669173..6d7c65e 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java @@ -23,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; @@ -44,7 +45,7 @@ private MessageUtil messageUtil; @Autowired private IotMessageProduce iotMessageProduce; - @Autowired + @Resource private AccountingStrategyDetailClient accountingStrategyDetailClient; /** * 设备消息监听 @@ -81,13 +82,13 @@ OnlineReply onlineReply = new OnlineReply(); onlineReply.setCharging_pile_code(onlineMessage.getCharging_pile_code()); onlineReply.setOnline_result(0); - result = iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.ONLINE_REPLY.getKey(), messageUtil.onlineReply(onlineReply)); + result = iotMessageProduce.sendMessage(onlineReply.getCharging_pile_code(), ServiceIdMenu.ONLINE_REPLY.getKey(), messageUtil.onlineReply(onlineReply)); log.info("充电桩登录认证-返回结果:{}",result); // 响应硬件 对时设置应答 TimingSettingReply timingSettingReplyOnline = new TimingSettingReply(); timingSettingReplyOnline.setCharging_pile_code(onlineMessage.getCharging_pile_code()); timingSettingReplyOnline.setCurrent_time(CP56Time2aConverter.convertToCP56Time2a(new Date())); - iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.TIMING_SETTING_REPLY.getKey(),messageUtil.timingSettingReply(timingSettingReplyOnline)); + iotMessageProduce.sendMessage(timingSettingReplyOnline.getCharging_pile_code(), ServiceIdMenu.TIMING_SETTING_REPLY.getKey(),messageUtil.timingSettingReply(timingSettingReplyOnline)); sendResult = enhanceProduce.chargingMessage(chargingMessage); break; case SendTagConstant.PING: @@ -98,7 +99,7 @@ pong.setCharging_pile_code(pingMessage.getCharging_pile_code()); pong.setCharging_gun_code(pingMessage.getCharging_gun_code()); pong.setCharging_gun_status(0); - result = iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.PONG.getKey(), messageUtil.pong(pong)); + result = iotMessageProduce.sendMessage(pong.getCharging_pile_code(), ServiceIdMenu.PONG.getKey(), messageUtil.pong(pong)); log.info("充电桩心跳包-返回结果:{}",result); sendResult = enhanceProduce.chargingMessage(chargingMessage); break; @@ -139,7 +140,7 @@ billingModeVerifyReply.setBilling_model_result(1); } } - iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.BILLING_MODE_VERIFY_REPLY.getKey(),messageUtil.billingModeVerifyReply(billingModeVerifyReply)); + iotMessageProduce.sendMessage(billingModeVerifyReply.getCharging_pile_code(), ServiceIdMenu.BILLING_MODE_VERIFY_REPLY.getKey(),messageUtil.billingModeVerifyReply(billingModeVerifyReply)); sendResult = enhanceProduce.chargingMessage(chargingMessage); break; case SendTagConstant.ACQUISITION_BILLING_MODE: @@ -157,7 +158,7 @@ acquisitionBillingModeReply.setBilling_model_code(accountingStrategyDetail.getId().toString()); acquisitionBillingModeReply.setCharging_pile_code(acquisitionBillingModeMessage.getCharging_pile_code()); acquisitionBillingModeReply.setLoss_ratio(BigDecimal.ZERO); - iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.ACQUISITION_BILLING_MODE_REPLY.getKey(),messageUtil.acquisitionBillingModeReply(acquisitionBillingModeReply)); + iotMessageProduce.sendMessage(acquisitionBillingModeReply.getCharging_pile_code(), ServiceIdMenu.ACQUISITION_BILLING_MODE_REPLY.getKey(),messageUtil.acquisitionBillingModeReply(acquisitionBillingModeReply)); sendResult = enhanceProduce.chargingMessage(chargingMessage); break; case SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA: @@ -212,7 +213,7 @@ platformConfirmationCharging.setAccount_balance(BigDecimal.ZERO); platformConfirmationCharging.setAuthentication(1); // TODO 若是失败,给出失败原因 - iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.PLATFORM_CONFIRMATION_CHARGING.getKey(),messageUtil.platformConfirmationCharging(platformConfirmationCharging)); + iotMessageProduce.sendMessage(platformConfirmationCharging.getCharging_pile_code(), ServiceIdMenu.PLATFORM_CONFIRMATION_CHARGING.getKey(),messageUtil.platformConfirmationCharging(platformConfirmationCharging)); sendResult = enhanceProduce.chargingMessage(chargingMessage); break; case SendTagConstant.PLATFORM_START_CHARGING_REPLY: @@ -234,7 +235,7 @@ ConfirmTransactionRecord confirmTransactionRecord = new ConfirmTransactionRecord(); confirmTransactionRecord.setTransaction_serial_number(transactionRecordMessage.getTransaction_serial_number()); confirmTransactionRecord.setConfirm_result(0); - iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.CONFIRM_TRANSACTION_RECORD.getKey(),messageUtil.confirmTransactionRecord(confirmTransactionRecord)); + iotMessageProduce.sendMessage(confirmTransactionRecord.getTransaction_serial_number(), ServiceIdMenu.CONFIRM_TRANSACTION_RECORD.getKey(),messageUtil.confirmTransactionRecord(confirmTransactionRecord)); sendResult = enhanceProduce.chargingMessage(chargingMessage); break; case SendTagConstant.UPDATE_BALANCE_REPLY: @@ -268,7 +269,7 @@ TimingSettingReply timingSettingReply = new TimingSettingReply(); timingSettingReply.setCharging_pile_code(timingSettingMessage.getCharging_pile_code()); timingSettingReply.setCurrent_time(CP56Time2aConverter.convertToCP56Time2a(new Date())); - iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.TIMING_SETTING_REPLY.getKey(),messageUtil.timingSettingReply(timingSettingReply)); + iotMessageProduce.sendMessage(timingSettingReply.getCharging_pile_code(), ServiceIdMenu.TIMING_SETTING_REPLY.getKey(),messageUtil.timingSettingReply(timingSettingReply)); sendResult = enhanceProduce.chargingMessage(chargingMessage); break; case SendTagConstant.SETUP_BILLING_MODEL_REPLY: diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java index ace5a25..009e8f1 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/produce/IotMessageProduce.java @@ -26,18 +26,27 @@ @Autowired private IotBuilder iotBuilder; + + @Autowired + private IotDAConfig config; + /** * 设备消息下发 - * @param deviceId 设备id * @param name 消息名称 * @param message 消息内容 * @return */ @PostMapping("/sendMessage") - public String sendMessage(String deviceId, String name, JSONObject message){ + public String sendMessage(String code, String name, JSONObject message){ CreateMessageRequest request = new CreateMessageRequest(); - request.withDeviceId(deviceId); + System.err.println(code); + System.err.println(JSONObject.toJSONString(config)); + if(config.getTest() && code.equals(config.getTestDriverCode())){ + request.withDeviceId(config.getTestDeviceId()); + }else{ + request.withDeviceId(config.getDeviceId()); + } DeviceMessageRequest body = new DeviceMessageRequest(); body.withMessageId(UUID.randomUUID().toString()); body.withName(name); diff --git a/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java b/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java index 0e145ea..7c0b24e 100644 --- a/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java +++ b/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java @@ -2,6 +2,8 @@ import com.alibaba.fastjson2.JSON; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; +import com.ruoyi.integration.barrierGate.model.CloudParkingOrder; +import com.ruoyi.integration.barrierGate.server.ParkingOrderService; import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @@ -13,9 +15,13 @@ public class RuoYiIntegrationApplicationTests { @Resource private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; + + @Resource + private ParkingOrderService parkingOrderService; @Test public void test(){ - List<UploadRealTimeMonitoringData> list = uploadRealTimeMonitoringDataService.getDataByOrderCode("CD93220241022154810850"); - System.err.println(JSON.toJSONString(list)); + String json = "{\"appkey\":\"842ae0c027e64b3590af9eea6\",\"enterChannel\":\"001\",\"enterChannelName\":\"进口\",\"enterDateTime\":\"2024-11-01T11:25:15.677Z\",\"id\":\"17B51DA0983C11EFA99CA979A8A8386B\",\"kind\":\"临时卡\",\"name\":\"临时识别\",\"plate\":\"川JD34056\",\"plateColor\":\"绿色\",\"sign\":\"29A902820C2657C51FBE90235152534F\"}"; + CloudParkingOrder order = JSON.parseObject(json, CloudParkingOrder.class); + parkingOrderService.cloudParkingInOrder(order); } } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java index 91b9420..2f1c19e 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java @@ -16,6 +16,8 @@ import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.order.api.model.*; import com.ruoyi.order.api.query.TOrderInvoiceQuery; import com.ruoyi.order.api.vo.AccountListVO; @@ -139,6 +141,9 @@ // chargingBillService.save(tChargingBill14); return R.ok(); } + + + @RequiresPermissions(value = {"/accountSettlementStatement"}, logical = Logical.OR) @PostMapping(value = "/accountBillList") @ApiOperation(value = "列表查询", tags = {"管理后台-账户结算账单"}) public R<AccountListVO> accountBillList(@RequestBody ChargingListQuery dto) { @@ -155,6 +160,8 @@ accountListVO.setOrderList(res.getExportList()); return R.ok(accountListVO); } + + @RequiresPermissions(value = {"/chargeBill"}, logical = Logical.OR) @PostMapping(value = "/chargingBillList") @ApiOperation(value = "充电算帐单列表查询", tags = {"管理后台-充电算账单"}) public AjaxResult<ChargingBillVO> chargingBillList(@RequestBody ChargingListQuery dto) { @@ -170,6 +177,9 @@ public R<ChargingBillVO> chargingBillListExport(String uid) { return R.ok(null); } + + + @RequiresPermissions(value = {"/chargeBill/export"}, logical = Logical.OR) @ApiOperation(value = "导出", tags = {"管理后台-充电算账单"}) @PutMapping("/export") public void export(@RequestBody ChargingListQuery dto) @@ -234,6 +244,9 @@ } } } + + + @RequiresPermissions(value = {"/accountSettlementStatement/export"}, logical = Logical.OR) @ApiOperation(value = "导出", tags = {"管理后台-账户结算账单"}) @PutMapping("/exportAccount") public void exportAccount(@RequestBody ChargingListQuery dto) @@ -304,7 +317,9 @@ } } } - + + + @ApiOperation(value = "下载-未出账", tags = {"管理后台-充电算账单"}) @PutMapping("/download") public void download(@RequestBody ExportUidDto uid) diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java index b663fab..58883a0 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java @@ -23,6 +23,8 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.redis.service.RedisService; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; @@ -83,18 +85,6 @@ private TSettlementConfirmService tSettlementConfirmService; @Resource private VipClient vipClient; - @PostMapping(value = "/chargingList") - @ApiOperation(value = "充电时段统计列表", tags = {"管理后台-财务结算"}) - public AjaxResult<ChargingOrderTimeVO> chargingList(@RequestBody ChargingListQuery dto) { - ChargingOrderTimeVO res = chargingOrderService.chargingList(dto); - return AjaxResult.success(res); - } - @GetMapping(value = "/chargingInfo") - @ApiOperation(value = "充电时段统计列表-查看详情", tags = {"管理后台-财务结算"}) - public AjaxResult<ChargingOrderListInfoVO> chargingInfo(String uid) { - ChargingOrderListInfoVO res = chargingOrderService.chargingInfo(uid); - return AjaxResult.success(res); - } @Autowired private SiteClient siteClient; @Autowired @@ -109,7 +99,27 @@ private TChargingOrderAccountingStrategyService tChargingOrderAccountingStrategyService; @Resource private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient; - + + + + @RequiresPermissions(value = {"/chargingPeriodStatistics"}, logical = Logical.OR) + @PostMapping(value = "/chargingList") + @ApiOperation(value = "充电时段统计列表", tags = {"管理后台-财务结算"}) + public AjaxResult<ChargingOrderTimeVO> chargingList(@RequestBody ChargingListQuery dto) { + ChargingOrderTimeVO res = chargingOrderService.chargingList(dto); + return AjaxResult.success(res); + } + + + @RequiresPermissions(value = {"/chargingPeriodStatistics/order_info", "/chargingPeriodStatistics/charging_curve"}, logical = Logical.OR) + @GetMapping(value = "/chargingInfo") + @ApiOperation(value = "充电时段统计列表-查看详情", tags = {"管理后台-财务结算"}) + public AjaxResult<ChargingOrderListInfoVO> chargingInfo(String uid) { + ChargingOrderListInfoVO res = chargingOrderService.chargingInfo(uid); + return AjaxResult.success(res); + } + + @RequiresPermissions(value = {"/chargingPeriodStatistics/export"}, logical = Logical.OR) @ApiOperation(value = "充电时段统计-导出", tags = {"管理后台-财务结算"}) @PutMapping("/export") public void export(@RequestBody ChargingListQuery dto) { @@ -274,6 +284,10 @@ } } } + + + + @RequiresPermissions(value = {"/summarySettlement"}, logical = Logical.OR) @GetMapping(value = "/settlementTotal") @ApiOperation(value = "结算汇总-列表查询", tags = {"管理后台-财务结算"}) @ApiParam(name = "time", value = "汇报时间2024-01") @@ -282,30 +296,45 @@ SettlementTotalVO res = chargingOrderService.settlementTotal(time); return AjaxResult.success(res); } + + + @GetMapping(value = "/settlementTotalR/{time}/{userId}") public R<SettlementTotalVO> settlementTotalR(@PathVariable("time")String time,@PathVariable("userId")Long userId) { time = time+"-01 00:00:00"; SettlementTotalVO res = chargingOrderService.settlementTotalR(time,userId); return R.ok(res); } + + + @RequiresPermissions(value = {"/generateStatement"}, logical = Logical.OR) @PostMapping(value = "/settlementAdd") @ApiOperation(value = "结算确认表-生成/保存结算确认表", tags = {"管理后台-财务结算"}) public R<TSettlementConfirm> settlementAdd(@RequestBody SettlementConfirmAdd dto) { TSettlementConfirm res = chargingOrderService.settlementAdd(dto); return R.ok(res); } + + + @RequiresPermissions(value = {"/balanceSheetRecord"}, logical = Logical.OR) @PostMapping(value = "/settlementList") @ApiOperation(value = "结算表记录-列表查询", tags = {"管理后台-财务结算"}) public R<PageInfo<TSettlementConfirm>> settlementList(@RequestBody SettlementListQuery dto) { PageInfo<TSettlementConfirm> res = chargingOrderService.settlementList(dto); return R.ok(res); } + + + @RequiresPermissions(value = {"/balanceSheetRecord/del"}, logical = Logical.OR) @GetMapping(value = "/deleteSettlement") @ApiOperation(value = "结算表记录-删除", tags = {"管理后台-财务结算"}) public R deleteSettlement(String uid) { tSettlementConfirmService.removeById(uid); return R.ok(); } + + + @GetMapping(value = "/downloadSettlement/{uid}") public R<TSettlementConfirm> downloadSettlement(@PathVariable("uid") String uid) { TSettlementConfirm byId = tSettlementConfirmService.getById(uid); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java index f411354..b71a9d6 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java @@ -25,6 +25,8 @@ import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; import com.ruoyi.common.core.web.domain.BasePojo; import com.ruoyi.common.redis.service.RedisService; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; @@ -137,6 +139,12 @@ @Resource private TOrderInvoiceService invoiceService; + @Resource + private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient; + + + + /** * 远程调用 增加管理后台赠送会员记录 @@ -169,6 +177,9 @@ } return R.ok(); } + + + @RequiresPermissions(value = {"/invoiceManagement/select_order", "/paymentOrder/order"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/pay/order/list") @ApiOperation(value = "列表", tags = {"管理后台-支付订单-订单信息"}) @@ -181,7 +192,9 @@ public R refund(@RequestBody PayOrderRefundDto payOrderQueryDto) { return chargingOrderService.payRefund(payOrderQueryDto); } - + + + @RequiresPermissions(value = {"/paymentOrder/order"}, logical = Logical.OR) @ResponseBody @GetMapping(value = "/pay/order/pay/detail") @ApiOperation(value = "支付信息", tags = {"管理后台-支付订单-订单信息"}) @@ -310,9 +323,10 @@ return R.ok(list); } - - - + + + + @RequiresPermissions(value = {"/paymentOrder/refund"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/pay/order/refund/list") @ApiOperation(value = "列表", tags = {"管理后台-支付订单-退款订单"}) @@ -331,12 +345,13 @@ return chargingOrderService.getRefundList(chargingRefundDto); } - - - - - - + + + + + + + @RequiresPermissions(value = {"/chargingPileOrder"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/chargingOrder") @ApiOperation(value = "充电桩订单列表", tags = {"管理后台-订单管理"}) @@ -346,7 +361,9 @@ TCharingOrderVO res = chargingOrderService.chargingOrder(dto); return AjaxResult.success(res); } - + + + @RequiresPermissions(value = {"/chargingPileOrder/monitoring_record"}, logical = Logical.OR) @ResponseBody @GetMapping(value = "/chargingOrderInfo") @ApiOperation(value = "充电桩订单列表查看详情", tags = {"管理后台-订单管理"}) @@ -485,6 +502,11 @@ @GetMapping(value = "/getMyChargingOrderInfo") @ApiOperation(value = "获取充电记订单明细", tags = {"小程序-充电记录"}) public AjaxResult<MyChargingOrderInfo> getMyChargingOrderInfo(String id) { + TChargingOrder tChargingOrder = chargingOrderService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!tChargingOrder.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); + } MyChargingOrderInfo myChargingOrderInfo = chargingOrderService.getMyChargingOrderInfo(id); return AjaxResult.success(myChargingOrderInfo); } @@ -631,7 +653,8 @@ - + + @RequiresPermissions(value = {"/platformRevenueAnalysis"}, logical = Logical.OR) @ResponseBody @GetMapping(value = "/six/charge") @ApiOperation(value = "电站收入分析", tags = {"后台-数据分析-平台收入分析"}) @@ -683,7 +706,8 @@ return months; } - + + @RequiresPermissions(value = {"/platformRevenueAnalysis"}, logical = Logical.OR) @ResponseBody @GetMapping(value = "/six/circle") @ApiOperation(value = "电站收入占比", tags = {"后台-数据分析-平台收入分析"}) @@ -706,8 +730,9 @@ return R.ok(sixCircleDtos); } - - + + + @RequiresPermissions(value = {"/platformRevenueAnalysis"}, logical = Logical.OR) @ResponseBody @GetMapping(value = "/six/shop") @ApiOperation(value = "购物收入", tags = {"后台-数据分析-平台收入分析"}) @@ -743,7 +768,9 @@ return months; } - + + + @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/work/shop") @ApiOperation(value = "购物收入", tags = {"后台-工作台"}) @@ -753,7 +780,8 @@ List<Map<String,Object >> shopData = shoppingOrderService.getData(statisticsQueryDto); return R.ok(shopData); } - + + @RequiresPermissions(value = {"/platformRevenueAnalysis"}, logical = Logical.OR) @ResponseBody @GetMapping(value = "/six/vip") @ApiOperation(value = "vip收入", tags = {"后台-数据分析-平台收入分析"}) @@ -763,7 +791,9 @@ List<SixVipDto> vipDtos = vipOrderService.sixBefore(sixBefore); return R.ok(vipDtos); } - + + + @RequiresPermissions(value = {"/platformRevenueAnalysis"}, logical = Logical.OR) @ResponseBody @GetMapping(value = "/six/total") @ApiOperation(value = "底部数据分类", tags = {"后台-数据分析-平台收入分析"}) @@ -785,9 +815,9 @@ return R.ok(map); } - - @Resource - private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient; + + + @RequiresPermissions(value = {"/chargeOrderMonitoring"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/watch/chargingOrder") @ApiOperation(value = "监控订单", tags = {"管理后台-订单管理"}) @@ -848,9 +878,9 @@ return R.ok(page); } - - - + + + @RequiresPermissions(value = {"/chargeOrderMonitoring/del"}, logical = Logical.OR) @ResponseBody @GetMapping(value = "/watch/deletes") @ApiOperation(value = "监控订单-删除", tags = {"管理后台-订单管理"}) @@ -877,11 +907,11 @@ return R.ok(chargingOrderService.getOne(Wrappers.lambdaQuery(TChargingOrder.class) .eq(TChargingOrder::getCode,code))); } - - - - - + + + + + @RequiresPermissions(value = {"/chargingOperationAnalysis"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/charging/statistics") @ApiOperation(value = "统计,充电订单分析", tags = {"管理后台-数据分析-充电运营分析"}) @@ -1142,8 +1172,9 @@ return R.ok(tCharingOrderPowerMapVO); } - - + + + @RequiresPermissions(value = {"/chargingUserAnalysis"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/charging/users") @ApiOperation(value = "除电站流量外", tags = {"管理后台-数据分析-充电用户分析"}) @@ -1315,6 +1346,9 @@ return R.ok(tCharingUserMapVO); } + + + @RequiresPermissions(value = {"/chargingUserAnalysis"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/charging/sites") @ApiOperation(value = "电站评价", tags = {"管理后台-数据分析-充电用户分析"}) @@ -1358,7 +1392,9 @@ //流量 return R.ok(tCharingUserEvaluateVO); } - + + + @RequiresPermissions(value = {"/operationMaintenanceAnalysis"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/charging/equipment") @ApiOperation(value = "电站评价", tags = {"管理后台-数据分析-设备运维分析"}) @@ -1494,7 +1530,9 @@ // 格式化为两位小数 return Double.parseDouble(DF.format(average)); } - + + + @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/work/charge") @ApiOperation(value = "上方充电数据统计", tags = {"管理后台-工作台"}) @@ -1537,9 +1575,10 @@ tCharingWorkVO.setTotalChargingCapacity(totalChargingCapacity); return R.ok(tCharingWorkVO); } - - - + + + + @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/work/chargeDetail") @ApiOperation(value = "运营情况", tags = {"管理后台-工作台"}) @@ -1661,10 +1700,11 @@ } return null; } - - - - + + + + + @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/work/use") @ApiOperation(value = "利用率", tags = {"管理后台-工作台"}) @@ -1723,8 +1763,9 @@ } - + + @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR) @ResponseBody @GetMapping(value = "/work/shopOrder") @ApiOperation(value = "购物订单统计", tags = {"管理后台-工作台"}) @@ -1736,7 +1777,9 @@ counts.add(count1); return R.ok(counts); } - + + + @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR) @ResponseBody @GetMapping(value = "/work/invoice") @ApiOperation(value = "开票统计", tags = {"管理后台-工作台"}) @@ -1748,7 +1791,8 @@ counts.add(count1); return R.ok(counts); } - + + @RequiresPermissions(value = {"/workbench"}, logical = Logical.OR) @ResponseBody @GetMapping(value = "/work/users/count") @ApiOperation(value = "用户数量", tags = {"管理后台-工作台"}) diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java index 7d688c5..354ef74 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java @@ -14,6 +14,8 @@ import com.ruoyi.common.core.dto.ExchangeBackDto; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.api.model.TExchangeOrder; import com.ruoyi.order.api.model.TShoppingOrder; @@ -71,8 +73,16 @@ private GoodsClient goodsClient; @Resource private CouponClient couponClient; - - + + @Resource + private SysUserClient sysUserClient; + + @Resource + private TokenService tokenService; + + + + @RequiresPermissions(value = {"/exchangeOrder"}, logical = Logical.OR) @PostMapping("/getExchangeOrderList") @ApiOperation(value = "列表查询", tags = {"管理后台-兑换订单"}) public AjaxResult<PageInfo<TExchangeOrder>> getExchangeOrderList(@RequestBody ShoppingOrderQuery query) { @@ -96,8 +106,10 @@ PageInfo<TExchangeOrder> res = exchangeOrderService.pageList(query); return AjaxResult.success(res); } - @Resource - private SysUserClient sysUserClient; + + + + @RequiresPermissions(value = {"/exchangeOrder/deliver_goods"}, logical = Logical.OR) @GetMapping("/getShoppingOrderInfoById") @ApiOperation(value = "根据订单id查看订单详情", tags = {"管理后台-兑换订单"}) public AjaxResult<TExchangeOrder> getShoppingOrderList(String id) { @@ -137,14 +149,19 @@ } return AjaxResult.success(byId); } - @Resource - private TokenService tokenService; + + + + @RequiresPermissions(value = {"/exchangeOrder/del"}, logical = Logical.OR) @GetMapping("/deleteShoppingOrder") @ApiOperation(value = "批量删除订单", tags = {"管理后台-兑换订单"}) public AjaxResult<TExchangeOrder> deleteShoppingOrder(String ids) { exchangeOrderService.removeBatchByIds(Arrays.asList(ids.split(","))); return AjaxResult.success(); } + + + @RequiresPermissions(value = {"/exchangeOrder/cancel"}, logical = Logical.OR) @GetMapping("/cancelShoppingOrder") @ApiOperation(value = "取消订单", tags = {"管理后台-兑换订单"}) public AjaxResult cancelShoppingOrder(String id) { @@ -159,6 +176,10 @@ appUserClient.refundPoints(byId.getAppUserId()+"-"+points); return AjaxResult.success(); } + + + + @RequiresPermissions(value = {"/exchangeOrder/deliver_goods"}, logical = Logical.OR) @GetMapping("/consignerShoppingOrder") @ApiOperation(value = "发货", tags = {"管理后台-兑换订单"}) public AjaxResult consignerShoppingOrder(String id,String companyName,String code) { @@ -377,7 +398,11 @@ @ApiOperation(value = "获取兑换订单详情", tags = {"小程序-兑换记录"}) public AjaxResult<ExchangeOrderGoodsInfo> getGoodsExchangeOrder(@PathVariable String id){ ExchangeOrderGoodsInfo goodsExchangeOrder = exchangeOrderService.getGoodsExchangeOrder(id); - + TExchangeOrder exchangeOrder = exchangeOrderService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!exchangeOrder.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); + } return AjaxResult.success(goodsExchangeOrder); } @@ -386,6 +411,10 @@ @ApiOperation(value = "确认收货操作", tags = {"小程序-兑换记录"}) public AjaxResult confirmReceipt(@PathVariable String id){ TExchangeOrder tExchangeOrder = exchangeOrderService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!tExchangeOrder.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); + } if(tExchangeOrder.getStatus() == 3){ return AjaxResult.error("不能重复确认收货"); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java index 0322582..a11a855 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java @@ -8,6 +8,8 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.BasePojo; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.api.model.*; @@ -56,6 +58,9 @@ this.orderAppealService = orderAppealService; this.tokenService = tokenService; } + + + @RequiresPermissions(value = {"/appealOrder"}, logical = Logical.OR) @ApiOperation(tags = {"后台-订单管理-订单申诉"},value = "列表") @PostMapping(value = "/manage/pageList") public R<Page<TOrderAppeal>> managePageList(@RequestBody ManageOrderAppealQuery manageOrderAppealQuery) { @@ -75,13 +80,19 @@ } + + + @RequiresPermissions(value = {"/appealOrder/del"}, logical = Logical.OR) @ApiOperation(tags = {"后台-订单管理-订单申诉"},value = "删除") @DeleteMapping (value = "/manage/delete") public R<Page<TOrderAppeal>> delete(String ids) { orderAppealService.removeBatchByIds(Arrays.asList(ids.split(","))); return R.ok(); } - + + + + @RequiresPermissions(value = {"/appealOrder/select", "/appealOrder/handle"}, logical = Logical.OR) @ApiOperation(tags = {"后台-订单管理-订单申诉"},value = "后台-订单管理-订单申诉") @PostMapping(value = "/manage/feedback") public R manageFeedback(@RequestBody ManageFeedbackDto manageFeedbackDto) { @@ -109,6 +120,11 @@ @GetMapping(value = "/getDetailById") @ApiOperation(tags = {"小程序-订单申诉"},value = "查询订单申诉详情") public AjaxResult<TOrderAppealVO> getDetailById(String id) { + TOrderAppeal orderAppeal = orderAppealService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!orderAppeal.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); + } return AjaxResult.ok(orderAppealService.getDetailById(id)); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java index ef11ca4..5723d6b 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java @@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.api.model.TOrderEvaluate; import com.ruoyi.order.api.model.TOrderEvaluateTag; import com.ruoyi.order.api.query.TOrderEvaluateQuery; @@ -43,6 +46,10 @@ @Resource private TOrderEvaluateTagService orderEvaluateTagService; + @Resource + private TokenService tokenService; + + @@ -63,7 +70,7 @@ - + @RequiresPermissions(value = {"/chargeEvaluation/list"}, logical = Logical.OR) @PostMapping(value = "/getPageList") @ApiOperation(value = "获取充电评价列表", tags = {"管理后台-充电评价"}) public AjaxResult<PageInfo<GetOrderEvaluatePageListDTO>> getPageList(@RequestBody GetOrderEvaluatePageList pageList){ @@ -72,7 +79,7 @@ } - + @RequiresPermissions(value = {"/chargeEvaluation/del"}, logical = Logical.OR) @DeleteMapping(value = "/delOrderEvaluate/{id}") @ApiOperation(value = "删除充电评价", tags = {"管理后台-充电评价"}) public AjaxResult delOrderEvaluate(@PathVariable("id") Long id){ @@ -84,7 +91,7 @@ - + @RequiresPermissions(value = {"/chargeEvaluation/reply"}, logical = Logical.OR) @PostMapping(value = "/replyEvaluation") @ApiOperation(value = "充电评价回复", tags = {"管理后台-充电评价"}) public AjaxResult replyEvaluation(@RequestBody ReplyEvaluationVO vo){ @@ -104,7 +111,7 @@ - + @RequiresPermissions(value = {"/chargeEvaluation/del"}, logical = Logical.OR) @DeleteMapping(value = "/delOrderEvaluateReply/{id}") @ApiOperation(value = "删除充电评价回复", tags = {"管理后台-充电评价"}) public AjaxResult delOrderEvaluateReply(@PathVariable("id") Long id){ diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderInvoiceController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderInvoiceController.java index 5637f6c..bfef7f3 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderInvoiceController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderInvoiceController.java @@ -9,6 +9,9 @@ import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.api.model.TOrderInvoice; import com.ruoyi.order.api.query.TOrderInvoiceQuery; import com.ruoyi.order.api.vo.TOrderInvoiceVO; @@ -53,6 +56,9 @@ @Resource private TOrderInvoiceService orderInvoiceService; + @Resource + private TokenService tokenService; + @@ -62,13 +68,18 @@ public AjaxResult addOrderInvoice(@RequestBody AddOrderInvoice addOrderInvoice){ return orderInvoiceService.addOrderInvoice(addOrderInvoice); } - + + + @RequiresPermissions(value = {"/invoiceManagement"}, logical = Logical.OR) @PostMapping("/pageList") @ApiOperation(value = "查询开票分页列表", tags = {"管理后台-发票管理"}) public AjaxResult<PageInfo<TOrderInvoiceVO>> pageList(@RequestBody TOrderInvoiceQuery query){ return AjaxResult.success(orderInvoiceService.pageList(query)); } - + + + + @RequiresPermissions(value = {"/invoiceManagement/accept_hear_case"}, logical = Logical.OR) @GetMapping("/uploadPdf") @ApiOperation(value = "上传发票", tags = {"管理后台-发票管理"}) public AjaxResult<String> uploadPdf(@RequestParam("id") Long id, @@ -175,7 +186,9 @@ } return AjaxResult.success(); } - + + + @RequiresPermissions(value = {"/invoiceManagement"}, logical = Logical.OR) @PostMapping("/statusCount") @ApiOperation(value = "查询开票状态数量", tags = {"管理后台-发票管理"}) public AjaxResult<Map<String,Integer>> statusCount(@RequestBody TOrderInvoiceQuery query){ @@ -185,6 +198,7 @@ /** * 发票管理导出 */ + @RequiresPermissions(value = {"/invoiceManagement/export"}, logical = Logical.OR) @ApiOperation(value = "发票管理导出", tags = {"管理后台-发票管理"}) @Log(title = "发票管理导出", businessType = BusinessType.EXPORT) @PutMapping("/export") @@ -238,6 +252,11 @@ @GetMapping("/getMyOrderInvoiceInfo/{id}") @ApiOperation(value = "获取开票记录详情", tags = {"小程序-充电发票"}) public AjaxResult<MyOrderInvoiceInfo> getMyOrderInvoiceInfo(@PathVariable String id){ + TOrderInvoice orderInvoice = orderInvoiceService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!orderInvoice.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); + } MyOrderInvoiceInfo myOrderInvoiceInfo = orderInvoiceService.getMyOrderInvoiceInfo(id); return AjaxResult.success(myOrderInvoiceInfo); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java index f7268d3..4625823 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java @@ -17,6 +17,8 @@ import com.ruoyi.common.core.utils.OrderCodeUtil; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.api.model.TChargingOrderRefund; import com.ruoyi.order.api.model.TExchangeOrder; @@ -113,6 +115,7 @@ } } + @RequiresPermissions(value = {"/shoppingOrder"}, logical = Logical.OR) @PostMapping("/getShoppingOrderList") @ApiOperation(value = "列表查询", tags = {"管理后台-购物订单"}) public AjaxResult<PageInfo<TShoppingOrder>> getShoppingOrderList(@RequestBody ShoppingOrderQuery query) { @@ -136,6 +139,7 @@ return AjaxResult.success(res); } + @RequiresPermissions(value = {"/shoppingOrder/deliver_goods"}, logical = Logical.OR) @GetMapping("/getShoppingOrderInfoById") @ApiOperation(value = "根据订单id查看订单详情", tags = {"管理后台-购物订单"}) public AjaxResult<TShoppingOrder> getShoppingOrderList(String id) { @@ -176,13 +180,17 @@ return AjaxResult.success(byId); } + + @RequiresPermissions(value = {"/shoppingOrder/del"}, logical = Logical.OR) @GetMapping("/deleteShoppingOrder") @ApiOperation(value = "批量删除订单", tags = {"管理后台-购物订单"}) public AjaxResult<TShoppingOrder> deleteShoppingOrder(String ids) { shoppingOrderService.removeBatchByIds(Arrays.asList(ids.split(","))); return AjaxResult.success(); } - + + + @RequiresPermissions(value = {"/shoppingOrder/cancel"}, logical = Logical.OR) @GetMapping("/cancelShoppingOrder") @ApiOperation(value = "取消订单", tags = {"管理后台-购物订单"}) public AjaxResult cancelShoppingOrder(String id) { @@ -264,6 +272,8 @@ return AjaxResult.success(); } + + @RequiresPermissions(value = {"/shoppingOrder/deliver_goods"}, logical = Logical.OR) @GetMapping("/consignerShoppingOrder") @ApiOperation(value = "发货", tags = {"管理后台-购物订单"}) public AjaxResult consignerShoppingOrder(String id, String companyName, String code) { @@ -306,6 +316,11 @@ @GetMapping("/getMyShoppingOrderInfo/{id}") @ApiOperation(value = "获取购买订单详情", tags = {"小程序-商城购买订单", "管理后台-支付订单-订单信息"}) public AjaxResult<MyShoppingOrderInfo> getMyShoppingOrderInfo(@PathVariable String id) { + TShoppingOrder shoppingOrder = shoppingOrderService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!shoppingOrder.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); + } MyShoppingOrderInfo info = shoppingOrderService.getMyShoppingOrderInfo(id); return AjaxResult.success(info); } @@ -315,6 +330,10 @@ @ApiOperation(value = "确认收货操作", tags = {"小程序-商城购买订单"}) public AjaxResult confirmReceipt(@PathVariable String id) { TShoppingOrder shoppingOrder = shoppingOrderService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!shoppingOrder.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); + } if (shoppingOrder.getStatus() == 3) { return AjaxResult.error("不能重复确认收货"); } @@ -334,6 +353,11 @@ @PutMapping("/cancelOrder/{id}") @ApiOperation(value = "取消订单操作", tags = {"小程序-商城购买订单"}) public AjaxResult cancelOrder(@PathVariable String id) { + TShoppingOrder shoppingOrder = shoppingOrderService.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!shoppingOrder.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); + } return shoppingOrderService.cancelOrder(id); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java index e174a7d..abe14db 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java @@ -12,6 +12,8 @@ import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.order.api.model.TExchangeOrder; import com.ruoyi.order.api.model.TShoppingOrder; import com.ruoyi.order.api.model.TVipOrder; @@ -55,6 +57,12 @@ private TVipOrderService vipOrderService; @Resource private AppUserClient appUserClient; + @Resource + private OtherClient otherClient; + + + + @RequiresPermissions(value = {"/vipOrder"}, logical = Logical.OR) @PostMapping("/getVipOrderList") @ApiOperation(value = "列表查询", tags = {"管理后台-会员订单"}) public AjaxResult<PageInfo<TVipOrder>> getVipOrderList(@RequestBody VipShoppingOrderQuery query) { @@ -67,6 +75,9 @@ PageInfo<TVipOrder> res = vipOrderService.pageList(query); return AjaxResult.success(res); } + + + @RequiresPermissions(value = {"/vipOrder/add"}, logical = Logical.OR) @PostMapping("/addVipOrder") @ApiOperation(value = "添加会员订单", tags = {"管理后台-会员订单"}) public R<Long> addVipOrder(@RequestBody TVipOrder dto) { @@ -81,12 +92,17 @@ vipOrderService.saveOrUpdate(dto); return R.ok(dto.getId()); } + + + @RequiresPermissions(value = {"/vipOrder/del"}, logical = Logical.OR) @GetMapping("/deleteVipOrder") @ApiOperation(value = "批量删除会员订单", tags = {"管理后台-会员订单"}) public AjaxResult deleteVipOrder(String id) { vipOrderService.removeBatchByIds(Arrays.asList(id.split(","))); return AjaxResult.success(); } + + @PostMapping("/callBack") public R callBack(@RequestParam("code")String code,@RequestParam("outTradeNo")String outTradeNo){ @@ -109,8 +125,7 @@ } - @Resource - private OtherClient otherClient; + @ApiOperation(tags = {"后台-申请表单-集团用户"},value = "导出") @PutMapping(value = "/export") diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageListDTO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageListDTO.java index 37ac8db..a052c96 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageListDTO.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageListDTO.java @@ -37,4 +37,8 @@ private List<String> tags; @ApiModelProperty("回复内容") private String recover; + @ApiModelProperty("回复按钮权限") + private Boolean authReply; + @ApiModelProperty("删除按钮权限") + private Boolean authDelete; } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java index ac92738..c1898d6 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java @@ -934,7 +934,7 @@ Long userId = tokenService.getLoginUserApplet().getUserId(); TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, userId).eq(TChargingOrder::getChargingGunId, id) .eq(TChargingOrder::getRechargePaymentStatus, 2).eq(TChargingOrder::getDelFlag, 0).orderByDesc(TChargingOrder::getStartTime).last(" limit 0, 1")); - if(null == one){ + if(null == one || !one.getAppUserId().equals(userId)){ return null; } ChargingDetails chargingDetails = new ChargingDetails(); @@ -984,6 +984,10 @@ } if(status == 4 || status == 5){ return AjaxResult.error("不能重复操作"); + } + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!order.getAppUserId().equals(userId)){ + return AjaxResult.error("权限不足"); } TChargingOrder chargingOrder = new TChargingOrder(); chargingOrder.setId(Long.valueOf(id)); @@ -3316,6 +3320,10 @@ public EndOfChargePageInfo getEndOfChargePageInfo(String id) { EndOfChargePageInfo info = new EndOfChargePageInfo(); TChargingOrder chargingOrder = this.getById(id); + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!chargingOrder.getAppUserId().equals(userId)){ + throw new RuntimeException("权限不足"); + } info.setId(id); info.setCode(chargingOrder.getCode()); info.setPaymentAmount(chargingOrder.getPaymentAmount()); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java index 84d17ba..307ab57 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java @@ -1,9 +1,6 @@ package com.ruoyi.order.service.impl; -import cn.hutool.db.DaoTemplate; import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONArray; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -12,15 +9,12 @@ import com.ruoyi.account.api.feignClient.AppUserIntegralChangeClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserCar; -import com.ruoyi.account.api.feignClient.AppUserClient; -import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserIntegralChange; +import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.api.feignClient.PartnerClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; -import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO; import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.utils.HttpUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; @@ -51,7 +45,6 @@ import com.ruoyi.system.api.model.SysUserRoleVo; import io.seata.spring.annotation.GlobalTransactional; import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -279,13 +272,13 @@ //校验合作商权限 List<Integer> siteIds = new ArrayList<>(); + SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); + Integer roleType = sysUser.getRoleType(); + Integer objectId = sysUser.getObjectId(); if(null == pageList.getSiteId() || 0 == pageList.getSiteId()){ - SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); - Integer roleType = sysUser.getRoleType(); - Integer objectId = sysUser.getObjectId(); //合作商 if(roleType == 2){ - Set<Integer> data = partnerService.authSite(objectId, "/data/site").getData(); + Set<Integer> data = partnerService.authSite(objectId, SiteMenu.CHARGE_EVALUATION.getValue()).getData(); siteIds = new ArrayList<>(data); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 @@ -321,6 +314,8 @@ List<String> collect = data.stream().map(TEvaluationTag::getName).collect(Collectors.toList()); dto.setTags(collect); } + dto.setAuthReply(roleType == 1 ? true : partnerService.authMenu(objectId, dto.getSiteId(), SiteMenu.CHARGE_EVALUATION_ANSWER.getValue())); + dto.setAuthDelete(roleType == 1 ? true : partnerService.authMenu(objectId, dto.getSiteId(), SiteMenu.CHARGE_EVALUATION_DEL.getValue())); } return pageInfo.setRecords(list); } @@ -416,6 +411,10 @@ public OrderEvaluateVo getOrderEvaluate(String orderId, Integer orderType) { TOrderEvaluate orderEvaluate = this.getOne(new LambdaQueryWrapper<TOrderEvaluate>().eq(TOrderEvaluate::getOrderId, orderId).eq(TOrderEvaluate::getOrderType, orderType)); if(null != orderEvaluate){ + Long userId = tokenService.getLoginUserApplet().getUserId(); + if(!orderEvaluate.getAppUserId().equals(userId)){ + throw new RuntimeException("权限不足"); + } OrderEvaluateVo orderEvaluateVo = new OrderEvaluateVo(); BeanUtils.copyProperties(orderEvaluate, orderEvaluateVo); List<TOrderEvaluateTag> tOrderEvaluateTags = orderEvaluateTagMapper.selectList(new LambdaQueryWrapper<TOrderEvaluateTag>().eq(TOrderEvaluateTag::getOrderEvaluateId, orderEvaluate.getId())); diff --git a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java index 3bcd182..99073cb 100644 --- a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java +++ b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java @@ -16,10 +16,15 @@ import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.order.api.feignClient.AccountingStrategyDetailOrderClient; import com.ruoyi.order.api.model.TChargingOrder; +import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; +import com.ruoyi.order.api.vo.AccountingStrategyDetailOrderVo; +import com.ruoyi.order.api.vo.ChargingOrderInfoVO; +import com.ruoyi.order.api.vo.TransactionRecordMessageVO; import com.ruoyi.order.dto.ChargingDetails; import com.ruoyi.order.dto.MyChargingOrderInfo; import com.ruoyi.order.mapper.TSettlementConfirmMapper; import com.ruoyi.order.service.*; +import com.ruoyi.order.vo.EndOfChargePageInfo; import com.ruoyi.other.api.feignClient.IntegralRuleClient; import com.ruoyi.other.api.feignClient.UserTagClient; import com.ruoyi.other.api.feignClient.VipClient; @@ -31,7 +36,7 @@ import javax.annotation.Resource; import java.io.PrintWriter; import java.math.BigDecimal; -import java.util.Arrays; +import java.util.*; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiOrderApplication.class) public class RuoYiOrderApplicationTests { @@ -136,40 +141,6 @@ @Test public void test(){ - Integer id = 75; - TChargingOrder one = chargingOrderService.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, 1839480334642704385L).eq(TChargingOrder::getChargingGunId, id) - .eq(TChargingOrder::getRechargePaymentStatus, 2).eq(TChargingOrder::getDelFlag, 0).orderByDesc(TChargingOrder::getStartTime).last(" limit 0, 1")); - ChargingDetails chargingDetails = new ChargingDetails(); - chargingDetails.setId(one.getId().toString()); - TChargingGun chargingGun = chargingGunClient.getChargingGunById(id).getData(); - TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData(); - Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0); - chargingDetails.setName(site.getName() + "-" + chargingPile.getName()); - chargingDetails.setCode(one.getCode()); - chargingDetails.setStatus(one.getStatus()); - chargingDetails.setChargingCost(one.getResidualAmount()); - UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(one.getCode()).getData(); - if(null != data){ - chargingDetails.setChargeCurrent(data.getOutput_current()); - chargingDetails.setChargeVoltage(data.getOutput_voltage()); - BigDecimal power = data.getOutput_current().multiply(data.getOutput_voltage()).divide(new BigDecimal(1000)); - chargingDetails.setChargePower(power); - chargingDetails.setCompletionRatio(data.getSoc()); - chargingDetails.setRemainingChargeTime(data.getTime_remaining()); - chargingDetails.setChargedDegrees(data.getCharging_degree()); - Integer h = Integer.valueOf(data.getCumulative_charging_time() / 60); - Integer m = Integer.valueOf(data.getCumulative_charging_time() % 60); - chargingDetails.setChargedTime(String.format("%02d", h) + ":" + String.format("%02d", m)); - } - ChargingHandshake chargingHandshake = chargingHandshakeClient.getDataByOrderCode(one.getCode()).getData(); - if(null != chargingHandshake && null != data && null != one.getAppUserCarId()){ - BigDecimal bms_battery_capacity = chargingHandshake.getBms_battery_capacity(); - TAppUserCar appUserCar = appUserCarClient.getCarByIds(Arrays.asList(one.getAppUserCarId())).getData().get(0); - // 续航 = 电池容量 / 续航里程 * soc - BigDecimal divide = bms_battery_capacity.divide(new BigDecimal(appUserCar.getEndurance())); - BigDecimal multiply = new BigDecimal(data.getSoc() / 100).multiply(divide); - chargingDetails.setEndurance(multiply); - } - System.err.println(JSON.toJSONString(chargingDetails)); + MyChargingOrderInfo myChargingOrderInfo = chargingOrderService.getMyChargingOrderInfo("1852288949187297282"); } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RegionController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RegionController.java index 54cd79b..2513b90 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RegionController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RegionController.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.other.api.domain.Region; import com.ruoyi.other.service.IRegionService; import io.swagger.annotations.ApiImplicitParam; @@ -25,6 +27,8 @@ private IRegionService regionService; + + @RequiresPermissions(value = {"/coupon", "/appUser/list", "/vipList", "/coupon/send"}, logical = Logical.OR) @ResponseBody @GetMapping("/getRegion/{pid}") @ApiOperation(value = "获取省市区数据", tags = {"管理后台-站点管理"}) diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityController.java index d3d7f11..18d04ba 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityController.java @@ -6,6 +6,8 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.other.api.domain.TActivity; import com.ruoyi.other.api.domain.TAdvertising; import com.ruoyi.other.api.dto.AdvertisingDTO; @@ -31,6 +33,9 @@ @Autowired private TActivityService activityService; + + + @RequiresPermissions(value = {"/activity/add"}, logical = Logical.OR) @PostMapping("/saveActivity") @ApiOperation(tags = {"管理后台-活动管理"},value = "活动添加") @Log(title = "【活动管理】添加活动", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE) @@ -38,6 +43,9 @@ activityService.save(dto); return AjaxResult.success(); } + + + @RequiresPermissions(value = {"/activity/del"}, logical = Logical.OR) @GetMapping("/delete") @ApiOperation(tags = {"管理后台-活动管理"},value = "活动删除") @Log(title = "【活动管理】删除活动", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @@ -45,6 +53,9 @@ activityService.removeBatchByIds(Arrays.asList(ids.split(","))); return AjaxResult.success(); } + + + @RequiresPermissions(value = {"/activity/update"}, logical = Logical.OR) @PostMapping("/updateVip") @ApiOperation(tags = {"管理后台-活动管理"},value = "活动修改") @Log(title = "【活动管理】修改活动", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @@ -52,13 +63,21 @@ activityService.updateById(dto); return AjaxResult.success(); } + + + @RequiresPermissions(value = {"/activity/select"}, logical = Logical.OR) @GetMapping("/getInfo") @ApiOperation(tags = {"管理后台-活动管理","小程序-个人中心-活动列表"},value = "活动查看详情") public AjaxResult<TActivity> getInfo(Integer id) { return AjaxResult.ok(activityService.getById(id)); } + + + @ApiOperation(tags = {"管理后台-活动管理","小程序-个人中心-活动列表"},value = "活动列表分页查询") + + @RequiresPermissions(value = {"/activity/list"}, logical = Logical.OR) @PostMapping(value = "/pageList") public AjaxResult<PageInfo<TActivity>> pageList(@RequestBody AdvertisingDTO dto) { return AjaxResult.ok(activityService.pageList(dto)); diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityStatisticsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityStatisticsController.java index cf3a218..b3d6371 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityStatisticsController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TActivityStatisticsController.java @@ -6,6 +6,8 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.order.api.feignClient.OrderClient; import com.ruoyi.order.api.query.TActivityStatisticsQuery; import com.ruoyi.order.api.vo.TActivityStatisticslVO; @@ -32,9 +34,9 @@ public class TActivityStatisticsController { @Autowired private OrderClient orderClient; - - - + + + @RequiresPermissions(value = {"/activityExpense"}, logical = Logical.OR) @ApiOperation(tags = {"管理后台-活动费用统计"},value = "管理后台活动费用统计") @PostMapping(value = "/pageList") public AjaxResult<TActivityVO> pageList(@RequestBody TActivityStatisticsQuery query) { diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java index e7112fb..22ecb7f 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java @@ -9,6 +9,8 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.other.api.domain.TAdvertising; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.dto.AdvertisingDTO; @@ -50,6 +52,9 @@ @Autowired private TAdvertisingService advertisingService; + + + @RequiresPermissions(value = {"/advertisement/add"}, logical = Logical.OR) @PostMapping("/saveAdvertising") @ApiOperation(tags = {"管理后台-广告管理"},value = "广告添加") @Log(title = "【广告管理】添加广告", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE) @@ -57,6 +62,9 @@ advertisingService.save(dto); return AjaxResult.success(); } + + + @RequiresPermissions(value = {"/advertisement/del"}, logical = Logical.OR) @GetMapping("/delete") @ApiOperation(tags = {"管理后台-广告管理"},value = "广告删除") @Log(title = "【广告管理】删除广告", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @@ -64,6 +72,9 @@ advertisingService.removeBatchByIds(Arrays.asList(ids.split(","))); return AjaxResult.success(); } + + + @RequiresPermissions(value = {"/advertisement/update"}, logical = Logical.OR) @PostMapping("/updateVip") @ApiOperation(tags = {"管理后台-广告管理"},value = "广告修改") @Log(title = "【广告管理】修改广告", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @@ -80,14 +91,19 @@ } return AjaxResult.success(); } + + + + @RequiresPermissions(value = {"/advertisement/select"}, logical = Logical.OR) @GetMapping("/getInfo") @ApiOperation(tags = {"管理后台-广告管理"},value = "广告查看详情") public AjaxResult<TAdvertising> getInfo(Integer id) { return AjaxResult.ok(advertisingService.getById(id)); } - - - + + + + @RequiresPermissions(value = {"/advertisement"}, logical = Logical.OR) @ApiOperation(tags = {"管理后台-广告管理"},value = "广告列表分页查询") @PostMapping(value = "/pageList") public AjaxResult<PageInfo<TAdvertising>> pageList(@RequestBody AdvertisingDTO dto) { diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java index f666844..22124d1 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java @@ -13,6 +13,8 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.OperatorType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.other.api.domain.Region; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TGoods; @@ -57,6 +59,14 @@ @Autowired private AppCouponClient appCouponClient; + + @Autowired + private IRegionService regionService; + + + + + /** * 远程调用 根据名称 查询优惠券ids @@ -68,6 +78,9 @@ .eq("name", name)).stream().map(TCoupon::getId).collect(Collectors.toList()); return R.ok(collect); } + + + @RequiresPermissions(value = {"/coupon/add"}, logical = Logical.OR) @PostMapping("/saveGoods") @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券添加") @Log(title = "【优惠券管理】添加优惠券", businessType = BusinessType.INSERT,operatorType = OperatorType.MANAGE) @@ -75,9 +88,9 @@ tCouponService.save(dto); return AjaxResult.success(); } - - - + + + @RequiresPermissions(value = {"/coupon/del"}, logical = Logical.OR) @GetMapping("/delete") @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券删除") @Log(title = "【优惠券管理】删除优惠券", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @@ -85,9 +98,9 @@ tCouponService.removeBatchByIds(Arrays.asList(ids.split(","))); return AjaxResult.success(); } - - - + + + @RequiresPermissions(value = {"/coupon/update"}, logical = Logical.OR) @PostMapping("/updateVip") @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券修改") @Log(title = "【优惠券管理】修改优惠券", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @@ -95,9 +108,9 @@ tCouponService.updateById(dto); return AjaxResult.success(); } - - - + + + @RequiresPermissions(value = {"/coupon/select"}, logical = Logical.OR) @GetMapping("/getInfo") @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券查看详情") public AjaxResult<TCoupon> getInfo(Integer id) { @@ -108,9 +121,9 @@ byId.setUseCount(appCouponClient.getUseCountByCouponId(id).getData()); return AjaxResult.ok(byId); } - - - + + + @RequiresPermissions(value = {"/coupon/select"}, logical = Logical.OR) @PostMapping("/exchangeRecord") @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券查看详情-兑换记录") public AjaxResult<PageInfo<ExchangeRecordVO>> exchangeRecord(@RequestBody ExchangeRecordGoodsQuery dto) { @@ -137,10 +150,10 @@ exchangeRecordVOPageInfo.setRecords(data); return AjaxResult.ok(exchangeRecordVOPageInfo); } - - - @Autowired - private IRegionService regionService; + + + + @RequiresPermissions(value = {"/coupon/send"}, logical = Logical.OR) @ApiOperation(tags = {"管理后台-优惠券管理"},value = "发放优惠券") @PostMapping(value = "/grantCoupon") @Log(title = "【优惠券管理】发放优惠券", businessType = BusinessType.OTHER,operatorType = OperatorType.MANAGE) @@ -180,12 +193,17 @@ appCouponClient.grantCoupon(dto); return AjaxResult.success(); } - + + + @RequiresPermissions(value = {"/coupon"}, logical = Logical.OR) @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券列表分页查询") @PostMapping(value = "/pageList") public AjaxResult<PageInfo<TCoupon>> pageList(@RequestBody CouponQuery dto) { return AjaxResult.ok(tCouponService.pageList(dto)); } + + + @RequiresPermissions(value = {"/vipSetting/list"}, logical = Logical.OR) @ApiOperation(tags = {"管理后台-优惠券管理"},value = "优惠券列表分页查询") @PostMapping(value = "/pageList3") public AjaxResult<List<TCoupon>> pageList() { diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java index 6e3ae1c..4d800c2 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java @@ -9,6 +9,8 @@ import com.ruoyi.common.core.web.domain.BasePojo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.other.api.domain.TEnterpriseUserApplication; import com.ruoyi.other.query.PassDto; @@ -57,7 +59,8 @@ dto.setAppUserId(tokenService.getLoginUserApplet().getUserId()); return AjaxResult.ok(enterpriseUserApplicationService.save(dto)); } - + + @RequiresPermissions(value = {"/groupUserApplication/add"}, logical = Logical.OR) @Log(title = "【集团用户申请】添加集团用户申请", businessType = BusinessType.INSERT) @ApiOperation(tags = {"后台-申请表单-集团用户"},value = "后台添加集团用户申请") @PostMapping(value = "/back/add") @@ -65,8 +68,9 @@ // 用户id return AjaxResult.ok(enterpriseUserApplicationService.save(dto)); } - - + + + @RequiresPermissions(value = {"/groupUserApplication"}, logical = Logical.OR) @ApiOperation(tags = {"后台-申请表单-集团用户"},value = "集团用户列表") @PostMapping(value = "/page") public R<Page<TEnterpriseUserApplication>> page(@RequestBody EnterpriseQuery enterpriseQuery) { @@ -83,8 +87,9 @@ return R.ok(page); // } } - - + + + @RequiresPermissions(value = {"/groupUserApplication/export"}, logical = Logical.OR) @ApiOperation(tags = {"后台-申请表单-集团用户"},value = "导出") @PutMapping(value = "/export") @Log(title = "【申请建桩】导出建桩申请列表", businessType = BusinessType.EXPORT) @@ -117,9 +122,10 @@ // } // } } - - - + + + + @RequiresPermissions(value = {"/groupUserApplication/remark"}, logical = Logical.OR) @Log(title = "【集团用户申请】填写备注", businessType = BusinessType.INSERT) @ApiOperation(tags = {"后台-申请表单-集团用户"},value = "备注") @PostMapping(value = "/remark") @@ -132,6 +138,8 @@ return AjaxResult.success(); } + + @RequiresPermissions(value = {"/groupUserApplication/del"}, logical = Logical.OR) @Log(title = "【集团用户申请】删除申请数据", businessType = BusinessType.DELETE) @ApiOperation(tags = {"后台-申请表单-集团用户"},value = "删除") @DeleteMapping(value = "/delete") diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java index 2d7e91c..dd476f4 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java @@ -8,6 +8,8 @@ import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.other.api.domain.TEvaluationTag; import com.ruoyi.other.api.domain.TInvoiceType; import com.ruoyi.other.api.vo.TEvaluationTagVO; @@ -47,9 +49,10 @@ public R<List<TEvaluationTagVO>> getList() { return R.ok(evaluationTagService.getList()); } - + + @RequiresPermissions(value = {"/evaluationTag"}, logical = Logical.OR) @ResponseBody @GetMapping("/pageList") @ApiOperation(value = "获取评价标签列表", tags = {"管理后台-评价标签设置"}) @@ -59,6 +62,7 @@ } + @RequiresPermissions(value = {"/evaluationTag/add"}, logical = Logical.OR) @ResponseBody @PostMapping("/addEvaluationTag") @ApiOperation(value = "添加评价标签", tags = {"管理后台-评价标签设置"}) @@ -68,6 +72,7 @@ return AjaxResult.success(); } + @RequiresPermissions(value = {"/evaluationTag/update"}, logical = Logical.OR) @ResponseBody @GetMapping("/getEvaluationTagInfo/{id}") @ApiOperation(value = "获取评价标签详情", tags = {"管理后台-评价标签设置"}) @@ -77,6 +82,7 @@ } + @RequiresPermissions(value = {"/evaluationTag/update"}, logical = Logical.OR) @ResponseBody @PostMapping("/editEvaluationTag") @ApiOperation(value = "编辑评价标签", tags = {"管理后台-评价标签设置"}) @@ -87,6 +93,7 @@ } + @RequiresPermissions(value = {"/evaluationTag/del"}, logical = Logical.OR) @ResponseBody @DeleteMapping("/delEvaluationTag") @ApiOperation(value = "删除评价标签", tags = {"管理后台-评价标签设置"}) diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java index fdb537f..0ef3d4a 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java @@ -19,6 +19,9 @@ import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.redis.service.RedisService; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.api.feignClient.OrderClient; import com.ruoyi.order.api.model.TShoppingOrder; @@ -30,6 +33,7 @@ import com.ruoyi.other.service.TActivityService; import com.ruoyi.other.service.TCouponService; import com.ruoyi.other.service.TGoodsService; +import com.ruoyi.other.util.RedisLock; import com.ruoyi.payment.api.feignClient.AliPaymentClient; import com.ruoyi.payment.api.feignClient.WxPaymentClient; import com.ruoyi.payment.api.vo.AliPaymentReq; @@ -37,6 +41,7 @@ import com.ruoyi.payment.api.vo.PaymentOrder; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -44,6 +49,8 @@ import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.UUID; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -61,7 +68,6 @@ private TGoodsService goodsService; @Autowired private TActivityService activityService; - @Resource private TokenService tokenService; @Resource @@ -74,6 +80,11 @@ private TCouponService couponService; @Resource private WxPaymentClient wxPaymentClient; + @Resource + private RedisService redisService; + + @Autowired + public RedisTemplate redisTemplate; /** @@ -87,7 +98,9 @@ .like("name", name)).stream().map(TGoods::getId).collect(Collectors.toList()); return R.ok(collect); } - + + + @RequiresPermissions(value = {"/goods/add"}, logical = Logical.OR) @PostMapping("/saveGoods") @ApiOperation(tags = {"管理后台-商品管理"},value = "商品添加") @Log(title = "【商品管理】添加商品", businessType = BusinessType.INSERT) @@ -95,9 +108,10 @@ goodsService.save(dto); return AjaxResult.success(); } - - - + + + + @RequiresPermissions(value = {"/goods/del"}, logical = Logical.OR) @GetMapping("/delete") @ApiOperation(tags = {"管理后台-商品管理"},value = "商品删除") @Log(title = "【商品管理】删除商品", businessType = BusinessType.DELETE) @@ -105,9 +119,10 @@ goodsService.removeBatchByIds(Arrays.asList(ids.split(","))); return AjaxResult.success(); } - - - + + + + @RequiresPermissions(value = {"/goods/update"}, logical = Logical.OR) @PostMapping("/updateVip") @ApiOperation(tags = {"管理后台-商品管理"},value = "商品修改") @Log(title = "【商品管理】修改商品", businessType = BusinessType.UPDATE) @@ -115,9 +130,9 @@ goodsService.updateById(dto); return AjaxResult.success(); } - - - + + + @RequiresPermissions(value = {"/goods/select"}, logical = Logical.OR) @GetMapping("/getInfo") @ApiOperation(tags = {"管理后台-商品管理"},value = "商品查看详情") public AjaxResult<TGoods> getInfo(Integer id) { @@ -152,10 +167,11 @@ return R.ok(byId); } } - - - - + + + + + @RequiresPermissions(value = {"/goods"}, logical = Logical.OR) @ApiOperation(tags = {"管理后台-商品管理"},value = "商品列表分页查询") @PostMapping(value = "/pageList") public AjaxResult<PageInfo<TGoods>> pageList(@RequestBody GoodsDTO dto) { @@ -177,7 +193,6 @@ //检查当前用户积分是否够 Long userId = tokenService.getLoginUserApplet().getUserId(); Integer point = 0; - if (exchangeDto.getGoodType()==1) { //查询当前商品信息 TGoods good = goodsService.getById(exchangeDto.getGoodId()); @@ -203,85 +218,93 @@ return R.ok(); } + + + @ApiOperation(tags = {"小程序-兑换商城"},value = "积分兑换商品") @PostMapping(value = "/app/shop") public AjaxResult<PageInfo<TGoods>> shop(@RequestBody ExchangeDto exchangeDto) { - //检查当前用户积分是否够 - Long userId = tokenService.getLoginUserApplet().getUserId(); - Integer point = 0; - TAppUser user = appUserClient.getUserById(userId).getData(); - - if (exchangeDto.getGoodType()==1) { - //查询当前商品信息 - TGoods good = goodsService.getById(exchangeDto.getGoodId()); - point = good.getRedeemPoints(); - //检查当前用户是否到达兑换上限 - Long count = orderClient.getExchangeById(exchangeDto.getGoodId(), userId,exchangeDto.getGoodType()).getData(); - if (good.getLimitExchangeTimes() != -1 && count >= good.getLimitExchangeTimes()) { - return AjaxResult.error("当前用户已兑换"+count+"张"); + //redis锁 和支付使用同一个锁 + RedisLock redisLock = new RedisLock(redisTemplate, "POINT_EXCHANGE_LOCK", 5, 30000); + try { + redisLock.lock(); + Long userId = tokenService.getLoginUserApplet().getUserId(); + Integer point = 0; + TAppUser user = appUserClient.getUserById(userId).getData(); + if (exchangeDto.getGoodType()==1) { + //查询当前商品信息 + TGoods good = goodsService.getById(exchangeDto.getGoodId()); + point = good.getRedeemPoints(); + if (user.getPoints().compareTo(good.getRedeemPoints()) < 0){ + return AjaxResult.error("当前用户积分不足"); + } + //检查当前用户是否到达兑换上限 + Long count = orderClient.getExchangeById(exchangeDto.getGoodId(), userId,exchangeDto.getGoodType()).getData(); + if (good.getLimitExchangeTimes() != -1 && count >= good.getLimitExchangeTimes()) { + return AjaxResult.error("当前用户已兑换"+count+"张"); + }else { + //减少库存 + if (good.getInventory()!=-1) { + good.setInventory(good.getInventory() - exchangeDto.getNum()); + goodsService.updateById(good); + } + } }else { - //减少库存 - if (good.getInventory()!=-1) { - good.setInventory(good.getInventory() - exchangeDto.getNum()); - goodsService.updateById(good); + TCoupon coupon = couponService.getById(exchangeDto.getGoodId()); + point = coupon.getRedeemPoints(); + if (user.getPoints().compareTo(coupon.getRedeemPoints()) < 0){ + return AjaxResult.error("当前用户积分不足"); + } + Long count = orderClient.getExchangeById(exchangeDto.getGoodId(), userId,exchangeDto.getGoodType()).getData(); + if (coupon.getInventoryQuantity() != -1 && count >= coupon.getInventoryQuantity()) { + return AjaxResult.error("当前用户已到达兑换"+coupon+"次"); + }else { + if (coupon.getInventoryQuantity()!=-1) { + coupon.setInventoryQuantity(coupon.getInventoryQuantity() - 1); + couponService.updateById(coupon); + } } } - if (user.getPoints()<good.getRedeemPoints()){ - return AjaxResult.error("当前用户积分不足"); - } - }else { - TCoupon coupon = couponService.getById(exchangeDto.getGoodId()); - point = coupon.getRedeemPoints(); - - Long count = orderClient.getExchangeById(exchangeDto.getGoodId(), userId,exchangeDto.getGoodType()).getData(); - if (user.getPoints()<point){ - return AjaxResult.error("当前用户积分不足"); - } - if (coupon.getInventoryQuantity() != -1 && count >= coupon.getInventoryQuantity()) { - return AjaxResult.error("当前用户已到达兑换"+coupon+"次"); - }else { - if (coupon.getInventoryQuantity()!=-1) { - coupon.setInventoryQuantity(coupon.getInventoryQuantity() - 1); - couponService.updateById(coupon); + exchangeDto.setPoint(point); + exchangeDto.setUserId(userId); + //生成积分兑换成功的订单 + R<ExchangeBackDto> longR = orderClient.exchangeCreate(exchangeDto); + if (exchangeDto.getGoodType()==2) { + TCoupon coupon = couponService.getById(exchangeDto.getGoodId()); + + //如果是优惠卷,赠送优惠卷给用户 + GrantCouponDto grantCouponDto = new GrantCouponDto(); + grantCouponDto.setUserIds(userId.toString()); + grantCouponDto.setCouponId(exchangeDto.getGoodId()); + grantCouponDto.setWaysToObtain(1); + grantCouponDto.setEndTime(LocalDateTime.now()); + grantCouponDto.setType(3); + switch (coupon.getValidityPeriodMode()){ + case 1: + grantCouponDto.setEndTime(coupon.getEndTime()); + break; + case 2: + grantCouponDto.setEndTime(LocalDateTime.now().plusDays(coupon.getDays())); + break; } + appCouponClient.grantCoupon(grantCouponDto); } - - + //生成消耗积分的记录 + PointChangeDto pointChangeDto = new PointChangeDto(); + pointChangeDto.setUserId(userId); + pointChangeDto.setPoints(point); + pointChangeDto.setRemark(String.valueOf(longR.getData().getId())); + pointChangeDto.setType(6); + pointChangeDto.setCode(longR.getData().getCode()); + appUserClient.changeDown(pointChangeDto); + return AjaxResult.success(longR.getData().getId()); + }catch (Exception e){ + e.printStackTrace(); + }finally { + //解锁 + redisLock.unlock(); } - exchangeDto.setPoint(point); - exchangeDto.setUserId(userId); - //生成积分兑换成功的订单 - R<ExchangeBackDto> longR = orderClient.exchangeCreate(exchangeDto); - if (exchangeDto.getGoodType()==2) { - TCoupon coupon = couponService.getById(exchangeDto.getGoodId()); - - //如果是优惠卷,赠送优惠卷给用户 - GrantCouponDto grantCouponDto = new GrantCouponDto(); - grantCouponDto.setUserIds(userId.toString()); - grantCouponDto.setCouponId(exchangeDto.getGoodId()); - grantCouponDto.setWaysToObtain(1); - grantCouponDto.setEndTime(LocalDateTime.now()); - grantCouponDto.setType(3); - switch (coupon.getValidityPeriodMode()){ - case 1: - grantCouponDto.setEndTime(coupon.getEndTime()); - break; - case 2: - grantCouponDto.setEndTime(LocalDateTime.now().plusDays(coupon.getDays())); - break; - } - appCouponClient.grantCoupon(grantCouponDto); - } - //生成消耗积分的记录 - PointChangeDto pointChangeDto = new PointChangeDto(); - pointChangeDto.setUserId(userId); - pointChangeDto.setPoints(point); - pointChangeDto.setRemark(String.valueOf(longR.getData().getId())); - pointChangeDto.setType(6); - pointChangeDto.setCode(longR.getData().getCode()); - appUserClient.changeDown(pointChangeDto); - return AjaxResult.success(longR.getData().getId()); - + return AjaxResult.success(); } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/THtmlController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/THtmlController.java index 0e93b75..e301848 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/THtmlController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/THtmlController.java @@ -5,6 +5,8 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.other.api.domain.THtml; import com.ruoyi.other.api.domain.TNotice; import com.ruoyi.other.service.THtmlService; @@ -26,9 +28,9 @@ public class THtmlController { @Resource private THtmlService htmlService; - - - + + + @RequiresPermissions(value = {"/protocolServerDescription"}, logical = Logical.OR) @ApiOperation(tags = {"后台-内容设置-协议服务"},value = "新增修改") @PostMapping(value = "/saveOrUpdate") @Log(title = "【协议服务】新增修改协议", businessType = BusinessType.INSERT) @@ -42,7 +44,10 @@ } return AjaxResult.success(); } - + + + + @RequiresPermissions(value = {"/protocolServerDescription"}, logical = Logical.OR) @ApiOperation(tags = {"后台-内容设置-协议服务"},value = "查询") @GetMapping(value = "/selectByType/{type}") public AjaxResult selectByType(@PathVariable Integer type) { diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java index 39e822d..08fd0dc 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java @@ -12,6 +12,8 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.other.api.domain.THtml; import com.ruoyi.other.api.domain.TIntegralRule; @@ -67,6 +69,9 @@ private TokenService tokenService; @Autowired private TVipService vipService; + + + @RequiresPermissions(value = {"/IntegralSetting"}, logical = Logical.OR) @GetMapping("/getSet") @ApiOperation(tags = {"管理后台-积分管理","小程序-个人中心-签到"},value = "获取积分设置") public R<TIntegralRule> getSet() { @@ -92,6 +97,8 @@ return R.ok(res); } + + @RequiresPermissions(value = {"/IntegralSetting"}, logical = Logical.OR) @PostMapping("/saveSet") @ApiOperation(tags = {"管理后台-积分管理"},value = "保存积分设置") @Log(title = "【积分管理】保存积分设置", businessType = BusinessType.INSERT) @@ -105,8 +112,10 @@ } return R.ok(); } - - + + + + @RequiresPermissions(value = {"/vipSetting/html"}, logical = Logical.OR) @GetMapping("/getInfo") @ApiOperation(tags = {"管理后台-积分管理"},value = "type 1=积分规则说明," + "2=会员折扣说明," + @@ -126,9 +135,10 @@ } return R.ok(g.getContent()); } - - - + + + + @RequiresPermissions(value = {"/vipSetting/html"}, logical = Logical.OR) @PostMapping("/saveInfo") @ApiOperation(tags = {"管理后台-积分管理"},value = "保存积分说明") @Log(title = "【积分管理】保存积分说明", businessType = BusinessType.INSERT) diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java index 12d6fcb..85af561 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java @@ -7,6 +7,8 @@ import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.other.api.domain.TInvoiceType; import com.ruoyi.other.query.InvoiceTypePageList; import com.ruoyi.other.service.TInvoiceTypeService; @@ -35,6 +37,7 @@ private TInvoiceTypeService invoiceTypeService; + @RequiresPermissions(value = {"/invoiceType"}, logical = Logical.OR) @ResponseBody @GetMapping("/pageList") @ApiOperation(value = "获取发票类型列表", tags = {"管理后台-发票类型管理"}) @@ -42,6 +45,9 @@ PageInfo<TInvoiceType> pageInfo = invoiceTypeService.pageList(pageList); return AjaxResult.success(pageInfo); } + + + @RequiresPermissions(value = {"/invoiceManagement"}, logical = Logical.OR) @GetMapping("/pageListR") @ApiOperation(value = "获取开票公司和类型列表", tags = {"管理后台-发票管理"}) public R<List<TInvoiceType>> pageListR(String invoicingCompany ){ @@ -55,6 +61,7 @@ } + @RequiresPermissions(value = {"/invoiceType/add"}, logical = Logical.OR) @ResponseBody @PostMapping("/addInvoiceType") @ApiOperation(value = "添加发票类型", tags = {"管理后台-发票类型管理"}) @@ -64,6 +71,9 @@ return AjaxResult.success(); } + + + @RequiresPermissions(value = {"/invoiceType/select", "/invoiceType/update"}, logical = Logical.OR) @ResponseBody @GetMapping("/getInvoiceTypeInfo/{id}") @ApiOperation(value = "获取发票类型详情", tags = {"管理后台-发票类型管理"}) @@ -73,6 +83,7 @@ } + @RequiresPermissions(value = {"/invoiceType/update"}, logical = Logical.OR) @ResponseBody @PostMapping("/editInvoiceType") @ApiOperation(value = "编辑发票类型", tags = {"管理后台-发票类型管理"}) @@ -83,6 +94,7 @@ } + @RequiresPermissions(value = {"/invoiceType/del"}, logical = Logical.OR) @ResponseBody @DeleteMapping("/delInvoiceType") @ApiOperation(value = "删除发票类型", tags = {"管理后台-发票类型管理"}) diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TNoticeController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TNoticeController.java index ff18893..a88c9a0 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TNoticeController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TNoticeController.java @@ -6,6 +6,8 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.other.api.domain.TNotice; import com.ruoyi.other.api.dto.NoticeQueryDto; import com.ruoyi.other.mapper.SysNoticeMapper; @@ -31,7 +33,9 @@ public class TNoticeController { @Resource private TNoticeService noticeService; - + + + @RequiresPermissions(value = {"/publicAnnouncementManagement/add", "/publicAnnouncementManagement/update"}, logical = Logical.OR) @ApiOperation(tags = {"后台-内容设置-公告管理"},value = "新增修改") @PostMapping(value = "/saveOrUpdate") @Log(title = "【公告管理】新增修改公告", businessType = BusinessType.INSERT) @@ -39,7 +43,9 @@ noticeService.saveOrUpdate(notice); return AjaxResult.success(); } - + + + @RequiresPermissions(value = {"/publicAnnouncementManagement/del"}, logical = Logical.OR) @ApiOperation(tags = {"后台-内容设置-公告管理"},value = "删除") @DeleteMapping(value = "/deleteById") @Log(title = "【公告管理】删除公告", businessType = BusinessType.DELETE) @@ -51,7 +57,9 @@ return AjaxResult.success(); } - + + + @RequiresPermissions(value = {"/publicAnnouncementManagement"}, logical = Logical.OR) @ApiOperation(tags = {"后台-内容设置-公告管理"},value = "查询") @PostMapping(value = "/pageList") public AjaxResult<Page<TNotice>> authPageList(@RequestBody NoticeQueryDto query) { diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java index 8aa6085..05d4c75 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TSystemConfigurationController.java @@ -5,6 +5,8 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.other.api.domain.TSystemConfiguration; import com.ruoyi.other.service.TSystemConfigurationService; import io.swagger.annotations.ApiOperation; @@ -34,15 +36,17 @@ /** * 查看系统设置 */ + @RequiresPermissions(value = {"/customerServiceInformation", "/systemContentSetting"}, logical = Logical.OR) @ApiOperation(tags = {"小程序-系统设置","后台-内容设置"},value = "联系客服,查询设置") @GetMapping(value = "/getDetailById") public AjaxResult<TSystemConfiguration> getDetailById(@RequestParam("type")@ApiParam(value = "1=客服信息,2=系统设置") Integer type) { return AjaxResult.ok(systemConfigurationService.getOne(Wrappers.lambdaQuery(TSystemConfiguration.class) .eq(TSystemConfiguration::getType, type))); } - - - + + + + @RequiresPermissions(value = {"/customerServiceInformation", "/systemContentSetting"}, logical = Logical.OR) @ApiOperation(tags = {"后台-内容设置"},value = "客户信息,系统内容设置") @PostMapping(value = "/save") @Log(title = "【系统内容设置】保存系统内容设置", businessType = BusinessType.INSERT) diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java index 48e5837..02c2d68 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java @@ -17,6 +17,8 @@ import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.Logical; +import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TIntegralRule; @@ -59,6 +61,9 @@ private TCouponService couponService; @Resource private TokenService tokenService; + + + @RequiresPermissions(value = {"/vipSetting/addOrdinaryMember", "/vipSetting/addInternalMember"}, logical = Logical.OR) @PostMapping("/saveVip") @ApiOperation(tags = {"管理后台-会员管理"},value = "会员添加") @Log(title = "【会员管理】添加会员", businessType = BusinessType.INSERT) @@ -66,6 +71,9 @@ vipService.save(dto); return AjaxResult.success(); } + + + @RequiresPermissions(value = {"/vipSetting/del"}, logical = Logical.OR) @GetMapping("/delete") @ApiOperation(tags = {"管理后台-会员管理"},value = "会员删除") @Log(title = "【会员管理】删除会员", businessType = BusinessType.DELETE) @@ -73,6 +81,9 @@ vipService.removeBatchByIds(Arrays.asList(ids.split(","))); return AjaxResult.success(); } + + + @RequiresPermissions(value = {"/vipSetting/update"}, logical = Logical.OR) @PostMapping("/updateVip") @ApiOperation(tags = {"管理后台-会员管理"},value = "会员修改") @Log(title = "【会员管理】修改会员", businessType = BusinessType.UPDATE) @@ -80,6 +91,9 @@ vipService.updateById(dto); return AjaxResult.success(); } + + + @RequiresPermissions(value = {"/vipSetting/select"}, logical = Logical.OR) @GetMapping("/getInfo") @ApiOperation(tags = {"管理后台-会员管理"},value = "会员查看详情") public AjaxResult<TVip> getInfo(Integer id) { @@ -107,16 +121,19 @@ public R<TVip> getInfo1(@RequestParam("id")Integer id) { return R.ok(vipService.getById(id)); } - - - - + + + + @RequiresPermissions(value = {"/vipSetting/list", "/vipOrder"}, logical = Logical.OR) @ApiOperation(tags = {"管理后台-会员管理"},value = "会员列表分页查询") @PostMapping(value = "/pageList") public AjaxResult<PageInfo<TVip>> pageList(@RequestBody BasePage basePage) { return AjaxResult.ok(vipService.pageList(basePage.getPageCurr(), basePage.getPageSize())); } - + + + + @RequiresPermissions(value = {"/appUser/list", "/appUser/giftVip", "/appUser/gift_vip", "/vipList"}, logical = Logical.OR) @ApiOperation(tags = {"会员下拉框"},value = "会员列表分页查询") @GetMapping(value = "/select") public AjaxResult<List<TVip>> select() { diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/RedisLock.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/RedisLock.java new file mode 100644 index 0000000..9136ab8 --- /dev/null +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/RedisLock.java @@ -0,0 +1,47 @@ +package com.ruoyi.other.util; + +import org.springframework.data.redis.core.RedisTemplate; + +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +/** + * @author zhibing.pu + * @Date 2024/9/26 18:43 + */ +public class RedisLock { + private RedisTemplate<String, String> redisTemplate; + private String lockKey; + private int expireTime; // 锁的超时时间 + private int timeout; // 获取锁的超时时间 + + + public RedisLock(RedisTemplate<String, String> redisTemplate, String lockKey, int expireTime, int timeout) { + this.redisTemplate = redisTemplate; + this.lockKey = lockKey; + this.expireTime = expireTime; + this.timeout = timeout; + } + + public boolean lock() { + String identifier = UUID.randomUUID().toString(); + long end = System.currentTimeMillis() + timeout; + while (System.currentTimeMillis() < end) { + if (redisTemplate.opsForValue().setIfAbsent(lockKey, identifier, expireTime, TimeUnit.SECONDS)) { + return true; + } + // 可以使用延时来减少CPU占用 + try { + Thread.sleep(100); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + return false; + } + + public boolean unlock() { + redisTemplate.delete(lockKey); + return true; + } +} -- Gitblit v1.7.1