Auth.java 9.01 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
/**  
* <p>Title: QyzxAuthController.java</p>  
* <p>Description: </p>  
* @author dsc  
* @date 2020年5月19日  
* @version 1.0  
*/
package cn.timer.api.controller.qyzx;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

import cn.timer.api.bean.qyzx.QyzxEmpLogin;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;

import cn.timer.api.aspect.lang.annotation.Log;
import cn.timer.api.aspect.lang.enums.BusinessType;
import cn.timer.api.bean.qyzx.QyzxEmpEntAsso;
import cn.timer.api.bean.yggl.YgglMainEmp;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.enums.SysRoleType;
import cn.timer.api.dto.qyzx.QyzxAuthDto;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

/**
 * <p>
 * Title: Auth.java
 * </p>
 * <p>
 * Description:
 * </p>
 * 
 * @author dsc
 * @date 2020年5月19日
 * @version 1.0
 */
@Transactional
@RestController
@Api(tags = "4.5企业中心(账号权限(新))")
@RequestMapping(value = "/Auth", produces = { "application/json" })
public class Auth {
	@Value("${config-8timer.register-childAccount-max-num}")
	private Integer maxNum;

	private QyzxEmpEntAsso selectMain(Integer orgCode, Integer empNum) {
		return QyzxEmpEntAsso.builder().build()
				.selectOne(new LambdaQueryWrapper<QyzxEmpEntAsso>().eq(QyzxEmpEntAsso::getOrgCode, orgCode)
						.eq(QyzxEmpEntAsso::getEmpNum, empNum)
						.eq(QyzxEmpEntAsso::getUserType, SysRoleType.U_TYPE_ADMIN.getType()));
	}
	
	private QyzxEmpEntAsso selectMain_(Integer orgCode, Integer empNum) {
		return QyzxEmpEntAsso.builder().build()
				.selectOne(new LambdaQueryWrapper<QyzxEmpEntAsso>().eq(QyzxEmpEntAsso::getOrgCode, orgCode)
						.eq(QyzxEmpEntAsso::getEmpNum, empNum));
	}

	@PostMapping(value = "/addChildAccount")
	@ApiOperation(value = "新增子账号", httpMethod = "POST", notes = "接口发布说明")
	@Log(title = "新增-子账号", businessType = BusinessType.INSERT)
	public Result<Void> addChildAccount(@CurrentUser UserBean userBean, @RequestParam Integer childEmpNum) {
		Integer orgCode = userBean.getOrgCode();
		Integer empNum = userBean.getEmpNum();
		
//		QyzxEmpEntAsso qyzxEmpEntAsso = selectMain(orgCode, empNum);
		QyzxEmpEntAsso qyzxEmpEntAsso = selectMain_(orgCode, childEmpNum);
		if (qyzxEmpEntAsso != null) {
			if (qyzxEmpEntAsso.getUserType() == SysRoleType.U_TYPE_ADMIN.getType()
					|| qyzxEmpEntAsso.getUserType() == SysRoleType.U_TYPE_C_ADMIN.getType())
				return ResultUtil.error("当前用户已是管理员");
			Integer num = QyzxEmpEntAsso.builder().build()
					.selectCount(new LambdaQueryWrapper<QyzxEmpEntAsso>().eq(QyzxEmpEntAsso::getOrgCode, orgCode)
							.eq(QyzxEmpEntAsso::getUserType, SysRoleType.U_TYPE_C_ADMIN.getType()));
			if (num >= maxNum)
				return ResultUtil.error("子账号数量超过上限");
			if (QyzxEmpEntAsso.builder().userType(SysRoleType.U_TYPE_C_ADMIN.getType()).build()
					.update(new LambdaQueryWrapper<QyzxEmpEntAsso>().eq(QyzxEmpEntAsso::getOrgCode, orgCode)
							.eq(QyzxEmpEntAsso::getEmpNum, childEmpNum)))
				return ResultUtil.success("添加成功");
		}
		return ResultUtil.error("暂无添加权限");
	}

	@PostMapping(value = "/removeChildAccount")
	@ApiOperation(value = "移除子账号", httpMethod = "POST", notes = "接口发布说明")
	@Log(title = "移除-子账号", businessType = BusinessType.INSERT)
	public Result<Void> removeChildAccount(@CurrentUser UserBean userBean, @RequestParam Integer childEmpNum) {
		Integer orgCode = userBean.getOrgCode();
		Integer empNum = userBean.getEmpNum();
//		QyzxEmpEntAsso qyzxEmpEntAsso = selectMain(orgCode, empNum);
		QyzxEmpEntAsso qyzxEmpEntAsso = selectMain_(orgCode, childEmpNum);
		if (qyzxEmpEntAsso != null) {
			if (qyzxEmpEntAsso.getUserType() == SysRoleType.U_TYPE_ADMIN.getType())
				return ResultUtil.error("主账号暂时不能删除");
			if (QyzxEmpEntAsso.builder().userType(SysRoleType.U_TYPE_EMP.getType()).build()
					.update(new LambdaQueryWrapper<QyzxEmpEntAsso>().eq(QyzxEmpEntAsso::getOrgCode, orgCode)
							.eq(QyzxEmpEntAsso::getEmpNum, childEmpNum)))
				return ResultUtil.success("添加成功");
		}
		return ResultUtil.error("暂无操作权限");
	}

//	@PostMapping(value = "/modifyMaxChild")
//	@ApiOperation(value = "修改子账号最大数量", httpMethod = "POST", notes = "接口发布说明")
//	@Log(title = "修改-子账号最大数量", businessType = BusinessType.UPDATE)
//	public Result<QyzxAuthChild> modifyMaxChild(@CurrentUser UserBean userBean, @RequestParam Integer maxNum) {
//		Integer orgCode = userBean.getOrgCode();
//		Integer empNum = userBean.getEmpNum();
//		QyzxEmpEntAsso qyzxEmpEntAsso = selectMain(orgCode, empNum);
//		if (qyzxEmpEntAsso != null && qyzxEmpEntAsso.getUserType() == 99) { // 99-后台管理员
//			if (QyzxEmpEntAsso.builder().maxNum(maxNum).build().update(
//					new QueryWrapper<QyzxEmpEntAsso>().lambda().eq(QyzxEmpEntAsso::getOrgCode, userBean.getOrgCode())))
//				return ResultUtil.success("修改成功");
//			return ResultUtil.error("修改失败");
//		}
//		return ResultUtil.error("暂无修改权限");
//	}

	@GetMapping(value = "/getAll")
	@ApiOperation(value = "获取全部账号信息", httpMethod = "GET", notes = "接口发布说明")
	public Result<List<QyzxAuthDto>> getAll(@CurrentUser UserBean userBean) {
		List<Integer> roles = new ArrayList<Integer>();
		roles.add(SysRoleType.U_TYPE_ADMIN.getType());
		roles.add(SysRoleType.U_TYPE_C_ADMIN.getType());
		List<QyzxEmpEntAsso> list = QyzxEmpEntAsso.builder().build().selectList(
				new LambdaQueryWrapper<QyzxEmpEntAsso>().eq(QyzxEmpEntAsso::getOrgCode, userBean.getOrgCode())
						.in(QyzxEmpEntAsso::getUserType, roles).select(QyzxEmpEntAsso::getEmpNum));
		List<QyzxAuthDto> ygs = new ArrayList<QyzxAuthDto>();
		List<Integer> empNums = list.stream().map(QyzxEmpEntAsso::getEmpNum).collect(Collectors.toList());
		for (Integer empNum : empNums) {
			YgglMainEmp yg = YgglMainEmp.builder().build()
					.selectOne(new LambdaQueryWrapper<YgglMainEmp>().eq(YgglMainEmp::getOrgCode, userBean.getOrgCode())
							.eq(YgglMainEmp::getEmpNum, empNum)
							.select(YgglMainEmp::getName, YgglMainEmp::getPhone, YgglMainEmp::getEmpNum, YgglMainEmp::getCustomNum));
			QyzxEmpLogin qyzxEmpLogin = QyzxEmpLogin.builder().id(empNum).build().selectById();

			QyzxEmpEntAsso qyzxEmpEntAsso = QyzxEmpEntAsso.builder().build()
					.selectOne(new LambdaQueryWrapper<QyzxEmpEntAsso>()
							.eq(QyzxEmpEntAsso::getOrgCode, userBean.getOrgCode()).eq(QyzxEmpEntAsso::getEmpNum, empNum)
							.select(QyzxEmpEntAsso::getUserType));
			QyzxAuthDto dto = new QyzxAuthDto();
			dto.setEmpNum(empNum);
			dto.setName(yg.getName());
			dto.setPhone(qyzxEmpLogin.getPhone());
			dto.setCustomNum(yg.getCustomNum());
			if (qyzxEmpEntAsso != null)
				dto.setUserType(qyzxEmpEntAsso.getUserType());
			if (yg != null)
				ygs.add(dto);
		}
		Collections.sort(ygs, Comparator.comparing(QyzxAuthDto::getUserType));
		return ResultUtil.data(ygs, "查询成功");
	}

	@PostMapping(value = "/moveAdminEmp")
	@ApiOperation(value = "超管转移", httpMethod = "POST", notes = "接口发布说明")
	@Log(title = "修改-超管转移", businessType = BusinessType.INSERT)
	public Result<Void> moveAdminEmp(@CurrentUser UserBean userBean, @RequestParam Integer childEmpNum) {
		Integer orgCode = userBean.getOrgCode();
		Integer empNum = userBean.getEmpNum();

		QyzxEmpEntAsso currentQyzxEmpEntAsso = selectMain(orgCode, empNum);
		if(StringUtils.isEmpty(currentQyzxEmpEntAsso) || !SysRoleType.U_TYPE_ADMIN.getType().equals(currentQyzxEmpEntAsso.getUserType())){
			return ResultUtil.error("当前用户无权限操作");
		}
		QyzxEmpEntAsso qyzxEmpEntAsso = selectMain_(orgCode, childEmpNum);
		if (qyzxEmpEntAsso != null) {
			if (qyzxEmpEntAsso.getUserType() == SysRoleType.U_TYPE_ADMIN.getType()){
				return ResultUtil.error("指定用户已是超管理员");
			}
			if (QyzxEmpEntAsso.builder().userType(SysRoleType.U_TYPE_ADMIN.getType()).build()
					.update(new LambdaQueryWrapper<QyzxEmpEntAsso>().eq(QyzxEmpEntAsso::getOrgCode, orgCode)
							.eq(QyzxEmpEntAsso::getEmpNum, childEmpNum))){
				//转移后自己成为普通员工
				QyzxEmpEntAsso.builder().userType(SysRoleType.U_TYPE_EMP.getType()).build()
						.update(new LambdaQueryWrapper<QyzxEmpEntAsso>().eq(QyzxEmpEntAsso::getOrgCode, orgCode)
								.eq(QyzxEmpEntAsso::getEmpNum, empNum));
				return ResultUtil.success("转移成功");
			}
		}
		return ResultUtil.error("当前用户无权限操作");
	}
}