From bc5b433028879348a63fd7f2b5845ae17df896a6 Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期四, 08 八月 2024 16:19:46 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java | 291 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 291 insertions(+), 0 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 new file mode 100644 index 0000000..3e8b420 --- /dev/null +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java @@ -0,0 +1,291 @@ +package com.ruoyi.chargingPile.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.chargingPile.api.dto.PartnerListDTO; +import com.ruoyi.chargingPile.api.model.Partner; +import com.ruoyi.chargingPile.api.query.GetPartnerList; +import com.ruoyi.chargingPile.dto.ResetPassword; +import com.ruoyi.chargingPile.mapper.PartnerMapper; +import com.ruoyi.chargingPile.service.IPartnerService; +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.system.api.domain.SysRole; +import com.ruoyi.system.api.domain.SysUser; +import com.ruoyi.system.api.feignClient.SysRoleClient; +import com.ruoyi.system.api.feignClient.SysUserClient; +import com.ruoyi.system.api.model.GetSysRoleByIds; +import io.seata.spring.annotation.GlobalTransactional; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author zhibing.pu + * @Date 2024/8/7 13:49 + */ +@Service +public class PartnerServiceImpl extends ServiceImpl<PartnerMapper, Partner> implements IPartnerService { + + @Resource + private SysRoleClient sysRoleClient; + + @Resource + private SysUserClient sysUserClient; + + + + /** + * 获取合作商列表数据 + * @param partnerList + * @return + */ + @Override + public PageInfo<PartnerListDTO> getPartnerList(GetPartnerList partnerList) { + PageInfo<PartnerListDTO> pageInfo = new PageInfo(partnerList.getPageCurr(), partnerList.getPageSize()); + List<PartnerListDTO> list = this.baseMapper.getPartnerList(pageInfo, partnerList); + List<Integer> roleIds = list.stream().map(PartnerListDTO::getRoleId).collect(Collectors.toList()); + GetSysRoleByIds ids = new GetSysRoleByIds(); + ids.setIds(roleIds); + //获取相关的角色id + R<List<SysRole>> r = sysRoleClient.getSysRoleByIds(ids); + if(r.getCode() != 200){ + throw new RuntimeException(r.getMsg()); + } + List<SysRole> data = r.getData(); + for (PartnerListDTO partnerListDTO : list) { + Integer roleId = partnerListDTO.getRoleId(); + if(null != roleId){ + continue; + } + SysRole sysRole = data.stream().filter(s -> roleId.equals(s.getRoleId())).findFirst().get(); + if(null != sysRole){ + partnerListDTO.setRoleName(sysRole.getRoleName()); + } + } + pageInfo.setRecords(list); + return pageInfo; + } + + + /** + * 添加合作商 + * @param partner + * @return + */ + @Override + @GlobalTransactional//分布式事务 + public AjaxResult addPartner(Partner partner) { + //校验参数和重复数据 + AjaxResult ajaxResult = addPartnerParameterCheck(partner); + if(ajaxResult.isError()){ + return ajaxResult; + } + Partner one = this.getOne(new LambdaQueryWrapper<Partner>() + .eq(Partner::getCode, partner.getCode()) + .eq(Partner::getDelFlag, 0) + ); + if(null != one){ + return AjaxResult.error("合作商ID已存在"); + } + one = this.getOne(new LambdaQueryWrapper<Partner>() + .eq(Partner::getAccount, partner.getAccount()) + .eq(Partner::getDelFlag, 0) + ); + if(null != one){ + return AjaxResult.error("登录账号不能重复"); + } + //添加新数据 + this.save(partner); + //添加登录账户 + SysUser user = new SysUser(); + user.setAccount(partner.getAccount()); + user.setPhonenumber(partner.getPhoneOne()); + user.setUserName(partner.getName()); + 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()); + } + return AjaxResult.success(); + } + + + /** + * 校验参数是否为空 + * @param partner + * @return + */ + AjaxResult addPartnerParameterCheck(Partner partner){ + if(StringUtils.isEmpty(partner.getCode())){ + return AjaxResult.error("合作商ID不能为空"); + } + if(StringUtils.isEmpty(partner.getName())){ + return AjaxResult.error("合作商名称不能为空"); + } + if(null == partner.getRoleId()){ + return AjaxResult.error("合作商角色不能为空"); + } + if(StringUtils.isEmpty(partner.getPhoneOne())){ + return AjaxResult.error("合作商电话1不能为空"); + } + if(StringUtils.isEmpty(partner.getAccount())){ + return AjaxResult.error("登录账号不能为空"); + } + if(StringUtils.isEmpty(partner.getPassword())){ + return AjaxResult.error("登录密码不能为空"); + } + return AjaxResult.success(); + } + + + /** + * 获取合作商详情 + * @param id 合作商id + * @return + */ + @Override + public Partner getPartner(Integer id) { + Partner partner = this.getById(id); + if(null == partner){ + return partner; + } + GetSysRoleByIds ids = new GetSysRoleByIds(); + ids.setIds(Arrays.asList(partner.getRoleId())); + //获取相关的角色id + R<List<SysRole>> r = sysRoleClient.getSysRoleByIds(ids); + if(r.getCode() != 200){ + throw new RuntimeException(r.getMsg()); + } + List<SysRole> data = r.getData(); + if(data.size() > 0){ + partner.setRoleName(data.get(0).getRoleName()); + } + return partner; + } + + + /** + * 编辑合作商 + * @param partner + * @return + */ + @Override + @GlobalTransactional//分布式事务 + public AjaxResult editPartner(Partner partner) { + //校验参数和重复数据 + AjaxResult ajaxResult = addPartnerParameterCheck(partner); + if(ajaxResult.isError()){ + return ajaxResult; + } + Partner one = this.getOne(new LambdaQueryWrapper<Partner>() + .eq(Partner::getCode, partner.getCode()) + .eq(Partner::getDelFlag, 0) + ); + if(null != one && !one.getId().equals(partner.getId())){ + return AjaxResult.error("合作商ID已存在"); + } + one = this.getOne(new LambdaQueryWrapper<Partner>() + .eq(Partner::getAccount, partner.getAccount()) + .eq(Partner::getDelFlag, 0) + ); + if(null != one && !one.getId().equals(partner.getId())){ + return AjaxResult.error("登录账号不能重复"); + } + Partner oldPartner = this.getById(partner.getId()); + SysUser user = sysUserClient.queryUserByAccount(oldPartner.getAccount()).getData(); + + //修改数据 + this.updateById(partner); + //修改登录账户 + if(null == user){ + user = new SysUser(); + user.setStatus("0"); + user.setDelFlag("0"); + user.setAccount(partner.getAccount()); + user.setPhonenumber(partner.getPhoneOne()); + user.setUserName(partner.getName()); + user.setNickName(partner.getName()); + user.setAvatar(partner.getLogoUrl()); + user.setPassword(partner.getPassword()); + user.setRoleId(partner.getRoleId().longValue()); + 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.setNickName(partner.getName()); + user.setAvatar(partner.getLogoUrl()); + user.setPassword(partner.getPassword()); + user.setRoleId(partner.getRoleId().longValue()); + R r = sysUserClient.updateSysUser(user); + if(200 != r.getCode()){ + throw new RuntimeException(r.getMsg()); + } + } + return AjaxResult.success(); + } + + + /** + * 删除合作商 + * @param id 合作商id + */ + @Override + @GlobalTransactional//分布式事务 + public AjaxResult delPartner(Integer id) { + //查询有无关联数据 + //站点 + // todo 代码完善 + //充电桩 + + Partner partner = this.getById(id); + if(null == partner){ + return AjaxResult.error("删除失败"); + } + partner.setDelFlag(true); + this.updateById(partner); + SysUser user = sysUserClient.queryUserByAccount(partner.getAccount()).getData(); + user.setDelFlag("2"); + sysUserClient.updateUser(user); + return AjaxResult.success(); + } + + + /** + * 重置密码 + * @param resetPassword + */ + @Override + @GlobalTransactional//分布式事务 + public AjaxResult resetPassword(ResetPassword resetPassword) { + if(null == resetPassword.getId()){ + return AjaxResult.error("合作商id不能为空"); + } + if(StringUtils.isEmpty(resetPassword.getPassword())){ + return AjaxResult.error("密码不能为空"); + } + Partner partner = this.getById(resetPassword.getId()); + partner.setPassword(resetPassword.getPassword()); + this.updateById(partner); + //修改登录账号的密码 + SysUser user = sysUserClient.queryUserByAccount(partner.getAccount()).getData(); + user.setPassword(partner.getPassword()); + sysUserClient.resetPassword(user); + return AjaxResult.success(); + } +} -- Gitblit v1.7.1