fxkh-txl-service/src/main/java/com/whdc/controller/AddressBookController.java

284 lines
9.4 KiB
Java

package com.whdc.controller;
import cn.dev33.satoken.stp.StpUtil;
import com.whdc.model.dto.AddressBootDto;
import com.whdc.model.entity.AbUdR;
import com.whdc.model.entity.AddressBook;
import com.whdc.model.entity.User;
import com.whdc.model.enums.Role;
import com.whdc.model.enums.VersionsType;
import com.whdc.model.group.Find;
import com.whdc.model.group.Insert;
import com.whdc.model.group.Update;
import com.whdc.model.vo.AddressBookVo;
import com.whdc.model.vo.FcVo;
import com.whdc.service.*;
import com.whdc.utils.ResultJson;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Objects;
/**
* @author xusan
* @date 2024-05-11
*/
@Slf4j
@Api(tags = "通讯录 - Controller")
@RestController
@RequestMapping("/addressbook")
public class AddressBookController {
@Autowired
private IAddressBookService service;
@Autowired
private IUserService userService;
@Autowired
private IVersionsService versionsService;
@Autowired
private IOrganizationService organizationsService;
@Autowired
private IAbUdRService abUdRService;
// @ApiOperation(value = "查询所有")
// @PostMapping(value = "find")
// public ResultJson<AddressBook> find(@RequestBody AddressBook dto) {
//
// return ResultJson.ok(service.find(dto));
//
// }
@ApiOperation(value = "分页查询")
@PostMapping(value = "page")
public ResultJson<AddressBookVo> page(@RequestBody AddressBootDto dto) {
dto.setUserId(String.valueOf(StpUtil.getLoginId()));
return ResultJson.ok(service.page(dto));
}
@ApiOperation(value = "添加")
@PostMapping(value = "save")
public ResultJson insert(@RequestBody @Validated(Insert.class) AddressBook model) {
String role = userService.getRole(Integer.valueOf(String.valueOf(StpUtil.getLoginId())));
switch (Objects.requireNonNull(Role.getByName(role))) {
case R000:return ResultJson.error("权限不足");
case R001:
case R099:break;
default:return ResultJson.error("权限不足!!");
}
if (CollectionUtils.isNotEmpty(
service.lambdaQuery()
.eq(AddressBook::getName,String.valueOf(model.getName()).trim())
.list())
){
return ResultJson.error("该名称重复");
}
// 添加日志
versionsService.saveInfo(model,VersionsType.ADD);
model.setId(null);
boolean save = service.save(model);
if (save){
// 没有手机号用名字注册
if ("省防指".equals(organizationsService.getById(model.getOrganization()).getName())
&& StringUtils.isBlank(model.getPhone())){
userService.register( model.getName(), model.getId(),model.getRole());
}else{
userService.register( model.getPhone(), model.getId(),model.getRole());
}
// 添加关联关系
abUdRService.save(new AbUdR(model.getId(),Integer.valueOf(model.getOrganization()),null,model.getType()));
}
return ResultJson.ok(save);
}
@ApiOperation(value = "修改")
@PostMapping(value = "edit")
public ResultJson update(@RequestBody @Validated(Update.class) AddressBook model) {
Integer loginId = Integer.valueOf(String.valueOf(StpUtil.getLoginId()));
String role = userService.getRole(loginId);
switch (Objects.requireNonNull(Role.getByName(role))) {
case R000:{
// 不是修改自己
if (!model.getId().equals(loginId)){
return ResultJson.error("权限不足");
}
};
case R001:
case R099:break;
default:return ResultJson.error("权限不足!!");
}
AddressBook byId = service.getById(model.getId());
if (Objects.isNull(byId)){
return ResultJson.error("当前数据不存在");
}
if (CollectionUtils.isNotEmpty(
service.lambdaQuery()
.eq(AddressBook::getName,String.valueOf(model.getName()).trim())
.ne(AddressBook::getId, model.getId())
.list())
){
return ResultJson.error("该名称重复");
}
// List<Versions> list = versionsService.lambdaQuery()
// .eq(Versions::getAbId, model.getId())
// .list();
// Integer version = 0;
// if (CollectionUtils.isNotEmpty(list)){
// version = list
// .stream().map(Versions::getVersion)
// .max(Comparator.comparing(Integer::intValue))
// .get();
// }else{
// log.info("当前数据在进行修改但无相关记录;" + model.getId());
// }
// // 添加日志
// versionsService.save(new Versions(null, JSON.toJSONString(model),model.getId(),++version,model.getCreateId(),new Date(), VersionsType.UPDATE.getName()));
versionsService.saveInfo(model,VersionsType.UPDATE);
boolean data = service.updateById(model);
if (data) {
abUdRService.lambdaUpdate()
.set(AbUdR::getDictId,model.getOrganization())
.eq(AbUdR::getAdId,model.getId());
}
return ResultJson.ok(data);
}
@ApiOperation(value = "修改权限")
@PostMapping(value = "updateRole")
public ResultJson updateRole(@RequestBody @Validated(Update.class) User model) {
Integer loginId = Integer.valueOf(String.valueOf(StpUtil.getLoginId()));
String role = userService.getRole(loginId);
switch (Objects.requireNonNull(Role.getByName(role))) {
case R000:
case R001: return ResultJson.error("权限不足");
case R099:break;
default:return ResultJson.error("权限不足!!");
}
AddressBook byId = service.getById(model.getAbId());
if (Objects.isNull(byId)){
return ResultJson.error("当前数据不存在");
}
// List<Versions> list = versionsService.lambdaQuery()
// .eq(Versions::getAbId, model.getId())
// .list();
// Integer version = 0;
// if (CollectionUtils.isNotEmpty(list)){
// version = list
// .stream().map(Versions::getVersion)
// .max(Comparator.comparing(Integer::intValue))
// .get();
// }else{
// log.info("当前数据在进行修改但无相关记录;" + model.getId());
// }
// // 添加日志
// versionsService.save(new Versions(null, JSON.toJSONString(model),model.getId(),++version,model.getCreateId(),new Date(), VersionsType.UPDATE_ROLE.getName()));
versionsService.saveInfo(byId,VersionsType.UPDATE_ROLE);
// 只修改角色
boolean update = userService.lambdaUpdate().set(User::getRole, model.getRole())
.eq(User::getAbId, model.getAbId())
.update();
return ResultJson.ok(update);
}
@ApiOperation(value = "删除")
@GetMapping(value = "del/{id}")
public ResultJson delete(@PathVariable("id") Integer id) {
Integer loginId = Integer.valueOf(String.valueOf(StpUtil.getLoginId()));
String role = userService.getRole(loginId);
switch (Objects.requireNonNull(Role.getByName(role))) {
case R000:
case R001: return ResultJson.error("权限不足");
case R099:break;
default:return ResultJson.error("权限不足!!");
}
AddressBook model = service.getById(id);
if (Objects.isNull(model)) {
return ResultJson.error("当前数据不存在");
}
// List<Versions> list = versionsService.lambdaQuery()
// .eq(Versions::getAbId, model.getId())
// .list();
// Integer version = 0;
// if (CollectionUtils.isNotEmpty(list)){
// version = list
// .stream().map(Versions::getVersion)
// .max(Comparator.comparing(Integer::intValue))
// .get();
// }else{
// log.info("当前数据在进行修改但无相关记录;" + model.getId());
// }
// // 添加日志
// versionsService.save(new Versions(null, JSON.toJSONString(model),model.getId(),++version,model.getCreateId(),new Date(), VersionsType.DEL.getName()));
versionsService.saveInfo(model,VersionsType.DEL);
return ResultJson.ok(service.removeById(id));
}
@ApiOperation(value = "查询详情")
@GetMapping(value = "get/{id}")
public ResultJson get(@PathVariable("id") Integer id) {
return ResultJson.ok(service.getById(id));
}
@ApiOperation(value = "查询用户详情")
@GetMapping(value = "getByUser/{userId}")
public ResultJson getByUser(@PathVariable("userId") Integer userId) {
User byId = userService.getById(userId);
if (Objects.isNull(byId)){
return ResultJson.error("该用户不存在");
}
return ResultJson.ok(service.getById(byId.getAbId()));
}
}