From aed3cdf4a90bb8dfc6666572aa7f585ac3527fd8 Mon Sep 17 00:00:00 2001 From: andy <1042025947@qq.com> Date: Wed, 16 Apr 2025 14:11:18 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E6=9D=83=E9=99=90=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../authorization/service/CloudService.java | 26 +++ .../service/impl/LoginServiceImpl.java | 80 ++++++-- .../src/main/resources/application.yml | 3 + .../hd/common/core/Dto/BaseResponse.java | 41 ++++ .../hd/common/core/constant/HDConstant.java | 26 ++- .../core/dao/cloud/OrderSwapBatteryDao.java | 7 + .../request/PageListSwapOrderPreRequest.java | 3 + .../core/entity/resource/auth/AuthUser.java | 14 +- .../hd/common/core/permission/DataScope.java | 40 ++++ .../hd/common/core/permission/DataScopes.java | 20 ++ .../core/permission/PermissionScopeEnum.java | 24 +++ cloud-manage-server/pom.xml | 10 +- .../hd/cloud/config/NewMybatisPlusConfig.java | 31 +++ .../controller/BatteryStationController.java | 25 +-- .../customer/CompanyController.java | 22 ++- .../customer/VehicleController.java | 25 +-- .../order/OrderSwapBatteryController.java | 20 +- .../hd/cloud/dao/BatteryStationDao.java | 14 +- .../com/evotech/hd/cloud/dao/CompanyDao.java | 1 + .../hd/cloud/dao/OrderSwapBatteryPreDao.java | 7 + .../evotech/hd/cloud/dao/VehicleInfoDao.java | 1 + .../hd/cloud/handler/DataScopeHandler.java | 107 +++++++++++ .../hd/cloud/mqtt/config/MqttConnectInit.java | 22 +-- .../cloud/service/BatteryStationService.java | 11 +- .../hd/cloud/service/CompanyService.java | 8 +- .../service/OrderSwapBatteryService.java | 9 +- .../hd/cloud/service/VehicleService.java | 9 +- .../impl/BatteryStationServiceImpl.java | 44 ++--- .../service/impl/CompanyServiceImpl.java | 20 +- .../cloud/service/impl/HomeServiceImpl.java | 44 ++--- .../impl/OrderSwapBatteryServiceImpl.java | 88 ++++----- .../service/impl/VehicleServiceImpl.java | 21 ++- .../hd/cloud/utils/RedisCloudUtils.java | 178 ++++++++++++++++++ .../evotech/hd/cloud/utils/SpringUtil.java | 35 ++++ .../com/evotech/hd/cloud/utils/TokenUtil.java | 56 ++++++ .../src/main/resources/application.yml | 11 +- .../com/evotech/hd/cloud/AddTestData.java | 113 +++++------ .../gateway/oauth2/AuthorizationManager.java | 44 +++-- .../src/main/resources/application.yml | 3 + .../controller/ProxyOperaterController.java | 17 +- .../hd/resource/service/DictService.java | 6 +- .../service/impl/DictServiceImpl.java | 27 ++- .../service/impl/RoleServiceImpl.java | 72 +++++-- .../src/main/resources/application.yml | 7 +- .../main/resources/mapper/AuthUserMapper.xml | 1 + .../hd/wechat/service/rpc/CloudService.java | 26 +-- .../src/main/resources/application.yml | 7 +- 47 files changed, 1072 insertions(+), 354 deletions(-) create mode 100644 authorization-server/src/main/java/com/evotech/hd/authorization/service/CloudService.java create mode 100644 base-commons/common-core/src/main/java/com/evotech/hd/common/core/Dto/BaseResponse.java create mode 100644 base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/DataScope.java create mode 100644 base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/DataScopes.java create mode 100644 base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/PermissionScopeEnum.java create mode 100644 cloud-manage-server/src/main/java/com/evotech/hd/cloud/config/NewMybatisPlusConfig.java create mode 100644 cloud-manage-server/src/main/java/com/evotech/hd/cloud/handler/DataScopeHandler.java create mode 100644 cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/RedisCloudUtils.java create mode 100644 cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/TokenUtil.java diff --git a/authorization-server/src/main/java/com/evotech/hd/authorization/service/CloudService.java b/authorization-server/src/main/java/com/evotech/hd/authorization/service/CloudService.java new file mode 100644 index 0000000..20ac029 --- /dev/null +++ b/authorization-server/src/main/java/com/evotech/hd/authorization/service/CloudService.java @@ -0,0 +1,26 @@ +package com.evotech.hd.authorization.service; + +import com.evotech.hd.common.core.Dto.BaseResponse; +import com.evotech.hd.common.core.entity.cloud.BatteryStation; +import com.evotech.hd.common.core.entity.cloud.Company; +import com.evotech.hd.common.core.entity.cloud.VehicleInfo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +@FeignClient(value = "cloud-server", path = "/cloud") +public interface CloudService { + + + @GetMapping(value = "/batterystation/login/list", consumes = {MediaType.APPLICATION_JSON_UTF8_VALUE}) + public BaseResponse> loadBatteryStation(@RequestParam("proxyCode") String proxyCode); + + @GetMapping(value = "/company/login/one", consumes = {MediaType.APPLICATION_JSON_UTF8_VALUE}) + public BaseResponse loadCompany(@RequestParam("code") String code); + + @GetMapping(value = "/vehicle/login/list", consumes = {MediaType.APPLICATION_JSON_UTF8_VALUE}) + public BaseResponse> loadVehicleInfo(@RequestParam("companyCode") String companyCode); +} diff --git a/authorization-server/src/main/java/com/evotech/hd/authorization/service/impl/LoginServiceImpl.java b/authorization-server/src/main/java/com/evotech/hd/authorization/service/impl/LoginServiceImpl.java index fc26067..dc44deb 100644 --- a/authorization-server/src/main/java/com/evotech/hd/authorization/service/impl/LoginServiceImpl.java +++ b/authorization-server/src/main/java/com/evotech/hd/authorization/service/impl/LoginServiceImpl.java @@ -1,28 +1,27 @@ package com.evotech.hd.authorization.service.impl; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import org.apache.http.auth.AuthenticationException; -import org.springframework.beans.BeanUtils; -import org.springframework.core.env.Environment; -import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; - +import cn.hutool.http.useragent.UserAgent; +import cn.hutool.http.useragent.UserAgentUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.evotech.hd.authorization.config.oauth2.MyAccessToken; import com.evotech.hd.authorization.entity.LoginRequest; import com.evotech.hd.authorization.entity.UserVo; -import com.evotech.hd.authorization.service.ResourceService; import com.evotech.hd.authorization.service.CaptchaService; +import com.evotech.hd.authorization.service.CloudService; import com.evotech.hd.authorization.service.LoginService; +import com.evotech.hd.authorization.service.ResourceService; import com.evotech.hd.authorization.utils.LoginRequesHeadertUtil; import com.evotech.hd.authorization.utils.Oauth2AccessTokenUtil; import com.evotech.hd.authorization.utils.TokenUtil; +import com.evotech.hd.common.core.Dto.BaseResponse; import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.LoginCacheInfo; import com.evotech.hd.common.core.entity.Result; +import com.evotech.hd.common.core.entity.cloud.BatteryStation; +import com.evotech.hd.common.core.entity.cloud.Company; +import com.evotech.hd.common.core.entity.cloud.VehicleInfo; import com.evotech.hd.common.core.entity.resource.LogLogin; import com.evotech.hd.common.core.entity.resource.auth.AuthPermission; import com.evotech.hd.common.core.entity.resource.auth.AuthRole; @@ -30,12 +29,19 @@ import com.evotech.hd.common.core.entity.resource.auth.AuthUser; import com.evotech.hd.common.core.enums.CodeMsg; import com.evotech.hd.common.redis.utils.RedisUtil; import com.evotech.hd.common.web.util.IpUtil; -import cn.hutool.http.useragent.UserAgent; -import cn.hutool.http.useragent.UserAgentUtil; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; +import org.apache.http.auth.AuthenticationException; +import org.springframework.beans.BeanUtils; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; +import org.springframework.util.StringUtils; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Service public class LoginServiceImpl implements LoginService { @@ -48,6 +54,8 @@ public class LoginServiceImpl implements LoginService { @Resource private ResourceService resourceService; @Resource + private CloudService cloudService; + @Resource private RedisUtil redisUtil; @Resource private Environment env; @@ -109,7 +117,7 @@ public class LoginServiceImpl implements LoginService { loginLog.setLoginTime(d); loginLog.setCtime(d); loginLog.setRequestIp(IpUtil.getRemoteIP(request)); - String uaStr = request.getHeader("User-Agent"); + String uaStr = request.getHeader("User-Agent"); UserAgent ua = UserAgentUtil.parse(uaStr); loginLog.setUa(uaStr); loginLog.setBrowser(ua.getBrowser().toString()); @@ -164,7 +172,43 @@ public class LoginServiceImpl implements LoginService { uv.setPermCodeList(permCodeList); redisUtil.lSet(HDConstant.LOGIN_CACHE_KEY_PREFIX + jti + ":perms", permUriList.toArray(new String[permUriList.size()]), tokenExp); } - + if(rcodeList.contains(HDConstant.OPERATOR_ROLE_CODE)){ + BaseResponse> result = cloudService.loadBatteryStation(user.getBusinessCode()); + if(CodeMsg.SUCCESS.getCode().equals(result.getCode())){ + List list = result.getData(); + String pkIds = "-1"; + String codes = "-1"; + if(CollectionUtils.isNotEmpty(list)){ + pkIds = list.stream().map(BatteryStation::getPkId).map(String::valueOf).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); + codes = list.stream().map(BatteryStation::getCode).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); + } + redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_ID+":"+user.getPkId(), pkIds); + redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_CODE+":"+user.getPkId(), codes); + } + } + if(rcodeList.contains(HDConstant.COMPANY_ROLE_CODE)){ + BaseResponse companyResult = cloudService.loadCompany(user.getBusinessCode()); + String companyId="-1", companyCode="-1", carIds="-1", carPlateNums="-1"; + if(CodeMsg.SUCCESS.getCode().equals(companyResult.getCode())){ + Company company = companyResult.getData(); + if(!ObjectUtils.isEmpty(company)){ + companyId = String.valueOf(company.getPkId()); + companyCode = company.getCcode(); + BaseResponse> vehicleInfoResult = cloudService.loadVehicleInfo(company.getCcode()); + if(CodeMsg.SUCCESS.getCode().equals(vehicleInfoResult.getCode())){ + List list = vehicleInfoResult.getData(); + if(CollectionUtils.isNotEmpty(list)){ + carIds = list.stream().map(VehicleInfo::getPkId).map(String::valueOf).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); + carPlateNums = list.stream().map(VehicleInfo::getPlateNum).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); + } + } + } + } + redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_ID+":"+user.getPkId(), companyId); + redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_CODE+":"+user.getPkId(), companyCode); + redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_ID+":"+user.getPkId(), carIds); + redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_CODE+":"+user.getPkId(), carPlateNums); + } return uv; } diff --git a/authorization-server/src/main/resources/application.yml b/authorization-server/src/main/resources/application.yml index fb7563e..1104965 100644 --- a/authorization-server/src/main/resources/application.yml +++ b/authorization-server/src/main/resources/application.yml @@ -14,12 +14,15 @@ spring: name: oauth2-server config: import: + - nacos:yt-common.properties?refreshEnabled=true - nacos:${spring.application.name}.yaml?refreshEnabled=true cloud: nacos: serverAddr: 192.168.5.213:8848 username: nacos password: nacos + config: + namespace: ${nacos.namespace:public} discovery: namespace: ${nacos.namespace:public} register-enabled: true diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/Dto/BaseResponse.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/Dto/BaseResponse.java new file mode 100644 index 0000000..e1ccb0b --- /dev/null +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/Dto/BaseResponse.java @@ -0,0 +1,41 @@ +package com.evotech.hd.common.core.Dto; + +import com.evotech.hd.common.core.enums.CodeMsg; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; + +/** + * 请求返回对象 + * @ClassName:BaseResponse + * @date: 2025年04月15日 16:37 + * @author: andy.shi + * @contact: 17330188597 + * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 + */ +@Data +public class BaseResponse implements Serializable { + + @Schema(description = "请求处理状态", example = "1") + private Integer status; + @Schema(description = "状态码", example = "1000") + private String code; + @Schema(description = "返回消息") + private String msg; + @Schema(description = "返回数据") + private T data; + + public BaseResponse() { + } + + public BaseResponse success(T o) { + this.status = 1; + this.code = CodeMsg.SUCCESS.getCode(); + this.msg = CodeMsg.SUCCESS.getMsg(); + this.data = o; + return this; + } + + +} diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java index 2380fc6..59f20ed 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java @@ -1,13 +1,33 @@ package com.evotech.hd.common.core.constant; public interface HDConstant { - + + public static final class PermissionConstant{ + public static final String PERMISSION_STATION_CODE = "STATION_CODE"; + public static final String PERMISSION_STATION_ID = "STATION_ID"; + public static final String PERMISSION_COMPANY_CODE = "COMPANY_CODE"; + public static final String PERMISSION_COMPANY_ID = "COMPANY_ID"; + public static final String PERMISSION_CAR_CODE = "CAR_CODE"; + public static final String PERMISSION_CAR_ID = "CAR_ID"; + } + + String DEFAULT_MENU_TYPE= "default_menu"; + /** * 系统管理员角色 */ String SYSTEM_MANAGER_ROLE_CODE = "SYSADMIN"; - - /** + /** + * 运营商角色 + */ + String OPERATOR_ROLE_CODE = "PROXY"; + /** + * 公司角色 + */ + String COMPANY_ROLE_CODE = "COMPANY"; + + + /** * 认证请求头key */ String AUTHORIZATION_KEY = "Authorization"; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/OrderSwapBatteryDao.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/OrderSwapBatteryDao.java index 3c816a8..80ba3a0 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/OrderSwapBatteryDao.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/OrderSwapBatteryDao.java @@ -1,12 +1,19 @@ package com.evotech.hd.common.core.dao.cloud; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery; +import com.evotech.hd.common.core.permission.DataScope; +import com.evotech.hd.common.core.permission.DataScopes; /** * @author zrb * @since 2024-11-22 */ +@DataScopes({ + @DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE), + @DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "plate_num", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_CAR_CODE), +}) public interface OrderSwapBatteryDao extends BaseMapper { } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/request/PageListSwapOrderPreRequest.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/request/PageListSwapOrderPreRequest.java index 42b5a17..afc88a7 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/request/PageListSwapOrderPreRequest.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/request/PageListSwapOrderPreRequest.java @@ -4,6 +4,7 @@ import com.evotech.hd.common.core.entity.BasePageRequest; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; +import org.springframework.format.annotation.DateTimeFormat; @Data @@ -19,9 +20,11 @@ public class PageListSwapOrderPreRequest extends BasePageRequest { private String plateNum; @Schema(description = "预约换电日期开始", example = "yyyyMMdd") + @DateTimeFormat(pattern = "yyyyMMdd") private String swapDayBegin; @Schema(description = "预约换电日期结束") + @DateTimeFormat(pattern = "yyyyMMdd") private String swapDayEnd; @Schema(description = "换电站编码") diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUser.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUser.java index c7858df..348f669 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUser.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUser.java @@ -5,17 +5,15 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; - -import java.io.Serializable; -import java.util.Date; - -import org.springframework.format.annotation.DateTimeFormat; - import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema.RequiredMode; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; /** * @author zrb @@ -42,6 +40,9 @@ public class AuthUser implements Serializable { @Schema(description = "账号类型:1-开发者,2-运营方,3-客户", requiredMode = RequiredMode.REQUIRED) private Integer type; + @Schema(description = "业务code, 即公司类型,为公司统一社会信息代码, 运营商类型为运营商统一社会信用代码", hidden = true) + private String businessCode; + @Schema(description = "关联方代码") private String typeRelateCode; @@ -111,4 +112,5 @@ public class AuthUser implements Serializable { @Schema(description = "角色编码", hidden = true) @TableField(exist = false) private String rcodes; + } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/DataScope.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/DataScope.java new file mode 100644 index 0000000..337ddda --- /dev/null +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/DataScope.java @@ -0,0 +1,40 @@ +package com.evotech.hd.common.core.permission; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target({ElementType.METHOD,ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +public @interface DataScope { + + /*** + * 是否生效 + */ + boolean enabled() default true; + + /*** + * 表别名 + */ + String tableAlias() default ""; + + /*** + * 权限对象 + * 具体参考 + * HDConstant.OPERATOR_ROLE_CODE + * HDConstant.COMPANY_ROLE_CODE + */ + String permissionObject(); + + /*** + * 运营商权限限制的字段 + */ + String permissionScopeName(); + + /*** + * 运营商权限限制的字段 + * HDConstant.PermissionConstant中 的字段信息 + */ + String permissionScopeRedisKey(); +} diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/DataScopes.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/DataScopes.java new file mode 100644 index 0000000..419a758 --- /dev/null +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/DataScopes.java @@ -0,0 +1,20 @@ +package com.evotech.hd.common.core.permission; + +import org.springframework.stereotype.Component; + +import java.lang.annotation.*; + +/** + * 主要用来处理一个方法中, 有多个数据表的文图 + * @DataScopes({ + * @DataScope(tableAlias = 123,companyScopeName = "",operatorScopeName=""), + * @DataScope(tableAlias = 456,companyScopeName = "",operatorScopeName=""),}) + */ +@Target({ElementType.METHOD, ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Component +public @interface DataScopes { + + DataScope[] value(); +} diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/PermissionScopeEnum.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/PermissionScopeEnum.java new file mode 100644 index 0000000..6875ca2 --- /dev/null +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/PermissionScopeEnum.java @@ -0,0 +1,24 @@ +package com.evotech.hd.common.core.permission; + +/** + * @desc: 枚举 + * @ClassName:PermissionScopeEnum + * @date: 2025年04月15日 8:30 + * @author: andy.shi + * @contact: 17330188597 + * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 + */ +public enum PermissionScopeEnum { + + DEFAULT_NULL_TYPE(""), + INTEGER_TYPE("Integer"), + STRING_TYPE("String"), + + COMPANY_LIMIT_CAR_TYPE("car"), + COMPANY_LIMIT_COMPANY_TYPE("company"), + ; + + String type; + + PermissionScopeEnum(String type) {} +} diff --git a/cloud-manage-server/pom.xml b/cloud-manage-server/pom.xml index d8cae23..a0979e2 100644 --- a/cloud-manage-server/pom.xml +++ b/cloud-manage-server/pom.xml @@ -82,8 +82,16 @@ cn.hutool hutool-crypto + + cn.hutool + hutool-jwt + + + org.springframework.security + spring-security-oauth2-jose + - + ${project.artifactId} diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/config/NewMybatisPlusConfig.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/config/NewMybatisPlusConfig.java new file mode 100644 index 0000000..57e3f3d --- /dev/null +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/config/NewMybatisPlusConfig.java @@ -0,0 +1,31 @@ +package com.evotech.hd.cloud.config; + +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor; +import com.evotech.hd.cloud.handler.DataScopeHandler; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * @desc: + * @ClassName:MybatisPlusConfig + * @date: 2025年04月14日 16:14 + * @author: andy.shi + * @contact: 17330188597 + * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 + */ +@EnableTransactionManagement(proxyTargetClass = true) +@Configuration +public class NewMybatisPlusConfig { + + @Bean("newMybatisPlusInterceptor") + public MybatisPlusInterceptor mybatisPlusInterceptor() { + + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + // 数据权限插件 + interceptor.addInnerInterceptor(new DataPermissionInterceptor(new DataScopeHandler())); + return interceptor; + } + +} diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/BatteryStationController.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/BatteryStationController.java index f9760dd..4a830c3 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/BatteryStationController.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/BatteryStationController.java @@ -1,24 +1,14 @@ package com.evotech.hd.cloud.controller; -import java.util.List; -import java.util.Map; - -import com.evotech.hd.cloud.mqtt.message.handle.RequestMessageService; -import org.springdoc.core.annotations.ParameterObject; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - import com.evotech.hd.cloud.entity.request.PageListBatteryStationRequest; +import com.evotech.hd.cloud.mqtt.message.handle.RequestMessageService; import com.evotech.hd.cloud.service.BatteryStationService; +import com.evotech.hd.common.core.Dto.BaseResponse; import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.BatteryStation; import com.evotech.hd.common.core.entity.cloud.vo.BatteryStationVO; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport; - import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -26,6 +16,11 @@ import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; @Tag(name = "换电站") @@ -103,4 +98,10 @@ public class BatteryStationController { batteryStationService.downloadQRCode2(path, width, response); } + @Operation(summary = "查询") + @GetMapping("/login/list") + public BaseResponse> loginList(@RequestParam String proxyCode) { + return batteryStationService.loginList(proxyCode); + } + } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/customer/CompanyController.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/customer/CompanyController.java index ac9b9cd..17b34a3 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/customer/CompanyController.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/customer/CompanyController.java @@ -1,26 +1,22 @@ package com.evotech.hd.cloud.controller.customer; -import java.util.List; -import java.util.Map; - -import org.springdoc.core.annotations.ParameterObject; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - import com.evotech.hd.cloud.service.CompanyService; +import com.evotech.hd.common.core.Dto.BaseResponse; import com.evotech.hd.common.core.entity.BasePageRequest; import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.Company; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport; - import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; @Tag(name = "公司管理") @RestController @@ -66,4 +62,10 @@ public class CompanyController { return companyService.companyByCode(ccode); } + @GetMapping("/login/one") + public BaseResponse loginOne(@RequestParam String code) { + return companyService.loginOne(code); + } + + } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/customer/VehicleController.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/customer/VehicleController.java index 33c930b..a6366c1 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/customer/VehicleController.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/customer/VehicleController.java @@ -1,27 +1,22 @@ package com.evotech.hd.cloud.controller.customer; -import java.util.List; - -import org.springdoc.core.annotations.ParameterObject; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - import com.evotech.hd.cloud.entity.request.PageListVehicleRequest; import com.evotech.hd.cloud.service.VehicleService; +import com.evotech.hd.common.core.Dto.BaseResponse; import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.VehicleInfo; import com.evotech.hd.common.core.entity.cloud.VehicleWechatUserRelation; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport; - import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @@ -107,8 +102,14 @@ public class VehicleController { public Result> listRelationUser(@NotBlank @RequestParam String PlantNo) { return vehicleService.listRelationUser(PlantNo); } - - + + + @Operation(summary = "查询") + @GetMapping("/login/list") + @ApiOperationSupport(order = 4) + public BaseResponse> loginList(@RequestParam String companyCode) { + return vehicleService.loginList(companyCode); + } } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/OrderSwapBatteryController.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/OrderSwapBatteryController.java index 4342b50..dcb634f 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/OrderSwapBatteryController.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/OrderSwapBatteryController.java @@ -1,27 +1,16 @@ package com.evotech.hd.cloud.controller.order; -import java.util.List; - -import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse; -import org.springdoc.core.annotations.ParameterObject; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - import com.evotech.hd.cloud.entity.vo.NativePayVO; import com.evotech.hd.cloud.service.OrderSwapBatteryService; import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep; +import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse; import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest; import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport; - import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -29,6 +18,11 @@ import jakarta.annotation.Resource; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.web.bind.annotation.*; + +import java.text.ParseException; +import java.util.List; @Tag(name = "换电订单") @ApiSupport(order = 22) @@ -57,7 +51,7 @@ public class OrderSwapBatteryController { @Operation(summary = "查询预约") @GetMapping("/pre/list") @ApiOperationSupport(order = 3) - public Result> listPre(@ParameterObject PageListSwapOrderPreRequest plsopr) { + public Result> listPre(@ParameterObject PageListSwapOrderPreRequest plsopr) throws ParseException { return orderSwapBatteryService.listPre(plsopr); } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDao.java index 8b0ae40..cb05fcb 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDao.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDao.java @@ -1,18 +1,24 @@ package com.evotech.hd.cloud.dao; -import java.util.List; - -import org.apache.ibatis.annotations.Param; - import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.evotech.hd.cloud.entity.request.PageListBatteryStationRequest; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.cloud.BatteryStation; +import com.evotech.hd.common.core.permission.DataScope; +import com.evotech.hd.common.core.permission.DataScopes; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author zrb * @since 2024-10-15 */ +//换电站 + @DataScopes({ + @DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, permissionScopeName = "pk_id", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_ID) + }) public interface BatteryStationDao extends BaseMapper { List listStation(Page page, @Param("plbsr") PageListBatteryStationRequest plbsr); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/CompanyDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/CompanyDao.java index eb76caa..8599461 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/CompanyDao.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/CompanyDao.java @@ -7,6 +7,7 @@ import com.evotech.hd.common.core.entity.cloud.Company; * @author zrb * @since 2024-11-20 */ +//换电站 public interface CompanyDao extends BaseMapper { } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/OrderSwapBatteryPreDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/OrderSwapBatteryPreDao.java index 29f050e..96e47c2 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/OrderSwapBatteryPreDao.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/OrderSwapBatteryPreDao.java @@ -1,12 +1,19 @@ package com.evotech.hd.cloud.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre; +import com.evotech.hd.common.core.permission.DataScope; +import com.evotech.hd.common.core.permission.DataScopes; /** * @author zrb * @since 2024-12-04 */ +@DataScopes({ + @DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE), + @DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "plate_num", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_CAR_CODE) +}) public interface OrderSwapBatteryPreDao extends BaseMapper { } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/VehicleInfoDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/VehicleInfoDao.java index 1646929..eb7df16 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/VehicleInfoDao.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/VehicleInfoDao.java @@ -7,6 +7,7 @@ import com.evotech.hd.common.core.entity.cloud.VehicleInfo; * @author zrb * @since 2024-11-22 */ +//换电站 public interface VehicleInfoDao extends BaseMapper { } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/handler/DataScopeHandler.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/handler/DataScopeHandler.java new file mode 100644 index 0000000..7ed1699 --- /dev/null +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/handler/DataScopeHandler.java @@ -0,0 +1,107 @@ +package com.evotech.hd.cloud.handler; + +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.alibaba.nacos.common.utils.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.handler.MultiDataPermissionHandler; +import com.evotech.hd.cloud.utils.RedisCloudUtils; +import com.evotech.hd.common.core.permission.DataScope; +import com.evotech.hd.common.core.permission.DataScopes; +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.Parenthesis; +import net.sf.jsqlparser.expression.StringValue; +import net.sf.jsqlparser.expression.operators.relational.ExpressionList; +import net.sf.jsqlparser.expression.operators.relational.InExpression; +import net.sf.jsqlparser.schema.Column; +import net.sf.jsqlparser.schema.Table; +import org.apache.commons.lang3.ObjectUtils; + +import java.util.Arrays; +import java.util.stream.Collectors; + +/** + * @desc: + * @ClassName:DataScopeHandler + * @date: 2025年04月14日 14:54 + * @author: andy.shi + * @contact: 17330188597 + * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 + */ + +public class DataScopeHandler implements MultiDataPermissionHandler { + + /** + * 获取数据权限 SQL 片段。 + *

旧的 {@link MultiDataPermissionHandler#getSqlSegment(Expression, String)} 方法第一个参数包含所有的 where 条件信息,如果 return 了 null 会覆盖原有的 where 数据,

+ *

新版的 {@link MultiDataPermissionHandler#getSqlSegment(Table, Expression, String)} 方法不能覆盖原有的 where 数据,如果 return 了 null 则表示不追加任何 where 条件

+ * + * @param table 所执行的数据库表信息,可以通过此参数获取表名和表别名 + * @param where 原有的 where 条件信息 + * @param mappedStatementId Mybatis MappedStatement Id 根据该参数可以判断具体执行方法 + * @return JSqlParser 条件表达式,返回的条件表达式会拼接在原有的表达式后面(不会覆盖原有的表达式) + */ + + @Override + public Expression getSqlSegment(Table table, Expression where, String mappedStatementId) { + try { + if(table != null && CollectionUtils.isNotEmpty(table.getNameParts()) && !"1".equals(RedisCloudUtils.getRoleType())){ + String roleCode = RedisCloudUtils.getRoleCode(); + Class mapperClazz = Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf("."))); + DataScopes dataScopesList = mapperClazz.getAnnotation(DataScopes.class); + if (ObjectUtils.isNotEmpty(dataScopesList)) { + for (DataScope dataScope :dataScopesList.value()){ + if(dataScope.enabled()){ + if(dataScope.permissionObject().equals(roleCode)){ + return buildDataScopeByAnnotation(dataScope); + } + } + } + } + } + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + return null; + } + + + + /** + * DataScope注解方式,拼装数据权限 + * + * @param dataScope + * @return + */ + private Expression buildDataScopeByAnnotation(DataScope dataScope) { + Expression expression = buildDataScopeExpression(dataScope, RedisCloudUtils.getPermissionValue(dataScope.permissionScopeRedisKey())); + return expression == null ? null : new Parenthesis(expression); + } + + + private Expression buildDataScopeExpression(DataScope dataScope, String value) { + if(!"null".equals(value)){ + ExpressionList expressionList = new ExpressionList(Arrays.asList(value.split(",")).stream().map(StringValue::new).collect(Collectors.toList())); + // 设置左边的字段表达式,右边设置值。 + InExpression operatorInExpression = new InExpression(); + operatorInExpression.setLeftExpression(buildColumn(dataScope.tableAlias(), dataScope.permissionScopeName())); + operatorInExpression.setRightExpression(new Parenthesis(expressionList)); + return operatorInExpression; + + } + return null; + } + + /** + * 构建Column + * + * @param tableAlias 表别名 + * @param columnName 字段名称 + * @return 带表别名字段 + */ + private static Column buildColumn(String tableAlias, String columnName) { + if (StringUtils.isNotEmpty(tableAlias)) { + columnName = tableAlias + "." + columnName; + } + return new Column(columnName); + } + +} diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/config/MqttConnectInit.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/config/MqttConnectInit.java index b9a4134..b63eaa3 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/config/MqttConnectInit.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/config/MqttConnectInit.java @@ -1,10 +1,10 @@ package com.evotech.hd.cloud.mqtt.config; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.Date; -import java.util.concurrent.ConcurrentHashMap; - +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; +import jakarta.annotation.PreDestroy; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttException; @@ -12,16 +12,14 @@ import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.DateUtil; -import jakarta.annotation.PreDestroy; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.Date; +import java.util.concurrent.ConcurrentHashMap; -@Component +//@Component @Order(value = 20) @Slf4j public class MqttConnectInit implements ApplicationRunner { diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/BatteryStationService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/BatteryStationService.java index 4857fb0..b1a2f1d 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/BatteryStationService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/BatteryStationService.java @@ -1,15 +1,15 @@ package com.evotech.hd.cloud.service; -import java.util.List; -import java.util.Map; - import com.evotech.hd.cloud.entity.request.PageListBatteryStationRequest; +import com.evotech.hd.common.core.Dto.BaseResponse; import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.BatteryStation; import com.evotech.hd.common.core.entity.cloud.vo.BatteryStationVO; - import jakarta.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; + public interface BatteryStationService { public Result add(BatteryStation bs); @@ -29,4 +29,7 @@ public interface BatteryStationService { public void createQRCode2(String path, String width, HttpServletResponse response); public void downloadQRCode2(String path, String width, HttpServletResponse response); + + public BaseResponse> loginList(String proxyId); + } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/CompanyService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/CompanyService.java index 23e87d9..245d0bb 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/CompanyService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/CompanyService.java @@ -1,12 +1,13 @@ package com.evotech.hd.cloud.service; -import java.util.List; -import java.util.Map; - +import com.evotech.hd.common.core.Dto.BaseResponse; import com.evotech.hd.common.core.entity.BasePageRequest; import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.Company; +import java.util.List; +import java.util.Map; + public interface CompanyService { public Result add(Company company); @@ -19,4 +20,5 @@ public interface CompanyService { public Result> companyByCode(String ccode); + public BaseResponse loginOne(String code); } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/OrderSwapBatteryService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/OrderSwapBatteryService.java index 98fe4ee..4f016d4 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/OrderSwapBatteryService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/OrderSwapBatteryService.java @@ -1,23 +1,24 @@ package com.evotech.hd.cloud.service; -import java.util.List; - -import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse; import com.evotech.hd.cloud.entity.vo.NativePayVO; import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep; +import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse; import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest; import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest; +import java.text.ParseException; +import java.util.List; + public interface OrderSwapBatteryService { public Result addPre(OrderSwapBatteryPre osbp); public Result cancelPre(Integer id, Integer status); - public Result> listPre(PageListSwapOrderPreRequest plsopr); + public Result> listPre(PageListSwapOrderPreRequest plsopr) throws ParseException; public Result add(OrderSwapBattery osb); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/VehicleService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/VehicleService.java index da0820c..fae2bcc 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/VehicleService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/VehicleService.java @@ -1,12 +1,13 @@ package com.evotech.hd.cloud.service; -import java.util.List; - import com.evotech.hd.cloud.entity.request.PageListVehicleRequest; +import com.evotech.hd.common.core.Dto.BaseResponse; import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.VehicleInfo; import com.evotech.hd.common.core.entity.cloud.VehicleWechatUserRelation; +import java.util.List; + public interface VehicleService { public Result add(VehicleInfo vi); @@ -28,4 +29,8 @@ public interface VehicleService { public Result> listWechatUserRelation(String openid, String plateNum); public Result> listRelationUser(String PlantNo); + public BaseResponse> loginList(String companyCode); + + + } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationServiceImpl.java index 251d6ed..82df5d4 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationServiceImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationServiceImpl.java @@ -1,21 +1,11 @@ package com.evotech.hd.cloud.service.impl; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.security.KeyPair; -import java.util.Base64; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.springframework.beans.BeanUtils; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.StringUtils; - +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.IoUtil; +import cn.hutool.crypto.KeyUtil; +import cn.hutool.crypto.asymmetric.AsymmetricAlgorithm; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.evotech.hd.cloud.dao.BatteryStationDao; @@ -25,20 +15,26 @@ import com.evotech.hd.cloud.entity.BatteryStationSecretKey; import com.evotech.hd.cloud.entity.request.PageListBatteryStationRequest; import com.evotech.hd.cloud.service.BatteryStationService; import com.evotech.hd.cloud.service.rpc.WechatService; +import com.evotech.hd.common.core.Dto.BaseResponse; import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.BatteryStation; import com.evotech.hd.common.core.entity.cloud.VehicleInfo; import com.evotech.hd.common.core.entity.cloud.vo.BatteryStationVO; import com.evotech.hd.common.core.enums.CodeMsg; - -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.io.IoUtil; -import cn.hutool.crypto.KeyUtil; -import cn.hutool.crypto.asymmetric.AsymmetricAlgorithm; import jakarta.annotation.Resource; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.BeanUtils; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.security.KeyPair; +import java.util.*; @Service public class BatteryStationServiceImpl implements BatteryStationService { @@ -272,4 +268,8 @@ public class BatteryStationServiceImpl implements BatteryStationService { } } + public BaseResponse> loginList(String proxyCode) { + return new BaseResponse>().success(batteryStationDao.selectList(new LambdaQueryWrapper().eq(BatteryStation::getProxyId, proxyCode).select(BatteryStation::getPkId, BatteryStation::getCode))); + } + } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/CompanyServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/CompanyServiceImpl.java index c74f2d5..4d782e4 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/CompanyServiceImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/CompanyServiceImpl.java @@ -1,21 +1,22 @@ package com.evotech.hd.cloud.service.impl; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.springframework.stereotype.Service; - +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.evotech.hd.cloud.dao.CompanyDao; import com.evotech.hd.cloud.service.CompanyService; +import com.evotech.hd.common.core.Dto.BaseResponse; import com.evotech.hd.common.core.entity.BasePageRequest; import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.Company; import com.evotech.hd.common.core.enums.CodeMsg; import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; @Service @@ -78,4 +79,9 @@ public class CompanyServiceImpl implements CompanyService { return new Result>().success(m); } + @Override + public BaseResponse loginOne(String code) { + return new BaseResponse().success(companyDao.selectOne(new LambdaQueryWrapper().eq(Company::getCcode, code))); + } + } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java index e1c30c0..23775c3 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java @@ -1,50 +1,32 @@ package com.evotech.hd.cloud.service.impl; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; - +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.evotech.hd.cloud.dao.BatteryStationDao; -import com.evotech.hd.cloud.dao.BatteryStationDcDao; -import com.evotech.hd.cloud.dao.BatteryStationRobotDao; -import com.evotech.hd.cloud.dao.CompanyDao; -import com.evotech.hd.cloud.dao.VehicleInfoDao; +import com.evotech.hd.cloud.dao.*; import com.evotech.hd.cloud.entity.HomeStationOrderData; import com.evotech.hd.cloud.entity.request.HomeDataRequest; -import com.evotech.hd.cloud.entity.vo.HomeData1; -import com.evotech.hd.cloud.entity.vo.HomeData2; -import com.evotech.hd.cloud.entity.vo.HomeData3; -import com.evotech.hd.cloud.entity.vo.HomeData4; -import com.evotech.hd.cloud.entity.vo.HomeData5; -import com.evotech.hd.cloud.entity.vo.HomeData6; -import com.evotech.hd.cloud.entity.vo.HomeData7; +import com.evotech.hd.cloud.entity.vo.*; import com.evotech.hd.cloud.service.HomeService; import com.evotech.hd.common.core.dao.cloud.HomeDataOrderSwapCollateDao; import com.evotech.hd.common.core.dao.cloud.HomeDataTradeCollateDao; import com.evotech.hd.common.core.dao.resource.ProxyOperaterDao; import com.evotech.hd.common.core.dao.wechat.WechatUserDao; import com.evotech.hd.common.core.entity.Result; -import com.evotech.hd.common.core.entity.cloud.BatteryStation; -import com.evotech.hd.common.core.entity.cloud.BatteryStationDc; -import com.evotech.hd.common.core.entity.cloud.BatteryStationRobot; -import com.evotech.hd.common.core.entity.cloud.Company; -import com.evotech.hd.common.core.entity.cloud.HomeDataOrderSwapCollate; -import com.evotech.hd.common.core.entity.cloud.HomeDataTradeCollate; -import com.evotech.hd.common.core.entity.cloud.VehicleInfo; +import com.evotech.hd.common.core.entity.cloud.*; import com.evotech.hd.common.core.entity.resource.ProxyOperater; import com.evotech.hd.common.core.entity.wechat.WechatUser; import com.evotech.hd.common.core.enums.PayTypeEnums; import com.evotech.hd.common.core.enums.TradeTypeEnums; - -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.DateUtil; import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Service diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderSwapBatteryServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderSwapBatteryServiceImpl.java index 5547b3d..4e782ca 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderSwapBatteryServiceImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderSwapBatteryServiceImpl.java @@ -1,36 +1,22 @@ package com.evotech.hd.cloud.service.impl; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; - import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONConfig; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.evotech.hd.cloud.dao.*; -import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse; -import com.evotech.hd.cloud.mqtt.message.dto.newer.req.battery.BatterySwapReq; +import com.evotech.hd.cloud.entity.vo.NativePayVO; import com.evotech.hd.cloud.mqtt.enums.MqttMessageTypeEnum; import com.evotech.hd.cloud.mqtt.enums.RequestFunctionTypesEnum; import com.evotech.hd.cloud.mqtt.message.MessageTopic; import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader; +import com.evotech.hd.cloud.mqtt.message.dto.newer.req.battery.BatterySwapReq; import com.evotech.hd.cloud.mqtt.message.handle.MessageUtilService; -import com.evotech.hd.common.core.entity.cloud.*; -import com.evotech.hd.common.redis.utils.RedisUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.StringUtils; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.evotech.hd.cloud.entity.vo.NativePayVO; import com.evotech.hd.cloud.service.OrderSwapBatteryService; import com.evotech.hd.cloud.service.TradeService; import com.evotech.hd.cloud.service.WalletAccountService; @@ -40,6 +26,8 @@ import com.evotech.hd.cloud.utils.components.SwapOrderBasicFeeComponent; import com.evotech.hd.common.core.dao.cloud.OrderSwapBatteryDao; import com.evotech.hd.common.core.dao.wechat.WechatUserDao; import com.evotech.hd.common.core.entity.Result; +import com.evotech.hd.common.core.entity.cloud.*; +import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse; import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest; import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest; import com.evotech.hd.common.core.entity.wechat.WechatUser; @@ -48,8 +36,22 @@ import com.evotech.hd.common.core.enums.OrderStatusEnums; import com.evotech.hd.common.core.enums.PayTypeEnums; import com.evotech.hd.common.core.enums.TradeTypeEnums; import com.evotech.hd.common.core.utils.CommonUtil; - +import com.evotech.hd.common.redis.utils.RedisUtil; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.apache.commons.lang3.time.DateUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; @Slf4j @Service public class OrderSwapBatteryServiceImpl implements OrderSwapBatteryService { @@ -152,16 +154,18 @@ public class OrderSwapBatteryServiceImpl implements OrderSwapBatteryService { } @Override - public Result> listPre(PageListSwapOrderPreRequest plsopr) { + public Result> listPre(PageListSwapOrderPreRequest plsopr) throws ParseException { Page page = new Page(plsopr.getPageNo(), plsopr.getPageSize()); - page = orderSwapBatteryPreDao.selectPage(page, new QueryWrapper() - .eq(StringUtils.hasText(plsopr.getUcode()), "ucode", plsopr.getUcode()) - .eq(plsopr.getStatus() != null, "status", plsopr.getStatus()) - .eq(StringUtils.hasText(plsopr.getPlateNum()), "plate_num", plsopr.getPlateNum()) - .eq(StringUtils.hasText(plsopr.getStationCode()), "station_code", plsopr.getStationCode()) - .ge(StringUtils.hasText(plsopr.getSwapDayBegin()), "swap_day", plsopr.getSwapDayBegin()) - .le(StringUtils.hasText(plsopr.getSwapDayEnd()), "swap_day", plsopr.getSwapDayEnd()) - .orderByDesc("pk_id")); + page = orderSwapBatteryPreDao.selectPage(page, new LambdaQueryWrapper() + .eq(StringUtils.hasText(plsopr.getUcode()), OrderSwapBatteryPre::getUcode, plsopr.getUcode()) + .eq(plsopr.getStatus() != null, OrderSwapBatteryPre::getStatus, plsopr.getStatus()) + .eq(StringUtils.hasText(plsopr.getPlateNum()), OrderSwapBatteryPre::getPlateNum, plsopr.getPlateNum()) + .eq(StringUtils.hasText(plsopr.getStationCode()), OrderSwapBatteryPre::getStationCode, plsopr.getStationCode()) + .apply(StringUtils.hasText(plsopr.getSwapDayBegin()), "DATE_FORMAT(swap_day,'%Y-%m-%d') >={0}", DateFormatUtils.format(DateUtils.parseDate(plsopr.getSwapDayBegin(),"yyyyMMdd","yyyy-MM-dd"), "yyyy-MM-dd")) + .apply(StringUtils.hasText(plsopr.getSwapDayEnd()), "DATE_FORMAT(swap_day,'%Y-%m-%d') <={0}", DateFormatUtils.format(DateUtils.parseDate(plsopr.getSwapDayEnd(),"yyyyMMdd","yyyy-MM-dd"), "yyyy-MM-dd")) +// .ge(StringUtils.hasText(plsopr.getSwapDayBegin()), OrderSwapBatteryPre::getSwapDay, plsopr.getSwapDayBegin()) +// .le(StringUtils.hasText(plsopr.getSwapDayEnd()), OrderSwapBatteryPre::getSwapDay, plsopr.getSwapDayEnd()) + .orderByDesc(OrderSwapBatteryPre::getPkId)); if (page.getRecords().isEmpty()) { return new Result>().error(CodeMsg.DATABASE_RESULT_NULL); } @@ -220,19 +224,19 @@ public class OrderSwapBatteryServiceImpl implements OrderSwapBatteryService { statusList = Arrays.asList(plsor.getStatus().split(",")).stream().map(Integer::valueOf).toList(); } - page = orderSwapBatteryDao.selectPage(page, new QueryWrapper() - .eq(StringUtils.hasText(plsor.getOrderNo()), "order_no", plsor.getOrderNo()) - .eq(StringUtils.hasText(plsor.getPlateNum()), "plate_num", plsor.getPlateNum()) - .in(!plateNumList.isEmpty(), "plate_num", plateNumList) - .in(!statusList.isEmpty(), "status", statusList) - .ge(plsor.getOrderTimeBegin() != null, "order_time", plsor.getOrderTimeBegin()) - .le(plsor.getOrderTimeEnd() != null, "order_time", plsor.getOrderTimeEnd()) - .eq(StringUtils.hasText(plsor.getStationCode()), "station_code", plsor.getStationCode()) - .like(StringUtils.hasText(plsor.getStationName()), "station_name", plsor.getStationName()) - .eq(StringUtils.hasText(plsor.getUserId()), "order_pre_uid", plsor.getUserId()) - .eq(StringUtils.hasText(plsor.getTradeNo()), "trade_no", plsor.getTradeNo()) - .ne("del_flag", 1) - .orderByDesc("pk_id")); + page = orderSwapBatteryDao.selectPage(page, new LambdaQueryWrapper() + .eq(StringUtils.hasText(plsor.getOrderNo()), OrderSwapBattery::getOrderNo, plsor.getOrderNo()) + .eq(StringUtils.hasText(plsor.getPlateNum()), OrderSwapBattery::getPlateNum, plsor.getPlateNum()) + .in(!plateNumList.isEmpty(), OrderSwapBattery::getPlateNum, plateNumList) + .in(!statusList.isEmpty(), OrderSwapBattery::getStatus, statusList) + .ge(plsor.getOrderTimeBegin() != null, OrderSwapBattery::getOrderTime, plsor.getOrderTimeBegin()) + .le(plsor.getOrderTimeEnd() != null, OrderSwapBattery::getOrderTime, plsor.getOrderTimeEnd()) + .eq(StringUtils.hasText(plsor.getStationCode()), OrderSwapBattery::getStationCode, plsor.getStationCode()) + .like(StringUtils.hasText(plsor.getStationName()), OrderSwapBattery::getStationName, plsor.getStationName()) + .eq(StringUtils.hasText(plsor.getUserId()), OrderSwapBattery::getOrderPreId, plsor.getUserId()) + .eq(StringUtils.hasText(plsor.getTradeNo()), OrderSwapBattery::getTradeNo, plsor.getTradeNo()) + .ne(OrderSwapBattery::getDelFlag, 1) + .orderByDesc(OrderSwapBattery::getPkId)); if (page.getRecords().isEmpty()) { return new Result>().error(CodeMsg.DATABASE_RESULT_NULL); } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/VehicleServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/VehicleServiceImpl.java index e79cebe..9d4ef0d 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/VehicleServiceImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/VehicleServiceImpl.java @@ -1,23 +1,23 @@ package com.evotech.hd.cloud.service.impl; -import java.util.Date; -import java.util.List; - -import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; - +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.evotech.hd.cloud.dao.VehicleInfoDao; import com.evotech.hd.cloud.dao.VehicleWechatUserRelationDao; import com.evotech.hd.cloud.entity.request.PageListVehicleRequest; import com.evotech.hd.cloud.service.VehicleService; +import com.evotech.hd.common.core.Dto.BaseResponse; import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.VehicleInfo; import com.evotech.hd.common.core.entity.cloud.VehicleWechatUserRelation; import com.evotech.hd.common.core.enums.CodeMsg; - import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.util.Date; +import java.util.List; @Service @@ -67,6 +67,7 @@ public class VehicleServiceImpl implements VehicleService { .eq(StringUtils.hasText(plvr.getTypeCode()), "type_code", plvr.getTypeCode()) .like(StringUtils.hasText(plvr.getPlateNum()), "plate_num", plvr.getPlateNum()) .eq(plvr.getOwnerType() != null, "owner_type", plvr.getOwnerType()) + .like(StringUtils.hasText(plvr.getOwnerName()), "owner_name", plvr.getOwnerName()) .eq(StringUtils.hasText(plvr.getVinNo()), "vin_no", plvr.getVinNo()) .eq(StringUtils.hasText(plvr.getEngineNo()), "engine_no", plvr.getEngineNo()) .eq(StringUtils.hasText(plvr.getFrameworkNo()), "framework_no", plvr.getFrameworkNo()) @@ -150,6 +151,10 @@ public class VehicleServiceImpl implements VehicleService { return new Result>().success(list); } - + @Override + public BaseResponse> loginList(String companyCode) { + return new BaseResponse>().success(vehicleInfoDao.selectList(new LambdaQueryWrapper().eq(VehicleInfo::getCcode, companyCode).select(VehicleInfo::getPkId, VehicleInfo::getPlateNum))); + } + } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/RedisCloudUtils.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/RedisCloudUtils.java new file mode 100644 index 0000000..c996c82 --- /dev/null +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/RedisCloudUtils.java @@ -0,0 +1,178 @@ +package com.evotech.hd.cloud.utils; + +import com.evotech.hd.common.core.constant.HDConstant; +import com.evotech.hd.common.core.entity.resource.auth.AuthUser; +import com.evotech.hd.common.redis.utils.RedisUtil; +import com.evotech.hd.common.web.util.RequestContextUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.ObjectUtils; +import org.springframework.util.StringUtils; + +/** + * @desc: + * @ClassName:RedisCloudUtils + * @date: 2025年04月14日 15:24 + * @author: andy.shi + * @contact: 17330188597 + * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 + */ + +@Slf4j +public class RedisCloudUtils { + + public static AuthUser getUser(){ + AuthUser user = (AuthUser)getRedisObjectValue("user"); + return (ObjectUtils.isEmpty(user) ? null : user); + } + + public static String getRoleCode(){ + String roles = getRedisStringValue("rcodes"); + return StringUtils.isEmpty(roles) ? "" : roles; + } + + public static String getPermissionValue(String key){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + key+":"+getUserPkId()); + } + + public static String getStationCode(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_CODE+":"+getUserPkId()); + } + public static String getStationId(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_ID+":"+getUserPkId()); + } + + public static String getCompanyCode(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_CODE+":"+getUserPkId()); + } + public static String getCompanyId(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_ID+":"+getUserPkId()); + } + + public static String getCarCode(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_CODE+":"+getUserPkId()); + } + public static String getCarId(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_ID+":"+getUserPkId()); + } + + private static Integer getUserPkId(){ + AuthUser user = getUser(); + if(org.apache.commons.lang3.ObjectUtils.isEmpty(user) || user.getPkId() == null){ + return null; + } + return user.getPkId(); + } + + +// public static Integer getCompanyScopeId(){ +// return getUser().getPkId(); +// } + + + /** + * 获取当前登录的角色信息, 0 站端, 1 管理员, 2 运营商, 3 公司, + * @author: andy.shi + * @contact: 17330188597 + * @date: 2025/4/14/周一 14:21 + * @return: * @return: java.lang.String + */ + public static String getRoleType(){ + String roles = getRoleCode(); + if(isAdmin(roles)){ + return "1"; + } + if(isOperator(roles)){ + return "2"; + } + if(isCompany(roles)){ + return "3"; + } + return "0"; + } + + //如果不等于-1 则证明为管理员 + public static Boolean isAdmin(String roles){ + return isAuthority(roles, HDConstant.SYSTEM_MANAGER_ROLE_CODE); + } + + public static Boolean isOperator(String roles){ + return isAuthority(roles,HDConstant.OPERATOR_ROLE_CODE); + } + + public static Boolean isCompany(String roles){ + return isAuthority(roles,HDConstant.COMPANY_ROLE_CODE); + } + + private static Boolean isAuthority(String checkParamRoles, String paramRoleCode){ + if(org.apache.commons.lang3.StringUtils.isNotEmpty(checkParamRoles)){ + return checkParamRoles.lastIndexOf(paramRoleCode) != -1; + } + return getRoleCode().lastIndexOf(paramRoleCode) != -1; + } + + + /*** + * 根据token拼接key, 获取String结果 + * @param key + * @return + */ + private static String getRedisStringValue(String key) { + return String.valueOf(getRedisObjectValue(key)); + } + + /*** + * 根据token拼接key, 获取Object结果 + * @param key + * @return + */ + private static Object getRedisObjectValue(String key) { + String token = RequestContextUtil.getToken(); + if(StringUtils.isEmpty(token)){ + log.error("SpringUtil.getRedisValue========== token is null"); + return null; + } + String jti = null; + try { + jti = TokenUtil.getJti(token); + if(StringUtils.isEmpty(jti)){ + log.error("SpringUtil.getRedisValue========== jtj is null"); + return null; + } + } catch (Exception e) { + log.error("SpringUtil.gegetRedisValuetUser========== jtj is null"); + return null; + } + return getValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + jti + ":"+key); + } + + + /*** + * 根据key获取redis缓存 + * @param key + * @return + */ + private static String getStringValue(String key){ + Object obj = getValue(key); + return ObjectUtils.isEmpty(obj) ? null : String.valueOf(obj); + } + + /*** + * 根据key获取redis缓存 + * @param key + * @return + */ + private static Object getValue(String key){ + RedisUtil redisUtil = SpringUtil.getBean(RedisUtil.class); + if(ObjectUtils.isEmpty(redisUtil)){ + log.error("SpringUtil.getRedisValue========== redisUtil is null"); + } + Object obj = redisUtil.get(key); + if(ObjectUtils.isEmpty(obj)){ + log.error("SpringUtil.getRedisValue=={}========== obj is null",key); + return null; + } + log.info("SpringUtil.getRedisValue=={}===={}",key,String.valueOf(obj)); + return obj; + } + +} diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/SpringUtil.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/SpringUtil.java index 1deb3f3..00814a2 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/SpringUtil.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/SpringUtil.java @@ -1,10 +1,15 @@ package com.evotech.hd.cloud.utils; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; /** * @desc: @@ -48,4 +53,34 @@ public class SpringUtil implements ApplicationContextAware { return b; } + public static HttpServletRequest getRequest() { + RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes(); + if(null == requestAttributes) { + log.warn("The 'RequestAttributes' object is null, so can`t get 'HttpServletRequest' object!"); + + return null; + } + ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)requestAttributes; + HttpServletRequest request = servletRequestAttributes.getRequest(); + + return request; + } + + public static HttpServletResponse getResponse() { + RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes(); + if(requestAttributes == null) { + log.warn("The 'RequestAttributes' object is null, so can`t get 'HttpServletResponse' object!"); + + return null; + } + + ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttributes; + HttpServletResponse resp = servletRequestAttributes.getResponse(); + return resp; + } + + + + + } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/TokenUtil.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/TokenUtil.java new file mode 100644 index 0000000..cb1d10c --- /dev/null +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/TokenUtil.java @@ -0,0 +1,56 @@ +package com.evotech.hd.cloud.utils; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.jwt.JWT; +import cn.hutool.jwt.JWTUtil; +import org.springframework.security.oauth2.jwt.JwtClaimNames; + +import java.util.Date; + +/** + * token解析工具类 + */ +public class TokenUtil { + + + public static JWT parseToJwt(String token) { + JWT parseToken = JWTUtil.parseToken(token); + return parseToken; + } + + + /** + * 从token中获取userId + */ + public static String getUserId(String token) { + String uid = parseToJwt(token).getPayloads().getStr("uid"); + return uid; + } + + /** + * 从token中获取rcodes + */ + public static String getRcodes(String token) { + String uid = parseToJwt(token).getPayloads().getStr("rcodes"); + return uid; + } + + + /** + * 从token中获取jti + */ + public static String getJti(String token) { + String jti = parseToJwt(token).getPayloads().getStr(JwtClaimNames.JTI).replaceAll("-", ""); + return jti; + } + + + /** + * 从token中获取过期时间 + */ + public static Date getExp(String token) { + String exp = parseToJwt(token).getPayloads().getStr(JwtClaimNames.EXP).toString(); + return DateUtil.date(Long.valueOf(exp) * 1000); + } + +} diff --git a/cloud-manage-server/src/main/resources/application.yml b/cloud-manage-server/src/main/resources/application.yml index 79362b0..dacc441 100644 --- a/cloud-manage-server/src/main/resources/application.yml +++ b/cloud-manage-server/src/main/resources/application.yml @@ -12,7 +12,7 @@ logging: spring: # 服务名称必须带上,不然nacos服务列表中没有,也不会有注册成功的信息 application: - name: cloud-server + name: cloud-server #${cloud-manage-server:cloud-server} jackson: timeZone: GMT+08:00 date-format: yyyy-MM-dd HH:mm:ss @@ -20,7 +20,10 @@ spring: write-dates-as-timestamps: false config: import: - - nacos:${spring.application.name}.yaml?refreshEnabled=true + - nacos:yt-common.properties?refreshEnabled=true + - nacos:cloud-server.yaml?refreshEnabled=true + + cloud: nacos: serverAddr: 192.168.5.213:8848 @@ -35,7 +38,8 @@ spring: metadata: management: context-path: ${server.servlet.context-path}/actuator - + config: + namespace: ${nacos.namespace:public} # boot: # admin: # client: @@ -45,6 +49,7 @@ spring: # username: jdyl # password: jdyl123 # 添加这个,客户端就显示ip,而不是主机名,我用nacos是显示的主机名 + # instance: # prefer-ip: true # 为springbootadmin开启所有检查 diff --git a/cloud-manage-server/src/test/java/com/evotech/hd/cloud/AddTestData.java b/cloud-manage-server/src/test/java/com/evotech/hd/cloud/AddTestData.java index 439e51a..f599e3c 100644 --- a/cloud-manage-server/src/test/java/com/evotech/hd/cloud/AddTestData.java +++ b/cloud-manage-server/src/test/java/com/evotech/hd/cloud/AddTestData.java @@ -1,68 +1,8 @@ package com.evotech.hd.cloud; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.LinkedList; -import java.util.List; -import java.util.stream.Collectors; - -import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.evotech.hd.cloud.dao.*; -import com.evotech.hd.cloud.entity.BatteryStationSecretKey; -import com.evotech.hd.cloud.mqtt.enums.RequestFunctionTypesEnum; -import com.evotech.hd.cloud.mqtt.message.MessageTopic; -import com.evotech.hd.cloud.mqtt.message.handle.RequestMessageService; -import com.evotech.hd.cloud.service.BatteryStationCdStrategyService; -import com.evotech.hd.common.core.constant.HDConstant; -import com.evotech.hd.common.redis.utils.RedisUtil; -import org.eclipse.paho.client.mqttv3.MqttClient; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.evotech.hd.cloud.controller.test.service.MqttConfigService; -import com.evotech.hd.cloud.controller.test.service.MqttTestUtil; -import com.evotech.hd.cloud.mqtt.enums.MqttMessageTypeEnum; -import com.evotech.hd.cloud.mqtt.enums.StateFunctionTypesEnum; -import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader; -import com.evotech.hd.cloud.mqtt.message.MyMqttMessage; -import com.evotech.hd.cloud.mqtt.message.dto.newer.state.OrderStatus; -import com.evotech.hd.cloud.mqtt.message.dto.newer.state.OrderStatusData; -import com.evotech.hd.cloud.mqtt.message.dto.newer.state.SwapStep; -import com.evotech.hd.cloud.mqtt.message.handle.MessageUtilService; -import com.evotech.hd.cloud.service.BatteryStationDcService; -import com.evotech.hd.cloud.service.OrderSwapBatteryService; -import com.evotech.hd.cloud.service.WalletAccountService; -import com.evotech.hd.cloud.utils.components.SwapOrderBasicFeeComponent; -import com.evotech.hd.common.core.dao.cloud.OrderSwapBatteryDao; -import com.evotech.hd.common.core.dao.cloud.PreOrderRelationSwapOrderDao; -import com.evotech.hd.common.core.dao.resource.BatteryTypeDao; -import com.evotech.hd.common.core.dao.resource.CarTypeDao; -import com.evotech.hd.common.core.dao.wechat.WechatUserDao; -import com.evotech.hd.common.core.entity.Result; -import com.evotech.hd.common.core.entity.cloud.BatteryStation; -import com.evotech.hd.common.core.entity.cloud.BatteryStationDc; -import com.evotech.hd.common.core.entity.cloud.Company; -import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery; -import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre; -import com.evotech.hd.common.core.entity.cloud.PreOrderRelationSwapOrder; -import com.evotech.hd.common.core.entity.cloud.TradeDetail; -import com.evotech.hd.common.core.entity.cloud.VehicleInfo; -import com.evotech.hd.common.core.entity.cloud.VehicleWechatUserRelation; -import com.evotech.hd.common.core.entity.cloud.WalletAccount; -import com.evotech.hd.common.core.entity.cloud.WalletAccountDetail; -import com.evotech.hd.common.core.entity.resource.BatteryType; -import com.evotech.hd.common.core.entity.resource.CarType; -import com.evotech.hd.common.core.entity.wechat.WechatUser; -import com.evotech.hd.common.core.enums.CodeMsg; -import com.evotech.hd.common.core.enums.OrderStatusEnums; -import com.evotech.hd.common.core.enums.TradeTypeEnums; -import com.evotech.hd.common.core.utils.CommonUtil; - import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.crypto.Mode; import cn.hutool.crypto.Padding; @@ -70,7 +10,55 @@ import cn.hutool.crypto.symmetric.AES; import cn.hutool.crypto.symmetric.SymmetricCrypto; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.evotech.hd.cloud.controller.test.service.MqttConfigService; +import com.evotech.hd.cloud.controller.test.service.MqttTestUtil; +import com.evotech.hd.cloud.dao.*; +import com.evotech.hd.cloud.entity.BatteryStationSecretKey; +import com.evotech.hd.cloud.mqtt.enums.MqttMessageTypeEnum; +import com.evotech.hd.cloud.mqtt.enums.RequestFunctionTypesEnum; +import com.evotech.hd.cloud.mqtt.enums.StateFunctionTypesEnum; +import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader; +import com.evotech.hd.cloud.mqtt.message.MyMqttMessage; +import com.evotech.hd.cloud.mqtt.message.dto.newer.state.OrderStatus; +import com.evotech.hd.cloud.mqtt.message.dto.newer.state.OrderStatusData; +import com.evotech.hd.cloud.mqtt.message.dto.newer.state.SwapStep; +import com.evotech.hd.cloud.mqtt.message.handle.MessageUtilService; +import com.evotech.hd.cloud.service.BatteryStationCdStrategyService; +import com.evotech.hd.cloud.service.BatteryStationDcService; +import com.evotech.hd.cloud.service.OrderSwapBatteryService; +import com.evotech.hd.cloud.service.WalletAccountService; +import com.evotech.hd.cloud.utils.components.SwapOrderBasicFeeComponent; +import com.evotech.hd.common.core.constant.HDConstant; +import com.evotech.hd.common.core.dao.cloud.OrderSwapBatteryDao; +import com.evotech.hd.common.core.dao.cloud.PreOrderRelationSwapOrderDao; +import com.evotech.hd.common.core.dao.resource.BatteryTypeDao; +import com.evotech.hd.common.core.dao.resource.CarTypeDao; +import com.evotech.hd.common.core.dao.wechat.WechatUserDao; +import com.evotech.hd.common.core.entity.Result; +import com.evotech.hd.common.core.entity.cloud.*; +import com.evotech.hd.common.core.entity.resource.BatteryType; +import com.evotech.hd.common.core.entity.resource.CarType; +import com.evotech.hd.common.core.entity.wechat.WechatUser; +import com.evotech.hd.common.core.enums.CodeMsg; +import com.evotech.hd.common.core.enums.OrderStatusEnums; +import com.evotech.hd.common.core.enums.TradeTypeEnums; +import com.evotech.hd.common.core.utils.CommonUtil; +import com.evotech.hd.common.redis.utils.RedisUtil; import jakarta.annotation.Resource; +import org.eclipse.paho.client.mqttv3.MqttClient; +import org.eclipse.paho.client.mqttv3.MqttException; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; @SpringBootTest(classes = CloudManageServerApplication.class) public class AddTestData { @@ -140,12 +128,13 @@ public class AddTestData { // @Test - void testStrategyAndMqttM2S() { + void testStrategyAndMqttM2S() throws MqttException { testClient = mqttService.connect(); // 1. 查 站 List stationList = batteryStationDao.selectList(new LambdaUpdateWrapper().eq(BatteryStation::getPkId, 4)); BatteryStation station = stationList.get(0); sendStrategyInfo(station.getCode()); + testClient.disconnect(); } diff --git a/gateway-server/src/main/java/com/evotech/hd/gateway/oauth2/AuthorizationManager.java b/gateway-server/src/main/java/com/evotech/hd/gateway/oauth2/AuthorizationManager.java index 6cc71ac..828b119 100644 --- a/gateway-server/src/main/java/com/evotech/hd/gateway/oauth2/AuthorizationManager.java +++ b/gateway-server/src/main/java/com/evotech/hd/gateway/oauth2/AuthorizationManager.java @@ -1,11 +1,14 @@ package com.evotech.hd.gateway.oauth2; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CompletableFuture; -import java.util.stream.Collectors; - +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.evotech.hd.common.core.constant.HDConstant; +import com.evotech.hd.common.core.enums.CodeMsg; +import com.evotech.hd.common.core.utils.XCXUtil; +import com.evotech.hd.common.redis.utils.RedisUtil; +import com.evotech.hd.gateway.oauth2.service.WechatService; +import com.evotech.hd.gateway.utils.TokenUtil; +import jakarta.annotation.Resource; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpMethod; import org.springframework.http.server.reactive.ServerHttpRequest; @@ -18,19 +21,15 @@ import org.springframework.security.oauth2.core.OAuth2Error; import org.springframework.security.web.server.authorization.AuthorizationContext; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; - -import com.evotech.hd.common.core.constant.HDConstant; -import com.evotech.hd.common.core.enums.CodeMsg; -import com.evotech.hd.common.core.utils.XCXUtil; -import com.evotech.hd.common.redis.utils.RedisUtil; -import com.evotech.hd.gateway.oauth2.service.WechatService; -import com.evotech.hd.gateway.utils.TokenUtil; - -import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONUtil; -import jakarta.annotation.Resource; import reactor.core.publisher.Mono; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; + /** * 资源服务的权限管理器 * 鉴权时统一抛出OAuth2AuthorizationException @@ -44,9 +43,14 @@ public class AuthorizationManager implements ReactiveAuthorizationManager objectList = redisUtil.lGet(HDConstant.LOGIN_CACHE_KEY_PREFIX + jti + ":perms", 0, -1); List permList = objectList.stream().map(i -> i.toString()).toList(); String path = request.getURI().getPath().substring(8); - if (!permList.contains("gateway:" + path)) { +// if (!permList.contains("gateway:" + path)) { +// throw new OAuth2AuthorizationException(new OAuth2Error(CodeMsg.ACCESS_DENY.getCode(), CodeMsg.ACCESS_DENY.getMsg(), uri)); +// } + //已授权接口,和无需授权接口 + if (!permList.contains(path) && !Arrays.asList(notPermissionUrl.split(";")).contains(path)) { throw new OAuth2AuthorizationException(new OAuth2Error(CodeMsg.ACCESS_DENY.getCode(), CodeMsg.ACCESS_DENY.getMsg(), uri)); } return true; diff --git a/gateway-server/src/main/resources/application.yml b/gateway-server/src/main/resources/application.yml index 1f6168e..550c5e9 100644 --- a/gateway-server/src/main/resources/application.yml +++ b/gateway-server/src/main/resources/application.yml @@ -24,12 +24,15 @@ spring: max-in-memory-size: 10485760 config: import: + - nacos:yt-common.properties?refreshEnabled=true - nacos:${spring.application.name}.yaml?refreshEnabled=true cloud: nacos: serverAddr: 192.168.5.213:8848 username: nacos password: nacos + config: + namespace: ${nacos.namespace:public} discovery: namespace: ${nacos.namespace:public} register-enabled: true diff --git a/resource-server/src/main/java/com/evotech/hd/resource/controller/ProxyOperaterController.java b/resource-server/src/main/java/com/evotech/hd/resource/controller/ProxyOperaterController.java index 10d51ab..18cf23f 100644 --- a/resource-server/src/main/java/com/evotech/hd/resource/controller/ProxyOperaterController.java +++ b/resource-server/src/main/java/com/evotech/hd/resource/controller/ProxyOperaterController.java @@ -1,24 +1,22 @@ package com.evotech.hd.resource.controller; -import java.util.List; - -import org.springdoc.core.annotations.ParameterObject; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.resource.ProxyOperater; import com.evotech.hd.resource.entity.request.PageListProxyOperaterRequest; import com.evotech.hd.resource.service.ProxyOperaterService; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport; - import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; @Tag(name = "运营商") @ApiSupport(order = 107) @@ -59,4 +57,5 @@ public class ProxyOperaterController { } + } diff --git a/resource-server/src/main/java/com/evotech/hd/resource/service/DictService.java b/resource-server/src/main/java/com/evotech/hd/resource/service/DictService.java index 3528761..5398bf0 100644 --- a/resource-server/src/main/java/com/evotech/hd/resource/service/DictService.java +++ b/resource-server/src/main/java/com/evotech/hd/resource/service/DictService.java @@ -1,7 +1,5 @@ package com.evotech.hd.resource.service; -import java.util.List; - import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.request.ListDictRequest; import com.evotech.hd.common.core.entity.resource.dict.Dict; @@ -9,6 +7,8 @@ import com.evotech.hd.common.core.entity.resource.dict.DictType; import com.evotech.hd.resource.entity.DictInfo; import com.evotech.hd.resource.entity.request.ListDictTypeRequest; +import java.util.List; + public interface DictService { public Result addType(DictType dt); @@ -29,4 +29,6 @@ public interface DictService { public Result> listDictInfo(String typeCode); + public List listDictByType(String typeCode); + } diff --git a/resource-server/src/main/java/com/evotech/hd/resource/service/impl/DictServiceImpl.java b/resource-server/src/main/java/com/evotech/hd/resource/service/impl/DictServiceImpl.java index badc42a..0eafc51 100644 --- a/resource-server/src/main/java/com/evotech/hd/resource/service/impl/DictServiceImpl.java +++ b/resource-server/src/main/java/com/evotech/hd/resource/service/impl/DictServiceImpl.java @@ -1,10 +1,7 @@ package com.evotech.hd.resource.service.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; - +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.evotech.hd.common.core.dao.resource.dict.DictDao; import com.evotech.hd.common.core.dao.resource.dict.DictTypeDao; @@ -16,15 +13,19 @@ import com.evotech.hd.common.core.enums.CodeMsg; import com.evotech.hd.resource.entity.DictInfo; import com.evotech.hd.resource.entity.request.ListDictTypeRequest; import com.evotech.hd.resource.service.DictService; - import jakarta.annotation.Resource; - +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; @Service +@Slf4j public class DictServiceImpl implements DictService { @Resource @@ -128,4 +129,14 @@ public class DictServiceImpl implements DictService { return new Result>().success(list); } + @Override + public List listDictByType(String typeCode) { + DictType dictType = dictTypeDao.selectOne(new LambdaQueryWrapper().eq(DictType::getTypeCode, typeCode)); + if(ObjectUtils.isEmpty(dictType)){ + log.info("typeCode:{}===未查询到当前类型", typeCode); + return Arrays.asList(new Dict()); + } + return dictDao.selectList(new LambdaQueryWrapper().eq(Dict::getTypeId, dictType.getPkId()).orderByAsc(Dict::getSort)); + } + } diff --git a/resource-server/src/main/java/com/evotech/hd/resource/service/impl/RoleServiceImpl.java b/resource-server/src/main/java/com/evotech/hd/resource/service/impl/RoleServiceImpl.java index 1ea68c9..7f760d8 100644 --- a/resource-server/src/main/java/com/evotech/hd/resource/service/impl/RoleServiceImpl.java +++ b/resource-server/src/main/java/com/evotech/hd/resource/service/impl/RoleServiceImpl.java @@ -1,15 +1,10 @@ package com.evotech.hd.resource.service.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import org.apache.ibatis.executor.BatchResult; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.StringUtils; - +import cn.hutool.core.util.StrUtil; +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.dao.resource.auth.AuthRoleDao; import com.evotech.hd.common.core.dao.resource.auth.AuthRoleResourceDao; import com.evotech.hd.common.core.dao.resource.auth.AuthUserRoleDao; @@ -17,13 +12,22 @@ import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.resource.auth.AuthRole; import com.evotech.hd.common.core.entity.resource.auth.AuthRoleResource; import com.evotech.hd.common.core.entity.resource.auth.AuthUserRole; +import com.evotech.hd.common.core.entity.resource.dict.Dict; import com.evotech.hd.common.core.enums.CodeMsg; import com.evotech.hd.resource.entity.request.DelAddRoleSourceRequest; +import com.evotech.hd.resource.service.DictService; import com.evotech.hd.resource.service.RoleService; - -import cn.hutool.core.util.StrUtil; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.executor.BatchResult; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j @Service public class RoleServiceImpl implements RoleService { @@ -33,18 +37,49 @@ public class RoleServiceImpl implements RoleService { private AuthRoleResourceDao authRoleResourceDao; @Resource private AuthUserRoleDao authUserRoleDao; - + @Resource + private DictService dictService; @Override public Result add(AuthRole r) { r.setCtime(new Date()); int n = authRoleDao.insert(r); if (n == 1) { - return new Result().success(n); + try { + addDefaultMenu(r); + } catch (Exception e) { + log.error("创建角色成功了, 但是初始化默认权限失败了",e); + } + return new Result().success(n); } return new Result().error("添加角色出错!"); } - + + public void addDefaultMenu(AuthRole r){ + List dictList = dictService.listDictByType(HDConstant.DEFAULT_MENU_TYPE); + if(CollectionUtils.isNotEmpty(dictList)){ + Map roleResourceMap = new LinkedHashMap<>(); + dictList.stream().forEach(dict ->{ + String[] codeArr = dict.getDictCode().split("_"); + String val = roleResourceMap.containsKey(codeArr[0])? roleResourceMap.get(codeArr[0]) : ""; + if(StringUtils.isEmpty(val)){ + val = dict.getDictValue(); + }else{ + val += "," + dict.getDictValue(); + } + roleResourceMap.put(codeArr[0], val); + }); + DelAddRoleSourceRequest darsr = new DelAddRoleSourceRequest(); + darsr.setRcode(r.getRcode()); + darsr.setTypes(roleResourceMap.keySet().stream().collect(Collectors.joining(";"))); + darsr.setSourceIds(roleResourceMap.values().stream().collect(Collectors.joining(";"))); + delAddRoleSource(darsr); + } + + } + + + @Override @Transactional public Result delete(Integer rid) { @@ -154,10 +189,9 @@ public class RoleServiceImpl implements RoleService { if (typeArr.length != sourceArr.length) { return new Result().error("参数格式错误"); } - // 2. 删除原来的 - authRoleResourceDao.delete(new QueryWrapper().eq("rcode", rcode)); // 3. 增加新的 Date d = new Date(); + List oldResourceIds = new ArrayList<>(); List list = new ArrayList(); for (int i = 0; i < typeArr.length; i++) { String[] sourceIdArr = sourceArr[i].split(","); @@ -167,9 +201,13 @@ public class RoleServiceImpl implements RoleService { arr.setResourceType(typeArr[i]); arr.setResourceId(Integer.valueOf(sourceIdArr[j])); arr.setCtime(d); - list.add(arr); + list.add(arr); + oldResourceIds.add(arr.getResourceId()); } } + // 2. 删除原来的 + authRoleResourceDao.delete(new LambdaQueryWrapper().eq(AuthRoleResource::getRcode, rcode).in(AuthRoleResource::getResourceType, typeArr).in(CollectionUtils.isNotEmpty(oldResourceIds),AuthRoleResource::getResourceId, oldResourceIds)); + return addRoleSource(list); } diff --git a/resource-server/src/main/resources/application.yml b/resource-server/src/main/resources/application.yml index aa4b2a2..1ef8935 100644 --- a/resource-server/src/main/resources/application.yml +++ b/resource-server/src/main/resources/application.yml @@ -12,10 +12,11 @@ logging: spring: # 服务名称必须带上,不然nacos服务列表中没有,也不会有注册成功的信息 application: - name: resource-server + name: ${resource-server:resource-server} config: import: - - nacos:${spring.application.name}.yaml?refreshEnabled=true + - nacos:yt-common.properties?refreshEnabled=true + - nacos:resource-server.yaml?refreshEnabled=true cloud: nacos: serverAddr: 192.168.5.213:8848 @@ -30,6 +31,8 @@ spring: metadata: management: context-path: ${server.servlet.context-path}/actuator + config: + namespace: ${nacos.namespace:public} # 为springbootadmin开启所有检查 management: endpoints: diff --git a/resource-server/src/main/resources/mapper/AuthUserMapper.xml b/resource-server/src/main/resources/mapper/AuthUserMapper.xml index 634e361..8db01fc 100644 --- a/resource-server/src/main/resources/mapper/AuthUserMapper.xml +++ b/resource-server/src/main/resources/mapper/AuthUserMapper.xml @@ -26,6 +26,7 @@ + diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/service/rpc/CloudService.java b/wechat-server/src/main/java/com/evotech/hd/wechat/service/rpc/CloudService.java index eb2757f..a1327dc 100644 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/service/rpc/CloudService.java +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/service/rpc/CloudService.java @@ -1,10 +1,12 @@ package com.evotech.hd.wechat.service.rpc; -import java.util.List; -import java.util.Map; - - +import com.evotech.hd.common.core.entity.Result; +import com.evotech.hd.common.core.entity.cloud.*; import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest; +import com.evotech.hd.common.core.entity.cloud.request.PageListWalletRequest; +import com.evotech.hd.common.core.entity.cloud.vo.BatteryStationVO; import com.evotech.hd.common.core.entity.wechat.WechatPayAttach; import jakarta.validation.constraints.NotBlank; import org.springframework.cloud.openfeign.FeignClient; @@ -14,20 +16,10 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; -import com.evotech.hd.common.core.entity.Result; -import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery; -import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre; -import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep; -import com.evotech.hd.common.core.entity.cloud.TradeDetail; -import com.evotech.hd.common.core.entity.cloud.VehicleInfo; -import com.evotech.hd.common.core.entity.cloud.WalletAccount; -import com.evotech.hd.common.core.entity.cloud.WalletAccountDetail; -import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest; -import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest; -import com.evotech.hd.common.core.entity.cloud.request.PageListWalletRequest; -import com.evotech.hd.common.core.entity.cloud.vo.BatteryStationVO; +import java.util.List; +import java.util.Map; -@FeignClient(value = "cloud-server") +@FeignClient(value = "${CLOUD-SERVER-API-NAME}") public interface CloudService { @PostMapping(value = "/cloud/order/swap/pre/add", diff --git a/wechat-server/src/main/resources/application.yml b/wechat-server/src/main/resources/application.yml index 7f3ca00..21b8843 100644 --- a/wechat-server/src/main/resources/application.yml +++ b/wechat-server/src/main/resources/application.yml @@ -12,10 +12,11 @@ logging: spring: # 服务名称必须带上,不然nacos服务列表中没有,也不会有注册成功的信息 application: - name: wechat-server + name: ${cloud-manage-server:wechat-server} config: import: - - nacos:${spring.application.name}.yaml?refreshEnabled=true + - nacos:yt-common.properties?refreshEnabled=true + - nacos:wechat-server.yaml?refreshEnabled=true cloud: nacos: serverAddr: 192.168.5.213:8848 @@ -30,6 +31,8 @@ spring: metadata: management: context-path: ${server.servlet.context-path}/actuator + config: + namespace: ${nacos.namespace:public} # 为springbootadmin开启所有检查 management: From fffc4b9eab58ea6abd882255fc814722863392aa Mon Sep 17 00:00:00 2001 From: andy <1042025947@qq.com> Date: Wed, 16 Apr 2025 14:15:42 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=9D=83=E9=99=90?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hd/cloud/handler/DataScopeHandler.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/handler/DataScopeHandler.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/handler/DataScopeHandler.java index 7ed1699..8440d72 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/handler/DataScopeHandler.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/handler/DataScopeHandler.java @@ -46,12 +46,20 @@ public class DataScopeHandler implements MultiDataPermissionHandler { if(table != null && CollectionUtils.isNotEmpty(table.getNameParts()) && !"1".equals(RedisCloudUtils.getRoleType())){ String roleCode = RedisCloudUtils.getRoleCode(); Class mapperClazz = Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf("."))); + //优先检查是不是单角色权限 + DataScope dataScope = mapperClazz.getAnnotation(DataScope.class); + if (ObjectUtils.isNotEmpty(dataScope) && dataScope.enabled()) { + if(dataScope.permissionObject().equals(roleCode)){ + return buildDataScopeByAnnotation(dataScope); + } + } + //如果不是, 检查多角色权限 DataScopes dataScopesList = mapperClazz.getAnnotation(DataScopes.class); if (ObjectUtils.isNotEmpty(dataScopesList)) { - for (DataScope dataScope :dataScopesList.value()){ - if(dataScope.enabled()){ - if(dataScope.permissionObject().equals(roleCode)){ - return buildDataScopeByAnnotation(dataScope); + for (DataScope dataScopes :dataScopesList.value()){ + if(dataScopes.enabled()){ + if(dataScopes.permissionObject().equals(roleCode)){ + return buildDataScopeByAnnotation(dataScopes); } } } From 9245a0641d66c1696be0680cf72260838396ccfc Mon Sep 17 00:00:00 2001 From: andy <1042025947@qq.com> Date: Wed, 16 Apr 2025 16:05:30 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hd/common/web/util}/SpringUtil.java | 2 +- ... => PermissionCloudMybatisPlusConfig.java} | 4 +- .../MqttMessageRequestExchangeProcessor.java | 3 +- .../hd/cloud/utils/RedisCloudUtils.java | 1 + resource-server/pom.xml | 14 ++ .../PermissionResourceMybatisPlusConfig.java | 31 +++ .../hd/resource/handler/DataScopeHandler.java | 115 +++++++++++ .../hd/resource/utils/RedisResourceUtils.java | 179 ++++++++++++++++++ .../evotech/hd/resource/utils/TokenUtil.java | 56 ++++++ wechat-server/pom.xml | 12 +- .../PermissionWechatMybatisPlusConfig.java | 30 +++ .../hd/wechat/handler/DataScopeHandler.java | 115 +++++++++++ .../utils/permission/RedisWechatUtils.java | 179 ++++++++++++++++++ .../hd/wechat/utils/permission/TokenUtil.java | 56 ++++++ 14 files changed, 790 insertions(+), 7 deletions(-) rename {cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils => base-commons/common-web/src/main/java/com/evotech/hd/common/web/util}/SpringUtil.java (98%) rename cloud-manage-server/src/main/java/com/evotech/hd/cloud/config/{NewMybatisPlusConfig.java => PermissionCloudMybatisPlusConfig.java} (91%) create mode 100644 resource-server/src/main/java/com/evotech/hd/resource/config/permission/PermissionResourceMybatisPlusConfig.java create mode 100644 resource-server/src/main/java/com/evotech/hd/resource/handler/DataScopeHandler.java create mode 100644 resource-server/src/main/java/com/evotech/hd/resource/utils/RedisResourceUtils.java create mode 100644 resource-server/src/main/java/com/evotech/hd/resource/utils/TokenUtil.java create mode 100644 wechat-server/src/main/java/com/evotech/hd/wechat/config/PermissionWechatMybatisPlusConfig.java create mode 100644 wechat-server/src/main/java/com/evotech/hd/wechat/handler/DataScopeHandler.java create mode 100644 wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/RedisWechatUtils.java create mode 100644 wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/TokenUtil.java diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/SpringUtil.java b/base-commons/common-web/src/main/java/com/evotech/hd/common/web/util/SpringUtil.java similarity index 98% rename from cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/SpringUtil.java rename to base-commons/common-web/src/main/java/com/evotech/hd/common/web/util/SpringUtil.java index 00814a2..7086f1f 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/SpringUtil.java +++ b/base-commons/common-web/src/main/java/com/evotech/hd/common/web/util/SpringUtil.java @@ -1,4 +1,4 @@ -package com.evotech.hd.cloud.utils; +package com.evotech.hd.common.web.util; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/config/NewMybatisPlusConfig.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/config/PermissionCloudMybatisPlusConfig.java similarity index 91% rename from cloud-manage-server/src/main/java/com/evotech/hd/cloud/config/NewMybatisPlusConfig.java rename to cloud-manage-server/src/main/java/com/evotech/hd/cloud/config/PermissionCloudMybatisPlusConfig.java index 57e3f3d..d96942d 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/config/NewMybatisPlusConfig.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/config/PermissionCloudMybatisPlusConfig.java @@ -17,9 +17,9 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; */ @EnableTransactionManagement(proxyTargetClass = true) @Configuration -public class NewMybatisPlusConfig { +public class PermissionCloudMybatisPlusConfig { - @Bean("newMybatisPlusInterceptor") + @Bean("permissionCloudMybatisPlusInterceptor") public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/MqttMessageRequestExchangeProcessor.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/MqttMessageRequestExchangeProcessor.java index b5d44e2..4b8cd5c 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/MqttMessageRequestExchangeProcessor.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/MqttMessageRequestExchangeProcessor.java @@ -10,9 +10,8 @@ import com.evotech.hd.cloud.mqtt.enums.RequestFunctionTypesEnum; import com.evotech.hd.cloud.mqtt.message.MessageTopic; import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader; import com.evotech.hd.cloud.mqtt.message.dto.newer.req.MqttResponse; -import com.evotech.hd.cloud.mqtt.message.dto.newer.req.order.CancelOrderReq; import com.evotech.hd.cloud.mqtt.message.handle.MessageUtilService; -import com.evotech.hd.cloud.utils.SpringUtil; +import com.evotech.hd.common.web.util.SpringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/RedisCloudUtils.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/RedisCloudUtils.java index c996c82..f461029 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/RedisCloudUtils.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/RedisCloudUtils.java @@ -4,6 +4,7 @@ import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.resource.auth.AuthUser; import com.evotech.hd.common.redis.utils.RedisUtil; import com.evotech.hd.common.web.util.RequestContextUtil; +import com.evotech.hd.common.web.util.SpringUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; diff --git a/resource-server/pom.xml b/resource-server/pom.xml index b9ac9a8..aaee8fe 100644 --- a/resource-server/pom.xml +++ b/resource-server/pom.xml @@ -66,6 +66,20 @@ io.minio minio + + com.evotech.hd + common-redis + 1.0.0-SNAPSHOT + compile + + + cn.hutool + hutool-jwt + + + org.springframework.security + spring-security-oauth2-jose + diff --git a/resource-server/src/main/java/com/evotech/hd/resource/config/permission/PermissionResourceMybatisPlusConfig.java b/resource-server/src/main/java/com/evotech/hd/resource/config/permission/PermissionResourceMybatisPlusConfig.java new file mode 100644 index 0000000..595444c --- /dev/null +++ b/resource-server/src/main/java/com/evotech/hd/resource/config/permission/PermissionResourceMybatisPlusConfig.java @@ -0,0 +1,31 @@ +package com.evotech.hd.resource.config.permission; + +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor; +import com.evotech.hd.resource.handler.DataScopeHandler; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * @desc: + * @ClassName:MybatisPlusConfig + * @date: 2025年04月14日 16:14 + * @author: andy.shi + * @contact: 17330188597 + * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 + */ +@EnableTransactionManagement(proxyTargetClass = true) +@Configuration +public class PermissionResourceMybatisPlusConfig { + + @Bean("permissionResourceMybatisPlusInterceptor") + public MybatisPlusInterceptor mybatisPlusInterceptor() { + + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + // 数据权限插件 + interceptor.addInnerInterceptor(new DataPermissionInterceptor(new DataScopeHandler())); + return interceptor; + } + +} diff --git a/resource-server/src/main/java/com/evotech/hd/resource/handler/DataScopeHandler.java b/resource-server/src/main/java/com/evotech/hd/resource/handler/DataScopeHandler.java new file mode 100644 index 0000000..b52f9ce --- /dev/null +++ b/resource-server/src/main/java/com/evotech/hd/resource/handler/DataScopeHandler.java @@ -0,0 +1,115 @@ +package com.evotech.hd.resource.handler; + +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.alibaba.nacos.common.utils.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.handler.MultiDataPermissionHandler; +import com.evotech.hd.common.core.permission.DataScope; +import com.evotech.hd.common.core.permission.DataScopes; +import com.evotech.hd.resource.utils.RedisResourceUtils; +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.Parenthesis; +import net.sf.jsqlparser.expression.StringValue; +import net.sf.jsqlparser.expression.operators.relational.ExpressionList; +import net.sf.jsqlparser.expression.operators.relational.InExpression; +import net.sf.jsqlparser.schema.Column; +import net.sf.jsqlparser.schema.Table; +import org.apache.commons.lang3.ObjectUtils; + +import java.util.Arrays; +import java.util.stream.Collectors; + +/** + * @desc: + * @ClassName:DataScopeHandler + * @date: 2025年04月14日 14:54 + * @author: andy.shi + * @contact: 17330188597 + * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 + */ + +public class DataScopeHandler implements MultiDataPermissionHandler { + + /** + * 获取数据权限 SQL 片段。 + *

旧的 {@link MultiDataPermissionHandler#getSqlSegment(Expression, String)} 方法第一个参数包含所有的 where 条件信息,如果 return 了 null 会覆盖原有的 where 数据,

+ *

新版的 {@link MultiDataPermissionHandler#getSqlSegment(Table, Expression, String)} 方法不能覆盖原有的 where 数据,如果 return 了 null 则表示不追加任何 where 条件

+ * + * @param table 所执行的数据库表信息,可以通过此参数获取表名和表别名 + * @param where 原有的 where 条件信息 + * @param mappedStatementId Mybatis MappedStatement Id 根据该参数可以判断具体执行方法 + * @return JSqlParser 条件表达式,返回的条件表达式会拼接在原有的表达式后面(不会覆盖原有的表达式) + */ + + @Override + public Expression getSqlSegment(Table table, Expression where, String mappedStatementId) { + try { + if(table != null && CollectionUtils.isNotEmpty(table.getNameParts()) && !"1".equals(RedisResourceUtils.getRoleType())){ + String roleCode = RedisResourceUtils.getRoleCode(); + Class mapperClazz = Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf("."))); + //优先检查是不是单角色权限 + DataScope dataScope = mapperClazz.getAnnotation(DataScope.class); + if (ObjectUtils.isNotEmpty(dataScope) && dataScope.enabled()) { + if(dataScope.permissionObject().equals(roleCode)){ + return buildDataScopeByAnnotation(dataScope); + } + } + //如果不是, 检查多角色权限 + DataScopes dataScopesList = mapperClazz.getAnnotation(DataScopes.class); + if (ObjectUtils.isNotEmpty(dataScopesList)) { + for (DataScope dataScopes :dataScopesList.value()){ + if(dataScopes.enabled()){ + if(dataScopes.permissionObject().equals(roleCode)){ + return buildDataScopeByAnnotation(dataScopes); + } + } + } + } + } + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + return null; + } + + + + /** + * DataScope注解方式,拼装数据权限 + * + * @param dataScope + * @return + */ + private Expression buildDataScopeByAnnotation(DataScope dataScope) { + Expression expression = buildDataScopeExpression(dataScope, RedisResourceUtils.getPermissionValue(dataScope.permissionScopeRedisKey())); + return expression == null ? null : new Parenthesis(expression); + } + + + private Expression buildDataScopeExpression(DataScope dataScope, String value) { + if(!"null".equals(value)){ + ExpressionList expressionList = new ExpressionList(Arrays.asList(value.split(",")).stream().map(StringValue::new).collect(Collectors.toList())); + // 设置左边的字段表达式,右边设置值。 + InExpression operatorInExpression = new InExpression(); + operatorInExpression.setLeftExpression(buildColumn(dataScope.tableAlias(), dataScope.permissionScopeName())); + operatorInExpression.setRightExpression(new Parenthesis(expressionList)); + return operatorInExpression; + + } + return null; + } + + /** + * 构建Column + * + * @param tableAlias 表别名 + * @param columnName 字段名称 + * @return 带表别名字段 + */ + private static Column buildColumn(String tableAlias, String columnName) { + if (StringUtils.isNotEmpty(tableAlias)) { + columnName = tableAlias + "." + columnName; + } + return new Column(columnName); + } + +} diff --git a/resource-server/src/main/java/com/evotech/hd/resource/utils/RedisResourceUtils.java b/resource-server/src/main/java/com/evotech/hd/resource/utils/RedisResourceUtils.java new file mode 100644 index 0000000..7960a80 --- /dev/null +++ b/resource-server/src/main/java/com/evotech/hd/resource/utils/RedisResourceUtils.java @@ -0,0 +1,179 @@ +package com.evotech.hd.resource.utils; + +import com.evotech.hd.common.core.constant.HDConstant; +import com.evotech.hd.common.core.entity.resource.auth.AuthUser; +import com.evotech.hd.common.redis.utils.RedisUtil; +import com.evotech.hd.common.web.util.RequestContextUtil; +import com.evotech.hd.common.web.util.SpringUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.ObjectUtils; +import org.springframework.util.StringUtils; + +/** + * @desc: + * @ClassName:RedisCloudUtils + * @date: 2025年04月14日 15:24 + * @author: andy.shi + * @contact: 17330188597 + * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 + */ + +@Slf4j +public class RedisResourceUtils { + + public static AuthUser getUser(){ + AuthUser user = (AuthUser)getRedisObjectValue("user"); + return (ObjectUtils.isEmpty(user) ? null : user); + } + + public static String getRoleCode(){ + String roles = getRedisStringValue("rcodes"); + return StringUtils.isEmpty(roles) ? "" : roles; + } + + public static String getPermissionValue(String key){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + key+":"+getUserPkId()); + } + + public static String getStationCode(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_CODE+":"+getUserPkId()); + } + public static String getStationId(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_ID+":"+getUserPkId()); + } + + public static String getCompanyCode(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_CODE+":"+getUserPkId()); + } + public static String getCompanyId(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_ID+":"+getUserPkId()); + } + + public static String getCarCode(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_CODE+":"+getUserPkId()); + } + public static String getCarId(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_ID+":"+getUserPkId()); + } + + private static Integer getUserPkId(){ + AuthUser user = getUser(); + if(org.apache.commons.lang3.ObjectUtils.isEmpty(user) || user.getPkId() == null){ + return null; + } + return user.getPkId(); + } + + +// public static Integer getCompanyScopeId(){ +// return getUser().getPkId(); +// } + + + /** + * 获取当前登录的角色信息, 0 站端, 1 管理员, 2 运营商, 3 公司, + * @author: andy.shi + * @contact: 17330188597 + * @date: 2025/4/14/周一 14:21 + * @return: * @return: java.lang.String + */ + public static String getRoleType(){ + String roles = getRoleCode(); + if(isAdmin(roles)){ + return "1"; + } + if(isOperator(roles)){ + return "2"; + } + if(isCompany(roles)){ + return "3"; + } + return "0"; + } + + //如果不等于-1 则证明为管理员 + public static Boolean isAdmin(String roles){ + return isAuthority(roles, HDConstant.SYSTEM_MANAGER_ROLE_CODE); + } + + public static Boolean isOperator(String roles){ + return isAuthority(roles,HDConstant.OPERATOR_ROLE_CODE); + } + + public static Boolean isCompany(String roles){ + return isAuthority(roles,HDConstant.COMPANY_ROLE_CODE); + } + + private static Boolean isAuthority(String checkParamRoles, String paramRoleCode){ + if(org.apache.commons.lang3.StringUtils.isNotEmpty(checkParamRoles)){ + return checkParamRoles.lastIndexOf(paramRoleCode) != -1; + } + return getRoleCode().lastIndexOf(paramRoleCode) != -1; + } + + + /*** + * 根据token拼接key, 获取String结果 + * @param key + * @return + */ + private static String getRedisStringValue(String key) { + return String.valueOf(getRedisObjectValue(key)); + } + + /*** + * 根据token拼接key, 获取Object结果 + * @param key + * @return + */ + private static Object getRedisObjectValue(String key) { + String token = RequestContextUtil.getToken(); + if(StringUtils.isEmpty(token)){ + log.error("SpringUtil.getRedisValue========== token is null"); + return null; + } + String jti = null; + try { + jti = TokenUtil.getJti(token); + if(StringUtils.isEmpty(jti)){ + log.error("SpringUtil.getRedisValue========== jtj is null"); + return null; + } + } catch (Exception e) { + log.error("SpringUtil.gegetRedisValuetUser========== jtj is null"); + return null; + } + return getValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + jti + ":"+key); + } + + + /*** + * 根据key获取redis缓存 + * @param key + * @return + */ + private static String getStringValue(String key){ + Object obj = getValue(key); + return ObjectUtils.isEmpty(obj) ? null : String.valueOf(obj); + } + + /*** + * 根据key获取redis缓存 + * @param key + * @return + */ + private static Object getValue(String key){ + RedisUtil redisUtil = SpringUtil.getBean(RedisUtil.class); + if(ObjectUtils.isEmpty(redisUtil)){ + log.error("SpringUtil.getRedisValue========== redisUtil is null"); + } + Object obj = redisUtil.get(key); + if(ObjectUtils.isEmpty(obj)){ + log.error("SpringUtil.getRedisValue=={}========== obj is null",key); + return null; + } + log.info("SpringUtil.getRedisValue=={}===={}",key,String.valueOf(obj)); + return obj; + } + +} diff --git a/resource-server/src/main/java/com/evotech/hd/resource/utils/TokenUtil.java b/resource-server/src/main/java/com/evotech/hd/resource/utils/TokenUtil.java new file mode 100644 index 0000000..5f1e8a9 --- /dev/null +++ b/resource-server/src/main/java/com/evotech/hd/resource/utils/TokenUtil.java @@ -0,0 +1,56 @@ +package com.evotech.hd.resource.utils; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.jwt.JWT; +import cn.hutool.jwt.JWTUtil; +import org.springframework.security.oauth2.jwt.JwtClaimNames; + +import java.util.Date; + +/** + * token解析工具类 + */ +public class TokenUtil { + + + public static JWT parseToJwt(String token) { + JWT parseToken = JWTUtil.parseToken(token); + return parseToken; + } + + + /** + * 从token中获取userId + */ + public static String getUserId(String token) { + String uid = parseToJwt(token).getPayloads().getStr("uid"); + return uid; + } + + /** + * 从token中获取rcodes + */ + public static String getRcodes(String token) { + String uid = parseToJwt(token).getPayloads().getStr("rcodes"); + return uid; + } + + + /** + * 从token中获取jti + */ + public static String getJti(String token) { + String jti = parseToJwt(token).getPayloads().getStr(JwtClaimNames.JTI).replaceAll("-", ""); + return jti; + } + + + /** + * 从token中获取过期时间 + */ + public static Date getExp(String token) { + String exp = parseToJwt(token).getPayloads().getStr(JwtClaimNames.EXP).toString(); + return DateUtil.date(Long.valueOf(exp) * 1000); + } + +} diff --git a/wechat-server/pom.xml b/wechat-server/pom.xml index ef476e8..2f72c85 100644 --- a/wechat-server/pom.xml +++ b/wechat-server/pom.xml @@ -80,8 +80,16 @@ core 3.5.3 - - + + org.springframework.security + spring-security-oauth2-jose + + + cn.hutool + hutool-jwt + + + diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/config/PermissionWechatMybatisPlusConfig.java b/wechat-server/src/main/java/com/evotech/hd/wechat/config/PermissionWechatMybatisPlusConfig.java new file mode 100644 index 0000000..cc52e71 --- /dev/null +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/config/PermissionWechatMybatisPlusConfig.java @@ -0,0 +1,30 @@ +package com.evotech.hd.wechat.config; + +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor; +import com.evotech.hd.wechat.handler.DataScopeHandler; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * @desc: + * @ClassName:MybatisPlusConfig + * @date: 2025年04月14日 16:14 + * @author: andy.shi + * @contact: 17330188597 + * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 + */ +@EnableTransactionManagement(proxyTargetClass = true) +@Configuration +public class PermissionWechatMybatisPlusConfig { + + @Bean("permissionWechatMybatisPlusInterceptor") + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + // 数据权限插件 + interceptor.addInnerInterceptor(new DataPermissionInterceptor(new DataScopeHandler())); + return interceptor; + } + +} diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/handler/DataScopeHandler.java b/wechat-server/src/main/java/com/evotech/hd/wechat/handler/DataScopeHandler.java new file mode 100644 index 0000000..cea9a20 --- /dev/null +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/handler/DataScopeHandler.java @@ -0,0 +1,115 @@ +package com.evotech.hd.wechat.handler; + +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.alibaba.nacos.common.utils.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.handler.MultiDataPermissionHandler; +import com.evotech.hd.common.core.permission.DataScope; +import com.evotech.hd.common.core.permission.DataScopes; +import com.evotech.hd.wechat.utils.permission.RedisWechatUtils; +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.Parenthesis; +import net.sf.jsqlparser.expression.StringValue; +import net.sf.jsqlparser.expression.operators.relational.ExpressionList; +import net.sf.jsqlparser.expression.operators.relational.InExpression; +import net.sf.jsqlparser.schema.Column; +import net.sf.jsqlparser.schema.Table; +import org.apache.commons.lang3.ObjectUtils; + +import java.util.Arrays; +import java.util.stream.Collectors; + +/** + * @desc: + * @ClassName:DataScopeHandler + * @date: 2025年04月14日 14:54 + * @author: andy.shi + * @contact: 17330188597 + * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 + */ + +public class DataScopeHandler implements MultiDataPermissionHandler { + + /** + * 获取数据权限 SQL 片段。 + *

旧的 {@link MultiDataPermissionHandler#getSqlSegment(Expression, String)} 方法第一个参数包含所有的 where 条件信息,如果 return 了 null 会覆盖原有的 where 数据,

+ *

新版的 {@link MultiDataPermissionHandler#getSqlSegment(Table, Expression, String)} 方法不能覆盖原有的 where 数据,如果 return 了 null 则表示不追加任何 where 条件

+ * + * @param table 所执行的数据库表信息,可以通过此参数获取表名和表别名 + * @param where 原有的 where 条件信息 + * @param mappedStatementId Mybatis MappedStatement Id 根据该参数可以判断具体执行方法 + * @return JSqlParser 条件表达式,返回的条件表达式会拼接在原有的表达式后面(不会覆盖原有的表达式) + */ + + @Override + public Expression getSqlSegment(Table table, Expression where, String mappedStatementId) { + try { + if(table != null && CollectionUtils.isNotEmpty(table.getNameParts()) && !"1".equals(RedisWechatUtils.getRoleType())){ + String roleCode = RedisWechatUtils.getRoleCode(); + Class mapperClazz = Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf("."))); + //优先检查是不是单角色权限 + DataScope dataScope = mapperClazz.getAnnotation(DataScope.class); + if (ObjectUtils.isNotEmpty(dataScope) && dataScope.enabled()) { + if(dataScope.permissionObject().equals(roleCode)){ + return buildDataScopeByAnnotation(dataScope); + } + } + //如果不是, 检查多角色权限 + DataScopes dataScopesList = mapperClazz.getAnnotation(DataScopes.class); + if (ObjectUtils.isNotEmpty(dataScopesList)) { + for (DataScope dataScopes :dataScopesList.value()){ + if(dataScopes.enabled()){ + if(dataScopes.permissionObject().equals(roleCode)){ + return buildDataScopeByAnnotation(dataScopes); + } + } + } + } + } + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + return null; + } + + + + /** + * DataScope注解方式,拼装数据权限 + * + * @param dataScope + * @return + */ + private Expression buildDataScopeByAnnotation(DataScope dataScope) { + Expression expression = buildDataScopeExpression(dataScope, RedisWechatUtils.getPermissionValue(dataScope.permissionScopeRedisKey())); + return expression == null ? null : new Parenthesis(expression); + } + + + private Expression buildDataScopeExpression(DataScope dataScope, String value) { + if(!"null".equals(value)){ + ExpressionList expressionList = new ExpressionList(Arrays.asList(value.split(",")).stream().map(StringValue::new).collect(Collectors.toList())); + // 设置左边的字段表达式,右边设置值。 + InExpression operatorInExpression = new InExpression(); + operatorInExpression.setLeftExpression(buildColumn(dataScope.tableAlias(), dataScope.permissionScopeName())); + operatorInExpression.setRightExpression(new Parenthesis(expressionList)); + return operatorInExpression; + + } + return null; + } + + /** + * 构建Column + * + * @param tableAlias 表别名 + * @param columnName 字段名称 + * @return 带表别名字段 + */ + private static Column buildColumn(String tableAlias, String columnName) { + if (StringUtils.isNotEmpty(tableAlias)) { + columnName = tableAlias + "." + columnName; + } + return new Column(columnName); + } + +} diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/RedisWechatUtils.java b/wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/RedisWechatUtils.java new file mode 100644 index 0000000..2b477f0 --- /dev/null +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/RedisWechatUtils.java @@ -0,0 +1,179 @@ +package com.evotech.hd.wechat.utils.permission; + +import com.evotech.hd.common.core.constant.HDConstant; +import com.evotech.hd.common.core.entity.resource.auth.AuthUser; +import com.evotech.hd.common.redis.utils.RedisUtil; +import com.evotech.hd.common.web.util.RequestContextUtil; +import com.evotech.hd.common.web.util.SpringUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.ObjectUtils; +import org.springframework.util.StringUtils; + +/** + * @desc: + * @ClassName:RedisCloudUtils + * @date: 2025年04月14日 15:24 + * @author: andy.shi + * @contact: 17330188597 + * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 + */ + +@Slf4j +public class RedisWechatUtils { + + public static AuthUser getUser(){ + AuthUser user = (AuthUser)getRedisObjectValue("user"); + return (ObjectUtils.isEmpty(user) ? null : user); + } + + public static String getRoleCode(){ + String roles = getRedisStringValue("rcodes"); + return StringUtils.isEmpty(roles) ? "" : roles; + } + + public static String getPermissionValue(String key){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + key+":"+getUserPkId()); + } + + public static String getStationCode(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_CODE+":"+getUserPkId()); + } + public static String getStationId(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_ID+":"+getUserPkId()); + } + + public static String getCompanyCode(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_CODE+":"+getUserPkId()); + } + public static String getCompanyId(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_ID+":"+getUserPkId()); + } + + public static String getCarCode(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_CODE+":"+getUserPkId()); + } + public static String getCarId(){ + return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_ID+":"+getUserPkId()); + } + + private static Integer getUserPkId(){ + AuthUser user = getUser(); + if(org.apache.commons.lang3.ObjectUtils.isEmpty(user) || user.getPkId() == null){ + return null; + } + return user.getPkId(); + } + + +// public static Integer getCompanyScopeId(){ +// return getUser().getPkId(); +// } + + + /** + * 获取当前登录的角色信息, 0 站端, 1 管理员, 2 运营商, 3 公司, + * @author: andy.shi + * @contact: 17330188597 + * @date: 2025/4/14/周一 14:21 + * @return: * @return: java.lang.String + */ + public static String getRoleType(){ + String roles = getRoleCode(); + if(isAdmin(roles)){ + return "1"; + } + if(isOperator(roles)){ + return "2"; + } + if(isCompany(roles)){ + return "3"; + } + return "0"; + } + + //如果不等于-1 则证明为管理员 + public static Boolean isAdmin(String roles){ + return isAuthority(roles, HDConstant.SYSTEM_MANAGER_ROLE_CODE); + } + + public static Boolean isOperator(String roles){ + return isAuthority(roles,HDConstant.OPERATOR_ROLE_CODE); + } + + public static Boolean isCompany(String roles){ + return isAuthority(roles,HDConstant.COMPANY_ROLE_CODE); + } + + private static Boolean isAuthority(String checkParamRoles, String paramRoleCode){ + if(org.apache.commons.lang3.StringUtils.isNotEmpty(checkParamRoles)){ + return checkParamRoles.lastIndexOf(paramRoleCode) != -1; + } + return getRoleCode().lastIndexOf(paramRoleCode) != -1; + } + + + /*** + * 根据token拼接key, 获取String结果 + * @param key + * @return + */ + private static String getRedisStringValue(String key) { + return String.valueOf(getRedisObjectValue(key)); + } + + /*** + * 根据token拼接key, 获取Object结果 + * @param key + * @return + */ + private static Object getRedisObjectValue(String key) { + String token = RequestContextUtil.getToken(); + if(StringUtils.isEmpty(token)){ + log.error("SpringUtil.getRedisValue========== token is null"); + return null; + } + String jti = null; + try { + jti = TokenUtil.getJti(token); + if(StringUtils.isEmpty(jti)){ + log.error("SpringUtil.getRedisValue========== jtj is null"); + return null; + } + } catch (Exception e) { + log.error("SpringUtil.gegetRedisValuetUser========== jtj is null"); + return null; + } + return getValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + jti + ":"+key); + } + + + /*** + * 根据key获取redis缓存 + * @param key + * @return + */ + private static String getStringValue(String key){ + Object obj = getValue(key); + return ObjectUtils.isEmpty(obj) ? null : String.valueOf(obj); + } + + /*** + * 根据key获取redis缓存 + * @param key + * @return + */ + private static Object getValue(String key){ + RedisUtil redisUtil = SpringUtil.getBean(RedisUtil.class); + if(ObjectUtils.isEmpty(redisUtil)){ + log.error("SpringUtil.getRedisValue========== redisUtil is null"); + } + Object obj = redisUtil.get(key); + if(ObjectUtils.isEmpty(obj)){ + log.error("SpringUtil.getRedisValue=={}========== obj is null",key); + return null; + } + log.info("SpringUtil.getRedisValue=={}===={}",key,String.valueOf(obj)); + return obj; + } + +} diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/TokenUtil.java b/wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/TokenUtil.java new file mode 100644 index 0000000..f85fa52 --- /dev/null +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/TokenUtil.java @@ -0,0 +1,56 @@ +package com.evotech.hd.wechat.utils.permission; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.jwt.JWT; +import cn.hutool.jwt.JWTUtil; +import org.springframework.security.oauth2.jwt.JwtClaimNames; + +import java.util.Date; + +/** + * token解析工具类 + */ +public class TokenUtil { + + + public static JWT parseToJwt(String token) { + JWT parseToken = JWTUtil.parseToken(token); + return parseToken; + } + + + /** + * 从token中获取userId + */ + public static String getUserId(String token) { + String uid = parseToJwt(token).getPayloads().getStr("uid"); + return uid; + } + + /** + * 从token中获取rcodes + */ + public static String getRcodes(String token) { + String uid = parseToJwt(token).getPayloads().getStr("rcodes"); + return uid; + } + + + /** + * 从token中获取jti + */ + public static String getJti(String token) { + String jti = parseToJwt(token).getPayloads().getStr(JwtClaimNames.JTI).replaceAll("-", ""); + return jti; + } + + + /** + * 从token中获取过期时间 + */ + public static Date getExp(String token) { + String exp = parseToJwt(token).getPayloads().getStr(JwtClaimNames.EXP).toString(); + return DateUtil.date(Long.valueOf(exp) * 1000); + } + +} From f90daa67719b81b393f62419f22649a482625f3e Mon Sep 17 00:00:00 2001 From: andy <1042025947@qq.com> Date: Wed, 16 Apr 2025 16:22:44 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E6=96=B0=E5=A2=9Eredis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource-server/src/main/resources/application.yml | 1 + wechat-server/src/main/resources/application.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/resource-server/src/main/resources/application.yml b/resource-server/src/main/resources/application.yml index 1ef8935..372b82b 100644 --- a/resource-server/src/main/resources/application.yml +++ b/resource-server/src/main/resources/application.yml @@ -16,6 +16,7 @@ spring: config: import: - nacos:yt-common.properties?refreshEnabled=true + - nacos:yt-redis.yaml?refreshEnabled=true - nacos:resource-server.yaml?refreshEnabled=true cloud: nacos: diff --git a/wechat-server/src/main/resources/application.yml b/wechat-server/src/main/resources/application.yml index 21b8843..76a7003 100644 --- a/wechat-server/src/main/resources/application.yml +++ b/wechat-server/src/main/resources/application.yml @@ -16,6 +16,7 @@ spring: config: import: - nacos:yt-common.properties?refreshEnabled=true + - nacos:yt-redis.yaml?refreshEnabled=true - nacos:wechat-server.yaml?refreshEnabled=true cloud: nacos: From 8cf4369a5af32aca7f5f5c57226fe498d94e469c Mon Sep 17 00:00:00 2001 From: lhb <495598773@qq.com> Date: Wed, 16 Apr 2025 17:15:28 +0800 Subject: [PATCH 05/11] =?UTF-8?q?fix:=E5=BE=AE=E4=BF=A1=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E9=92=88=E5=AF=B9=E4=BC=81=E4=B8=9A=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BB=98=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../evotech/hd/common/core/dao/wechat/WechatUserDao.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/wechat/WechatUserDao.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/wechat/WechatUserDao.java index b4883f1..3314c38 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/wechat/WechatUserDao.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/wechat/WechatUserDao.java @@ -1,12 +1,18 @@ package com.evotech.hd.common.core.dao.wechat; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.wechat.WechatUser; +import com.evotech.hd.common.core.permission.DataScope; +import com.evotech.hd.common.core.permission.DataScopes; /** * @author zrb * @since 2024-10-12 */ +@DataScopes({ + @DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "pcode", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_COMPANY_CODE) +}) public interface WechatUserDao extends BaseMapper { } From a523fd90b705f28539e17f6545ebf2331b71e6d4 Mon Sep 17 00:00:00 2001 From: andy <1042025947@qq.com> Date: Thu, 17 Apr 2025 11:54:07 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E6=9D=83=E9=99=90=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/LoginServiceImpl.java | 4 + .../hd/common/core/constant/HDConstant.java | 2 + .../core/dao/resource/ProxyOperaterDao.java | 3 + .../core/dao/resource/auth/AuthRoleDao.java | 3 + .../core/dao/resource/auth/AuthUserDao.java | 3 + .../core/entity/resource/auth/AuthRole.java | 18 +- .../core/entity/resource/auth/AuthUser.java | 9 +- base-commons/common-permission/pom.xml | 76 ++++++++ .../PermissionMybatisPlusConfig.java | 8 +- .../permission}/handler/DataScopeHandler.java | 12 +- .../InsertAndUpdateMybatisHandler.java | 67 +++++++ .../permission/util/RedisPermissionUtils.java | 12 +- .../common/permission}/util/SpringUtil.java | 12 +- .../hd/common/permission/util}/TokenUtil.java | 2 +- base-commons/pom.xml | 1 + cloud-manage-server/pom.xml | 17 +- .../hd/cloud/handler/DataScopeHandler.java | 115 ----------- .../MqttMessageRequestExchangeProcessor.java | 2 +- .../com/evotech/hd/cloud/utils/TokenUtil.java | 56 ------ resource-server/pom.xml | 20 +- .../PermissionResourceMybatisPlusConfig.java | 31 --- .../service/impl/MenuServiceImpl.java | 45 ++++- .../service/impl/RoleServiceImpl.java | 12 +- .../hd/resource/utils/RedisResourceUtils.java | 179 ------------------ wechat-server/pom.xml | 12 +- .../PermissionWechatMybatisPlusConfig.java | 30 --- .../hd/wechat/handler/DataScopeHandler.java | 115 ----------- .../utils/permission/RedisWechatUtils.java | 179 ------------------ .../hd/wechat/utils/permission/TokenUtil.java | 56 ------ 29 files changed, 258 insertions(+), 843 deletions(-) create mode 100644 base-commons/common-permission/pom.xml rename cloud-manage-server/src/main/java/com/evotech/hd/cloud/config/PermissionCloudMybatisPlusConfig.java => base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/config/permission/PermissionMybatisPlusConfig.java (81%) rename {resource-server/src/main/java/com/evotech/hd/resource => base-commons/common-permission/src/main/java/com/evotech/hd/common/permission}/handler/DataScopeHandler.java (92%) create mode 100644 base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/handler/InsertAndUpdateMybatisHandler.java rename cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/RedisCloudUtils.java => base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/util/RedisPermissionUtils.java (93%) rename base-commons/{common-web/src/main/java/com/evotech/hd/common/web => common-permission/src/main/java/com/evotech/hd/common/permission}/util/SpringUtil.java (85%) rename {resource-server/src/main/java/com/evotech/hd/resource/utils => base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/util}/TokenUtil.java (95%) delete mode 100644 cloud-manage-server/src/main/java/com/evotech/hd/cloud/handler/DataScopeHandler.java delete mode 100644 cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/TokenUtil.java delete mode 100644 resource-server/src/main/java/com/evotech/hd/resource/config/permission/PermissionResourceMybatisPlusConfig.java delete mode 100644 resource-server/src/main/java/com/evotech/hd/resource/utils/RedisResourceUtils.java delete mode 100644 wechat-server/src/main/java/com/evotech/hd/wechat/config/PermissionWechatMybatisPlusConfig.java delete mode 100644 wechat-server/src/main/java/com/evotech/hd/wechat/handler/DataScopeHandler.java delete mode 100644 wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/RedisWechatUtils.java delete mode 100644 wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/TokenUtil.java diff --git a/authorization-server/src/main/java/com/evotech/hd/authorization/service/impl/LoginServiceImpl.java b/authorization-server/src/main/java/com/evotech/hd/authorization/service/impl/LoginServiceImpl.java index dc44deb..1b85f11 100644 --- a/authorization-server/src/main/java/com/evotech/hd/authorization/service/impl/LoginServiceImpl.java +++ b/authorization-server/src/main/java/com/evotech/hd/authorization/service/impl/LoginServiceImpl.java @@ -172,6 +172,9 @@ public class LoginServiceImpl implements LoginService { uv.setPermCodeList(permCodeList); redisUtil.lSet(HDConstant.LOGIN_CACHE_KEY_PREFIX + jti + ":perms", permUriList.toArray(new String[permUriList.size()]), tokenExp); } + + //开始缓存权限信息 + redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_AUTH_USER_UID+":"+user.getPkId(), user.getUid()); if(rcodeList.contains(HDConstant.OPERATOR_ROLE_CODE)){ BaseResponse> result = cloudService.loadBatteryStation(user.getBusinessCode()); if(CodeMsg.SUCCESS.getCode().equals(result.getCode())){ @@ -182,6 +185,7 @@ public class LoginServiceImpl implements LoginService { pkIds = list.stream().map(BatteryStation::getPkId).map(String::valueOf).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); codes = list.stream().map(BatteryStation::getCode).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); } + redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_PROXY_CODE+":"+user.getPkId(), user.getBusinessCode()); redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_ID+":"+user.getPkId(), pkIds); redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_CODE+":"+user.getPkId(), codes); } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java index 59f20ed..5e40de0 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java @@ -3,6 +3,8 @@ package com.evotech.hd.common.core.constant; public interface HDConstant { public static final class PermissionConstant{ + public static final String PERMISSION_AUTH_USER_UID = "AUTH_USER_UID"; + public static final String PERMISSION_PROXY_CODE = "PROXY_CODE"; public static final String PERMISSION_STATION_CODE = "STATION_CODE"; public static final String PERMISSION_STATION_ID = "STATION_ID"; public static final String PERMISSION_COMPANY_CODE = "COMPANY_CODE"; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/ProxyOperaterDao.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/ProxyOperaterDao.java index 2a18845..52ee7b7 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/ProxyOperaterDao.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/ProxyOperaterDao.java @@ -1,12 +1,15 @@ package com.evotech.hd.common.core.dao.resource; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.resource.ProxyOperater; +import com.evotech.hd.common.core.permission.DataScope; /** * @author zrb * @since 2024-10-15 */ +@DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, permissionScopeName = "pocode", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_PROXY_CODE) public interface ProxyOperaterDao extends BaseMapper { } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/auth/AuthRoleDao.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/auth/AuthRoleDao.java index cff2009..4107ffb 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/auth/AuthRoleDao.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/auth/AuthRoleDao.java @@ -1,12 +1,15 @@ package com.evotech.hd.common.core.dao.resource.auth; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.resource.auth.AuthRole; +import com.evotech.hd.common.core.permission.DataScope; /** * @author zrb * @since 2024-09-04 */ +@DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, permissionScopeName = "creater", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_AUTH_USER_UID) public interface AuthRoleDao extends BaseMapper { } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/auth/AuthUserDao.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/auth/AuthUserDao.java index 848286f..3026ab7 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/auth/AuthUserDao.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/auth/AuthUserDao.java @@ -1,12 +1,15 @@ package com.evotech.hd.common.core.dao.resource.auth; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.resource.auth.AuthUser; +import com.evotech.hd.common.core.permission.DataScope; /** * @author zrb * @since 2024-09-04 */ +@DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, permissionScopeName = "creater", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_AUTH_USER_UID) public interface AuthUserDao extends BaseMapper { } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRole.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRole.java index f967976..e565178 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRole.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRole.java @@ -1,18 +1,14 @@ package com.evotech.hd.common.core.entity.resource.auth; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; - -import java.io.Serializable; -import java.util.Date; - -import org.springframework.format.annotation.DateTimeFormat; - import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; /** * @author zrb @@ -49,18 +45,22 @@ public class AuthRole implements Serializable { private Integer readonly; @Schema(description = "创建人") + @TableField(fill = FieldFill.INSERT) private String creater; @Schema(description = "创建时间", hidden = true) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @TableField(fill = FieldFill.INSERT) private Date ctime; @Schema(description = "更新人", hidden = true) + @TableField(fill = FieldFill.UPDATE) private String updater; @Schema(description = "更新时间") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @TableField(fill = FieldFill.UPDATE) private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUser.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUser.java index 348f669..be0c824 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUser.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUser.java @@ -1,9 +1,6 @@ package com.evotech.hd.common.core.entity.resource.auth; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema.RequiredMode; @@ -94,19 +91,23 @@ public class AuthUser implements Serializable { private Date lastLoginTime; @Schema(description = "创建人", hidden = true) + @TableField(fill = FieldFill.INSERT) private String creater; @Schema(description = "创建时间", hidden = true) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @TableField(fill = FieldFill.INSERT) private Date ctime; @Schema(description = "更新人", hidden = true) + @TableField(fill = FieldFill.UPDATE) private String updater; @Schema(description = "更新时间", hidden = true) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @TableField(fill = FieldFill.UPDATE) private Date uptime; @Schema(description = "角色编码", hidden = true) diff --git a/base-commons/common-permission/pom.xml b/base-commons/common-permission/pom.xml new file mode 100644 index 0000000..dc4df2e --- /dev/null +++ b/base-commons/common-permission/pom.xml @@ -0,0 +1,76 @@ + + + 4.0.0 + + com.evotech.hd + base-commons + 1.0.0-SNAPSHOT + + + common-permission + + + 17 + 17 + UTF-8 + + + + com.evotech.hd + common-redis + 1.0.0-SNAPSHOT + + + + + org.springframework + spring-tx + + + org.testng + testng + RELEASE + compile + + + com.baomidou + mybatis-plus-extension + 3.5.7 + compile + + + org.springframework + spring-context + + + com.evotech.hd + common-core + 1.0.0-SNAPSHOT + compile + + + org.projectlombok + lombok + provided + + + jakarta.servlet + jakarta.servlet-api + + + cn.hutool + hutool-jwt + + + org.springframework.security + spring-security-oauth2-jose + + + com.alibaba.nacos + nacos-client + + + + \ No newline at end of file diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/config/PermissionCloudMybatisPlusConfig.java b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/config/permission/PermissionMybatisPlusConfig.java similarity index 81% rename from cloud-manage-server/src/main/java/com/evotech/hd/cloud/config/PermissionCloudMybatisPlusConfig.java rename to base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/config/permission/PermissionMybatisPlusConfig.java index d96942d..a454ec8 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/config/PermissionCloudMybatisPlusConfig.java +++ b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/config/permission/PermissionMybatisPlusConfig.java @@ -1,8 +1,8 @@ -package com.evotech.hd.cloud.config; +package com.evotech.hd.common.permission.config.permission; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor; -import com.evotech.hd.cloud.handler.DataScopeHandler; +import com.evotech.hd.common.permission.handler.DataScopeHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -17,9 +17,9 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; */ @EnableTransactionManagement(proxyTargetClass = true) @Configuration -public class PermissionCloudMybatisPlusConfig { +public class PermissionMybatisPlusConfig { - @Bean("permissionCloudMybatisPlusInterceptor") + @Bean("permissionMybatisPlusInterceptor") public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); diff --git a/resource-server/src/main/java/com/evotech/hd/resource/handler/DataScopeHandler.java b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/handler/DataScopeHandler.java similarity index 92% rename from resource-server/src/main/java/com/evotech/hd/resource/handler/DataScopeHandler.java rename to base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/handler/DataScopeHandler.java index b52f9ce..0ed999d 100644 --- a/resource-server/src/main/java/com/evotech/hd/resource/handler/DataScopeHandler.java +++ b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/handler/DataScopeHandler.java @@ -1,11 +1,12 @@ -package com.evotech.hd.resource.handler; +package com.evotech.hd.common.permission.handler; import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.handler.MultiDataPermissionHandler; import com.evotech.hd.common.core.permission.DataScope; import com.evotech.hd.common.core.permission.DataScopes; -import com.evotech.hd.resource.utils.RedisResourceUtils; +import com.evotech.hd.common.permission.util.RedisPermissionUtils; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.Parenthesis; import net.sf.jsqlparser.expression.StringValue; @@ -13,7 +14,6 @@ import net.sf.jsqlparser.expression.operators.relational.ExpressionList; import net.sf.jsqlparser.expression.operators.relational.InExpression; import net.sf.jsqlparser.schema.Column; import net.sf.jsqlparser.schema.Table; -import org.apache.commons.lang3.ObjectUtils; import java.util.Arrays; import java.util.stream.Collectors; @@ -43,8 +43,8 @@ public class DataScopeHandler implements MultiDataPermissionHandler { @Override public Expression getSqlSegment(Table table, Expression where, String mappedStatementId) { try { - if(table != null && CollectionUtils.isNotEmpty(table.getNameParts()) && !"1".equals(RedisResourceUtils.getRoleType())){ - String roleCode = RedisResourceUtils.getRoleCode(); + if(table != null && CollectionUtils.isNotEmpty(table.getNameParts()) && !"1".equals(RedisPermissionUtils.getRoleType())){ + String roleCode = RedisPermissionUtils.getRoleCode(); Class mapperClazz = Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf("."))); //优先检查是不是单角色权限 DataScope dataScope = mapperClazz.getAnnotation(DataScope.class); @@ -80,7 +80,7 @@ public class DataScopeHandler implements MultiDataPermissionHandler { * @return */ private Expression buildDataScopeByAnnotation(DataScope dataScope) { - Expression expression = buildDataScopeExpression(dataScope, RedisResourceUtils.getPermissionValue(dataScope.permissionScopeRedisKey())); + Expression expression = buildDataScopeExpression(dataScope, RedisPermissionUtils.getPermissionValue(dataScope.permissionScopeRedisKey())); return expression == null ? null : new Parenthesis(expression); } diff --git a/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/handler/InsertAndUpdateMybatisHandler.java b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/handler/InsertAndUpdateMybatisHandler.java new file mode 100644 index 0000000..6d02222 --- /dev/null +++ b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/handler/InsertAndUpdateMybatisHandler.java @@ -0,0 +1,67 @@ +package com.evotech.hd.common.permission.handler; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import com.evotech.hd.common.core.entity.resource.auth.AuthUser; +import com.evotech.hd.common.permission.util.RedisPermissionUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.reflection.MetaObject; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * @desc: 修改和新增自定义注解 + * @ClassName:InsertAndUpdateMybatisHandler + * @date: 2025年04月17日 9:03 + * @author: andy.shi + * @contact: 17330188597 + * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 + */ +@Component +@Slf4j +public class InsertAndUpdateMybatisHandler implements MetaObjectHandler { + @Override + public void insertFill(MetaObject metaObject) { + try { + AuthUser user = RedisPermissionUtils.getUser(); + if(BeanUtil.isEmpty(user)){ + log.info("当前操作位登录, 无需执行"); + return; + } + if(BeanUtil.isNotEmpty(metaObject)){ + mySetFieldValByName("creater",user.getUid(),metaObject); + mySetFieldValByName("ctime",new Date(),metaObject); + } + } catch (Exception e) { + log.error("自动填充拦截器异常=====insert,对象信息:{}, 异常信息:{}", JSONUtil.toJsonStr(metaObject), e.getMessage()); + } + + } + + private void mySetFieldValByName(String filedName, Object fieldVal, MetaObject metaObject) { + Object createType = getFieldValByName(filedName,metaObject); + if(BeanUtil.isEmpty(createType)){ + setFieldValByName(filedName,fieldVal,metaObject); + } + } + + + @Override + public void updateFill(MetaObject metaObject) { + try { + AuthUser user = RedisPermissionUtils.getUser(); + if(BeanUtil.isEmpty(user)){ + log.info("当前操作未登录, 无需执行"); + return; + } + if(BeanUtil.isNotEmpty(metaObject)){ + mySetFieldValByName("updater",user.getUid(),metaObject); + mySetFieldValByName("uptime",new Date(),metaObject); + } + } catch (Exception e) { + log.error("自动填充拦截器异常=====update,对象信息:{}, 异常信息:{}", JSONUtil.toJsonStr(metaObject),e.getMessage()); + } + } +} diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/RedisCloudUtils.java b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/util/RedisPermissionUtils.java similarity index 93% rename from cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/RedisCloudUtils.java rename to base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/util/RedisPermissionUtils.java index f461029..55c4651 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/RedisCloudUtils.java +++ b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/util/RedisPermissionUtils.java @@ -1,10 +1,8 @@ -package com.evotech.hd.cloud.utils; +package com.evotech.hd.common.permission.util; import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.resource.auth.AuthUser; import com.evotech.hd.common.redis.utils.RedisUtil; -import com.evotech.hd.common.web.util.RequestContextUtil; -import com.evotech.hd.common.web.util.SpringUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; @@ -19,7 +17,7 @@ import org.springframework.util.StringUtils; */ @Slf4j -public class RedisCloudUtils { +public class RedisPermissionUtils { public static AuthUser getUser(){ AuthUser user = (AuthUser)getRedisObjectValue("user"); @@ -58,7 +56,7 @@ public class RedisCloudUtils { private static Integer getUserPkId(){ AuthUser user = getUser(); - if(org.apache.commons.lang3.ObjectUtils.isEmpty(user) || user.getPkId() == null){ + if(ObjectUtils.isEmpty(user) || user.getPkId() == null){ return null; } return user.getPkId(); @@ -105,7 +103,7 @@ public class RedisCloudUtils { } private static Boolean isAuthority(String checkParamRoles, String paramRoleCode){ - if(org.apache.commons.lang3.StringUtils.isNotEmpty(checkParamRoles)){ + if(!StringUtils.isEmpty(checkParamRoles)){ return checkParamRoles.lastIndexOf(paramRoleCode) != -1; } return getRoleCode().lastIndexOf(paramRoleCode) != -1; @@ -127,7 +125,7 @@ public class RedisCloudUtils { * @return */ private static Object getRedisObjectValue(String key) { - String token = RequestContextUtil.getToken(); + String token = SpringUtil.getToken(); if(StringUtils.isEmpty(token)){ log.error("SpringUtil.getRedisValue========== token is null"); return null; diff --git a/base-commons/common-web/src/main/java/com/evotech/hd/common/web/util/SpringUtil.java b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/util/SpringUtil.java similarity index 85% rename from base-commons/common-web/src/main/java/com/evotech/hd/common/web/util/SpringUtil.java rename to base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/util/SpringUtil.java index 7086f1f..8a53e3b 100644 --- a/base-commons/common-web/src/main/java/com/evotech/hd/common/web/util/SpringUtil.java +++ b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/util/SpringUtil.java @@ -1,5 +1,6 @@ -package com.evotech.hd.common.web.util; +package com.evotech.hd.common.permission.util; +import com.evotech.hd.common.core.constant.HDConstant; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @@ -7,6 +8,7 @@ import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -39,6 +41,14 @@ public class SpringUtil implements ApplicationContextAware { return applicationContext; } + public static String getToken() { + String authorization = getRequest().getHeader(HDConstant.AUTHORIZATION_KEY); + if (StringUtils.hasLength(authorization) && authorization.contains(HDConstant.JWT_PREFIX)) { + return authorization.substring(HDConstant.JWT_PREFIX.length()); + } + return null; + } + public static Object getBean(String name) { return getApplicationContext().getBean(name); } diff --git a/resource-server/src/main/java/com/evotech/hd/resource/utils/TokenUtil.java b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/util/TokenUtil.java similarity index 95% rename from resource-server/src/main/java/com/evotech/hd/resource/utils/TokenUtil.java rename to base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/util/TokenUtil.java index 5f1e8a9..a5fc59f 100644 --- a/resource-server/src/main/java/com/evotech/hd/resource/utils/TokenUtil.java +++ b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/util/TokenUtil.java @@ -1,4 +1,4 @@ -package com.evotech.hd.resource.utils; +package com.evotech.hd.common.permission.util; import cn.hutool.core.date.DateUtil; import cn.hutool.jwt.JWT; diff --git a/base-commons/pom.xml b/base-commons/pom.xml index 2f51d96..7da7e1d 100644 --- a/base-commons/pom.xml +++ b/base-commons/pom.xml @@ -14,5 +14,6 @@ common-web common-mybatis common-redis + common-permission \ No newline at end of file diff --git a/cloud-manage-server/pom.xml b/cloud-manage-server/pom.xml index a0979e2..5a38262 100644 --- a/cloud-manage-server/pom.xml +++ b/cloud-manage-server/pom.xml @@ -26,13 +26,11 @@ common-mybatis 1.0.0-SNAPSHOT - - com.evotech.hd - common-redis - 1.0.0-SNAPSHOT + com.evotech.hd + common-permission + 1.0.0-SNAPSHOT - org.springframework.cloud @@ -82,15 +80,6 @@ cn.hutool hutool-crypto - - cn.hutool - hutool-jwt - - - org.springframework.security - spring-security-oauth2-jose - - diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/handler/DataScopeHandler.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/handler/DataScopeHandler.java deleted file mode 100644 index 8440d72..0000000 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/handler/DataScopeHandler.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.evotech.hd.cloud.handler; - -import com.alibaba.nacos.common.utils.CollectionUtils; -import com.alibaba.nacos.common.utils.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.handler.MultiDataPermissionHandler; -import com.evotech.hd.cloud.utils.RedisCloudUtils; -import com.evotech.hd.common.core.permission.DataScope; -import com.evotech.hd.common.core.permission.DataScopes; -import net.sf.jsqlparser.expression.Expression; -import net.sf.jsqlparser.expression.Parenthesis; -import net.sf.jsqlparser.expression.StringValue; -import net.sf.jsqlparser.expression.operators.relational.ExpressionList; -import net.sf.jsqlparser.expression.operators.relational.InExpression; -import net.sf.jsqlparser.schema.Column; -import net.sf.jsqlparser.schema.Table; -import org.apache.commons.lang3.ObjectUtils; - -import java.util.Arrays; -import java.util.stream.Collectors; - -/** - * @desc: - * @ClassName:DataScopeHandler - * @date: 2025年04月14日 14:54 - * @author: andy.shi - * @contact: 17330188597 - * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 - */ - -public class DataScopeHandler implements MultiDataPermissionHandler { - - /** - * 获取数据权限 SQL 片段。 - *

旧的 {@link MultiDataPermissionHandler#getSqlSegment(Expression, String)} 方法第一个参数包含所有的 where 条件信息,如果 return 了 null 会覆盖原有的 where 数据,

- *

新版的 {@link MultiDataPermissionHandler#getSqlSegment(Table, Expression, String)} 方法不能覆盖原有的 where 数据,如果 return 了 null 则表示不追加任何 where 条件

- * - * @param table 所执行的数据库表信息,可以通过此参数获取表名和表别名 - * @param where 原有的 where 条件信息 - * @param mappedStatementId Mybatis MappedStatement Id 根据该参数可以判断具体执行方法 - * @return JSqlParser 条件表达式,返回的条件表达式会拼接在原有的表达式后面(不会覆盖原有的表达式) - */ - - @Override - public Expression getSqlSegment(Table table, Expression where, String mappedStatementId) { - try { - if(table != null && CollectionUtils.isNotEmpty(table.getNameParts()) && !"1".equals(RedisCloudUtils.getRoleType())){ - String roleCode = RedisCloudUtils.getRoleCode(); - Class mapperClazz = Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf("."))); - //优先检查是不是单角色权限 - DataScope dataScope = mapperClazz.getAnnotation(DataScope.class); - if (ObjectUtils.isNotEmpty(dataScope) && dataScope.enabled()) { - if(dataScope.permissionObject().equals(roleCode)){ - return buildDataScopeByAnnotation(dataScope); - } - } - //如果不是, 检查多角色权限 - DataScopes dataScopesList = mapperClazz.getAnnotation(DataScopes.class); - if (ObjectUtils.isNotEmpty(dataScopesList)) { - for (DataScope dataScopes :dataScopesList.value()){ - if(dataScopes.enabled()){ - if(dataScopes.permissionObject().equals(roleCode)){ - return buildDataScopeByAnnotation(dataScopes); - } - } - } - } - } - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - return null; - } - - - - /** - * DataScope注解方式,拼装数据权限 - * - * @param dataScope - * @return - */ - private Expression buildDataScopeByAnnotation(DataScope dataScope) { - Expression expression = buildDataScopeExpression(dataScope, RedisCloudUtils.getPermissionValue(dataScope.permissionScopeRedisKey())); - return expression == null ? null : new Parenthesis(expression); - } - - - private Expression buildDataScopeExpression(DataScope dataScope, String value) { - if(!"null".equals(value)){ - ExpressionList expressionList = new ExpressionList(Arrays.asList(value.split(",")).stream().map(StringValue::new).collect(Collectors.toList())); - // 设置左边的字段表达式,右边设置值。 - InExpression operatorInExpression = new InExpression(); - operatorInExpression.setLeftExpression(buildColumn(dataScope.tableAlias(), dataScope.permissionScopeName())); - operatorInExpression.setRightExpression(new Parenthesis(expressionList)); - return operatorInExpression; - - } - return null; - } - - /** - * 构建Column - * - * @param tableAlias 表别名 - * @param columnName 字段名称 - * @return 带表别名字段 - */ - private static Column buildColumn(String tableAlias, String columnName) { - if (StringUtils.isNotEmpty(tableAlias)) { - columnName = tableAlias + "." + columnName; - } - return new Column(columnName); - } - -} diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/MqttMessageRequestExchangeProcessor.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/MqttMessageRequestExchangeProcessor.java index 4b8cd5c..32ba68e 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/MqttMessageRequestExchangeProcessor.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/MqttMessageRequestExchangeProcessor.java @@ -11,7 +11,7 @@ import com.evotech.hd.cloud.mqtt.message.MessageTopic; import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader; import com.evotech.hd.cloud.mqtt.message.dto.newer.req.MqttResponse; import com.evotech.hd.cloud.mqtt.message.handle.MessageUtilService; -import com.evotech.hd.common.web.util.SpringUtil; +import com.evotech.hd.common.permission.util.SpringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/TokenUtil.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/TokenUtil.java deleted file mode 100644 index cb1d10c..0000000 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/TokenUtil.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.evotech.hd.cloud.utils; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.jwt.JWT; -import cn.hutool.jwt.JWTUtil; -import org.springframework.security.oauth2.jwt.JwtClaimNames; - -import java.util.Date; - -/** - * token解析工具类 - */ -public class TokenUtil { - - - public static JWT parseToJwt(String token) { - JWT parseToken = JWTUtil.parseToken(token); - return parseToken; - } - - - /** - * 从token中获取userId - */ - public static String getUserId(String token) { - String uid = parseToJwt(token).getPayloads().getStr("uid"); - return uid; - } - - /** - * 从token中获取rcodes - */ - public static String getRcodes(String token) { - String uid = parseToJwt(token).getPayloads().getStr("rcodes"); - return uid; - } - - - /** - * 从token中获取jti - */ - public static String getJti(String token) { - String jti = parseToJwt(token).getPayloads().getStr(JwtClaimNames.JTI).replaceAll("-", ""); - return jti; - } - - - /** - * 从token中获取过期时间 - */ - public static Date getExp(String token) { - String exp = parseToJwt(token).getPayloads().getStr(JwtClaimNames.EXP).toString(); - return DateUtil.date(Long.valueOf(exp) * 1000); - } - -} diff --git a/resource-server/pom.xml b/resource-server/pom.xml index aaee8fe..4d55f4a 100644 --- a/resource-server/pom.xml +++ b/resource-server/pom.xml @@ -22,7 +22,11 @@ common-web 1.0.0-SNAPSHOT - + + com.evotech.hd + common-permission + 1.0.0-SNAPSHOT + com.evotech.hd common-mybatis @@ -66,20 +70,6 @@ io.minio minio - - com.evotech.hd - common-redis - 1.0.0-SNAPSHOT - compile - - - cn.hutool - hutool-jwt - - - org.springframework.security - spring-security-oauth2-jose - diff --git a/resource-server/src/main/java/com/evotech/hd/resource/config/permission/PermissionResourceMybatisPlusConfig.java b/resource-server/src/main/java/com/evotech/hd/resource/config/permission/PermissionResourceMybatisPlusConfig.java deleted file mode 100644 index 595444c..0000000 --- a/resource-server/src/main/java/com/evotech/hd/resource/config/permission/PermissionResourceMybatisPlusConfig.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.evotech.hd.resource.config.permission; - -import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; -import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor; -import com.evotech.hd.resource.handler.DataScopeHandler; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -/** - * @desc: - * @ClassName:MybatisPlusConfig - * @date: 2025年04月14日 16:14 - * @author: andy.shi - * @contact: 17330188597 - * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 - */ -@EnableTransactionManagement(proxyTargetClass = true) -@Configuration -public class PermissionResourceMybatisPlusConfig { - - @Bean("permissionResourceMybatisPlusInterceptor") - public MybatisPlusInterceptor mybatisPlusInterceptor() { - - MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); - // 数据权限插件 - interceptor.addInnerInterceptor(new DataPermissionInterceptor(new DataScopeHandler())); - return interceptor; - } - -} diff --git a/resource-server/src/main/java/com/evotech/hd/resource/service/impl/MenuServiceImpl.java b/resource-server/src/main/java/com/evotech/hd/resource/service/impl/MenuServiceImpl.java index 73d3ced..95e23b7 100644 --- a/resource-server/src/main/java/com/evotech/hd/resource/service/impl/MenuServiceImpl.java +++ b/resource-server/src/main/java/com/evotech/hd/resource/service/impl/MenuServiceImpl.java @@ -1,12 +1,6 @@ package com.evotech.hd.resource.service.impl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; - +import com.alibaba.nacos.common.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.dao.resource.auth.AuthMenuDao; @@ -18,11 +12,20 @@ import com.evotech.hd.common.core.entity.resource.auth.AuthRoleResource; import com.evotech.hd.common.core.enums.CodeMsg; import com.evotech.hd.resource.service.MenuService; import com.evotech.hd.resource.utils.MenuUtil; - import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; @Service +@Slf4j public class MenuServiceImpl implements MenuService { @Resource @@ -89,9 +92,35 @@ public class MenuServiceImpl implements MenuService { if (menuList.isEmpty()) { return new Result>().error(CodeMsg.DATABASE_RESULT_NULL); } + buildParentAuthMenu(menuList); menuList = MenuUtil.treeMenuList(menuList, 0); return new Result>().success(menuList); } + + + public List buildParentAuthMenu(List menuList){ + //初始化加载父级 + try { + List pkIds = menuList.stream().map(AuthMenu::getPkId).collect(Collectors.toList()); + List lodParentIds = new ArrayList<>(); + menuList.stream().map(AuthMenu::getParentId).forEach(parentId -> { + if(!pkIds.contains(parentId) && !lodParentIds.contains(parentId)) { + lodParentIds.add(parentId); + } + }); + if(CollectionUtils.isNotEmpty(lodParentIds)) { + List parentList = authMenuDao.selectList(new QueryWrapper().in("pk_id", lodParentIds)); + if(CollectionUtils.isNotEmpty(parentList)) { + menuList.addAll(parentList); + } + } + } catch (Exception e) { + log.error("加载父级菜单出现异常: {}", e.getMessage()); + } + + return menuList; + } + } diff --git a/resource-server/src/main/java/com/evotech/hd/resource/service/impl/RoleServiceImpl.java b/resource-server/src/main/java/com/evotech/hd/resource/service/impl/RoleServiceImpl.java index 7f760d8..13619b9 100644 --- a/resource-server/src/main/java/com/evotech/hd/resource/service/impl/RoleServiceImpl.java +++ b/resource-server/src/main/java/com/evotech/hd/resource/service/impl/RoleServiceImpl.java @@ -205,8 +205,18 @@ public class RoleServiceImpl implements RoleService { oldResourceIds.add(arr.getResourceId()); } } + List dictList = dictService.listDictByType(HDConstant.DEFAULT_MENU_TYPE); + List defaultIds = new ArrayList<>(); + if(CollectionUtils.isNotEmpty(dictList)) { + dictList.stream().forEach(dict -> { + defaultIds.add(dict.getDictValue()); + }); + } // 2. 删除原来的 - authRoleResourceDao.delete(new LambdaQueryWrapper().eq(AuthRoleResource::getRcode, rcode).in(AuthRoleResource::getResourceType, typeArr).in(CollectionUtils.isNotEmpty(oldResourceIds),AuthRoleResource::getResourceId, oldResourceIds)); + authRoleResourceDao.delete(new LambdaQueryWrapper().eq(AuthRoleResource::getRcode, rcode) + .notIn(CollectionUtils.isNotEmpty(defaultIds), AuthRoleResource::getResourceId, defaultIds) + .in(AuthRoleResource::getResourceType, typeArr).in(CollectionUtils.isNotEmpty(oldResourceIds) && darsr.getTypes().indexOf("MENU")< 0,AuthRoleResource::getResourceId, oldResourceIds) + ); return addRoleSource(list); } diff --git a/resource-server/src/main/java/com/evotech/hd/resource/utils/RedisResourceUtils.java b/resource-server/src/main/java/com/evotech/hd/resource/utils/RedisResourceUtils.java deleted file mode 100644 index 7960a80..0000000 --- a/resource-server/src/main/java/com/evotech/hd/resource/utils/RedisResourceUtils.java +++ /dev/null @@ -1,179 +0,0 @@ -package com.evotech.hd.resource.utils; - -import com.evotech.hd.common.core.constant.HDConstant; -import com.evotech.hd.common.core.entity.resource.auth.AuthUser; -import com.evotech.hd.common.redis.utils.RedisUtil; -import com.evotech.hd.common.web.util.RequestContextUtil; -import com.evotech.hd.common.web.util.SpringUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.util.ObjectUtils; -import org.springframework.util.StringUtils; - -/** - * @desc: - * @ClassName:RedisCloudUtils - * @date: 2025年04月14日 15:24 - * @author: andy.shi - * @contact: 17330188597 - * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 - */ - -@Slf4j -public class RedisResourceUtils { - - public static AuthUser getUser(){ - AuthUser user = (AuthUser)getRedisObjectValue("user"); - return (ObjectUtils.isEmpty(user) ? null : user); - } - - public static String getRoleCode(){ - String roles = getRedisStringValue("rcodes"); - return StringUtils.isEmpty(roles) ? "" : roles; - } - - public static String getPermissionValue(String key){ - return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + key+":"+getUserPkId()); - } - - public static String getStationCode(){ - return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_CODE+":"+getUserPkId()); - } - public static String getStationId(){ - return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_ID+":"+getUserPkId()); - } - - public static String getCompanyCode(){ - return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_CODE+":"+getUserPkId()); - } - public static String getCompanyId(){ - return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_ID+":"+getUserPkId()); - } - - public static String getCarCode(){ - return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_CODE+":"+getUserPkId()); - } - public static String getCarId(){ - return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_ID+":"+getUserPkId()); - } - - private static Integer getUserPkId(){ - AuthUser user = getUser(); - if(org.apache.commons.lang3.ObjectUtils.isEmpty(user) || user.getPkId() == null){ - return null; - } - return user.getPkId(); - } - - -// public static Integer getCompanyScopeId(){ -// return getUser().getPkId(); -// } - - - /** - * 获取当前登录的角色信息, 0 站端, 1 管理员, 2 运营商, 3 公司, - * @author: andy.shi - * @contact: 17330188597 - * @date: 2025/4/14/周一 14:21 - * @return: * @return: java.lang.String - */ - public static String getRoleType(){ - String roles = getRoleCode(); - if(isAdmin(roles)){ - return "1"; - } - if(isOperator(roles)){ - return "2"; - } - if(isCompany(roles)){ - return "3"; - } - return "0"; - } - - //如果不等于-1 则证明为管理员 - public static Boolean isAdmin(String roles){ - return isAuthority(roles, HDConstant.SYSTEM_MANAGER_ROLE_CODE); - } - - public static Boolean isOperator(String roles){ - return isAuthority(roles,HDConstant.OPERATOR_ROLE_CODE); - } - - public static Boolean isCompany(String roles){ - return isAuthority(roles,HDConstant.COMPANY_ROLE_CODE); - } - - private static Boolean isAuthority(String checkParamRoles, String paramRoleCode){ - if(org.apache.commons.lang3.StringUtils.isNotEmpty(checkParamRoles)){ - return checkParamRoles.lastIndexOf(paramRoleCode) != -1; - } - return getRoleCode().lastIndexOf(paramRoleCode) != -1; - } - - - /*** - * 根据token拼接key, 获取String结果 - * @param key - * @return - */ - private static String getRedisStringValue(String key) { - return String.valueOf(getRedisObjectValue(key)); - } - - /*** - * 根据token拼接key, 获取Object结果 - * @param key - * @return - */ - private static Object getRedisObjectValue(String key) { - String token = RequestContextUtil.getToken(); - if(StringUtils.isEmpty(token)){ - log.error("SpringUtil.getRedisValue========== token is null"); - return null; - } - String jti = null; - try { - jti = TokenUtil.getJti(token); - if(StringUtils.isEmpty(jti)){ - log.error("SpringUtil.getRedisValue========== jtj is null"); - return null; - } - } catch (Exception e) { - log.error("SpringUtil.gegetRedisValuetUser========== jtj is null"); - return null; - } - return getValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + jti + ":"+key); - } - - - /*** - * 根据key获取redis缓存 - * @param key - * @return - */ - private static String getStringValue(String key){ - Object obj = getValue(key); - return ObjectUtils.isEmpty(obj) ? null : String.valueOf(obj); - } - - /*** - * 根据key获取redis缓存 - * @param key - * @return - */ - private static Object getValue(String key){ - RedisUtil redisUtil = SpringUtil.getBean(RedisUtil.class); - if(ObjectUtils.isEmpty(redisUtil)){ - log.error("SpringUtil.getRedisValue========== redisUtil is null"); - } - Object obj = redisUtil.get(key); - if(ObjectUtils.isEmpty(obj)){ - log.error("SpringUtil.getRedisValue=={}========== obj is null",key); - return null; - } - log.info("SpringUtil.getRedisValue=={}===={}",key,String.valueOf(obj)); - return obj; - } - -} diff --git a/wechat-server/pom.xml b/wechat-server/pom.xml index 2f72c85..2c461ed 100644 --- a/wechat-server/pom.xml +++ b/wechat-server/pom.xml @@ -23,7 +23,7 @@ com.evotech.hd - common-redis + common-permission 1.0.0-SNAPSHOT @@ -80,16 +80,6 @@ core 3.5.3 - - org.springframework.security - spring-security-oauth2-jose - - - cn.hutool - hutool-jwt - - - diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/config/PermissionWechatMybatisPlusConfig.java b/wechat-server/src/main/java/com/evotech/hd/wechat/config/PermissionWechatMybatisPlusConfig.java deleted file mode 100644 index cc52e71..0000000 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/config/PermissionWechatMybatisPlusConfig.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.evotech.hd.wechat.config; - -import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; -import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor; -import com.evotech.hd.wechat.handler.DataScopeHandler; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -/** - * @desc: - * @ClassName:MybatisPlusConfig - * @date: 2025年04月14日 16:14 - * @author: andy.shi - * @contact: 17330188597 - * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 - */ -@EnableTransactionManagement(proxyTargetClass = true) -@Configuration -public class PermissionWechatMybatisPlusConfig { - - @Bean("permissionWechatMybatisPlusInterceptor") - public MybatisPlusInterceptor mybatisPlusInterceptor() { - MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); - // 数据权限插件 - interceptor.addInnerInterceptor(new DataPermissionInterceptor(new DataScopeHandler())); - return interceptor; - } - -} diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/handler/DataScopeHandler.java b/wechat-server/src/main/java/com/evotech/hd/wechat/handler/DataScopeHandler.java deleted file mode 100644 index cea9a20..0000000 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/handler/DataScopeHandler.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.evotech.hd.wechat.handler; - -import com.alibaba.nacos.common.utils.CollectionUtils; -import com.alibaba.nacos.common.utils.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.handler.MultiDataPermissionHandler; -import com.evotech.hd.common.core.permission.DataScope; -import com.evotech.hd.common.core.permission.DataScopes; -import com.evotech.hd.wechat.utils.permission.RedisWechatUtils; -import net.sf.jsqlparser.expression.Expression; -import net.sf.jsqlparser.expression.Parenthesis; -import net.sf.jsqlparser.expression.StringValue; -import net.sf.jsqlparser.expression.operators.relational.ExpressionList; -import net.sf.jsqlparser.expression.operators.relational.InExpression; -import net.sf.jsqlparser.schema.Column; -import net.sf.jsqlparser.schema.Table; -import org.apache.commons.lang3.ObjectUtils; - -import java.util.Arrays; -import java.util.stream.Collectors; - -/** - * @desc: - * @ClassName:DataScopeHandler - * @date: 2025年04月14日 14:54 - * @author: andy.shi - * @contact: 17330188597 - * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 - */ - -public class DataScopeHandler implements MultiDataPermissionHandler { - - /** - * 获取数据权限 SQL 片段。 - *

旧的 {@link MultiDataPermissionHandler#getSqlSegment(Expression, String)} 方法第一个参数包含所有的 where 条件信息,如果 return 了 null 会覆盖原有的 where 数据,

- *

新版的 {@link MultiDataPermissionHandler#getSqlSegment(Table, Expression, String)} 方法不能覆盖原有的 where 数据,如果 return 了 null 则表示不追加任何 where 条件

- * - * @param table 所执行的数据库表信息,可以通过此参数获取表名和表别名 - * @param where 原有的 where 条件信息 - * @param mappedStatementId Mybatis MappedStatement Id 根据该参数可以判断具体执行方法 - * @return JSqlParser 条件表达式,返回的条件表达式会拼接在原有的表达式后面(不会覆盖原有的表达式) - */ - - @Override - public Expression getSqlSegment(Table table, Expression where, String mappedStatementId) { - try { - if(table != null && CollectionUtils.isNotEmpty(table.getNameParts()) && !"1".equals(RedisWechatUtils.getRoleType())){ - String roleCode = RedisWechatUtils.getRoleCode(); - Class mapperClazz = Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf("."))); - //优先检查是不是单角色权限 - DataScope dataScope = mapperClazz.getAnnotation(DataScope.class); - if (ObjectUtils.isNotEmpty(dataScope) && dataScope.enabled()) { - if(dataScope.permissionObject().equals(roleCode)){ - return buildDataScopeByAnnotation(dataScope); - } - } - //如果不是, 检查多角色权限 - DataScopes dataScopesList = mapperClazz.getAnnotation(DataScopes.class); - if (ObjectUtils.isNotEmpty(dataScopesList)) { - for (DataScope dataScopes :dataScopesList.value()){ - if(dataScopes.enabled()){ - if(dataScopes.permissionObject().equals(roleCode)){ - return buildDataScopeByAnnotation(dataScopes); - } - } - } - } - } - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - return null; - } - - - - /** - * DataScope注解方式,拼装数据权限 - * - * @param dataScope - * @return - */ - private Expression buildDataScopeByAnnotation(DataScope dataScope) { - Expression expression = buildDataScopeExpression(dataScope, RedisWechatUtils.getPermissionValue(dataScope.permissionScopeRedisKey())); - return expression == null ? null : new Parenthesis(expression); - } - - - private Expression buildDataScopeExpression(DataScope dataScope, String value) { - if(!"null".equals(value)){ - ExpressionList expressionList = new ExpressionList(Arrays.asList(value.split(",")).stream().map(StringValue::new).collect(Collectors.toList())); - // 设置左边的字段表达式,右边设置值。 - InExpression operatorInExpression = new InExpression(); - operatorInExpression.setLeftExpression(buildColumn(dataScope.tableAlias(), dataScope.permissionScopeName())); - operatorInExpression.setRightExpression(new Parenthesis(expressionList)); - return operatorInExpression; - - } - return null; - } - - /** - * 构建Column - * - * @param tableAlias 表别名 - * @param columnName 字段名称 - * @return 带表别名字段 - */ - private static Column buildColumn(String tableAlias, String columnName) { - if (StringUtils.isNotEmpty(tableAlias)) { - columnName = tableAlias + "." + columnName; - } - return new Column(columnName); - } - -} diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/RedisWechatUtils.java b/wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/RedisWechatUtils.java deleted file mode 100644 index 2b477f0..0000000 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/RedisWechatUtils.java +++ /dev/null @@ -1,179 +0,0 @@ -package com.evotech.hd.wechat.utils.permission; - -import com.evotech.hd.common.core.constant.HDConstant; -import com.evotech.hd.common.core.entity.resource.auth.AuthUser; -import com.evotech.hd.common.redis.utils.RedisUtil; -import com.evotech.hd.common.web.util.RequestContextUtil; -import com.evotech.hd.common.web.util.SpringUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.util.ObjectUtils; -import org.springframework.util.StringUtils; - -/** - * @desc: - * @ClassName:RedisCloudUtils - * @date: 2025年04月14日 15:24 - * @author: andy.shi - * @contact: 17330188597 - * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 - */ - -@Slf4j -public class RedisWechatUtils { - - public static AuthUser getUser(){ - AuthUser user = (AuthUser)getRedisObjectValue("user"); - return (ObjectUtils.isEmpty(user) ? null : user); - } - - public static String getRoleCode(){ - String roles = getRedisStringValue("rcodes"); - return StringUtils.isEmpty(roles) ? "" : roles; - } - - public static String getPermissionValue(String key){ - return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + key+":"+getUserPkId()); - } - - public static String getStationCode(){ - return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_CODE+":"+getUserPkId()); - } - public static String getStationId(){ - return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_ID+":"+getUserPkId()); - } - - public static String getCompanyCode(){ - return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_CODE+":"+getUserPkId()); - } - public static String getCompanyId(){ - return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_ID+":"+getUserPkId()); - } - - public static String getCarCode(){ - return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_CODE+":"+getUserPkId()); - } - public static String getCarId(){ - return getStringValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_ID+":"+getUserPkId()); - } - - private static Integer getUserPkId(){ - AuthUser user = getUser(); - if(org.apache.commons.lang3.ObjectUtils.isEmpty(user) || user.getPkId() == null){ - return null; - } - return user.getPkId(); - } - - -// public static Integer getCompanyScopeId(){ -// return getUser().getPkId(); -// } - - - /** - * 获取当前登录的角色信息, 0 站端, 1 管理员, 2 运营商, 3 公司, - * @author: andy.shi - * @contact: 17330188597 - * @date: 2025/4/14/周一 14:21 - * @return: * @return: java.lang.String - */ - public static String getRoleType(){ - String roles = getRoleCode(); - if(isAdmin(roles)){ - return "1"; - } - if(isOperator(roles)){ - return "2"; - } - if(isCompany(roles)){ - return "3"; - } - return "0"; - } - - //如果不等于-1 则证明为管理员 - public static Boolean isAdmin(String roles){ - return isAuthority(roles, HDConstant.SYSTEM_MANAGER_ROLE_CODE); - } - - public static Boolean isOperator(String roles){ - return isAuthority(roles,HDConstant.OPERATOR_ROLE_CODE); - } - - public static Boolean isCompany(String roles){ - return isAuthority(roles,HDConstant.COMPANY_ROLE_CODE); - } - - private static Boolean isAuthority(String checkParamRoles, String paramRoleCode){ - if(org.apache.commons.lang3.StringUtils.isNotEmpty(checkParamRoles)){ - return checkParamRoles.lastIndexOf(paramRoleCode) != -1; - } - return getRoleCode().lastIndexOf(paramRoleCode) != -1; - } - - - /*** - * 根据token拼接key, 获取String结果 - * @param key - * @return - */ - private static String getRedisStringValue(String key) { - return String.valueOf(getRedisObjectValue(key)); - } - - /*** - * 根据token拼接key, 获取Object结果 - * @param key - * @return - */ - private static Object getRedisObjectValue(String key) { - String token = RequestContextUtil.getToken(); - if(StringUtils.isEmpty(token)){ - log.error("SpringUtil.getRedisValue========== token is null"); - return null; - } - String jti = null; - try { - jti = TokenUtil.getJti(token); - if(StringUtils.isEmpty(jti)){ - log.error("SpringUtil.getRedisValue========== jtj is null"); - return null; - } - } catch (Exception e) { - log.error("SpringUtil.gegetRedisValuetUser========== jtj is null"); - return null; - } - return getValue(HDConstant.LOGIN_CACHE_KEY_PREFIX + jti + ":"+key); - } - - - /*** - * 根据key获取redis缓存 - * @param key - * @return - */ - private static String getStringValue(String key){ - Object obj = getValue(key); - return ObjectUtils.isEmpty(obj) ? null : String.valueOf(obj); - } - - /*** - * 根据key获取redis缓存 - * @param key - * @return - */ - private static Object getValue(String key){ - RedisUtil redisUtil = SpringUtil.getBean(RedisUtil.class); - if(ObjectUtils.isEmpty(redisUtil)){ - log.error("SpringUtil.getRedisValue========== redisUtil is null"); - } - Object obj = redisUtil.get(key); - if(ObjectUtils.isEmpty(obj)){ - log.error("SpringUtil.getRedisValue=={}========== obj is null",key); - return null; - } - log.info("SpringUtil.getRedisValue=={}===={}",key,String.valueOf(obj)); - return obj; - } - -} diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/TokenUtil.java b/wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/TokenUtil.java deleted file mode 100644 index f85fa52..0000000 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/utils/permission/TokenUtil.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.evotech.hd.wechat.utils.permission; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.jwt.JWT; -import cn.hutool.jwt.JWTUtil; -import org.springframework.security.oauth2.jwt.JwtClaimNames; - -import java.util.Date; - -/** - * token解析工具类 - */ -public class TokenUtil { - - - public static JWT parseToJwt(String token) { - JWT parseToken = JWTUtil.parseToken(token); - return parseToken; - } - - - /** - * 从token中获取userId - */ - public static String getUserId(String token) { - String uid = parseToJwt(token).getPayloads().getStr("uid"); - return uid; - } - - /** - * 从token中获取rcodes - */ - public static String getRcodes(String token) { - String uid = parseToJwt(token).getPayloads().getStr("rcodes"); - return uid; - } - - - /** - * 从token中获取jti - */ - public static String getJti(String token) { - String jti = parseToJwt(token).getPayloads().getStr(JwtClaimNames.JTI).replaceAll("-", ""); - return jti; - } - - - /** - * 从token中获取过期时间 - */ - public static Date getExp(String token) { - String exp = parseToJwt(token).getPayloads().getStr(JwtClaimNames.EXP).toString(); - return DateUtil.date(Long.valueOf(exp) * 1000); - } - -} From eb7d7c6bff8264decfe429090e0acea00582320b Mon Sep 17 00:00:00 2001 From: andy <1042025947@qq.com> Date: Thu, 17 Apr 2025 16:34:35 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E6=9D=83=E9=99=90=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ResourceService.java | 18 +++-- .../service/impl/LoginServiceImpl.java | 78 ++++++++++++------- .../hd/common/core/constant/HDConstant.java | 5 ++ .../cloud/HomeDataOrderSwapCollateDao.java | 3 + .../dao/resource/auth/AuthUserStationDao.java | 15 ++++ .../entity/resource/auth/AuthUserStation.java | 59 ++++++++++++++ .../permission/handler/DataScopeHandler.java | 47 ++++++++++- .../controller/BatteryStationController.java | 6 ++ .../hd/cloud/dao/BatteryStationDcDao.java | 8 +- .../hd/cloud/dao/BatteryStationRobotDao.java | 7 +- .../cloud/service/BatteryStationService.java | 2 + .../impl/BatteryStationServiceImpl.java | 6 ++ .../cloud/service/impl/HomeServiceImpl.java | 3 + .../com/evotech/hd/cloud/AesDecryTest.java | 36 ++++----- resource-server/pom.xml | 6 +- .../resource/ResourceServerApplication.java | 2 + .../controller/AuthUserController.java | 31 +++++--- .../hd/resource/service/AuthUserService.java | 9 ++- .../service/impl/AuthUserServiceImpl.java | 59 +++++++++++--- .../hd/resource/service/rpc/CloudService.java | 19 +++++ .../mapper/AuthUserStationMapper.xml | 21 +++++ .../src/main/resources/application.yml | 2 +- 22 files changed, 352 insertions(+), 90 deletions(-) create mode 100644 base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/auth/AuthUserStationDao.java create mode 100644 base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserStation.java create mode 100644 resource-server/src/main/java/com/evotech/hd/resource/service/rpc/CloudService.java create mode 100644 resource-server/src/main/resources/mapper/AuthUserStationMapper.xml diff --git a/authorization-server/src/main/java/com/evotech/hd/authorization/service/ResourceService.java b/authorization-server/src/main/java/com/evotech/hd/authorization/service/ResourceService.java index 5b3ca20..c50a0a8 100644 --- a/authorization-server/src/main/java/com/evotech/hd/authorization/service/ResourceService.java +++ b/authorization-server/src/main/java/com/evotech/hd/authorization/service/ResourceService.java @@ -1,5 +1,12 @@ package com.evotech.hd.authorization.service; +import com.evotech.hd.common.core.Dto.BaseResponse; +import com.evotech.hd.common.core.entity.LoginCacheInfo; +import com.evotech.hd.common.core.entity.Result; +import com.evotech.hd.common.core.entity.resource.LogLogin; +import com.evotech.hd.common.core.entity.resource.auth.AuthUser; +import com.evotech.hd.common.core.entity.resource.auth.AuthUserStation; +import jakarta.validation.constraints.NotNull; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; @@ -7,12 +14,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; -import com.evotech.hd.common.core.entity.LoginCacheInfo; -import com.evotech.hd.common.core.entity.Result; -import com.evotech.hd.common.core.entity.resource.LogLogin; -import com.evotech.hd.common.core.entity.resource.auth.AuthUser; - -import jakarta.validation.constraints.NotNull; +import java.util.List; @FeignClient(value = "resource-server") public interface ResourceService { @@ -33,4 +35,8 @@ public interface ResourceService { @GetMapping(value = "/resource/logininfo/get", consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE}) public Result loginInfo(@RequestParam("uid") String uid); + + @GetMapping(value = "/resource/user/station",consumes = {MediaType.APPLICATION_JSON_UTF8_VALUE}) + public BaseResponse> loadBatteryStation(@RequestParam("uid") String uid); + } diff --git a/authorization-server/src/main/java/com/evotech/hd/authorization/service/impl/LoginServiceImpl.java b/authorization-server/src/main/java/com/evotech/hd/authorization/service/impl/LoginServiceImpl.java index 1b85f11..7794cde 100644 --- a/authorization-server/src/main/java/com/evotech/hd/authorization/service/impl/LoginServiceImpl.java +++ b/authorization-server/src/main/java/com/evotech/hd/authorization/service/impl/LoginServiceImpl.java @@ -26,6 +26,7 @@ import com.evotech.hd.common.core.entity.resource.LogLogin; import com.evotech.hd.common.core.entity.resource.auth.AuthPermission; import com.evotech.hd.common.core.entity.resource.auth.AuthRole; import com.evotech.hd.common.core.entity.resource.auth.AuthUser; +import com.evotech.hd.common.core.entity.resource.auth.AuthUserStation; import com.evotech.hd.common.core.enums.CodeMsg; import com.evotech.hd.common.redis.utils.RedisUtil; import com.evotech.hd.common.web.util.IpUtil; @@ -175,44 +176,63 @@ public class LoginServiceImpl implements LoginService { //开始缓存权限信息 redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_AUTH_USER_UID+":"+user.getPkId(), user.getUid()); - if(rcodeList.contains(HDConstant.OPERATOR_ROLE_CODE)){ - BaseResponse> result = cloudService.loadBatteryStation(user.getBusinessCode()); - if(CodeMsg.SUCCESS.getCode().equals(result.getCode())){ - List list = result.getData(); - String pkIds = "-1"; - String codes = "-1"; - if(CollectionUtils.isNotEmpty(list)){ - pkIds = list.stream().map(BatteryStation::getPkId).map(String::valueOf).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); - codes = list.stream().map(BatteryStation::getCode).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); + //如果是运营方的类型账号 + String pkIds = "-1", codes="-1"; + if(Integer.valueOf(2).equals(user.getType())){ + if(rcodeList.contains(HDConstant.OPERATOR_ROLE_CODE)){ + BaseResponse> result = cloudService.loadBatteryStation(user.getBusinessCode()); + if(CodeMsg.SUCCESS.getCode().equals(result.getCode())){ + List list = result.getData(); + if(CollectionUtils.isNotEmpty(list)){ + pkIds = list.stream().map(BatteryStation::getPkId).map(String::valueOf).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); + codes = list.stream().map(BatteryStation::getCode).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); + } + } + }else{ + //不是运营商管理角色 + // 检查当前角色的站点信息 + BaseResponse> result = resourceService.loadBatteryStation(user.getUid()); + if(CodeMsg.SUCCESS.getCode().equals(result.getCode())){ + List list = result.getData(); + if(CollectionUtils.isNotEmpty(list)){ + pkIds = list.stream().map(AuthUserStation::getStationId).map(String::valueOf).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); + codes = list.stream().map(AuthUserStation::getStationCode).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); + } } - redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_PROXY_CODE+":"+user.getPkId(), user.getBusinessCode()); - redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_ID+":"+user.getPkId(), pkIds); - redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_CODE+":"+user.getPkId(), codes); } } - if(rcodeList.contains(HDConstant.COMPANY_ROLE_CODE)){ + redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_PROXY_CODE+":"+user.getPkId(), user.getBusinessCode()); + redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_ID+":"+user.getPkId(), pkIds); + redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_CODE+":"+user.getPkId(), codes); + + //客户角色 + String companyId="-1", companyCode="-1", carIds="-1", carPlateNums="-1"; + if(Integer.valueOf(3).equals(user.getType())){ BaseResponse companyResult = cloudService.loadCompany(user.getBusinessCode()); - String companyId="-1", companyCode="-1", carIds="-1", carPlateNums="-1"; - if(CodeMsg.SUCCESS.getCode().equals(companyResult.getCode())){ - Company company = companyResult.getData(); - if(!ObjectUtils.isEmpty(company)){ - companyId = String.valueOf(company.getPkId()); - companyCode = company.getCcode(); - BaseResponse> vehicleInfoResult = cloudService.loadVehicleInfo(company.getCcode()); - if(CodeMsg.SUCCESS.getCode().equals(vehicleInfoResult.getCode())){ - List list = vehicleInfoResult.getData(); - if(CollectionUtils.isNotEmpty(list)){ - carIds = list.stream().map(VehicleInfo::getPkId).map(String::valueOf).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); - carPlateNums = list.stream().map(VehicleInfo::getPlateNum).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); + if(rcodeList.contains(HDConstant.COMPANY_ROLE_CODE)){ + if(CodeMsg.SUCCESS.getCode().equals(companyResult.getCode())){ + Company company = companyResult.getData(); + if(!ObjectUtils.isEmpty(company)){ + companyId = String.valueOf(company.getPkId()); + companyCode = company.getCcode(); + BaseResponse> vehicleInfoResult = cloudService.loadVehicleInfo(company.getCcode()); + if(CodeMsg.SUCCESS.getCode().equals(vehicleInfoResult.getCode())){ + List list = vehicleInfoResult.getData(); + if(CollectionUtils.isNotEmpty(list)){ + carIds = list.stream().map(VehicleInfo::getPkId).map(String::valueOf).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); + carPlateNums = list.stream().map(VehicleInfo::getPlateNum).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(",")); + } } } } } - redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_ID+":"+user.getPkId(), companyId); - redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_CODE+":"+user.getPkId(), companyCode); - redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_ID+":"+user.getPkId(), carIds); - redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_CODE+":"+user.getPkId(), carPlateNums); } + redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_ID+":"+user.getPkId(), companyId); + redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_CODE+":"+user.getPkId(), companyCode); + redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_ID+":"+user.getPkId(), carIds); + redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_CODE+":"+user.getPkId(), carPlateNums); + + return uv; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java index 5e40de0..4ba91f3 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java @@ -28,6 +28,11 @@ public interface HDConstant { */ String COMPANY_ROLE_CODE = "COMPANY"; + /** + * 没有权限 + */ + String PERMISSION_NOT_CODE = "notPermission"; + /** * 认证请求头key diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/HomeDataOrderSwapCollateDao.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/HomeDataOrderSwapCollateDao.java index aad3750..86f97d8 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/HomeDataOrderSwapCollateDao.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/HomeDataOrderSwapCollateDao.java @@ -1,12 +1,15 @@ package com.evotech.hd.common.core.dao.cloud; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.cloud.HomeDataOrderSwapCollate; +import com.evotech.hd.common.core.permission.DataScope; /** * @author zrb * @since 2025-03-07 */ +@DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE) public interface HomeDataOrderSwapCollateDao extends BaseMapper { } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/auth/AuthUserStationDao.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/auth/AuthUserStationDao.java new file mode 100644 index 0000000..eedc6a9 --- /dev/null +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/resource/auth/AuthUserStationDao.java @@ -0,0 +1,15 @@ +package com.evotech.hd.common.core.dao.resource.auth; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.entity.resource.auth.AuthUserStation; + +/** + * @desc: 用户和充电站的关联 + * @ClassName:AuthUserStationDao + * @date: 2025年04月17日 13:49 + * @author: andy.shi + * @contact: 17330188597 + * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 + */ +public interface AuthUserStationDao extends BaseMapper { +} diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserStation.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserStation.java new file mode 100644 index 0000000..eb0e8b9 --- /dev/null +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserStation.java @@ -0,0 +1,59 @@ +package com.evotech.hd.common.core.entity.resource.auth; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Getter; +import lombok.Setter; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * 账户和站的关系, 一般是运营端使用 + * @ClassName:AuthUserStation + * @date: 2025年04月17日 16:14 + * @author: andy.shi + * @contact: 17330188597 + * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 + */ +@Getter +@Setter +@TableName("yt_auth_user_station") +@Schema(name = "账号角色关系") +public class AuthUserStation implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "pk_id", type = IdType.AUTO) + private Integer pkId; + + @Schema(description = "用户ID") + @NotBlank + private String uid; + + @Schema(description = "充电站编码") + @NotBlank + private String stationCode; + + @Schema(description = "充电站Id") + @NotBlank + private Integer stationId; + + @Schema(description = "创建人") + private String creater; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + private Date ctime; + + @Schema(description = "修改时间", hidden = true) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + private Date uptime; +} diff --git a/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/handler/DataScopeHandler.java b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/handler/DataScopeHandler.java index 0ed999d..8e174e3 100644 --- a/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/handler/DataScopeHandler.java +++ b/base-commons/common-permission/src/main/java/com/evotech/hd/common/permission/handler/DataScopeHandler.java @@ -1,9 +1,12 @@ package com.evotech.hd.common.permission.handler; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.handler.MultiDataPermissionHandler; +import com.evotech.hd.common.core.constant.HDConstant; +import com.evotech.hd.common.core.entity.resource.auth.AuthUser; import com.evotech.hd.common.core.permission.DataScope; import com.evotech.hd.common.core.permission.DataScopes; import com.evotech.hd.common.permission.util.RedisPermissionUtils; @@ -43,14 +46,18 @@ public class DataScopeHandler implements MultiDataPermissionHandler { @Override public Expression getSqlSegment(Table table, Expression where, String mappedStatementId) { try { - if(table != null && CollectionUtils.isNotEmpty(table.getNameParts()) && !"1".equals(RedisPermissionUtils.getRoleType())){ - String roleCode = RedisPermissionUtils.getRoleCode(); + if(table != null && CollectionUtils.isNotEmpty(table.getNameParts()) && !"1".equals(RedisPermissionUtils.getRoleType()) && BeanUtil.isNotEmpty(RedisPermissionUtils.getUser())){ + String roleCode = getUserRoleType(); Class mapperClazz = Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf("."))); //优先检查是不是单角色权限 DataScope dataScope = mapperClazz.getAnnotation(DataScope.class); if (ObjectUtils.isNotEmpty(dataScope) && dataScope.enabled()) { if(dataScope.permissionObject().equals(roleCode)){ return buildDataScopeByAnnotation(dataScope); + }else + //如果说等于没有权限 + if(HDConstant.PERMISSION_NOT_CODE.equals(roleCode)){ + return buildNotDataScopeByAnnotation(dataScope); } } //如果不是, 检查多角色权限 @@ -60,7 +67,11 @@ public class DataScopeHandler implements MultiDataPermissionHandler { if(dataScopes.enabled()){ if(dataScopes.permissionObject().equals(roleCode)){ return buildDataScopeByAnnotation(dataScopes); - } + }else + //如果说等于没有权限 + if(HDConstant.PERMISSION_NOT_CODE.equals(roleCode)){ + return buildNotDataScopeByAnnotation(dataScope); + } } } } @@ -72,6 +83,23 @@ public class DataScopeHandler implements MultiDataPermissionHandler { } + private String getUserRoleType(){ + AuthUser user = RedisPermissionUtils.getUser(); + if(BeanUtil.isNotEmpty(user) && user .getType() != null){ + switch (user.getType()){ + case 1: + return ""; + case 2: + return HDConstant.OPERATOR_ROLE_CODE; + case 3: + return HDConstant.COMPANY_ROLE_CODE; + default: + return HDConstant.PERMISSION_NOT_CODE; + } + } + + return HDConstant.PERMISSION_NOT_CODE; + } /** * DataScope注解方式,拼装数据权限 @@ -84,9 +112,20 @@ public class DataScopeHandler implements MultiDataPermissionHandler { return expression == null ? null : new Parenthesis(expression); } + /** + * DataScope注解方式,拼装数据权限 + * + * @param dataScope + * @return + */ + private Expression buildNotDataScopeByAnnotation(DataScope dataScope) { + Expression expression = buildDataScopeExpression(dataScope, "-1"); + return expression == null ? null : new Parenthesis(expression); + } + private Expression buildDataScopeExpression(DataScope dataScope, String value) { - if(!"null".equals(value)){ + if(StringUtils.isNotEmpty(value) && !"null".equals(value)){ ExpressionList expressionList = new ExpressionList(Arrays.asList(value.split(",")).stream().map(StringValue::new).collect(Collectors.toList())); // 设置左边的字段表达式,右边设置值。 InExpression operatorInExpression = new InExpression(); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/BatteryStationController.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/BatteryStationController.java index 4a830c3..9d1268c 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/BatteryStationController.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/BatteryStationController.java @@ -104,4 +104,10 @@ public class BatteryStationController { return batteryStationService.loginList(proxyCode); } + @Operation(summary = "查询") + @GetMapping("/resource/list") + public BaseResponse> resourceList(@RequestParam String pkIds) { + return batteryStationService.resourceList(pkIds); + } + } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDcDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDcDao.java index 14d0c14..5985de0 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDcDao.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDcDao.java @@ -1,14 +1,18 @@ package com.evotech.hd.cloud.dao; -import java.util.List; - import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.cloud.BatteryStationDc; +import com.evotech.hd.common.core.permission.DataScope; + +import java.util.List; /** * @author zrb * @since 2024-10-17 */ + +@DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "source_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE) public interface BatteryStationDcDao extends BaseMapper { List getDcByStationCode(String stationCode); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationRobotDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationRobotDao.java index ce549ff..c284d8d 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationRobotDao.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationRobotDao.java @@ -1,14 +1,17 @@ package com.evotech.hd.cloud.dao; -import java.util.List; - import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.cloud.BatteryStationRobot; +import com.evotech.hd.common.core.permission.DataScope; + +import java.util.List; /** * @author zrb * @since 2024-10-17 */ +@DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE) public interface BatteryStationRobotDao extends BaseMapper { List getRobotByStationCode(String stationCode); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/BatteryStationService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/BatteryStationService.java index b1a2f1d..b0b955a 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/BatteryStationService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/BatteryStationService.java @@ -32,4 +32,6 @@ public interface BatteryStationService { public BaseResponse> loginList(String proxyId); + public BaseResponse> resourceList(String pkIds); + } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationServiceImpl.java index 82df5d4..2e8524a 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationServiceImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationServiceImpl.java @@ -272,4 +272,10 @@ public class BatteryStationServiceImpl implements BatteryStationService { return new BaseResponse>().success(batteryStationDao.selectList(new LambdaQueryWrapper().eq(BatteryStation::getProxyId, proxyCode).select(BatteryStation::getPkId, BatteryStation::getCode))); } + @Override + public BaseResponse> resourceList(String pkIds) { + String[] pkIdArray = pkIds.split(","); + return new BaseResponse>().success(batteryStationDao.selectList(new LambdaQueryWrapper().eq((pkIdArray != null && pkIdArray.length > 0), BatteryStation::getPkId, Arrays.asList(pkIdArray)).eq(BatteryStation::getStatus, 1).eq(BatteryStation::getDelFlag, 0).select(BatteryStation::getPkId, BatteryStation::getCode))); + } + } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java index 23775c3..34fb677 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java @@ -154,6 +154,9 @@ public class HomeServiceImpl implements HomeService { data.setDayBegin(DateUtil.format(hd.getTimeBegin(), DatePattern.PURE_DATE_PATTERN)); data.setDayEnd(DateUtil.format(hd.getTimeEnd(), DatePattern.PURE_DATE_PATTERN)); // 交易 + /*** + * @TODO: 待定 + */ List collateList = homeDataTradeCollateDao.selectList(new QueryWrapper() .ge("day", data.getDayBegin()) .le("day", data.getDayEnd())); diff --git a/cloud-manage-server/src/test/java/com/evotech/hd/cloud/AesDecryTest.java b/cloud-manage-server/src/test/java/com/evotech/hd/cloud/AesDecryTest.java index e5225cc..df2f44d 100644 --- a/cloud-manage-server/src/test/java/com/evotech/hd/cloud/AesDecryTest.java +++ b/cloud-manage-server/src/test/java/com/evotech/hd/cloud/AesDecryTest.java @@ -1,31 +1,23 @@ package com.evotech.hd.cloud; -import java.util.Base64; - -import javax.crypto.SecretKey; - -import cn.hutool.crypto.KeyUtil; -import cn.hutool.crypto.Mode; -import cn.hutool.crypto.Padding; -import cn.hutool.crypto.symmetric.AES; -import cn.hutool.crypto.symmetric.SymmetricAlgorithm; -import cn.hutool.crypto.symmetric.SymmetricCrypto; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; public class AesDecryTest { public static void main(String[] args) { - - String key = "94kl35k25d3t2rk2"; - String iv = "k394kf44lf1pyq8k"; - SymmetricCrypto aes = new AES(Mode.CBC, Padding.PKCS5Padding, key.getBytes(), iv.getBytes()); - // 需要加密的数据 - String data = "2yKExCzIRWg6bLwf2zsTn83XhzTAvuQtW5svhO111zihn3oX/Jrf4UFrKCA5UbZy4SWRF5vtcyYXLr8oFof2xRDBXsvFRDFHYKmmkpN6Udk7ChB0sCNTzisaM/iqAtbybD8uC9HpHYCQsSVipUc//aUhgSNvhK7CewK1UjGKnyBvOvCUJiPGVtuKzX5Pf5KIrR1ozJ+moDq01+td8Du5lA3lXaHdLZ8WbmoqYd2T6r3PDVsh/yxC327mNsQrivK0yL3QUt4ZCuLV6G/nQTsxvNgAYprSNVejGCywDD2cWuA4f90bsxJEKFLJ+XUd9/IAJR50QGhwm0qzxWwZzszWU9+EJoDyp+gUUn9bY4u9V/I="; - - byte[] decrypt = aes.decrypt(Base64.getDecoder().decode(data)); - System.out.println(new String(decrypt)); - - SecretKey key1 = KeyUtil.generateKey(SymmetricAlgorithm.AES.getValue()); - System.out.println(Base64.getEncoder().encodeToString(key1.getEncoded())); + + System.out.println(new BCryptPasswordEncoder().encode("123456")); +// String key = "94kl35k25d3t2rk2"; +// String iv = "k394kf44lf1pyq8k"; +// SymmetricCrypto aes = new AES(Mode.CBC, Padding.PKCS5Padding, key.getBytes(), iv.getBytes()); +// // 需要加密的数据 +// String data = "2yKExCzIRWg6bLwf2zsTn83XhzTAvuQtW5svhO111zihn3oX/Jrf4UFrKCA5UbZy4SWRF5vtcyYXLr8oFof2xRDBXsvFRDFHYKmmkpN6Udk7ChB0sCNTzisaM/iqAtbybD8uC9HpHYCQsSVipUc//aUhgSNvhK7CewK1UjGKnyBvOvCUJiPGVtuKzX5Pf5KIrR1ozJ+moDq01+td8Du5lA3lXaHdLZ8WbmoqYd2T6r3PDVsh/yxC327mNsQrivK0yL3QUt4ZCuLV6G/nQTsxvNgAYprSNVejGCywDD2cWuA4f90bsxJEKFLJ+XUd9/IAJR50QGhwm0qzxWwZzszWU9+EJoDyp+gUUn9bY4u9V/I="; +// +// byte[] decrypt = aes.decrypt(Base64.getDecoder().decode(data)); +// System.out.println(new String(decrypt)); +// +// SecretKey key1 = KeyUtil.generateKey(SymmetricAlgorithm.AES.getValue()); +// System.out.println(Base64.getEncoder().encodeToString(key1.getEncoded())); } diff --git a/resource-server/pom.xml b/resource-server/pom.xml index 4d55f4a..47b95aa 100644 --- a/resource-server/pom.xml +++ b/resource-server/pom.xml @@ -70,7 +70,11 @@ io.minio minio - + + org.springframework.cloud + spring-cloud-starter-openfeign + + ${project.artifactId} diff --git a/resource-server/src/main/java/com/evotech/hd/resource/ResourceServerApplication.java b/resource-server/src/main/java/com/evotech/hd/resource/ResourceServerApplication.java index 68fb669..2e05d0d 100644 --- a/resource-server/src/main/java/com/evotech/hd/resource/ResourceServerApplication.java +++ b/resource-server/src/main/java/com/evotech/hd/resource/ResourceServerApplication.java @@ -5,12 +5,14 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) @EnableDiscoveryClient @ComponentScan("com.evotech.hd.**") @MapperScan({"com.evotech.hd.resource.dao.**", "com.evotech.hd.common.core.dao.**"}) +@EnableFeignClients public class ResourceServerApplication { public static void main(String[] args) { diff --git a/resource-server/src/main/java/com/evotech/hd/resource/controller/AuthUserController.java b/resource-server/src/main/java/com/evotech/hd/resource/controller/AuthUserController.java index a4ea5ea..2c83467 100644 --- a/resource-server/src/main/java/com/evotech/hd/resource/controller/AuthUserController.java +++ b/resource-server/src/main/java/com/evotech/hd/resource/controller/AuthUserController.java @@ -1,28 +1,24 @@ package com.evotech.hd.resource.controller; -import java.util.List; - -import org.springdoc.core.annotations.ParameterObject; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - +import com.evotech.hd.common.core.Dto.BaseResponse; import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.resource.auth.AuthUser; import com.evotech.hd.common.core.entity.resource.auth.AuthUserRole; +import com.evotech.hd.common.core.entity.resource.auth.AuthUserStation; import com.evotech.hd.resource.entity.request.ListUserRequest; import com.evotech.hd.resource.service.AuthUserService; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport; - import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @Tag(name = "用户管理") @RestController @@ -83,4 +79,19 @@ public class AuthUserController { return authUserService.deleteUserRole(uid, rid); } + @Operation(summary = "用户分配站") + @PostMapping("/adduserstation") + @ApiOperationSupport(order = 5) + public Result addUserRole(@RequestParam @NotBlank String uid, @RequestParam String stationIds) { + return authUserService.addUserStation(stationIds, uid); + } + + @Operation(summary = "登录查询站信息") + @GetMapping("/station") + @ApiOperationSupport(order = 4) + public BaseResponse> loadUserStation(@RequestParam @NotBlank String uid) { + return authUserService.loadUserStation(uid); + } + + } diff --git a/resource-server/src/main/java/com/evotech/hd/resource/service/AuthUserService.java b/resource-server/src/main/java/com/evotech/hd/resource/service/AuthUserService.java index 66614f8..dadb5a2 100644 --- a/resource-server/src/main/java/com/evotech/hd/resource/service/AuthUserService.java +++ b/resource-server/src/main/java/com/evotech/hd/resource/service/AuthUserService.java @@ -1,12 +1,14 @@ package com.evotech.hd.resource.service; -import java.util.List; - +import com.evotech.hd.common.core.Dto.BaseResponse; import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.resource.auth.AuthUser; import com.evotech.hd.common.core.entity.resource.auth.AuthUserRole; +import com.evotech.hd.common.core.entity.resource.auth.AuthUserStation; import com.evotech.hd.resource.entity.request.ListUserRequest; +import java.util.List; + public interface AuthUserService { public Result userByName(String uname); @@ -23,4 +25,7 @@ public interface AuthUserService { public Result deleteUserRole(String uid, String rid); + public Result addUserStation(String stationIds, String uid); + + public BaseResponse> loadUserStation(String uid); } diff --git a/resource-server/src/main/java/com/evotech/hd/resource/service/impl/AuthUserServiceImpl.java b/resource-server/src/main/java/com/evotech/hd/resource/service/impl/AuthUserServiceImpl.java index 027697f..67a4534 100644 --- a/resource-server/src/main/java/com/evotech/hd/resource/service/impl/AuthUserServiceImpl.java +++ b/resource-server/src/main/java/com/evotech/hd/resource/service/impl/AuthUserServiceImpl.java @@ -1,28 +1,34 @@ package com.evotech.hd.resource.service.impl; -import java.util.Date; -import java.util.List; -import java.util.stream.Collectors; - -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.StringUtils; - +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.evotech.hd.common.core.Dto.BaseResponse; import com.evotech.hd.common.core.dao.resource.auth.AuthUserDao; import com.evotech.hd.common.core.dao.resource.auth.AuthUserRoleDao; +import com.evotech.hd.common.core.dao.resource.auth.AuthUserStationDao; import com.evotech.hd.common.core.entity.Result; +import com.evotech.hd.common.core.entity.cloud.BatteryStation; import com.evotech.hd.common.core.entity.resource.auth.AuthUser; import com.evotech.hd.common.core.entity.resource.auth.AuthUserRole; +import com.evotech.hd.common.core.entity.resource.auth.AuthUserStation; import com.evotech.hd.common.core.enums.CodeMsg; import com.evotech.hd.common.core.utils.SnowflakeUtil; import com.evotech.hd.resource.entity.request.ListUserRequest; import com.evotech.hd.resource.service.AuthUserService; - -import cn.hutool.core.date.DateUtil; +import com.evotech.hd.resource.service.rpc.CloudService; import jakarta.annotation.Resource; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; @Service public class AuthUserServiceImpl implements AuthUserService { @@ -31,6 +37,10 @@ public class AuthUserServiceImpl implements AuthUserService { private AuthUserDao userDao; @Resource private AuthUserRoleDao authUserRoleDao; + @Resource + private AuthUserStationDao authUserStationDao; + @Resource + private CloudService cloudService; @Override @@ -129,4 +139,31 @@ public class AuthUserServiceImpl implements AuthUserService { return new Result().success(n); } + @Override + public Result addUserStation(String stationIds, String uid) { + BaseResponse> result = cloudService.resourceList(stationIds); + if(CodeMsg.SUCCESS.getCode().equals(result.getCode())){ + List stationlist = result.getData(); + if(!CollectionUtils.isEmpty(stationlist)){ + List list = new ArrayList(); + for (BatteryStation station : stationlist) { + AuthUserStation u = new AuthUserStation(); + u.setUid(uid); + u.setStationId(station.getPkId()); + u.setStationCode(station.getCode()); + list.add(u); + } + authUserStationDao.insert(list); + return new Result().success(list.size()); + } + } + return new Result().error("添加用户站信息失败!"); + } + + @Override + public BaseResponse> loadUserStation(String uid) { + return new BaseResponse>().success(authUserStationDao.selectList(new LambdaQueryWrapper().eq(AuthUserStation::getUid, uid).select(AuthUserStation::getStationId, AuthUserStation::getStationId))); + } + + } diff --git a/resource-server/src/main/java/com/evotech/hd/resource/service/rpc/CloudService.java b/resource-server/src/main/java/com/evotech/hd/resource/service/rpc/CloudService.java new file mode 100644 index 0000000..c5a6f3b --- /dev/null +++ b/resource-server/src/main/java/com/evotech/hd/resource/service/rpc/CloudService.java @@ -0,0 +1,19 @@ +package com.evotech.hd.resource.service.rpc; + +import com.evotech.hd.common.core.Dto.BaseResponse; +import com.evotech.hd.common.core.entity.cloud.BatteryStation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.List; + +@FeignClient(name = "${CLOUD-SERVER-API-NAME}", path = "${CLOUD-SERVER-API-PATH}") +public interface CloudService { + + + @GetMapping(value = "/batterystation/resource/list", + consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE}) + public BaseResponse> resourceList(String pkIds); + +} diff --git a/resource-server/src/main/resources/mapper/AuthUserStationMapper.xml b/resource-server/src/main/resources/mapper/AuthUserStationMapper.xml new file mode 100644 index 0000000..c59a81b --- /dev/null +++ b/resource-server/src/main/resources/mapper/AuthUserStationMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + pk_id, uid, station_code, station_id, creater, ctime, uptime + + + diff --git a/wechat-server/src/main/resources/application.yml b/wechat-server/src/main/resources/application.yml index 76a7003..2341794 100644 --- a/wechat-server/src/main/resources/application.yml +++ b/wechat-server/src/main/resources/application.yml @@ -12,7 +12,7 @@ logging: spring: # 服务名称必须带上,不然nacos服务列表中没有,也不会有注册成功的信息 application: - name: ${cloud-manage-server:wechat-server} + name: ${wechat-server:wechat-server} config: import: - nacos:yt-common.properties?refreshEnabled=true From 93b79dd9a4b8aabd8f6545ef41150ef7226329d7 Mon Sep 17 00:00:00 2001 From: lhb <495598773@qq.com> Date: Fri, 18 Apr 2025 08:54:24 +0800 Subject: [PATCH 08/11] =?UTF-8?q?fix:=E6=8F=90=E5=8F=96=E5=85=AC=E5=85=B1?= =?UTF-8?q?=E5=AE=9E=E4=BD=93=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hd/common/core/entity/BaseEntity.java | 55 +++++++++++++++++++ .../core/entity/cloud/BatteryStation.java | 31 ++++++----- .../cloud/BatteryStationCdStrategy.java | 7 +-- .../cloud/BatteryStationCdStrategyDetail.java | 7 +-- .../core/entity/cloud/BatteryStationDc.java | 7 +-- .../core/entity/cloud/BatteryStationDcc.java | 7 +-- .../core/entity/cloud/BatteryStationDj.java | 7 +-- .../cloud/BatteryStationHdFeeStandard.java | 7 +-- .../BatteryStationHdFeeStandardDetail.java | 7 +-- .../entity/cloud/BatteryStationRobot.java | 7 +-- .../core/entity/cloud/BatteryTrace.java | 7 +-- .../hd/common/core/entity/cloud/Company.java | 7 +-- .../cloud/HomeDataOrderSwapCollate.java | 6 +- .../entity/cloud/HomeDataTradeCollate.java | 6 +- .../core/entity/cloud/OrderRecharge.java | 7 +-- .../core/entity/cloud/OrderSwapBattery.java | 7 +-- .../entity/cloud/OrderSwapBatteryPre.java | 7 +-- .../entity/cloud/OrderSwapBatteryStep.java | 7 +-- .../cloud/PreOrderRelationSwapOrder.java | 6 +- .../common/core/entity/cloud/TradeDetail.java | 7 +-- .../common/core/entity/cloud/VehicleInfo.java | 7 +-- .../cloud/VehicleWechatUserRelation.java | 7 +-- .../core/entity/cloud/WalletAccount.java | 7 +-- .../entity/cloud/WalletAccountDetail.java | 7 +-- .../entity/cloud/vo/BatteryStationVO.java | 6 ++ .../core/entity/resource/BatteryType.java | 7 +-- .../common/core/entity/resource/CarType.java | 7 +-- .../common/core/entity/resource/LogLogin.java | 6 +- .../core/entity/resource/LogUpload.java | 5 ++ .../core/entity/resource/ProxyOperater.java | 12 ++-- .../core/entity/resource/UploadFile.java | 6 +- .../core/entity/resource/WechatAgreement.java | 7 +-- .../core/entity/resource/WechatSwiper.java | 7 +-- .../core/entity/resource/auth/AuthMenu.java | 7 +-- .../entity/resource/auth/AuthPermission.java | 7 +-- .../core/entity/resource/auth/AuthRole.java | 7 +-- .../resource/auth/AuthRoleResource.java | 7 +-- .../core/entity/resource/auth/AuthUser.java | 13 +++-- .../entity/resource/auth/AuthUserRole.java | 4 +- .../core/entity/resource/dict/AdmdvsInfo.java | 6 +- .../core/entity/resource/dict/Dict.java | 7 +-- .../core/entity/resource/dict/DictType.java | 7 +-- .../core/entity/wechat/WechatPayPreOrder.java | 3 +- .../common/core/entity/wechat/WechatUser.java | 3 +- .../PageListBatteryStationRequest.java | 6 ++ 45 files changed, 179 insertions(+), 198 deletions(-) create mode 100644 base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/BaseEntity.java diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/BaseEntity.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/BaseEntity.java new file mode 100644 index 0000000..8d9e06d --- /dev/null +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/BaseEntity.java @@ -0,0 +1,55 @@ +package com.evotech.hd.common.core.entity; + + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.Hidden; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.RequiredMode; +import jakarta.validation.constraints.Min; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * 基础实体类 + * @author lhb + * @date 2023年4月13日 下午4:02:08 + */ +@Data +@Schema(name = "BaseEntity", description = "基础实体类") +public class BaseEntity implements Serializable { + + + private static final long serialVersionUID = 1L; + + @TableId(value = "pk_id", type = IdType.AUTO) + @Hidden + private Integer pkId; + + @Schema(description = "创建人", hidden = true) + @TableField(fill = FieldFill.INSERT) + private String creater; + + @Schema(description = "创建时间", hidden = true) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private Date ctime; + + @Schema(description = "更新人", hidden = true) + @TableField(fill = FieldFill.UPDATE) + private String updater; + + @Schema(description = "更新时间", hidden = true) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private Date uptime; + +} diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStation.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStation.java index edcfbc7..9294270 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStation.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStation.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -25,14 +26,10 @@ import lombok.Data; @Data @TableName("hd_cloud_manage.yt_t_battery_station") @Schema(name = "BatteryStation", description = "换电站") -public class BatteryStation implements Serializable { +public class BatteryStation extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Hidden - private Integer pkId; - @Schema(description = "归属运营商ID", requiredMode = RequiredMode.REQUIRED) @NotBlank(message = "无关联运营商信息") private String proxyId; @@ -50,7 +47,7 @@ public class BatteryStation implements Serializable { @Schema(description = "站点类型ID") private Integer type; - + @Schema(description = "换电计费方式:1-按充电量,2-按SOC,3-按行驶公里数") private Integer feeType; @@ -74,10 +71,10 @@ public class BatteryStation implements Serializable { @Schema(description = "联系电话") private String phone; - + @Schema(description = "服务车辆类型") private String carTypeCode; - + @Schema(description = "是否适合该车辆") @TableField(exist = false) private Boolean isSuitable; @@ -124,20 +121,20 @@ public class BatteryStation implements Serializable { @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private Date uptime; - - + + @Schema(description = "电池列表", hidden = true) @TableField(exist = false) private List dcList; - + @Schema(description = "电池仓列表", hidden = true) @TableField(exist = false) private List dccList; - + @Schema(description = "电机列表", hidden = true) @TableField(exist = false) private List djList; - + @Schema(description = "机器人列表", hidden = true) @TableField(exist = false) private List robotList; @@ -145,5 +142,11 @@ public class BatteryStation implements Serializable { @Schema(description = "换电费用标准", hidden = true) @TableField(exist = false) private List feeStandardList; - + + @Schema(description = "营业起时间") + private String runStartTime; + + @Schema(description = "营业止时间") + private String runEndTime; + } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategy.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategy.java index a4c4976..30ffdab 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategy.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategy.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -25,13 +26,9 @@ import lombok.Data; @Data @TableName("hd_cloud_manage.yt_t_battery_station_cd_strategy") @Schema(name = "电站-充电策略") -public class BatteryStationCdStrategy implements Serializable { +public class BatteryStationCdStrategy extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; @Schema(description = "策略名称", requiredMode = RequiredMode.REQUIRED) @NotBlank diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategyDetail.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategyDetail.java index e1371d1..cbd40a0 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategyDetail.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategyDetail.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -23,14 +24,10 @@ import lombok.Data; @Data @TableName("hd_cloud_manage.yt_t_battery_station_cd_strategy_detail") @Schema(name = "电站-充电策略详情") -public class BatteryStationCdStrategyDetail implements Serializable { +public class BatteryStationCdStrategyDetail extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; - @Schema(description = "换电站编码", requiredMode = RequiredMode.REQUIRED) @NotBlank private String stationCode; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDc.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDc.java index 862638d..eb27f30 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDc.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDc.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -25,14 +26,10 @@ import lombok.Setter; @Setter @TableName("hd_cloud_manage.yt_t_battery_station_dc") @Schema(name = "电站-电池") -public class BatteryStationDc implements Serializable { +public class BatteryStationDc extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; - @Schema(description = "电池型号编码", requiredMode = RequiredMode.REQUIRED) @NotBlank(message = "型号编码不能为空") private String typeCode; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDcc.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDcc.java index 31994b8..b23c8e3 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDcc.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDcc.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -25,14 +26,10 @@ import lombok.Setter; @Setter @TableName("hd_cloud_manage.yt_t_battery_station_dcc") @Schema(name = "电站-电池仓") -public class BatteryStationDcc implements Serializable { +public class BatteryStationDcc extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; - @Schema(description = "换电站编码", requiredMode = RequiredMode.REQUIRED) @NotBlank(message = "换电站编码不能为空") private String stationCode; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDj.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDj.java index 7230e81..2f60343 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDj.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDj.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -25,14 +26,10 @@ import lombok.Setter; @Setter @TableName("hd_cloud_manage.yt_t_battery_station_dj") @Schema(name = "电站-电机") -public class BatteryStationDj implements Serializable { +public class BatteryStationDj extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; - @Schema(description = "换电站编码", requiredMode = RequiredMode.REQUIRED) @NotBlank(message = "换电站编码不能为空") private String stationCode; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandard.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandard.java index 770abb9..466abcd 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandard.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandard.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import cn.hutool.core.date.DatePattern; @@ -29,13 +30,9 @@ import lombok.Setter; @Setter @TableName("hd_cloud_manage.yt_t_battery_station_hd_fee_standard") @Schema(name = "电站-换电费用标准") -public class BatteryStationHdFeeStandard implements Serializable { +public class BatteryStationHdFeeStandard extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; @Schema(description = "费用标准名称") private String name; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandardDetail.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandardDetail.java index ef89571..240ea33 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandardDetail.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandardDetail.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import cn.hutool.core.date.DatePattern; @@ -29,13 +30,9 @@ import lombok.Setter; @Setter @TableName("hd_cloud_manage.yt_t_battery_station_hd_fee_standard_detail") @Schema(name = "电站-换电费用标准细节") -public class BatteryStationHdFeeStandardDetail implements Serializable { +public class BatteryStationHdFeeStandardDetail extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; @Schema(description = "换电站编码", requiredMode = RequiredMode.REQUIRED) @NotBlank(message = "换电站编码不能为空") diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationRobot.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationRobot.java index b2f4fc6..4907fa9 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationRobot.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationRobot.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -25,14 +26,10 @@ import lombok.Setter; @Setter @TableName("hd_cloud_manage.yt_t_battery_station_robot") @Schema(name = "电站-机器人") -public class BatteryStationRobot implements Serializable { +public class BatteryStationRobot extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; - @Schema(description = "换电站编码", requiredMode = RequiredMode.REQUIRED) @NotBlank(message = "换电站编码不能为空") private String stationCode; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryTrace.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryTrace.java index 5b16888..c9d7f63 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryTrace.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryTrace.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -23,14 +24,10 @@ import lombok.Data; @Data @TableName("hd_cloud_manage.yt_t_battery_trace") @Schema(name = "电池追溯表") -public class BatteryTrace implements Serializable { +public class BatteryTrace extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; - @Schema(description = "电池编码", requiredMode = RequiredMode.REQUIRED) @NotBlank private String batCode; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/Company.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/Company.java index 81ece0f..21642cb 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/Company.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/Company.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -25,14 +26,10 @@ import lombok.Setter; @Setter @TableName("hd_cloud_manage.yt_t_company") @Schema(name = "公司客户信息表") -public class Company implements Serializable { +public class Company extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(description = "ID", hidden = true) - private Integer pkId; - @Schema(description = "区划名称", requiredMode = RequiredMode.REQUIRED) @NotBlank(message = "区划名称不能为空") private String division; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataOrderSwapCollate.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataOrderSwapCollate.java index 07f221b..fcc59f6 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataOrderSwapCollate.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataOrderSwapCollate.java @@ -2,6 +2,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -19,13 +20,10 @@ import lombok.Data; @Data @TableName("yt_t_home_data_order_swap_collate") @Schema(name = "首页数据-换电订单中间表") -public class HomeDataOrderSwapCollate implements Serializable { +public class HomeDataOrderSwapCollate extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId("pk_id") - private Integer pkId; - @Schema(description = "站编码") private String stationCode; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataTradeCollate.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataTradeCollate.java index 65c529f..6e42dc5 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataTradeCollate.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataTradeCollate.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -20,13 +21,10 @@ import lombok.Data; @Data @TableName("yt_t_home_data_trade_collate") @Schema(name = "首页数据-交易中间表") -public class HomeDataTradeCollate implements Serializable { +public class HomeDataTradeCollate extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - private Integer pkId; - @Schema(description = "日期") private String day; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderRecharge.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderRecharge.java index 1cfa78e..2b836b6 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderRecharge.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderRecharge.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -22,14 +23,10 @@ import lombok.Setter; @Setter @TableName("hd_cloud_manage.yt_t_order_recharge") @Schema(name = "充值订单") -public class OrderRecharge implements Serializable { +public class OrderRecharge extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; - @Schema(description = "订单时间") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBattery.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBattery.java index c66f831..da2df3e 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBattery.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBattery.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -25,13 +26,9 @@ import lombok.Data; @Data @TableName("hd_cloud_manage.yt_t_order_swap_battery") @Schema(name = "换电订单信息表") -public class OrderSwapBattery implements Serializable { +public class OrderSwapBattery extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; @Schema(description = "预约订单ID") private Integer orderPreId; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryPre.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryPre.java index b21c7e9..f2087e3 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryPre.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryPre.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -23,13 +24,9 @@ import lombok.Data; @Data @TableName("hd_cloud_manage.yt_t_order_swap_battery_pre") @Schema(name = "换电预约订单") -public class OrderSwapBatteryPre implements Serializable { +public class OrderSwapBatteryPre extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(description = "ID", hidden = true) - private Integer pkId; @Schema(description = "来源:1-小程序,2-云端,3-站端", requiredMode = RequiredMode.REQUIRED) @NotNull diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryStep.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryStep.java index b719216..e67ee5e 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryStep.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryStep.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -20,13 +21,9 @@ import lombok.Data; @Data @TableName("hd_cloud_manage.yt_t_order_swap_battery_step") @Schema(name = "换电步骤记录") -public class OrderSwapBatteryStep implements Serializable { +public class OrderSwapBatteryStep extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(description = "ID", hidden = true) - private Integer pkId; @Schema(description = "订单编码") private String orderNo; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/PreOrderRelationSwapOrder.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/PreOrderRelationSwapOrder.java index a047d32..79fa3d0 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/PreOrderRelationSwapOrder.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/PreOrderRelationSwapOrder.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -22,13 +23,10 @@ import lombok.Setter; @Setter @TableName("hd_cloud_manage.yt_t_pre_order_relation_swap_order") @Schema(name = "扫码支付时关联的换电订单号") -public class PreOrderRelationSwapOrder implements Serializable { +public class PreOrderRelationSwapOrder extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - private Integer pkId; - @Schema(description = "微信支付方式") private String payApiType = "NATIVE"; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/TradeDetail.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/TradeDetail.java index f0c5e5e..fb75f0c 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/TradeDetail.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/TradeDetail.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -20,14 +21,10 @@ import lombok.Data; @Data @TableName("hd_cloud_manage.yt_t_trade_detail") @Schema(name = "交易信息表") -public class TradeDetail implements Serializable { +public class TradeDetail extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; - @Schema(description = "换电站编码") private String stationCode; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleInfo.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleInfo.java index d550271..89a99af 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleInfo.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleInfo.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -24,14 +25,10 @@ import lombok.Data; @Data @TableName("hd_cloud_manage.yt_t_vehicle_info") @Schema(name = "车辆信息表") -public class VehicleInfo implements Serializable { +public class VehicleInfo extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; - @Schema(description = "型号编码", requiredMode = RequiredMode.REQUIRED) @NotBlank(message = "型号编码不能为空") private String typeCode; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleWechatUserRelation.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleWechatUserRelation.java index 1098c63..b8a55cf 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleWechatUserRelation.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleWechatUserRelation.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -23,14 +24,10 @@ import lombok.Data; @Data @TableName("hd_cloud_manage.yt_t_vehicle_wechat_user_relation") @Schema(name = "车辆和用户关系") -public class VehicleWechatUserRelation implements Serializable { +public class VehicleWechatUserRelation extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; - @Schema(description = "用户编码", requiredMode = RequiredMode.REQUIRED) private String ucode; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccount.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccount.java index 1fa73c3..eb92e4e 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccount.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccount.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -23,14 +24,10 @@ import lombok.Data; @Data @TableName("hd_cloud_manage.yt_t_wallet_account") @Schema(name = "资金钱包账户表") -public class WalletAccount implements Serializable { +public class WalletAccount extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; - @Schema(description = "户主类型:1-个人,2-企业", requiredMode = RequiredMode.REQUIRED) @NotNull(message = "类型不能为空") private Integer ownerType; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccountDetail.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccountDetail.java index 742693e..269737c 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccountDetail.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccountDetail.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.cloud; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -23,14 +24,10 @@ import lombok.Data; @Data @TableName("hd_cloud_manage.yt_t_wallet_account_detail") @Schema(name = "资金账户明细") -public class WalletAccountDetail implements Serializable { +public class WalletAccountDetail extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; - @Schema(description = "编码", requiredMode = RequiredMode.REQUIRED) @NotBlank private String code; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/vo/BatteryStationVO.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/vo/BatteryStationVO.java index 2c90184..86d9221 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/vo/BatteryStationVO.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/vo/BatteryStationVO.java @@ -59,4 +59,10 @@ public class BatteryStationVO implements Serializable { @Schema(description = "全天营业:1-是,0-否") private Integer openAllDay; + @Schema(description = "营业起时间") + private String runStartTime; + + @Schema(description = "营业止时间") + private String runEndTime; + } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/BatteryType.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/BatteryType.java index 7834347..2bec44d 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/BatteryType.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/BatteryType.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.resource; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -24,14 +25,10 @@ import lombok.Setter; @Setter @TableName("hd_resource.yt_d_battery_type") @Schema(name = "电池型号表") -public class BatteryType implements Serializable { +public class BatteryType extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(description = "ID", hidden = true) - private Integer pkId; - @Schema(description = "型号名称", requiredMode = RequiredMode.REQUIRED) @NotBlank(message = "型号名称不能为空") private String typeName; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/CarType.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/CarType.java index 7a2ed83..94930d8 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/CarType.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/CarType.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.resource; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -24,14 +25,10 @@ import lombok.Setter; @Setter @TableName("hd_resource.yt_d_car_type") @Schema(name = "车辆类型") -public class CarType implements Serializable { +public class CarType extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(description = "ID", hidden = true) - private Integer pkId; - @Schema(description = "类型名称", requiredMode = RequiredMode.REQUIRED) @NotBlank(message = "类型名称不能为空") private String typeName; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/LogLogin.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/LogLogin.java index a1cf9d0..ceeb37b 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/LogLogin.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/LogLogin.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.resource; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -21,13 +22,10 @@ import org.springframework.format.annotation.DateTimeFormat; @EqualsAndHashCode(callSuper = false) @TableName("yt_log_login") @Schema(name = "登录日志", description = "登录日志") -public class LogLogin implements Serializable { +public class LogLogin extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - private Integer pkId; - @Schema(description = "登录人ID") private String uid; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/LogUpload.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/LogUpload.java index 614ac2f..4fbccb6 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/LogUpload.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/LogUpload.java @@ -1,7 +1,10 @@ package com.evotech.hd.common.core.entity.resource; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -55,8 +58,10 @@ public class LogUpload implements Serializable { @Schema(description = "创建时间") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @TableField(fill = FieldFill.INSERT) private Date ctime; @Schema(description = "创建者") + @TableField(fill = FieldFill.INSERT) private String creater; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/ProxyOperater.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/ProxyOperater.java index 297af63..6830db9 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/ProxyOperater.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/ProxyOperater.java @@ -1,13 +1,13 @@ package com.evotech.hd.common.core.entity.resource; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; import java.util.Date; +import io.swagger.v3.oas.annotations.Hidden; import org.springframework.format.annotation.DateTimeFormat; import io.swagger.v3.oas.annotations.media.Schema; @@ -28,8 +28,8 @@ public class ProxyOperater implements Serializable { private static final long serialVersionUID = 1L; - @Schema(description = "ID", hidden = true) @TableId(value = "pk_id", type = IdType.AUTO) + @Hidden private Integer pkId; @Schema(description = "区划名称", requiredMode = RequiredMode.REQUIRED) @@ -79,18 +79,22 @@ public class ProxyOperater implements Serializable { private Integer stationCount; @Schema(description = "创建人") + @TableField(fill = FieldFill.INSERT) private String creater; @Schema(description = "创建时间", hidden = true) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @TableField(fill = FieldFill.INSERT) private Date ctime; @Schema(description = "更新人", hidden = true) + @TableField(fill = FieldFill.UPDATE) private String updater; @Schema(description = "更新时间") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @TableField(fill = FieldFill.UPDATE) private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/UploadFile.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/UploadFile.java index 0ce55f3..fd618b7 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/UploadFile.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/UploadFile.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.resource; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -22,13 +23,10 @@ import lombok.Setter; @Setter @TableName("hd_resource.hd_resource.yt_t_upload_file") @Schema(name = "上传文件表") -public class UploadFile implements Serializable { +public class UploadFile extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - private Integer pkId; - @Schema(description = "公司编码") private String ccode; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatAgreement.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatAgreement.java index 0cb6e61..de45921 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatAgreement.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatAgreement.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.resource; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -23,13 +24,9 @@ import lombok.Data; @TableName("hd_resource.yt_setting_wechat_agreement") @Schema(name = "微信协议") @Data -public class WechatAgreement implements Serializable { +public class WechatAgreement extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; private String appid; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatSwiper.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatSwiper.java index 98840e8..0d79bda 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatSwiper.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatSwiper.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.resource; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -20,13 +21,9 @@ import lombok.Data; @Data @TableName("hd_resource.yt_setting_wechat_swiper") @Schema(name = "微信轮播图设置") -public class WechatSwiper implements Serializable { +public class WechatSwiper extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(hidden = true) - private Integer pkId; private String appid; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthMenu.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthMenu.java index 2ab143d..0cec675 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthMenu.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthMenu.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -24,14 +25,10 @@ import lombok.Setter; @Setter @TableName("yt_auth_menu") @Schema(name = "菜单") -public class AuthMenu implements Serializable { +public class AuthMenu extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @Schema(description = "主键", hidden = true) - @TableId(value = "pk_id", type = IdType.AUTO) - private Integer pkId; - @Schema(description = "菜单名称") private String name; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthPermission.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthPermission.java index 5eb2c52..e1956bd 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthPermission.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthPermission.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.resource.auth; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -22,14 +23,10 @@ import lombok.Setter; @Setter @TableName("yt_auth_permission") @Schema(name = "资源权限") -public class AuthPermission implements Serializable { +public class AuthPermission extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @Schema(description = "ID", hidden = true) - @TableId(value = "pk_id", type = IdType.AUTO) - private Integer pkId; - @Schema(description = "资源编码:页面:操作") private String code; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRole.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRole.java index e565178..61ac4a2 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRole.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRole.java @@ -1,6 +1,7 @@ package com.evotech.hd.common.core.entity.resource.auth; import com.baomidou.mybatisplus.annotation.*; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; @@ -18,14 +19,10 @@ import java.util.Date; @Setter @TableName("yt_auth_role") @Schema(name = "角色") -public class AuthRole implements Serializable { +public class AuthRole extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @Schema(description = "id", hidden = true) - @TableId(value = "pk_id", type = IdType.AUTO) - private Integer pkId; - @Schema(description = "角色名称") private String name; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRoleResource.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRoleResource.java index 2e3a67f..5f14f94 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRoleResource.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRoleResource.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.resource.auth; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -22,14 +23,10 @@ import lombok.Setter; @Setter @TableName("yt_auth_role_resource") @Schema(name = "角色的权限") -public class AuthRoleResource implements Serializable { +public class AuthRoleResource extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @Schema(description = "主键") - @TableId(value = "pk_id", type = IdType.AUTO) - private Integer pkId; - @Schema(description = "角色编码") private String rcode; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUser.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUser.java index be0c824..dbd0e34 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUser.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUser.java @@ -1,6 +1,7 @@ package com.evotech.hd.common.core.entity.resource.auth; import com.baomidou.mybatisplus.annotation.*; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema.RequiredMode; @@ -19,13 +20,13 @@ import java.util.Date; @Data @TableName("yt_auth_user") @Schema(name = "账号") -public class AuthUser implements Serializable { +public class AuthUser extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @Schema(description = "主键", hidden = true) - @TableId(value = "pk_id", type = IdType.AUTO) - private Integer pkId; +// @Schema(description = "主键", hidden = true) +// @TableId(value = "pk_id", type = IdType.AUTO) +// private Integer pkId; @Schema(description = "用户ID") private String uid; @@ -90,7 +91,7 @@ public class AuthUser implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private Date lastLoginTime; - @Schema(description = "创建人", hidden = true) + /*@Schema(description = "创建人", hidden = true) @TableField(fill = FieldFill.INSERT) private String creater; @@ -108,7 +109,7 @@ public class AuthUser implements Serializable { @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") @TableField(fill = FieldFill.UPDATE) - private Date uptime; + private Date uptime;*/ @Schema(description = "角色编码", hidden = true) @TableField(exist = false) diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserRole.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserRole.java index 58ca0bc..1d47568 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserRole.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserRole.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.resource.auth; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -27,9 +28,6 @@ public class AuthUserRole implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - private Integer pkId; - @Schema(description = "用户ID") @NotBlank private String uid; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/AdmdvsInfo.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/AdmdvsInfo.java index 9c30865..0278ca9 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/AdmdvsInfo.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/AdmdvsInfo.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.resource.dict; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -23,13 +24,10 @@ import lombok.Setter; @Setter @TableName("yt_d_admdvs_info") @Schema(name = "行政区划信息表") -public class AdmdvsInfo implements Serializable { +public class AdmdvsInfo extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId("pk_id") - private Integer pkId; - @Schema(description = "区划代码") private String admdvsNo; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/Dict.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/Dict.java index 6f2d22b..d08aadc 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/Dict.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/Dict.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.resource.dict; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -22,14 +23,10 @@ import lombok.Setter; @Setter @TableName("hd_resource.yt_d_dict") @Schema(name = "字典") -public class Dict implements Serializable { +public class Dict extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @Schema(description = "主键", hidden = true) - @TableId(value = "pk_id", type = IdType.AUTO) - private Integer pkId; - @Schema(description = "字典名称") private String dictName; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/DictType.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/DictType.java index b540a84..88aeae0 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/DictType.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/DictType.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.resource.dict; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -22,14 +23,10 @@ import lombok.Setter; @Setter @TableName("hd_resource.yt_d_dict_type") @Schema(name = "字典类型") -public class DictType implements Serializable { +public class DictType extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @Schema(description = "主键", hidden = true) - @TableId(value = "pk_id", type = IdType.AUTO) - private Integer pkId; - @Schema(description = "类型名称") private String typeName; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatPayPreOrder.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatPayPreOrder.java index 6b4b5b7..bc0ad4e 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatPayPreOrder.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatPayPreOrder.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.wechat; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -20,7 +21,7 @@ import lombok.Data; @Data @TableName("yt_t_wechat_pay_pre_order") @Schema(name = "WechatPayPreOrder", description = "微信预支付订单") -public class WechatPayPreOrder implements Serializable { +public class WechatPayPreOrder extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatUser.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatUser.java index b120b58..2789b42 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatUser.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatUser.java @@ -3,6 +3,7 @@ package com.evotech.hd.common.core.entity.wechat; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -22,7 +23,7 @@ import lombok.Setter; @Setter @TableName("hd_wechat.yt_t_wechat_user") @Schema(name = "小程序用户信息") -public class WechatUser implements Serializable { +public class WechatUser extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/entity/request/PageListBatteryStationRequest.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/entity/request/PageListBatteryStationRequest.java index d54f734..f3535ed 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/entity/request/PageListBatteryStationRequest.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/entity/request/PageListBatteryStationRequest.java @@ -29,4 +29,10 @@ public class PageListBatteryStationRequest extends BasePageRequest { @Schema(description = "站点类型ID") private Integer type; + @Schema(description = "营业起时间") + private String runStartTime; + + @Schema(description = "营业止时间") + private String runEndTime; + } From 3c84072c91c93bebc83cd482f63c7388095b7d02 Mon Sep 17 00:00:00 2001 From: andy <1042025947@qq.com> Date: Fri, 18 Apr 2025 08:56:05 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E6=9D=83=E9=99=90=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/cloud/HomeDataTradeCollateDao.java | 3 + .../entity/cloud/HomeDataTradeCollate.java | 11 +-- .../evotech/hd/cloud/entity/vo/HomeData4.java | 4 +- .../HomeDataManualCollateServiceImpl.java | 79 ++++++++++++------- .../cloud/service/impl/HomeServiceImpl.java | 8 +- .../service/impl/AuthUserServiceImpl.java | 2 +- 6 files changed, 67 insertions(+), 40 deletions(-) diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/HomeDataTradeCollateDao.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/HomeDataTradeCollateDao.java index e6db676..e2b03a5 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/HomeDataTradeCollateDao.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/HomeDataTradeCollateDao.java @@ -2,12 +2,15 @@ package com.evotech.hd.common.core.dao.cloud; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.cloud.HomeDataTradeCollate; +import com.evotech.hd.common.core.permission.DataScope; /** * @author zrb * @since 2025-03-08 */ +@DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE) public interface HomeDataTradeCollateDao extends BaseMapper { } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataTradeCollate.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataTradeCollate.java index 6e42dc5..21bb474 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataTradeCollate.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataTradeCollate.java @@ -5,15 +5,13 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.evotech.hd.common.core.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.util.Date; -import org.springframework.format.annotation.DateTimeFormat; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - /** * @author zrb * @since 2025-03-08 @@ -28,6 +26,9 @@ public class HomeDataTradeCollate extends BaseEntity implements Serializable { @Schema(description = "日期") private String day; + @Schema(description = "交易站点") + private String stationCode; + @Schema(description = "交易类型:1-充值,2-订单消费,9-提现") private Integer tradeType; diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/entity/vo/HomeData4.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/entity/vo/HomeData4.java index 4875f5c..ac10751 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/entity/vo/HomeData4.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/entity/vo/HomeData4.java @@ -24,10 +24,10 @@ public class HomeData4 { private Integer refundTradeQuantity; @Schema(description = "收入总钱数") - private Integer totalMoney; + private Double totalMoney; @Schema(description = "支出总钱数") - private Integer totalRefund; + private Double totalRefund; diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeDataManualCollateServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeDataManualCollateServiceImpl.java index 9c7d723..c7ca3b2 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeDataManualCollateServiceImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeDataManualCollateServiceImpl.java @@ -1,14 +1,7 @@ package com.evotech.hd.cloud.service.impl; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; - +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.evotech.hd.cloud.dao.TradeDetailDao; import com.evotech.hd.cloud.service.HomeDataManualCollateService; @@ -20,11 +13,16 @@ import com.evotech.hd.common.core.entity.cloud.HomeDataOrderSwapCollate; import com.evotech.hd.common.core.entity.cloud.HomeDataTradeCollate; import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery; import com.evotech.hd.common.core.entity.cloud.TradeDetail; - -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.DateUtil; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Service @@ -130,26 +128,51 @@ public class HomeDataManualCollateServiceImpl implements HomeDataManualCollateSe if (tradeList.isEmpty()) { continue; } - Map>> map = tradeList.stream().collect(Collectors.groupingBy(TradeDetail::getTradeType, Collectors.groupingBy(TradeDetail::getPayType))); + //Map>> map = tradeList.stream().collect(Collectors.groupingBy(TradeDetail::getTradeType, Collectors.groupingBy(TradeDetail::getPayType))); + + Map>>> map1 = tradeList.stream().collect(Collectors.groupingBy(TradeDetail::getStationCode,Collectors.groupingBy(TradeDetail::getTradeType, Collectors.groupingBy(TradeDetail::getPayType)))); Date d = new Date(); List tradeCollateList = new ArrayList(); - for (Map.Entry>> m : map.entrySet()) { - Integer tradeType = m.getKey(); - Map> payTypeMap = m.getValue(); - for (Map.Entry> entry : payTypeMap.entrySet()) { - Integer payType = entry.getKey(); - List dayPayTypeTradeList = entry.getValue(); - HomeDataTradeCollate tradeCollate = new HomeDataTradeCollate(); - tradeCollate.setDay(dayString); - tradeCollate.setCtime(d); - tradeCollate.setQuantity(dayPayTypeTradeList.size()); - tradeCollate.setTradeType(tradeType); - tradeCollate.setPayType(payType); - tradeCollate.setTradeAmount(dayPayTypeTradeList.stream().collect(Collectors.summingInt(item -> item.getTradeAmount()))); - tradeCollateList.add(tradeCollate); + for (Map.Entry>>> pm : map1.entrySet()) { + String stationCode = pm.getKey(); + Map>> mc = pm.getValue(); + for (Map.Entry>> m : mc.entrySet()) { + Integer tradeType = m.getKey(); + Map> payTypeMap = m.getValue(); + for (Map.Entry> entry : payTypeMap.entrySet()) { + Integer payType = entry.getKey(); + List dayPayTypeTradeList = entry.getValue(); + HomeDataTradeCollate tradeCollate = new HomeDataTradeCollate(); + tradeCollate.setDay(dayString); + tradeCollate.setCtime(d); + tradeCollate.setStationCode(stationCode); + tradeCollate.setQuantity(dayPayTypeTradeList.size()); + tradeCollate.setTradeType(tradeType); + tradeCollate.setPayType(payType); + tradeCollate.setTradeAmount(dayPayTypeTradeList.stream().collect(Collectors.summingInt(item -> item.getTradeAmount()))); + tradeCollateList.add(tradeCollate); + } } - } + + +// for (Map.Entry>> m : map.entrySet()) { +// Integer tradeType = m.getKey(); +// Map> payTypeMap = m.getValue(); +// for (Map.Entry> entry : payTypeMap.entrySet()) { +// Integer payType = entry.getKey(); +// List dayPayTypeTradeList = entry.getValue(); +// HomeDataTradeCollate tradeCollate = new HomeDataTradeCollate(); +// tradeCollate.setDay(dayString); +// tradeCollate.setCtime(d); +// tradeCollate.setQuantity(dayPayTypeTradeList.size()); +// tradeCollate.setTradeType(tradeType); +// tradeCollate.setPayType(payType); +// tradeCollate.setTradeAmount(dayPayTypeTradeList.stream().collect(Collectors.summingInt(item -> item.getTradeAmount()))); +// tradeCollateList.add(tradeCollate); +// } +// +// } // 插入数据 homeDataTradeCollateDao.delete(new QueryWrapper().eq("day", dayString)); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java index 34fb677..3c7ffa1 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java @@ -169,11 +169,11 @@ public class HomeServiceImpl implements HomeService { Integer refundTradeQuantity = collateList.stream().filter(i -> i.getTradeType() == 3).collect(Collectors.summingInt(HomeDataTradeCollate::getQuantity)); data.setRefundTradeQuantity(refundTradeQuantity); - Integer chargeAmount = collateList.stream().filter(i -> i.getTradeType() == 1).collect(Collectors.summingInt(HomeDataTradeCollate::getTradeAmount)); - Integer orderAmount = collateList.stream().filter(i -> i.getTradeType() == 2 && i.getPayType() != 1).collect(Collectors.summingInt(HomeDataTradeCollate::getTradeAmount)); + Double chargeAmount = collateList.stream().filter(i -> i.getTradeType() == 1).collect(Collectors.summingDouble(HomeDataTradeCollate::getTradeAmount)); + Double orderAmount = collateList.stream().filter(i -> i.getTradeType() == 2 && i.getPayType() != 1).collect(Collectors.summingDouble(HomeDataTradeCollate::getTradeAmount)); data.setTotalMoney(chargeAmount + orderAmount); - - int refundSum = collateList.stream().filter(i -> i.getTradeType() == 9).collect(Collectors.summingInt(HomeDataTradeCollate::getTradeAmount)); + + Double refundSum = collateList.stream().filter(i -> i.getTradeType() == 9).collect(Collectors.summingDouble(HomeDataTradeCollate::getTradeAmount)); data.setTotalRefund(refundSum); return new Result().success(data); diff --git a/resource-server/src/main/java/com/evotech/hd/resource/service/impl/AuthUserServiceImpl.java b/resource-server/src/main/java/com/evotech/hd/resource/service/impl/AuthUserServiceImpl.java index 67a4534..7d169cb 100644 --- a/resource-server/src/main/java/com/evotech/hd/resource/service/impl/AuthUserServiceImpl.java +++ b/resource-server/src/main/java/com/evotech/hd/resource/service/impl/AuthUserServiceImpl.java @@ -162,7 +162,7 @@ public class AuthUserServiceImpl implements AuthUserService { @Override public BaseResponse> loadUserStation(String uid) { - return new BaseResponse>().success(authUserStationDao.selectList(new LambdaQueryWrapper().eq(AuthUserStation::getUid, uid).select(AuthUserStation::getStationId, AuthUserStation::getStationId))); + return new BaseResponse>().success(authUserStationDao.selectList(new LambdaQueryWrapper().eq(AuthUserStation::getUid, uid).select(AuthUserStation::getStationId, AuthUserStation::getStationCode))); } From a02b155b5bd0ab67c893bf7bdecc50cb52671254 Mon Sep 17 00:00:00 2001 From: lhb <495598773@qq.com> Date: Fri, 18 Apr 2025 09:22:02 +0800 Subject: [PATCH 10/11] =?UTF-8?q?fix:=E6=8F=90=E5=8F=96=E5=85=AC=E5=85=B1?= =?UTF-8?q?=E5=AE=9E=E4=BD=93=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/entity/cloud/BatteryStation.java | 17 ------------ .../cloud/BatteryStationCdStrategy.java | 16 ------------ .../cloud/BatteryStationCdStrategyDetail.java | 16 ------------ .../core/entity/cloud/BatteryStationDc.java | 16 ------------ .../core/entity/cloud/BatteryStationDcc.java | 16 ------------ .../core/entity/cloud/BatteryStationDj.java | 16 ------------ .../cloud/BatteryStationHdFeeStandard.java | 16 ------------ .../BatteryStationHdFeeStandardDetail.java | 16 ------------ .../entity/cloud/BatteryStationRobot.java | 16 ------------ .../core/entity/cloud/BatteryTrace.java | 16 ------------ .../hd/common/core/entity/cloud/Company.java | 16 ------------ .../cloud/HomeDataOrderSwapCollate.java | 5 ---- .../entity/cloud/HomeDataTradeCollate.java | 5 ---- .../core/entity/cloud/OrderRecharge.java | 16 ------------ .../core/entity/cloud/OrderSwapBattery.java | 16 ------------ .../entity/cloud/OrderSwapBatteryPre.java | 16 ------------ .../entity/cloud/OrderSwapBatteryStep.java | 16 ------------ .../cloud/PreOrderRelationSwapOrder.java | 5 ---- .../common/core/entity/cloud/TradeDetail.java | 16 ------------ .../common/core/entity/cloud/VehicleInfo.java | 16 ------------ .../cloud/VehicleWechatUserRelation.java | 16 ------------ .../core/entity/cloud/WalletAccount.java | 16 ------------ .../entity/cloud/WalletAccountDetail.java | 16 ------------ .../core/entity/resource/BatteryType.java | 16 ------------ .../common/core/entity/resource/CarType.java | 16 ------------ .../common/core/entity/resource/LogLogin.java | 8 ------ .../core/entity/resource/ProxyOperater.java | 26 +------------------ .../core/entity/resource/UploadFile.java | 8 ------ .../core/entity/resource/WechatAgreement.java | 16 ------------ .../core/entity/resource/WechatSwiper.java | 16 ------------ .../core/entity/resource/auth/AuthMenu.java | 16 ------------ .../core/entity/resource/auth/AuthRole.java | 20 -------------- .../resource/auth/AuthRoleResource.java | 8 ------ .../entity/resource/auth/AuthUserRole.java | 15 +---------- .../entity/resource/auth/AuthUserStation.java | 16 ------------ .../core/entity/resource/dict/AdmdvsInfo.java | 10 ------- .../core/entity/resource/dict/Dict.java | 10 ------- .../core/entity/resource/dict/DictType.java | 10 ------- .../core/entity/wechat/WechatPayPreOrder.java | 19 -------------- .../common/core/entity/wechat/WechatUser.java | 20 -------------- 40 files changed, 2 insertions(+), 584 deletions(-) diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStation.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStation.java index 9294270..7c5c5d4 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStation.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStation.java @@ -106,23 +106,6 @@ public class BatteryStation extends BaseEntity implements Serializable { @Schema(description = "电池数量") private Integer dcQuantity; - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; - - @Schema(description = "电池列表", hidden = true) @TableField(exist = false) private List dcList; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategy.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategy.java index 30ffdab..f70b40c 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategy.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategy.java @@ -49,22 +49,6 @@ public class BatteryStationCdStrategy extends BaseEntity implements Serializable @Schema(description = "状态:0-未启用,1-启用") private Integer status; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; @Schema(description = "详情", hidden = true) private List detailList; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategyDetail.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategyDetail.java index cbd40a0..80ce45f 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategyDetail.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationCdStrategyDetail.java @@ -50,20 +50,4 @@ public class BatteryStationCdStrategyDetail extends BaseEntity implements Serial @Schema(description = "充电功率") private Double chargingPower; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDc.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDc.java index eb27f30..158079f 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDc.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDc.java @@ -76,20 +76,4 @@ public class BatteryStationDc extends BaseEntity implements Serializable { @Schema(description = "删除标志:1-已删除,0-未删除", hidden = true) private Integer delFlag; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDcc.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDcc.java index b23c8e3..1a6b888 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDcc.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDcc.java @@ -44,20 +44,4 @@ public class BatteryStationDcc extends BaseEntity implements Serializable { @Schema(description = "状态:1-正常,2-检修, 3-坏", requiredMode = RequiredMode.REQUIRED) @NotNull(message = "状态不能为空") private Integer status; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDj.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDj.java index 2f60343..5831c83 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDj.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDj.java @@ -58,20 +58,4 @@ public class BatteryStationDj extends BaseEntity implements Serializable { @Schema(description = "充电枪数量") private Integer gunNum; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandard.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandard.java index 466abcd..2d9968a 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandard.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandard.java @@ -78,22 +78,6 @@ public class BatteryStationHdFeeStandard extends BaseEntity implements Serializa @Schema(description = "换电时电量剩余一般的服务费") private BigDecimal fewRemainFee; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; @Schema(description = "换电费用标准细节", hidden = true) @TableField(exist = false) diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandardDetail.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandardDetail.java index 240ea33..5f10ba3 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandardDetail.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationHdFeeStandardDetail.java @@ -63,20 +63,4 @@ public class BatteryStationHdFeeStandardDetail extends BaseEntity implements Ser @Schema(description = "谷段服务费") private BigDecimal timeServiceFee; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationRobot.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationRobot.java index 4907fa9..0039b28 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationRobot.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationRobot.java @@ -47,20 +47,4 @@ public class BatteryStationRobot extends BaseEntity implements Serializable { @Schema(description = "运行模式:1-就地,2-远程") private Integer runMode; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryTrace.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryTrace.java index c9d7f63..3dc7346 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryTrace.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryTrace.java @@ -59,20 +59,4 @@ public class BatteryTrace extends BaseEntity implements Serializable { @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private Date endTime; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/Company.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/Company.java index 21642cb..a83d876 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/Company.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/Company.java @@ -75,20 +75,4 @@ public class Company extends BaseEntity implements Serializable { @Schema(description = "账户余额") private BigDecimal accountBalance; - - @Schema(description = "创建人", hidden = true) - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataOrderSwapCollate.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataOrderSwapCollate.java index fcc59f6..cf0ac95 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataOrderSwapCollate.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataOrderSwapCollate.java @@ -38,9 +38,4 @@ public class HomeDataOrderSwapCollate extends BaseEntity implements Serializable @Schema(description = "状态:1-进行中,未结算的,2-结算完成,3-取消的") private Integer status; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataTradeCollate.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataTradeCollate.java index 21bb474..2b8aa5a 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataTradeCollate.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/HomeDataTradeCollate.java @@ -40,9 +40,4 @@ public class HomeDataTradeCollate extends BaseEntity implements Serializable { @Schema(description = "交易金额") private Integer tradeAmount; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderRecharge.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderRecharge.java index 2b836b6..9028c04 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderRecharge.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderRecharge.java @@ -52,20 +52,4 @@ public class OrderRecharge extends BaseEntity implements Serializable { @Schema(description = "删除状态:1-已删除,0-未删除", hidden = true) private Integer delFlag; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBattery.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBattery.java index da2df3e..a25bb20 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBattery.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBattery.java @@ -160,20 +160,4 @@ public class OrderSwapBattery extends BaseEntity implements Serializable { @Schema(description = "备注信息") private String remark; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryPre.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryPre.java index f2087e3..bebacf0 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryPre.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryPre.java @@ -70,20 +70,4 @@ public class OrderSwapBatteryPre extends BaseEntity implements Serializable { @Schema(description = "状态:1-预约成功,2-到店使用,3-取消,4-过期", hidden = true) private Integer status; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryStep.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryStep.java index e67ee5e..de507f3 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryStep.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/OrderSwapBatteryStep.java @@ -37,20 +37,4 @@ public class OrderSwapBatteryStep extends BaseEntity implements Serializable { @Schema(description = "步骤时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private Date stepTime; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/PreOrderRelationSwapOrder.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/PreOrderRelationSwapOrder.java index 79fa3d0..f017922 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/PreOrderRelationSwapOrder.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/PreOrderRelationSwapOrder.java @@ -38,9 +38,4 @@ public class PreOrderRelationSwapOrder extends BaseEntity implements Serializabl @Schema(description = "换电订单号") private String orderNo; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/TradeDetail.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/TradeDetail.java index fb75f0c..784805c 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/TradeDetail.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/TradeDetail.java @@ -96,22 +96,6 @@ public class TradeDetail extends BaseEntity implements Serializable { @Schema(description = "删除标识,1-已删除,0-未删除", hidden = true) private Integer delFlag; - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; - @Schema(description = "退款结果: 0-未退款, 1-退款中,2-已退款, 3-退款失败") private Integer refundResult; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleInfo.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleInfo.java index 89a99af..55ebad9 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleInfo.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleInfo.java @@ -106,22 +106,6 @@ public class VehicleInfo extends BaseEntity implements Serializable { @Schema(description = "组织机构代码") private String ccode; - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; - @Schema(description = "运营商Id") private String proxyOperaterId; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleWechatUserRelation.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleWechatUserRelation.java index b8a55cf..e7df048 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleWechatUserRelation.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/VehicleWechatUserRelation.java @@ -47,20 +47,4 @@ public class VehicleWechatUserRelation extends BaseEntity implements Serializabl @Schema(description = "关联人手机号", requiredMode = RequiredMode.REQUIRED) private String phone; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccount.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccount.java index eb92e4e..80b787c 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccount.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccount.java @@ -68,20 +68,4 @@ public class WalletAccount extends BaseEntity implements Serializable { @Schema(description = "引入站点") private String stationCode; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccountDetail.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccountDetail.java index 269737c..9ee12a1 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccountDetail.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/WalletAccountDetail.java @@ -74,20 +74,4 @@ public class WalletAccountDetail extends BaseEntity implements Serializable { @Schema(description = "交易后赠送金额,分", requiredMode = RequiredMode.REQUIRED) @NotNull private Integer afterGiftAmount; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/BatteryType.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/BatteryType.java index 2bec44d..8d7c334 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/BatteryType.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/BatteryType.java @@ -60,20 +60,4 @@ public class BatteryType extends BaseEntity implements Serializable { @Schema(description = "尺寸,长宽高") private String size; - - @Schema(description = "创建人", hidden = true) - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/CarType.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/CarType.java index 94930d8..f404e2e 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/CarType.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/CarType.java @@ -42,20 +42,4 @@ public class CarType extends BaseEntity implements Serializable { @Schema(description = "公告号") private String announceNum; - - @Schema(description = "创建人", hidden = true) - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/LogLogin.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/LogLogin.java index ceeb37b..8abcbcd 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/LogLogin.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/LogLogin.java @@ -60,12 +60,4 @@ public class LogLogin extends BaseEntity implements Serializable { @Schema(description = "平台") private String platForm; - @Schema(description = "创建时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "创建者") - private String creater; - } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/ProxyOperater.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/ProxyOperater.java index 6830db9..e8c99bd 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/ProxyOperater.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/ProxyOperater.java @@ -24,14 +24,10 @@ import lombok.Setter; @Setter @TableName("hd_resource.yt_t_proxy_operater") @Schema(name = "代理运营商信息") -public class ProxyOperater implements Serializable { +public class ProxyOperater extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Hidden - private Integer pkId; - @Schema(description = "区划名称", requiredMode = RequiredMode.REQUIRED) @NotBlank(message = "区划名称不能为空") private String division; @@ -77,24 +73,4 @@ public class ProxyOperater implements Serializable { @Schema(description = "换电站数量") private Integer stationCount; - - @Schema(description = "创建人") - @TableField(fill = FieldFill.INSERT) - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - @TableField(fill = FieldFill.INSERT) - private Date ctime; - - @Schema(description = "更新人", hidden = true) - @TableField(fill = FieldFill.UPDATE) - private String updater; - - @Schema(description = "更新时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - @TableField(fill = FieldFill.UPDATE) - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/UploadFile.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/UploadFile.java index fd618b7..97f6045 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/UploadFile.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/UploadFile.java @@ -59,12 +59,4 @@ public class UploadFile extends BaseEntity implements Serializable { @Schema(description = "地址") private String fileUrl; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "创建者") - private String creater; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatAgreement.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatAgreement.java index de45921..0ca66fb 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatAgreement.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatAgreement.java @@ -48,20 +48,4 @@ public class WechatAgreement extends BaseEntity implements Serializable { @Schema(description = "状态:1-可用,0-不可用") private Integer status; - - @Schema(description = "创建人", hidden = true) - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatSwiper.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatSwiper.java index 0d79bda..cfe6e84 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatSwiper.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/WechatSwiper.java @@ -47,20 +47,4 @@ public class WechatSwiper extends BaseEntity implements Serializable { @Schema(description = "状态:1-可用,0-不可用") private Integer status; - - @Schema(description = "创建人", hidden = true) - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthMenu.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthMenu.java index 0cec675..af9e9be 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthMenu.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthMenu.java @@ -55,22 +55,6 @@ public class AuthMenu extends BaseEntity implements Serializable { @Schema(description = "父级菜单id") private Integer parentId; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; @Schema(description = "子目录", hidden = true) @TableField(exist = false) diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRole.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRole.java index 61ac4a2..0b47fb3 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRole.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRole.java @@ -40,24 +40,4 @@ public class AuthRole extends BaseEntity implements Serializable { @Schema(description = "是否内置角色,内置角色不允许修改") private Integer readonly; - - @Schema(description = "创建人") - @TableField(fill = FieldFill.INSERT) - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - @TableField(fill = FieldFill.INSERT) - private Date ctime; - - @Schema(description = "更新人", hidden = true) - @TableField(fill = FieldFill.UPDATE) - private String updater; - - @Schema(description = "更新时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - @TableField(fill = FieldFill.UPDATE) - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRoleResource.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRoleResource.java index 5f14f94..4e11b7b 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRoleResource.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthRoleResource.java @@ -35,12 +35,4 @@ public class AuthRoleResource extends BaseEntity implements Serializable { @Schema(description = "权限id") private Integer resourceId; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "创建人", hidden = true) - private String creater; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserRole.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserRole.java index 1d47568..120f1ce 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserRole.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserRole.java @@ -24,7 +24,7 @@ import lombok.Setter; @Setter @TableName("yt_auth_user_role") @Schema(name = "账号角色关系") -public class AuthUserRole implements Serializable { +public class AuthUserRole extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; @@ -35,17 +35,4 @@ public class AuthUserRole implements Serializable { @Schema(description = "角色编码") @NotBlank private String rcode; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "修改时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserStation.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserStation.java index eb0e8b9..85442cd 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserStation.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthUserStation.java @@ -29,9 +29,6 @@ public class AuthUserStation implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - private Integer pkId; - @Schema(description = "用户ID") @NotBlank private String uid; @@ -43,17 +40,4 @@ public class AuthUserStation implements Serializable { @Schema(description = "充电站Id") @NotBlank private Integer stationId; - - @Schema(description = "创建人") - private String creater; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "修改时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/AdmdvsInfo.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/AdmdvsInfo.java index 0278ca9..1b13c86 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/AdmdvsInfo.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/AdmdvsInfo.java @@ -39,16 +39,6 @@ public class AdmdvsInfo extends BaseEntity implements Serializable { @Schema(description = "等级,1-省;2-市;3-区县") private Integer level; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; @Schema(description = "子区划", hidden = true) @TableField(exist = false) diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/Dict.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/Dict.java index d08aadc..a970c5b 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/Dict.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/Dict.java @@ -43,14 +43,4 @@ public class Dict extends BaseEntity implements Serializable { private Integer typeId; private String typeCode; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/DictType.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/DictType.java index 88aeae0..e258e69 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/DictType.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/dict/DictType.java @@ -35,14 +35,4 @@ public class DictType extends BaseEntity implements Serializable { @Schema(description = "描述") private String mark; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatPayPreOrder.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatPayPreOrder.java index bc0ad4e..5117c44 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatPayPreOrder.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatPayPreOrder.java @@ -25,9 +25,6 @@ public class WechatPayPreOrder extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - private Integer pkId; - @Schema(description = "用户编码") private String wuid; @@ -86,20 +83,4 @@ public class WechatPayPreOrder extends BaseEntity implements Serializable { @Schema(description = "支付串") private String prePayResponse; - - @Schema(description = "创建人", hidden = true) - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatUser.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatUser.java index 2789b42..b51d212 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatUser.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/wechat/WechatUser.java @@ -27,10 +27,6 @@ public class WechatUser extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "pk_id", type = IdType.AUTO) - @Schema(description = "id", hidden = true) - private Integer pkId; - @Schema(description = "微信用户id") private String wuid; @@ -70,22 +66,6 @@ public class WechatUser extends BaseEntity implements Serializable { @Schema(description = "公众号openid") private String gzhOpenid; - @Schema(description = "创建人", hidden = true) - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; - @Schema(description = "审核状态:1-待审核,2-审核成功,3-审核失败") private Integer state; } From 3cbf68cc264809b9435bde93d821c46b17fc4aa8 Mon Sep 17 00:00:00 2001 From: andy <1042025947@qq.com> Date: Fri, 18 Apr 2025 09:57:17 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hd/common/core/constant/HDConstant.java | 24 +++++++++++ .../cloud/BatteryStationCdStrategyDao.java | 10 +++-- .../BatteryStationCdStrategyDetailDao.java | 7 +++- .../core/entity/cloud/BatteryStationDcc.java | 11 +---- .../entity/resource/auth/AuthPermission.java | 41 ++++++++----------- .../hd/common/core/permission/DataScope.java | 4 +- .../hd/cloud/dao/BatteryStationDccDao.java | 7 +++- .../hd/cloud/dao/BatteryStationDjDao.java | 7 +++- .../dao/BatteryStationHdFeeStandardDao.java | 10 +++-- .../cloud/dao/BatteryStationSecretKeyDao.java | 3 ++ .../com/evotech/hd/cloud/dao/CompanyDao.java | 3 ++ .../hd/cloud/dao/OrderRechargeDao.java | 3 ++ .../evotech/hd/cloud/dao/TradeDetailDao.java | 3 ++ .../evotech/hd/cloud/dao/VehicleInfoDao.java | 3 ++ wechat-server/pom.xml | 16 +++++--- 15 files changed, 97 insertions(+), 55 deletions(-) diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java index 4ba91f3..7dfd1ef 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/constant/HDConstant.java @@ -3,13 +3,37 @@ package com.evotech.hd.common.core.constant; public interface HDConstant { public static final class PermissionConstant{ + /** + * 当前登录用户的UID + */ public static final String PERMISSION_AUTH_USER_UID = "AUTH_USER_UID"; + /** + * 运用商的组织代码 + */ public static final String PERMISSION_PROXY_CODE = "PROXY_CODE"; + /** + * 站端code + */ public static final String PERMISSION_STATION_CODE = "STATION_CODE"; + /** + * 站端Id + */ public static final String PERMISSION_STATION_ID = "STATION_ID"; + /*** + * 公司的组织代码 + */ public static final String PERMISSION_COMPANY_CODE = "COMPANY_CODE"; + /*** + * 公司的id + */ public static final String PERMISSION_COMPANY_ID = "COMPANY_ID"; + /*** + * 车辆的车牌 + */ public static final String PERMISSION_CAR_CODE = "CAR_CODE"; + /*** + * 车辆的Id + */ public static final String PERMISSION_CAR_ID = "CAR_ID"; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/BatteryStationCdStrategyDao.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/BatteryStationCdStrategyDao.java index 448ee93..85769b7 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/BatteryStationCdStrategyDao.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/BatteryStationCdStrategyDao.java @@ -1,16 +1,18 @@ package com.evotech.hd.common.core.dao.cloud; -import java.util.List; - +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; +import com.evotech.hd.common.core.entity.cloud.BatteryStationCdStrategy; +import com.evotech.hd.common.core.permission.DataScope; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.evotech.hd.common.core.entity.cloud.BatteryStationCdStrategy; +import java.util.List; /** * @author zrb * @since 2025-02-10 */ +@DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE) public interface BatteryStationCdStrategyDao extends BaseMapper { List listCdStrategy(@Param("stationCode") String stationCode, @Param("status") Integer status); diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/BatteryStationCdStrategyDetailDao.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/BatteryStationCdStrategyDetailDao.java index e157755..046c772 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/BatteryStationCdStrategyDetailDao.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/dao/cloud/BatteryStationCdStrategyDetailDao.java @@ -1,14 +1,17 @@ package com.evotech.hd.common.core.dao.cloud; -import java.util.List; - import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.cloud.BatteryStationCdStrategyDetail; +import com.evotech.hd.common.core.permission.DataScope; + +import java.util.List; /** * @author zrb * @since 2025-02-10 */ +@DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE) public interface BatteryStationCdStrategyDetailDao extends BaseMapper { List getDetailById(Integer id); diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDcc.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDcc.java index 1a6b888..9b260e9 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDcc.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStationDcc.java @@ -1,16 +1,7 @@ package com.evotech.hd.common.core.entity.cloud; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.evotech.hd.common.core.entity.BaseEntity; -import com.fasterxml.jackson.annotation.JsonFormat; - -import java.io.Serializable; -import java.util.Date; - -import org.springframework.format.annotation.DateTimeFormat; - import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema.RequiredMode; import jakarta.validation.constraints.NotBlank; @@ -18,6 +9,8 @@ import jakarta.validation.constraints.NotNull; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; + /** * @author zrb * @since 2024-10-17 diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthPermission.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthPermission.java index e1956bd..5aec92d 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthPermission.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/resource/auth/AuthPermission.java @@ -1,20 +1,13 @@ package com.evotech.hd.common.core.entity.resource.auth; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.evotech.hd.common.core.entity.BaseEntity; -import com.fasterxml.jackson.annotation.JsonFormat; - -import java.io.Serializable; -import java.util.Date; - -import org.springframework.format.annotation.DateTimeFormat; - import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; + /** * @author zrb * @since 2024-09-04 @@ -48,19 +41,19 @@ public class AuthPermission extends BaseEntity implements Serializable { @Schema(description = "接口描述") private String mark; - @Schema(description = "创建人id") - private String creater; - - @Schema(description = "创建时间", hidden = true) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date ctime; - - @Schema(description = "更新人", hidden = true) - private String updater; - - @Schema(description = "更新时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date uptime; +// @Schema(description = "创建人id") +// private String creater; +// +// @Schema(description = "创建时间", hidden = true) +// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") +// private Date ctime; +// +// @Schema(description = "更新人", hidden = true) +// private String updater; +// +// @Schema(description = "更新时间") +// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") +// private Date uptime; } diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/DataScope.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/DataScope.java index 337ddda..06f5f4c 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/DataScope.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/permission/DataScope.java @@ -28,12 +28,12 @@ public @interface DataScope { String permissionObject(); /*** - * 运营商权限限制的字段 + * 权限限制的表字段 */ String permissionScopeName(); /*** - * 运营商权限限制的字段 + * 权限限制的redis中的key * HDConstant.PermissionConstant中 的字段信息 */ String permissionScopeRedisKey(); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDccDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDccDao.java index 0cfa0b5..ad802bf 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDccDao.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDccDao.java @@ -1,14 +1,17 @@ package com.evotech.hd.cloud.dao; -import java.util.List; - import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.cloud.BatteryStationDcc; +import com.evotech.hd.common.core.permission.DataScope; + +import java.util.List; /** * @author zrb * @since 2024-10-17 */ +@DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE) public interface BatteryStationDccDao extends BaseMapper { List getDccByStationCode(String stationCode); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDjDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDjDao.java index de1d07b..ae38f01 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDjDao.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationDjDao.java @@ -1,14 +1,17 @@ package com.evotech.hd.cloud.dao; -import java.util.List; - import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.cloud.BatteryStationDj; +import com.evotech.hd.common.core.permission.DataScope; + +import java.util.List; /** * @author zrb * @since 2024-10-17 */ +@DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE) public interface BatteryStationDjDao extends BaseMapper { List getDjByStationCode(String stationCode); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationHdFeeStandardDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationHdFeeStandardDao.java index 23bdec1..61d882e 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationHdFeeStandardDao.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationHdFeeStandardDao.java @@ -1,16 +1,18 @@ package com.evotech.hd.cloud.dao; -import java.util.List; - +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; +import com.evotech.hd.common.core.entity.cloud.BatteryStationHdFeeStandard; +import com.evotech.hd.common.core.permission.DataScope; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.evotech.hd.common.core.entity.cloud.BatteryStationHdFeeStandard; +import java.util.List; /** * @author zrb * @since 2024-10-17 */ +@DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE) public interface BatteryStationHdFeeStandardDao extends BaseMapper { List listFeeStandard(@Param("stationCode") String stationCode, @Param("day") String day); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationSecretKeyDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationSecretKeyDao.java index 4818b57..3040cc8 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationSecretKeyDao.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/BatteryStationSecretKeyDao.java @@ -2,11 +2,14 @@ package com.evotech.hd.cloud.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.evotech.hd.cloud.entity.BatteryStationSecretKey; +import com.evotech.hd.common.core.constant.HDConstant; +import com.evotech.hd.common.core.permission.DataScope; /** * @author zrb * @since 2024-11-05 */ +@DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE) public interface BatteryStationSecretKeyDao extends BaseMapper { } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/CompanyDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/CompanyDao.java index 8599461..4b7a8c1 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/CompanyDao.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/CompanyDao.java @@ -1,13 +1,16 @@ package com.evotech.hd.cloud.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.cloud.Company; +import com.evotech.hd.common.core.permission.DataScope; /** * @author zrb * @since 2024-11-20 */ //换电站 +@DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "pk_id", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_COMPANY_ID) public interface CompanyDao extends BaseMapper { } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/OrderRechargeDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/OrderRechargeDao.java index 400b138..0166256 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/OrderRechargeDao.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/OrderRechargeDao.java @@ -1,12 +1,15 @@ package com.evotech.hd.cloud.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.cloud.OrderRecharge; +import com.evotech.hd.common.core.permission.DataScope; /** * @author zrb * @since 2024-11-22 */ +@DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE) public interface OrderRechargeDao extends BaseMapper { } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/TradeDetailDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/TradeDetailDao.java index 967e65d..5cc0c44 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/TradeDetailDao.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/TradeDetailDao.java @@ -1,12 +1,15 @@ package com.evotech.hd.cloud.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.cloud.TradeDetail; +import com.evotech.hd.common.core.permission.DataScope; /** * @author zrb * @since 2024-11-22 */ +@DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE) public interface TradeDetailDao extends BaseMapper { } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/VehicleInfoDao.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/VehicleInfoDao.java index eb7df16..efcf97a 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/VehicleInfoDao.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/dao/VehicleInfoDao.java @@ -1,13 +1,16 @@ package com.evotech.hd.cloud.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.cloud.VehicleInfo; +import com.evotech.hd.common.core.permission.DataScope; /** * @author zrb * @since 2024-11-22 */ //换电站 +@DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "ccode", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_COMPANY_CODE) public interface VehicleInfoDao extends BaseMapper { } diff --git a/wechat-server/pom.xml b/wechat-server/pom.xml index 2c461ed..735b6b4 100644 --- a/wechat-server/pom.xml +++ b/wechat-server/pom.xml @@ -21,12 +21,16 @@ common-web 1.0.0-SNAPSHOT - - com.evotech.hd - common-permission - 1.0.0-SNAPSHOT - - + + + + + + + com.evotech.hd + common-redis + 1.0.0-SNAPSHOT + com.evotech.hd common-mybatis