From 146cffe8e1a2223677dadf2b51e6fd4fd08e5810 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期六, 24 八月 2024 17:29:27 +0800 Subject: [PATCH] 计费修改 --- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java | 218 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 183 insertions(+), 35 deletions(-) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java index 3e8b420..110ef9c 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java @@ -2,16 +2,22 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.chargingPile.api.dto.GetPermissionConfigurationDTO; import com.ruoyi.chargingPile.api.dto.PartnerListDTO; -import com.ruoyi.chargingPile.api.model.Partner; +import com.ruoyi.chargingPile.api.model.*; 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.mapper.PartnerMapper; -import com.ruoyi.chargingPile.service.IPartnerService; +import com.ruoyi.chargingPile.service.*; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; 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.SysRole; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysRoleClient; @@ -20,10 +26,10 @@ import io.seata.spring.annotation.GlobalTransactional; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -38,6 +44,24 @@ @Resource private SysUserClient sysUserClient; + + @Resource + private ISiteService siteService; + + @Resource + private TPartnerSiteService partnerSiteService; + + @Resource + private TSiteMenuService siteMenuService; + + @Resource + private TChargingPileService chargingPileService; + + @Resource + private UserSiteClient userSiteClient; + + @Resource + private RoleSiteClient roleSiteClient; @@ -80,7 +104,7 @@ * @return */ @Override - @GlobalTransactional//分布式事务 + @GlobalTransactional(rollbackFor = Exception.class)//分布式事务 public AjaxResult addPartner(Partner partner) { //校验参数和重复数据 AjaxResult ajaxResult = addPartnerParameterCheck(partner); @@ -105,19 +129,17 @@ this.save(partner); //添加登录账户 SysUser user = new SysUser(); - user.setAccount(partner.getAccount()); user.setPhonenumber(partner.getPhoneOne()); - user.setUserName(partner.getName()); + user.setUserName(partner.getAccount()); user.setNickName(partner.getName()); user.setAvatar(partner.getLogoUrl()); user.setPassword(partner.getPassword()); user.setStatus("0"); user.setDelFlag("0"); user.setRoleId(partner.getRoleId().longValue()); - R r = sysUserClient.addSysUser(user); - if(200 != r.getCode()){ - throw new RuntimeException(r.getMsg()); - } + user.setRoleType(2); + user.setObjectId(partner.getId()); + sysUserClient.addSysUser(user); return AjaxResult.success(); } @@ -140,10 +162,10 @@ if(StringUtils.isEmpty(partner.getPhoneOne())){ return AjaxResult.error("合作商电话1不能为空"); } - if(StringUtils.isEmpty(partner.getAccount())){ + if(null == partner.getId() && StringUtils.isEmpty(partner.getAccount())){ return AjaxResult.error("登录账号不能为空"); } - if(StringUtils.isEmpty(partner.getPassword())){ + if(null == partner.getId() && StringUtils.isEmpty(partner.getPassword())){ return AjaxResult.error("登录密码不能为空"); } return AjaxResult.success(); @@ -182,7 +204,7 @@ * @return */ @Override - @GlobalTransactional//分布式事务 + @GlobalTransactional(rollbackFor = Exception.class)//分布式事务 public AjaxResult editPartner(Partner partner) { //校验参数和重复数据 AjaxResult ajaxResult = addPartnerParameterCheck(partner); @@ -204,7 +226,7 @@ return AjaxResult.error("登录账号不能重复"); } Partner oldPartner = this.getById(partner.getId()); - SysUser user = sysUserClient.queryUserByAccount(oldPartner.getAccount()).getData(); + SysUser user = sysUserClient.queryUserByUserName(oldPartner.getAccount()).getData(); //修改数据 this.updateById(partner); @@ -213,21 +235,21 @@ user = new SysUser(); user.setStatus("0"); user.setDelFlag("0"); - user.setAccount(partner.getAccount()); user.setPhonenumber(partner.getPhoneOne()); - user.setUserName(partner.getName()); + user.setUserName(partner.getAccount()); user.setNickName(partner.getName()); user.setAvatar(partner.getLogoUrl()); user.setPassword(partner.getPassword()); user.setRoleId(partner.getRoleId().longValue()); + user.setRoleType(2); + user.setObjectId(partner.getId()); R r = sysUserClient.addSysUser(user); if(200 != r.getCode()){ throw new RuntimeException(r.getMsg()); } }else{ - user.setAccount(partner.getAccount()); user.setPhonenumber(partner.getPhoneOne()); - user.setUserName(partner.getName()); + user.setUserName(partner.getAccount()); user.setNickName(partner.getName()); user.setAvatar(partner.getLogoUrl()); user.setPassword(partner.getPassword()); @@ -243,25 +265,32 @@ /** * 删除合作商 - * @param id 合作商id + * @param ids 合作商id */ @Override - @GlobalTransactional//分布式事务 - public AjaxResult delPartner(Integer id) { + @GlobalTransactional(rollbackFor = Exception.class)//分布式事务 + public AjaxResult delPartner(List<Integer> ids) { //查询有无关联数据 //站点 - // todo 代码完善 - //充电桩 - - Partner partner = this.getById(id); - if(null == partner){ - return AjaxResult.error("删除失败"); + long count = siteService.count(new LambdaQueryWrapper<Site>().in(Site::getPartnerId, Arrays.asList(ids)).eq(Site::getDelFlag, 0)); + if(count > 0){ + return AjaxResult.error("当前合作商有关联站点,删除失败!"); } - partner.setDelFlag(true); - this.updateById(partner); - SysUser user = sysUserClient.queryUserByAccount(partner.getAccount()).getData(); - user.setDelFlag("2"); - sysUserClient.updateUser(user); + //充电桩 + long count1 = chargingPileService.count(new LambdaQueryWrapper<TChargingPile>().eq(TChargingPile::getPartnerId, Arrays.asList(ids)).eq(TChargingPile::getDelFlag, 0)); + if(count1 > 0){ + return AjaxResult.error("当前合作商有关联充电桩,删除失败!"); + } + for (Integer id : ids) { + Partner partner = this.getById(id); + if(null == partner){ + return AjaxResult.error("删除失败"); + } + this.removeById(partner); + SysUser user = sysUserClient.queryUserByUserName(partner.getAccount()).getData(); + user.setDelFlag("2"); + sysUserClient.updateUser(user); + } return AjaxResult.success(); } @@ -271,7 +300,7 @@ * @param resetPassword */ @Override - @GlobalTransactional//分布式事务 + @GlobalTransactional(rollbackFor = Exception.class)//分布式事务 public AjaxResult resetPassword(ResetPassword resetPassword) { if(null == resetPassword.getId()){ return AjaxResult.error("合作商id不能为空"); @@ -283,9 +312,128 @@ partner.setPassword(resetPassword.getPassword()); this.updateById(partner); //修改登录账号的密码 - SysUser user = sysUserClient.queryUserByAccount(partner.getAccount()).getData(); + SysUser user = sysUserClient.queryUserByUserName(partner.getAccount()).getData(); user.setPassword(partner.getPassword()); sysUserClient.resetPassword(user); return AjaxResult.success(); } + + + /** + * 获取合作商权限 + * @return + */ + @Override + public GetPermissionConfigurationDTO getPermissionConfiguration(Integer siteId, Integer partnerId) { + Partner partner = this.getById(partnerId); + GetPermissionConfigurationDTO dto = new GetPermissionConfigurationDTO(); + dto.setPermissionRemarks(partner.getPermissionRemarks()); + List<TPartnerSite> list = partnerSiteService.list(new LambdaQueryWrapper<TPartnerSite>() + .eq(TPartnerSite::getPartnerId, partnerId) + .eq(TPartnerSite::getSiteId, siteId)); + List<Integer> collect = list.stream().map(TPartnerSite::getSiteMenuId).collect(Collectors.toList()); + List<TSiteMenu> tSiteMenus = siteMenuService.list(new LambdaQueryWrapper<TSiteMenu>() + .eq(TSiteMenu::getParentId, 0) + .eq(TSiteMenu::getVisible, 0) + .eq(TSiteMenu::getStatus, 0).orderByAsc(TSiteMenu::getOrderNum)); + List<Map<String, Object>> list1 = new ArrayList<>(); + for (TSiteMenu tSiteMenu : tSiteMenus) { + Map<String, Object> menu = new HashMap<>(); + menu.put("id", tSiteMenu.getMenuId()); + menu.put("name", tSiteMenu.getMenuName()); + menu.put("path", tSiteMenu.getPath()); + menu.put("type", tSiteMenu.getMenuType()); + + List<TSiteMenu> tSiteMenus1 = siteMenuService.list(new LambdaQueryWrapper<TSiteMenu>() + .eq(TSiteMenu::getParentId, tSiteMenu.getMenuId()) + .eq(TSiteMenu::getVisible, 0) + .eq(TSiteMenu::getStatus, 0).orderByAsc(TSiteMenu::getOrderNum)); + List<Map<String, Object>> list2 = new ArrayList<>(); + for (TSiteMenu siteMenu : tSiteMenus1) { + Map<String, Object> child = new HashMap<>(); + child.put("id", siteMenu.getMenuId()); + child.put("name", siteMenu.getMenuName()); + child.put("path", siteMenu.getPath()); + child.put("type", siteMenu.getMenuType()); + child.put("selected", collect.contains(siteMenu.getMenuId())); + list2.add(child); + } + menu.put("selected", list2.size() > 0 ? true : false); + menu.put("child", list2); + list1.add(menu); + } + dto.setMenu(list1); + return dto; + } + + + /** + * 合作商权限配置 + * @param req + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void setPermissionConfiguration(SetPermissionConfiguration req) { + //删除原始配置 + partnerSiteService.remove(new LambdaQueryWrapper<TPartnerSite>().eq(TPartnerSite::getPartnerId, req.getPartnerId()).eq(TPartnerSite::getSiteId, req.getSiteId())); + //添加新的配置 + List<TPartnerSite> sites = new ArrayList<>(); + List<Integer> list = req.getMenuId(); + for (Integer integer : list) { + TPartnerSite partnerSite = new TPartnerSite(); + partnerSite.setPartnerId(req.getPartnerId()); + partnerSite.setSiteId(req.getSiteId()); + partnerSite.setSiteMenuId(integer); + sites.add(partnerSite); + } + partnerSiteService.saveBatch(sites); + //修改权限配置 + Partner partner = this.getById(req.getPartnerId()); + partner.setPermissionRemarks(req.getPermissionRemarks()); + this.updateById(partner); + } + + + /** + * 获取合作商授权的站点数据 + * @param siteMenu 授权菜单路径枚举类 + * @return + */ + @Override + public Set<Integer> authSite(Integer partnerId, SiteMenu siteMenu) { + TSiteMenu one = siteMenuService.getOne(new LambdaQueryWrapper<TSiteMenu>().eq(TSiteMenu::getPath, siteMenu.getValue()).eq(TSiteMenu::getStatus, 0)); + List<TPartnerSite> list = partnerSiteService.list(new LambdaQueryWrapper<TPartnerSite>() + .eq(TPartnerSite::getPartnerId, partnerId) + .eq(TPartnerSite::getSiteMenuId, one.getMenuId())); + List<Integer> collect = list.stream().map(TPartnerSite::getSiteId).collect(Collectors.toList()); + //获取合作商用户关联的站点数据 + Partner partner = this.getById(partnerId); + SysUser sysUser = sysUserClient.queryUserByUserName(partner.getAccount()).getData(); + List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); + List<Integer> data1 = roleSiteClient.getSiteIds(sysUser.getRoleId()).getData(); + collect.addAll(data); + collect.addAll(data1); + Set<Integer> siteIds = new HashSet<>(collect); + if(siteIds.size() == 0){ + siteIds.add(-1); + } + return siteIds; + } + + + /** + * 判断当前账户是否有权限 + * @param siteId 站点id + * @param siteMenu 菜单路径枚举类 + * @return + */ + @Override + public boolean authMenu(Integer partnerId, Integer siteId, SiteMenu siteMenu) { + TSiteMenu one = siteMenuService.getOne(new LambdaQueryWrapper<TSiteMenu>().eq(TSiteMenu::getPath, siteMenu.getValue()).eq(TSiteMenu::getStatus, 0)); + TPartnerSite partnerSite = partnerSiteService.getOne(new LambdaQueryWrapper<TPartnerSite>() + .eq(TPartnerSite::getPartnerId, partnerId) + .eq(TPartnerSite::getSiteMenuId, one.getMenuId()) + .eq(TPartnerSite::getSiteId, siteId)); + return null == partnerSite ? false : true; + } } -- Gitblit v1.7.1