| ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserWhitelistSaveDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/SignFilter.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserWhitelistServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| sql/20261010_app_user_whitelist_benefit_type_nullable.sql | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| sql/20261010_vin_management_id_autoincrement.sql | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserWhitelistSaveDTO.java
@@ -34,10 +34,10 @@ @ApiModelProperty(value = "合作商ID") private Integer partnerId; @ApiModelProperty(value = "所属公司ID(关联t_group_company.id)") @ApiModelProperty(value = "所属公司ID(关联t_group_company.id),必填") private Integer companyId; @ApiModelProperty(value = "所属车队ID(关联t_fleet.id),必须归属所选公司") @ApiModelProperty(value = "所属车队ID(关联t_fleet.id),必填,必须归属所选公司") private Integer fleetId; @ApiModelProperty(value = "余额(元),分配模式公司设置后从公司可用余额扣减") ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/SignFilter.java
@@ -95,12 +95,14 @@ */ private Mono<Void> authSign(ServerWebExchange exchange, GatewayFilterChain chain, String sign, String nonce_str){ return DataBufferUtils.join(exchange.getRequest().getBody()) .defaultIfEmpty(exchange.getResponse().bufferFactory().wrap(new byte[0])) .flatMap(dataBuffer -> { byte[] bytes = new byte[dataBuffer.readableByteCount()]; dataBuffer.read(bytes); String bodyString = new String(bytes, StandardCharsets.UTF_8); log.info("请求参数:{}", bodyString); if(!authSign(JSON.parseObject(bodyString), sign, nonce_str)){ JSONObject bodyJson = StringUtils.isEmpty(bodyString) ? new JSONObject() : JSON.parseObject(bodyString); if(!authSign(bodyJson, sign, nonce_str)){ return unauthorizedResponse(exchange, "签名验证失败!"); } DataBufferUtils.release(dataBuffer); ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserWhitelistServiceImpl.java
@@ -700,6 +700,13 @@ if (Objects.equals(scopeType, SCOPE_PARTNER) && saveDTO.getPartnerId() == null) { throw new ServiceException("请选择加盟商"); } // 所属公司与所属车队必填:白名单用户归属企业,充电完全按企业优惠结算 if (saveDTO.getCompanyId() == null) { throw new ServiceException("请选择所属公司"); } if (saveDTO.getFleetId() == null) { throw new ServiceException("请选择所属车队"); } validatePartnerDataScope(saveDTO); TAppUserWhitelist exists = getByPhone(saveDTO.getPhone()); if (saveDTO.getId() == null && exists != null) { sql/20261010_app_user_whitelist_benefit_type_nullable.sql
New file @@ -0,0 +1,10 @@ -- 2026-10-10 修复:添加白名单用户报 "Field 'benefit_type' doesn't have a default value" -- 背景:白名单权益已下线(白名单用户充电完全按企业优惠结算),代码 validateSaveDTO 显式置空 -- benefitType 且 createWhitelist 不再写入该字段,MyBatis-Plus NOT_NULL 策略下 insert 不带 -- benefit_type 列;但表列仍为历史定义 tinyint NOT NULL 无默认值,MySQL 严格模式拒绝插入。 -- 已在 dev 环境执行(192.168.110.74:3306 物理库;192.168.110.111:8066 / 221.182.45.100:8066 Mycat 代理已同步执行)。 -- 正式/测试环境部署前需 DBA 在对应物理库执行以下语句。 -- 幂等:列已可空时重复执行无害;历史数据保留原值不受影响。 ALTER TABLE `charging_pile_account`.`t_app_user_whitelist` MODIFY COLUMN `benefit_type` tinyint DEFAULT NULL COMMENT '享受权益:1=全部免费,2=免电费,3=免服务费(已下线,白名单用户充电完全按企业优惠结算)'; sql/20261010_vin_management_id_autoincrement.sql
New file @@ -0,0 +1,10 @@ -- 2026-10-10 修复:t_vin_management 主键丢失 AUTO_INCREMENT -- 背景:20260903_complete_database_comments.sql 补注释时 MODIFY COLUMN id 漏带 AUTO_INCREMENT, -- 实体 TVinManagement 的 id 为 IdType.AUTO(insert 不带 id 列),添加 VIN 车辆报 -- "Field 'id' doesn't have a default value"。 -- 已在 dev 环境执行(192.168.110.74:3306 物理库;192.168.110.111:8066 / 221.182.45.100:8066 Mycat 代理已同步执行)。 -- 正式/测试环境部署前需 DBA 在对应物理库执行以下语句。 -- 幂等:已自增时重复执行无害。 ALTER TABLE `charging_pile_account`.`t_vin_management` MODIFY COLUMN `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID';