ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java
@@ -7,6 +7,8 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import java.util.Set; /** * 充电桩服务降级处理 @@ -27,6 +29,11 @@ public R<Partner> getPartnerById(Integer id) { return R.fail("根据id获取合作商信息失败:" + throwable.getMessage()); } @Override public R<Set<Integer>> authSite(Integer partnerId, String siteMenu) { return R.fail("获取合作商授权的站点数据失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java
@@ -8,6 +8,9 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import java.util.Set; /** * @author zhibing.pu @@ -24,4 +27,14 @@ */ @PostMapping("/partner/getPartnerById/{id}") R<Partner> getPartnerById(@PathVariable("id") Integer id); /** * 获取合作商授权的站点数据 * @param partnerId * @param siteMenu * @return */ @PostMapping("/partner/authSite/{partnerId}") R<Set<Integer>> authSite(@PathVariable("partnerId") Integer partnerId, @RequestParam("siteMenu") String siteMenu); } ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MD5Util.java
@@ -73,52 +73,4 @@ return ""; } /** * 获取32位大写 * * @param str * @return */ public static String getMD5_32_upper(String str) { if (StringUtils.isNotEmpty(str)) return getMD5(str).toUpperCase(); return ""; } /** * 获取32位小写 * * @param str * @return */ public static String getMD5_32_lower(String str) { if (StringUtils.isNotEmpty(str)) return getMD5(str).toLowerCase(); return ""; } /** * 获取16位大写 * * @param str * @return */ public static String getMD5_16_upper(String str) { if (StringUtils.isNotEmpty(str)) return getMD5(str).substring(8, 24).toUpperCase(); return ""; } /** * 获取16位小写 * * @param str * @return */ public static String getMD5_16_lower(String str) { if (StringUtils.isNotEmpty(str)) return getMD5(str).substring(8, 24).toLowerCase(); return ""; } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java
@@ -7,6 +7,7 @@ import com.ruoyi.chargingPile.api.model.Partner; import com.ruoyi.chargingPile.api.query.GetPartnerList; import com.ruoyi.chargingPile.api.query.SetPermissionConfiguration; import com.ruoyi.chargingPile.domain.SiteMenu; import com.ruoyi.chargingPile.dto.ResetPassword; import com.ruoyi.chargingPile.service.IPartnerService; import com.ruoyi.common.core.domain.R; @@ -24,6 +25,7 @@ import javax.annotation.Resource; import java.util.List; import java.util.Set; /** * @author zhibing.pu @@ -158,4 +160,16 @@ Partner partner = partnerService.getPartner(id); return R.ok(partner); } /** * 获取合作商授权的站点数据 * @param partnerId * @param siteMenu * @return */ @PostMapping("/authSite/{partnerId}") public R<Set<Integer>> authSite(@PathVariable("partnerId") Integer partnerId, @RequestParam("siteMenu") String siteMenu){ Set<Integer> integers = partnerService.authSite(partnerId, SiteMenu.valueOf(siteMenu)); return R.ok(integers); } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java
@@ -63,7 +63,7 @@ @ResponseBody @GetMapping("/getRepairList") @ApiOperation(value = "获取报修记录列表数据", tags = {"管理后台-设备监控"}) public AjaxResult<PageInfo<TRepair>> getRepairList(String name, String siteId, BasePage basePage){ public AjaxResult<PageInfo<TRepair>> getRepairList(String name, Integer siteId, BasePage basePage){ PageInfo<TRepair> pageInfo = new PageInfo<>(basePage.getPageCurr(), basePage.getPageSize()); List<TRepair> repairList = repairService.getRepairList(pageInfo, name, siteId); pageInfo.setRecords(repairList); ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TFaultMessageMapper.java
@@ -20,8 +20,7 @@ /** * 获取故障信息列表 * @param pageInfo * @param siteId * @return */ List<TFaultMessage> getFaultMessageList(PageInfo<TFaultMessage> pageInfo, @Param("siteId") Integer siteId); List<TFaultMessage> getFaultMessageList(PageInfo<TFaultMessage> pageInfo, @Param("siteIds") List<Integer> siteIds); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TRepairMapper.java
@@ -22,9 +22,9 @@ * 获取列表数据 * @param pageInfo * @param name * @param siteId * @param siteIds * @return */ List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, @Param("name") String name, @Param("siteId") String siteId); List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, @Param("name") String name, @Param("siteIds") List<Integer> siteIds); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TRepairService.java
@@ -23,7 +23,7 @@ * @param siteId * @return */ List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, String name, String siteId); List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, String name, Integer siteId); /** * 添加报修记录 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TFaultMessageServiceImpl.java
@@ -2,24 +2,33 @@ import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.feignClient.PartnerClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TFaultMessage; import com.ruoyi.chargingPile.domain.SiteMenu; import com.ruoyi.chargingPile.mapper.TFaultMessageMapper; import com.ruoyi.chargingPile.service.ISiteService; import com.ruoyi.chargingPile.service.TChargingPileNotificationService; import com.ruoyi.chargingPile.service.TChargingPileService; import com.ruoyi.chargingPile.service.TFaultMessageService; import com.ruoyi.chargingPile.service.*; import com.ruoyi.common.core.constant.MsgConstants; import com.ruoyi.common.core.utils.HttpUtils; import com.ruoyi.common.core.utils.MsgUtil; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.SysUserRoleVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Set; /** * <p> @@ -39,6 +48,21 @@ private TChargingPileService chargingPileService; @Autowired private TChargingPileNotificationService chargingPileNotificationService; @Resource private SysUserClient sysUserClient; @Resource private IPartnerService partnerService; @Resource private UserSiteClient userSiteClient; @Resource private RoleSiteClient roleSiteClient; @Resource private SysUserRoleClient sysUserRoleClient; @Override public void add(TFaultMessage dto) { @@ -66,6 +90,29 @@ */ @Override public List<TFaultMessage> getFaultMessageList(PageInfo<TFaultMessage> pageInfo, Integer siteId) { return this.baseMapper.getFaultMessageList(pageInfo, siteId); //校验合作商权限 List<Integer> siteIds = new ArrayList<>(); if(null == siteId || 0 == siteId){ SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); //合作商 if(roleType == 2){ Set<Integer> data = partnerService.authSite(objectId, SiteMenu.SITE_LIST); siteIds = new ArrayList<>(data); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){ List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData(); List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData(); data.addAll(data1); siteIds = data; } } }else{ siteIds.add(siteId); } return this.baseMapper.getFaultMessageList(pageInfo, siteIds); } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java
@@ -5,24 +5,32 @@ import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TRepair; import com.ruoyi.chargingPile.domain.SiteMenu; import com.ruoyi.chargingPile.mapper.TRepairMapper; import com.ruoyi.chargingPile.service.ISiteService; import com.ruoyi.chargingPile.service.TChargingPileNotificationService; import com.ruoyi.chargingPile.service.TChargingPileService; import com.ruoyi.chargingPile.service.TRepairService; import com.ruoyi.chargingPile.service.*; import com.ruoyi.common.core.constant.MsgConstants; import com.ruoyi.common.core.utils.HttpUtils; import com.ruoyi.common.core.utils.MsgUtil; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.SysUserRoleVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Set; /** * <p> @@ -41,6 +49,25 @@ private TChargingPileService chargingPileService; @Autowired private TChargingPileNotificationService chargingPileNotificationService; @Resource private SysUserClient sysUserClient; @Resource private IPartnerService partnerService; @Resource private UserSiteClient userSiteClient; @Resource private RoleSiteClient roleSiteClient; @Resource private SysUserRoleClient sysUserRoleClient; /** * 获取报修记录列表 * @param name @@ -48,8 +75,31 @@ * @return */ @Override public List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, String name, String siteId) { return this.baseMapper.getRepairList(pageInfo, name, siteId); public List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, String name, Integer siteId) { //校验合作商权限 List<Integer> siteIds = new ArrayList<>(); if(null == siteId || 0 == siteId){ SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); //合作商 if(roleType == 2){ Set<Integer> data = partnerService.authSite(objectId, SiteMenu.SITE_LIST); siteIds = new ArrayList<>(data); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){ List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData(); List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData(); data.addAll(data1); siteIds = data; } } }else{ siteIds.add(siteId); } return this.baseMapper.getRepairList(pageInfo, name, siteIds); } @Override ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TFaultMessageMapper.xml
@@ -32,8 +32,11 @@ left join t_charging_pile b on (a.charging_pile_id = b.id) left join t_site c on (a.site_id = c.id) where a.del_flag = 0 <if test="null != siteId"> and a.site_id = #{siteId} <if test="null != siteIds and siteIds.size() > 0"> and a.site_id in <foreach collection="siteIds" item="item" index="index" open="(" close=")" separator=","> #{item} </foreach> </if> order by a.create_time desc </select> ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TRepairMapper.xml
@@ -33,8 +33,11 @@ <if test="null != name and '' != name"> and a.repairman like CONCAT('%', #{name}, '%') </if> <if test="null != siteId"> and a.site_id = #{siteId} <if test="null != siteIds and siteIds.size() > 0"> and a.site_id in <foreach collection="siteIds" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach> </if> order by a.create_time desc </select> ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageList.java
@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * @author zhibing.pu * @Date 2024/8/12 19:07 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java
@@ -41,7 +41,7 @@ * @return */ List<GetOrderEvaluatePageListDTO> getPageList(@Param("query") GetOrderEvaluatePageList pageList, @Param("evaluationTagIds") List<Integer> evaluationTagIds, PageInfo<GetOrderEvaluatePageListDTO> pageInfo); @Param("siteIds") List<Integer> siteIds, PageInfo<GetOrderEvaluatePageListDTO> pageInfo); /** * 查询站点下的所有订单评价 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -15,6 +15,7 @@ import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserIntegralChange; import com.ruoyi.chargingPile.api.feignClient.PartnerClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO; @@ -24,6 +25,7 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TOrderEvaluate; import com.ruoyi.order.api.model.TOrderEvaluateTag; @@ -41,10 +43,12 @@ import com.ruoyi.other.api.domain.TEvaluationTag; import com.ruoyi.other.api.domain.TIntegralRule; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.IntegralRuleClient; import com.ruoyi.other.api.feignClient.TEvaluationTagClient; import com.ruoyi.other.api.feignClient.VipClient; import com.ruoyi.other.api.feignClient.*; import com.ruoyi.other.api.vo.TEvaluationTagVO; 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 io.seata.spring.annotation.GlobalTransactional; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -54,11 +58,7 @@ import java.math.BigDecimal; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.*; import java.util.stream.Collectors; /** @@ -100,6 +100,21 @@ @Resource private VipClient vipClient; @Resource private SysUserClient sysUserClient; @Resource private PartnerClient partnerService; @Resource private UserSiteClient userSiteClient; @Resource private RoleSiteClient roleSiteClient; @Resource private SysUserRoleClient sysUserRoleClient; @@ -251,7 +266,32 @@ List<TEvaluationTagVO> data = evaluationTagClient.getTagList(pageList.getEvaluateType()).getData(); evaluationTagIds = data.stream().map(TEvaluationTagVO::getId).collect(Collectors.toList()); } List<GetOrderEvaluatePageListDTO> list = this.baseMapper.getPageList(pageList, evaluationTagIds, pageInfo); //校验合作商权限 List<Integer> siteIds = new ArrayList<>(); if(null == pageList.getSiteId() || 0 == pageList.getSiteId()){ SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData(); Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); //合作商 if(roleType == 2){ Set<Integer> data = partnerService.authSite(objectId, "/data/site").getData(); siteIds = new ArrayList<>(data); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){ List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData(); List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData(); data.addAll(data1); siteIds = data; } } }else{ siteIds.add(pageList.getSiteId()); } List<GetOrderEvaluatePageListDTO> list = this.baseMapper.getPageList(pageList, evaluationTagIds, siteIds, pageInfo); for (GetOrderEvaluatePageListDTO dto : list) { TAppUser appUser = appUserClient.getUserById(dto.getAppUserId()).getData(); if(null != appUser){ @@ -259,8 +299,11 @@ String phone = appUser.getPhone(); dto.setPhone(phone.substring(0, 3) + "****" + phone.substring(6)); } Site site = siteClient.getSiteByIds(Arrays.asList(dto.getSiteId())).getData().get(0); List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(dto.getSiteId())).getData(); if(null != data1 && data1.size() > 0){ Site site = data1.get(0); dto.setSiteName(site.getName()); } List<TOrderEvaluateTag> tOrderEvaluateTags = orderEvaluateTagMapper.selectList(new LambdaQueryWrapper<TOrderEvaluateTag>().eq(TOrderEvaluateTag::getOrderEvaluateId, dto.getId())); List<Integer> tagIds = tOrderEvaluateTags.stream().map(TOrderEvaluateTag::getEvaluationTagId).collect(Collectors.toList()); if(tagIds.size() > 0){ ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml
@@ -123,6 +123,12 @@ <if test="null != query.siteId"> and b.site_id = #{query.siteId} </if> <if test="null != siteIds and siteIds.size() > 0"> and b.site_id in <foreach collection="siteIds" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach> </if> order by a.create_time desc </select> <select id="goodTop" resultType="java.util.Map">