package com.ydtech.modules.admin.controller; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydtech.core.page.HttpResult; import com.ydtech.core.page.PageResult; import com.ydtech.modules.admin.constants.UserConstants; import com.ydtech.modules.admin.model.SysArea; import com.ydtech.modules.admin.model.po.*; import com.ydtech.modules.admin.model.vo.*; import com.ydtech.modules.admin.service.SysAreaService; import com.ydtech.modules.admin.service.SysChannelAreaRelationService; import com.ydtech.modules.admin.service.SysChannelGradeService; import com.ydtech.modules.admin.service.SysChannelGroupInfoService; import com.ydtech.modules.admin.service.impl.SysAreaServiceImpl; import com.ydtech.modules.admin.service.impl.SysChannelAreaRelationServiceImpl; import com.ydtech.modules.admin.service.impl.SysChannelGroupInfoServiceImpl; import com.ydtech.modules.admin.service.impl.SysChannelGroupServiceImpl; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.protocol.utils.AssertionUtils; import com.ydtech.utils.JudgeUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.time.LocalDateTime; import java.util.List; @Api(tags = "渠道分组管理") @RestController @RequestMapping("/sysChannelGrade") public class SysChannelGradeController extends BaseController { @Autowired private SysChannelGradeService sysChannelGradeService; @Autowired private SysAreaService sysAreaService; @Autowired private SysChannelGroupInfoService sysChannelGroupInfoService; @Autowired private SysChannelAreaRelationService sysChannelAreaRelationService; @PostMapping(value = "/queryList") @ApiOperation(value = "渠道分组列表") public HttpResult queryList(){ return HttpResult.ok(sysChannelGradeService.queryList()); } @PostMapping(value = "/queryRelationList/{id}") @ApiOperation(value = "获取关联机构列表") public HttpResult queryRelationList(@PathVariable Long id){ return HttpResult.ok(sysChannelGradeService.queryRelationList(id)); } @PostMapping(value = "/queryRelation") @ApiOperation(value = "获取关联机构列表") public HttpResult queryRelation(@RequestBody SysChannelVo sysChannelVo){ return HttpResult.ok(sysChannelGradeService.queryRelation(sysChannelVo)); } @PostMapping("/queryPage") @ApiOperation(value = "渠道分组分页列表") public HttpResult> queryPage(@RequestBody @Valid SysChannelGradePageVo sysChannelGradePageVo) { Page page = buildPageRequest(sysChannelGradePageVo.getPageDto()); Page pageResultHttpResult = sysChannelGradeService.queryPage(page,sysChannelGradePageVo); return HttpResult.ok(buildPageResponse(pageResultHttpResult)); } @PostMapping("/grade") @ApiOperation("添加渠道分组") public HttpResult save(@RequestBody @Valid AddSysChannelGradeVo addSysChannelGradeVo) { // 获取当前登录信息 String userName = getUserName(); SysChannelGrade sysChannelGrade = new SysChannelGrade(); BeanUtils.copyProperties(addSysChannelGradeVo, sysChannelGrade); sysChannelGrade.setCreateTime(LocalDateTime.now()); sysChannelGrade.setCreateBy(userName); if (UserConstants.NOT_UNIQUE.equals(sysChannelGradeService.checkNameUnique(sysChannelGrade))) { return HttpResult.error("新增渠道分组'" + sysChannelGrade.getName() + "'失败,渠道分组名称已存在"); } boolean save = sysChannelGradeService.save(sysChannelGrade); return JudgeUtils.add(save); } @PutMapping("/grade/{id}") @ApiOperation("修改渠道分组") public HttpResult modify(@PathVariable Long id, @RequestBody AddSysChannelGradeVo addSysChannelGradeVo) { // 获取当前登录信息 String userName = getUserName(); SysChannelGrade sysChannelGrade = new SysChannelGrade(); BeanUtils.copyProperties(addSysChannelGradeVo, sysChannelGrade); sysChannelGrade.setId(id); sysChannelGrade.setUpdateTime(LocalDateTime.now()); sysChannelGrade.setUpdateBy(userName); if (UserConstants.NOT_UNIQUE.equals(sysChannelGradeService.checkNameUnique(sysChannelGrade))) { return HttpResult.error("修改渠道分组'" + sysChannelGrade.getName() + "'失败,渠道分组名称已存在"); } // 判断是否有费用设置 LambdaQueryWrapper infoWapper = new LambdaQueryWrapper<>(); infoWapper.eq(SysChannelGroupInfo::getGradeId, id); List infos = sysChannelGroupInfoService.list(infoWapper); for (SysChannelGroupInfo info : infos) { info.setGradeName(addSysChannelGradeVo.getName()); info.setUpdateBy(userName); info.setUpdateTime(LocalDateTime.now()); } sysChannelGroupInfoService.saveOrUpdateBatch(infos); boolean modify = sysChannelGradeService.saveOrUpdate(sysChannelGrade); return JudgeUtils.modify(modify); } @DeleteMapping("/grade/{id}") @ApiOperation("删除渠道分组") public HttpResult delete(@PathVariable Long id) { sysChannelGradeService.delete(id); return HttpResult.ok("删除成功"); } @DeleteMapping("/deleteAuth") @ApiOperation("删除分组授权机构") public HttpResult deleteAuth(@RequestBody AuthSysChannelGradeVo authSysChannelGradeVo) { sysChannelGradeService.deleteAuth(authSysChannelGradeVo); return HttpResult.ok("删除成功"); } @PostMapping("/grade/authorized") @ApiOperation("渠道分组授权机构") public HttpResult authorized(@RequestBody @Valid AuthSysChannelGradeVo authSysChannelGradeVo) { // 查询该机构是否有授权 List areaIdList = authSysChannelGradeVo.getAreaIdList(); if(CollUtil.isEmpty(areaIdList)){ // 删除所有已经授权机构 QueryWrapper wrapper = new QueryWrapper<>(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(SysChannelAreaRelation::getGradeId, authSysChannelGradeVo.getId()); sysChannelAreaRelationService.remove(wrapper); return HttpResult.ok("授权成功"); } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(SysChannelGrade::getId, areaIdList); long count = sysChannelGradeService.count(queryWrapper); AssertionUtils.isFail(count > 0,"已授权的机构不能重复授权"); LambdaQueryWrapper areaWrapper = new LambdaQueryWrapper<>(); areaWrapper.in(SysArea::getId, areaIdList); List areas = sysAreaService.list(areaWrapper); AssertionUtils.isFail(areas.size() > 0, "勾选机构不存在"); for (int i = 0; i < areas.size(); i++) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SysArea::getUpperCode, areas.get(i).getAreaCode()); long areaCount = sysAreaService.count(wrapper); AssertionUtils.isFail(areaCount <= 0,"非末级机构,不允许授权!"); } sysChannelGradeService.authArea(authSysChannelGradeVo); return HttpResult.ok("授权成功"); } }