diff --git a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/utils/MathUtils.java b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/utils/MathUtils.java index edfb60c..c58a214 100644 --- a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/utils/MathUtils.java +++ b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/utils/MathUtils.java @@ -144,4 +144,14 @@ public class MathUtils { } return min; } + + public static boolean equals(Integer a, Integer b) { + if (a == null) { + a = 0; + } + if (b == null) { + b = 0; + } + return a.equals(b); + } } diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/areaJoin/service/impl/AreaJoinServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/areaJoin/service/impl/AreaJoinServiceImpl.java index 3495cdc..2f1ee53 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/areaJoin/service/impl/AreaJoinServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/areaJoin/service/impl/AreaJoinServiceImpl.java @@ -14,9 +14,13 @@ import com.ruoyi.bst.areaJoin.domain.AreaJoinVO; import com.ruoyi.bst.areaJoin.mapper.AreaJoinMapper; import com.ruoyi.bst.areaJoin.service.AreaJoinService; import com.ruoyi.bst.areaJoin.service.AreaJoinValidator; +import com.ruoyi.common.constant.RoleConstants; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.collection.CollectionUtils; +import com.ruoyi.system.role.service.RoleService; + +import lombok.extern.slf4j.Slf4j; /** * 运营加盟Service业务层处理 @@ -25,6 +29,7 @@ import com.ruoyi.common.utils.collection.CollectionUtils; * @date 2025-03-25 */ @Service +@Slf4j public class AreaJoinServiceImpl implements AreaJoinService { @Autowired @@ -36,6 +41,9 @@ public class AreaJoinServiceImpl implements AreaJoinService @Autowired private TransactionTemplate transactionTemplate; + @Autowired + private RoleService roleService; + /** * 查询运营加盟 * @@ -110,6 +118,9 @@ public class AreaJoinServiceImpl implements AreaJoinService int rows = areaJoinMapper.insertAreaJoin(areaJoin); if (rows > 0) { + // 尝试修改用户角色 + this.tryUpdateUserRole(areaJoin); + // 后校验 areaJoinValidator.afterCheck(areaJoin.getId()); } @@ -133,6 +144,9 @@ public class AreaJoinServiceImpl implements AreaJoinService int rows = areaJoinMapper.updateAreaJoin(areaJoin); if (rows > 0) { + // 尝试修改用户角色 + this.tryUpdateUserRole(areaJoin); + // 后校验 areaJoinValidator.afterCheck(areaJoin.getId()); } @@ -143,6 +157,18 @@ public class AreaJoinServiceImpl implements AreaJoinService return result == null ? 0 : result; } + /** + * 尝试修改用户角色 + * + * @param areaJoin + */ + private void tryUpdateUserRole(AreaJoin areaJoin) { + try { + roleService.insertAuthUsers(RoleConstants.JOIN, Collections.singletonList(areaJoin.getUserId())); + } catch (Exception e) { + log.warn("尝试修改ID为{}的用户角色失败:{}", areaJoin.getUserId(), e); + } + } /** * 批量删除运营加盟 * diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/impl/SuitValidatorImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/impl/SuitValidatorImpl.java index 1a2f522..4d2ea2e 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/impl/SuitValidatorImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/suit/service/impl/SuitValidatorImpl.java @@ -5,6 +5,7 @@ import java.util.Arrays; import java.util.HashSet; import java.util.List; +import com.ruoyi.common.utils.MathUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -92,7 +93,7 @@ public class SuitValidatorImpl implements SuitValidator { SuitIntervalFeeRule nextRule = intervalRules.get(i + 1); ServiceUtil.assertion(rule.getEnd() == null, "区间结束时间不能为空"); ServiceUtil.assertion(rule.getStart() > rule.getEnd(), "区间的结束时间不允许小于开始时间"); - ServiceUtil.assertion(rule.getEnd() != nextRule.getStart(), "区间的结束时间必须等于下一个区间的开始时间"); + ServiceUtil.assertion(!MathUtils.equals(rule.getEnd(), nextRule.getStart()), "区间的结束时间必须等于下一个区间的开始时间"); int eachUnit = rule.getEachUnit(); int duration = rule.getEnd() - rule.getStart(); ServiceUtil.assertion(duration % eachUnit != 0, "区间间隔必须能够被区间整除"); diff --git a/ruoyi-service/src/main/java/com/ruoyi/iot/service/impl/IotConverterImpl.java b/ruoyi-service/src/main/java/com/ruoyi/iot/service/impl/IotConverterImpl.java index 950e7a6..7dee7f0 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/iot/service/impl/IotConverterImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/iot/service/impl/IotConverterImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.iot.service.impl; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @@ -69,10 +70,10 @@ public class IotConverterImpl implements IotConverter { if (sys == null) { return; } - // TODO 部分硬件版本,电压除以10 - // if (sys.getBat() != null) { - // sys.setBat(sys.getBat().divide(new BigDecimal(10), 2, BigDecimal.ROUND_HALF_UP)); - // } + // 旧版硬件BUG,电压超过100V的需要除以10 + if (sys.getBat() != null && sys.getBat().compareTo(BigDecimal.valueOf(100)) >= 0) { + sys.setBat(sys.getBat().divide(BigDecimal.valueOf(10), 2, BigDecimal.ROUND_HALF_UP)); + } device.setSys(sys); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/system/role/mapper/RoleMapper.java b/ruoyi-service/src/main/java/com/ruoyi/system/role/mapper/RoleMapper.java index 3e23926..d2242b5 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/system/role/mapper/RoleMapper.java +++ b/ruoyi-service/src/main/java/com/ruoyi/system/role/mapper/RoleMapper.java @@ -1,6 +1,9 @@ package com.ruoyi.system.role.mapper; import java.util.List; + +import org.apache.ibatis.annotations.Param; + import com.ruoyi.common.core.domain.entity.Role; /** @@ -104,4 +107,11 @@ public interface RoleMapper * @return 结果 */ public int deleteRoleByIds(Long[] roleIds); + + /** + * 根据角色编码查询角色 + * @param roleKey + * @return + */ + public Role selectRoleByKey(@Param("roleKey") String roleKey); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/system/role/mapper/RoleMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/system/role/mapper/RoleMapper.xml index ec39b21..095e84e 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/system/role/mapper/RoleMapper.xml +++ b/ruoyi-service/src/main/java/com/ruoyi/system/role/mapper/RoleMapper.xml @@ -61,6 +61,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE r.del_flag = '0' and ur.user_id = #{userId} + + + + + diff --git a/ruoyi-service/src/main/java/com/ruoyi/system/role/service/RoleService.java b/ruoyi-service/src/main/java/com/ruoyi/system/role/service/RoleService.java index 4c3f5aa..6caca2e 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/system/role/service/RoleService.java +++ b/ruoyi-service/src/main/java/com/ruoyi/system/role/service/RoleService.java @@ -1,11 +1,11 @@ package com.ruoyi.system.role.service; -import com.ruoyi.common.core.domain.entity.Role; -import com.ruoyi.system.userRole.domain.UserRole; - import java.util.List; import java.util.Set; +import com.ruoyi.common.core.domain.entity.Role; +import com.ruoyi.system.userRole.domain.UserRole; + /** * 角色业务层 * @@ -170,5 +170,13 @@ public interface RoleService * @param userIds 需要删除的用户数据ID * @return 结果 */ - public int insertAuthUsers(Long roleId, Long[] userIds); + public int insertAuthUsers(Long roleId, List userIds); + + /** + * 批量选择授权用户角色(根据角色编码) + * @param code + * @param userIds + * @return + */ + int insertAuthUsers(String code, List userIds); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/system/role/service/impl/RoleServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/system/role/service/impl/RoleServiceImpl.java index 5277c1a..b3a90cc 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/system/role/service/impl/RoleServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/system/role/service/impl/RoleServiceImpl.java @@ -16,14 +16,14 @@ import com.ruoyi.common.core.domain.entity.User; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.system.roleDept.domain.RoleDept; -import com.ruoyi.system.roleMenu.domain.RoleMenu; -import com.ruoyi.system.userRole.domain.UserRole; -import com.ruoyi.system.roleDept.mapper.RoleDeptMapper; import com.ruoyi.system.role.mapper.RoleMapper; -import com.ruoyi.system.roleMenu.mapper.RoleMenuMapper; -import com.ruoyi.system.userRole.mapper.UserRoleMapper; import com.ruoyi.system.role.service.RoleService; +import com.ruoyi.system.roleDept.domain.RoleDept; +import com.ruoyi.system.roleDept.mapper.RoleDeptMapper; +import com.ruoyi.system.roleMenu.domain.RoleMenu; +import com.ruoyi.system.roleMenu.mapper.RoleMenuMapper; +import com.ruoyi.system.userRole.domain.UserRole; +import com.ruoyi.system.userRole.mapper.UserRoleMapper; /** * 角色 业务层处理 @@ -410,7 +410,7 @@ public class RoleServiceImpl implements RoleService * @return 结果 */ @Override - public int insertAuthUsers(Long roleId, Long[] userIds) + public int insertAuthUsers(Long roleId, List userIds) { // 新增用户与角色管理 List list = new ArrayList(); @@ -423,4 +423,22 @@ public class RoleServiceImpl implements RoleService } return userRoleMapper.batchUserRole(list); } + + @Override + public int insertAuthUsers(String key, List userIds) { + Role role = this.selectRoleByKey(key); + if (role == null) { + return 0; + } + return this.insertAuthUsers(role.getRoleId(), userIds); + } + + /** + * 根据角色编码查询角色 + * @param key + * @return + */ + public Role selectRoleByKey(String key) { + return roleMapper.selectRoleByKey(key); + } } diff --git a/ruoyi-service/src/main/java/com/ruoyi/system/user/domain/UserQuery.java b/ruoyi-service/src/main/java/com/ruoyi/system/user/domain/UserQuery.java index b1e04af..25dbc77 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/system/user/domain/UserQuery.java +++ b/ruoyi-service/src/main/java/com/ruoyi/system/user/domain/UserQuery.java @@ -56,4 +56,7 @@ public class UserQuery extends UserVO { @ApiModelProperty("创建日期范围") @DateTimeFormat(pattern = "yyyy-MM-dd") private List createDateRange; + + @ApiModelProperty("角色ID") + private Long roleId; } diff --git a/ruoyi-service/src/main/java/com/ruoyi/system/user/mapper/UserMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/system/user/mapper/UserMapper.xml index 0dded07..90ab50a 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/system/user/mapper/UserMapper.xml +++ b/ruoyi-service/src/main/java/com/ruoyi/system/user/mapper/UserMapper.xml @@ -177,6 +177,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{item} + + and u.nick_name like concat('%', #{nickName}, '%') + + + and u.user_id in ( + select sur.user_id from sys_user_role sur where sur.role_id = #{roleId} + ) + AND u.dept_id IN diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/app/AppDeviceController.java b/ruoyi-web/src/main/java/com/ruoyi/web/app/AppDeviceController.java index 393ffef..488741a 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/app/AppDeviceController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/app/AppDeviceController.java @@ -24,8 +24,6 @@ public class AppDeviceController extends BaseController { @Autowired private DeviceService deviceService; - - @ApiOperation("获取附近可用车辆列表") @GetMapping("/listNearBy") @Anonymous diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/system/SysRoleController.java b/ruoyi-web/src/main/java/com/ruoyi/web/system/SysRoleController.java index c142653..4d054bb 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/system/SysRoleController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/system/SysRoleController.java @@ -4,7 +4,6 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; -import com.ruoyi.common.core.domain.vo.UserVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; @@ -23,6 +22,7 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.Role; import com.ruoyi.common.core.domain.entity.User; import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.core.domain.vo.UserVO; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.StringUtils; @@ -31,9 +31,9 @@ import com.ruoyi.framework.web.service.SysPermissionService; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.dept.domain.DeptQuery; import com.ruoyi.system.dept.service.DeptService; -import com.ruoyi.system.userRole.domain.UserRole; import com.ruoyi.system.role.service.RoleService; import com.ruoyi.system.user.service.UserService; +import com.ruoyi.system.userRole.domain.UserRole; /** * 角色信息 @@ -245,7 +245,7 @@ public class SysRoleController extends BaseController @PreAuthorize("@ss.hasPermi('system:role:edit')") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/selectAll") - public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds) + public AjaxResult selectAuthUserAll(Long roleId, List userIds) { roleService.checkRoleDataScope(roleId); return toAjax(roleService.insertAuthUsers(roleId, userIds));