zhibing.pu
2024-08-07 6b2341f24b2f7f10784ad4340fa86c0b224aebcc
新增加管理后台合作商接口
5个文件已添加
420 ■■■■■ 已修改文件
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/ResetPassword.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/PartnerMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/IPartnerService.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java 226 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java
New file
@@ -0,0 +1,89 @@
package com.ruoyi.chargingPile.controller;
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.service.IPartnerService;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * @author zhibing.pu
 * @Date 2024/8/7 13:49
 */
@RestController
@RequestMapping("/partner")
public class PartnerController {
    @Resource
    private IPartnerService partnerService;
    @ResponseBody
    @GetMapping("/getPartnerList")
    @ApiOperation(value = "获取合作商列表", tags = {"管理后台-合作商列表"})
    public AjaxResult<PageInfo<PartnerListDTO>> getPartnerList(@RequestBody GetPartnerList partnerList){
        PageInfo<PartnerListDTO> list = partnerService.getPartnerList(partnerList);
        return AjaxResult.success(list);
    }
    @ResponseBody
    @PostMapping("/addPartner")
    @ApiOperation(value = "添加合作商", tags = {"管理后台-合作商列表"})
    public AjaxResult addPartner(@RequestBody Partner partner){
        return partnerService.addPartner(partner);
    }
    @ResponseBody
    @GetMapping("/getPartner/{id}")
    @ApiOperation(value = "添加合作商", tags = {"管理后台-合作商列表"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "合作商id", name = "id", dataTypeClass = Integer.class, required = true)
    })
    public AjaxResult<Partner> getPartner(@PathVariable @RequestParam Integer id){
        Partner partner = partnerService.getPartner(id);
        return AjaxResult.success(partner);
    }
    @ResponseBody
    @PostMapping("/editPartner")
    @ApiOperation(value = "编辑合作商", tags = {"管理后台-合作商列表"})
    public AjaxResult editPartner(@RequestBody Partner partner){
        return partnerService.editPartner(partner);
    }
    @ResponseBody
    @DeleteMapping("/delPartner/{id}")
    @ApiOperation(value = "编辑合作商", tags = {"管理后台-合作商列表"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "合作商id", name = "id", dataTypeClass = Integer.class, required = true)
    })
    public AjaxResult delPartner(@PathVariable @RequestParam Integer id){
        partnerService.delPartner(id);
        return AjaxResult.success();
    }
    @ResponseBody
    @PostMapping("/resetPassword")
    @ApiOperation(value = "合作商重置密码", tags = {"管理后台-合作商列表"})
    public AjaxResult resetPassword(@RequestBody ResetPassword resetPassword){
        return partnerService.resetPassword(resetPassword);
    }
}
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/ResetPassword.java
New file
@@ -0,0 +1,18 @@
package com.ruoyi.chargingPile.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2024/8/7 15:56
 */
@Data
@ApiModel
public class ResetPassword {
    @ApiModelProperty(value = "合作商id", required = true)
    private Integer id;
    @ApiModelProperty(value = "新密码", required = true)
    private String password;
}
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/PartnerMapper.java
New file
@@ -0,0 +1,25 @@
package com.ruoyi.chargingPile.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.chargingPile.api.dto.PartnerListDTO;
import com.ruoyi.chargingPile.api.model.Partner;
import com.ruoyi.chargingPile.api.query.GetPartnerList;
import com.ruoyi.common.core.web.page.PageInfo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2024/8/7 13:44
 */
public interface PartnerMapper extends BaseMapper<Partner> {
    /**
     * 获取合作商列表
     * @param pageInfo
     * @param partnerList
     * @return
     */
    List<PartnerListDTO> getPartnerList(PageInfo<PartnerListDTO> pageInfo, @Param("item") GetPartnerList partnerList);
}
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/IPartnerService.java
New file
@@ -0,0 +1,62 @@
package com.ruoyi.chargingPile.service;
import com.baomidou.mybatisplus.extension.service.IService;
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.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
/**
 * @author zhibing.pu
 * @Date 2024/8/7 13:48
 */
public interface IPartnerService extends IService<Partner> {
    /**
     * 获取合作商列表数据
     * @param partnerList
     * @return
     */
    PageInfo<PartnerListDTO> getPartnerList(GetPartnerList partnerList);
    /**
     * 添加合作商
     * @param partner
     * @return
     */
    AjaxResult addPartner(Partner partner);
    /**
     * 获取合作商详情
     * @param id 合作商id
     * @return
     */
    Partner getPartner(Integer id);
    /**
     * 编辑合作商数据
     * @param partner
     * @return
     */
    AjaxResult editPartner(Partner partner);
    /**
     * 删除合作商
     * @param id
     */
    void delPartner(Integer id);
    /**
     * 重置密码
     * @param resetPassword
     */
    AjaxResult resetPassword(ResetPassword resetPassword);
}
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/PartnerServiceImpl.java
New file
@@ -0,0 +1,226 @@
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.feignClient.SysRoleClient;
import com.ruoyi.system.api.model.GetSysRoleByIds;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
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;
    /**
     * 获取合作商列表数据
     * @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
    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);
        //添加登录账户
        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);
        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
    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("登录账号不能重复");
        }
        //修改数据
        this.updateById(partner);
        //修改登录账户
        return AjaxResult.success();
    }
    /**
     * 删除合作商
     * @param id 合作商id
     */
    @Override
    public void delPartner(Integer id) {
        //查询有无关联数据
        //站点
        //充电桩
        Partner partner = this.getById(id);
        partner.setDelFlag(true);
        this.updateById(partner);
    }
    /**
     * 重置密码
     * @param resetPassword
     */
    @Override
    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);
        //修改登录账号的密码
        return AjaxResult.success();
    }
}