ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserRoleFallbackFactory.java
New file @@ -0,0 +1,26 @@ package com.ruoyi.system.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.*; import org.springframework.stereotype.Component; import java.util.List; @Component public class SysUserRoleFallbackFactory implements org.springframework.cloud.openfeign.FallbackFactory<SysUserRoleClient> { @Override public SysUserRoleClient create(Throwable cause) { return new SysUserRoleClient(){ @Override public R<List<SysUserRoleVo>> getRoleByUserId(Long userId) { return R.fail("根据用户id获取角色失败:" + cause.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserRoleClient.java
New file @@ -0,0 +1,28 @@ package com.ruoyi.system.api.feignClient; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.factory.SysUserRoleFallbackFactory; import com.ruoyi.system.api.model.SysUserRoleVo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; /** * @author zhibing.pu * @date 2024/9/4 9:49 */ @FeignClient(contextId = "SysUserRoleClient", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = SysUserRoleFallbackFactory.class) public interface SysUserRoleClient { /** * 根据用户id获取角色 * @param userId * @return */ @PostMapping("/userRole/getRoleByUserId") R<List<SysUserRoleVo>> getRoleByUserId(@RequestParam("userId") Long userId); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/SysUserRoleVo.java
New file @@ -0,0 +1,49 @@ package com.ruoyi.system.api.model; import com.baomidou.mybatisplus.annotation.TableField; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; /** * 用户和角色关联 sys_user_role * * @author ruoyi */ public class SysUserRoleVo { /** 用户ID */ @TableField("user_id") private Long userId; /** 角色ID */ @TableField("role_id") private Long roleId; public Long getUserId() { return userId; } public void setUserId(Long userId) { this.userId = userId; } public Long getRoleId() { return roleId; } public void setRoleId(Long roleId) { this.roleId = roleId; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("userId", getUserId()) .append("roleId", getRoleId()) .toString(); } } ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -4,3 +4,4 @@ com.ruoyi.system.api.factory.SysUserFallbackFactory com.ruoyi.system.api.factory.SysRoleFallbackFactory com.ruoyi.system.api.factory.SysLoginLogFallbackFactory com.ruoyi.system.api.factory.SysUserRoleFallbackFactory ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserRoleController.java
@@ -1,20 +1,19 @@ package com.ruoyi.system.controller; import java.util.ArrayList; import java.util.List; import java.io.IOException; import javax.servlet.http.HttpServletResponse; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.model.SysUserRoleVo; import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.service.ISysUserRoleService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.security.annotation.RequiresPermissions; @@ -96,4 +95,22 @@ public AjaxResult remove(@PathVariable Long[] userIds) { return toAjax(sysUserRoleService.deleteSysUserRoleByUserIds(userIds)); } /** * 根据用户id获取角色 * @param userId * @return */ @PostMapping("/getRoleByUserId") public R<List<SysUserRoleVo>> getRoleByUserId(@RequestParam("userId") Long userId){ List<SysUserRole> list = sysUserRoleService.list(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId)); List<SysUserRoleVo> data = new ArrayList<>(); for (SysUserRole sysUserRole : list) { SysUserRoleVo vo = new SysUserRoleVo(); BeanUtils.copyProperties(sysUserRole, vo); data.add(vo); } return R.ok(data); } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
@@ -31,6 +31,8 @@ import com.ruoyi.other.api.feignClient.VipClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.SysUserRoleVo; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -68,6 +70,8 @@ private AppUserClient appUserClient; @Resource private VipClient vipClient; @Resource private SysUserRoleClient sysUserRoleClient; @@ -90,8 +94,11 @@ //非管理员需要根据角色和用户配置查询允许的站点数据 if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){ List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); List<Integer> data1 = roleSiteClient.getSiteIds(sysUser.getRoleId()).getData(); data.addAll(data1); List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData(); if(data2.size() > 0){ List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData(); data.addAll(data1); } ids = new HashSet<>(data); } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1069,7 +1069,6 @@ return null; } @Override public ChargingOrderListInfoVO chargingInfo(String uid) { TChargingOrder chargingOrder= this.getById(uid); ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
@@ -191,7 +191,11 @@ total = total.add(vip.getMaximumDeduction().multiply(BigDecimal.valueOf(vip.getDiscountTimes()))); for (VipCouponDto vipCouponDto : vipCouponDtos) { TCoupon tCoupon = vipCouponDto.getTCoupon(); total.add(tCoupon.getMaximumDiscountAmount()); if (tCoupon.getPreferentialMode()==2) { total.add(tCoupon.getMaximumDiscountAmount()); }else { total.add(tCoupon.getDiscountAmount()); } } vipInfoDto.setTotalDiscount(total); vipInfoDto.setTimeAmount(vip.getMaximumDeduction().multiply(BigDecimal.valueOf(vip.getDiscountTimes())));