Auth.java 9.21 KB
Newer Older
邓实川 committed
1 2 3 4 5 6 7 8 9 10
/**  
* <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;
11 12
import java.util.Collections;
import java.util.Comparator;
邓实川 committed
13 14 15
import java.util.List;
import java.util.stream.Collectors;

16
import cn.timer.api.bean.qyzx.QyzxEmpLogin;
17
import org.springframework.beans.factory.annotation.Value;
邓实川 committed
18
import org.springframework.transaction.annotation.Transactional;
19
import org.springframework.util.StringUtils;
邓实川 committed
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
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;
35
import cn.timer.api.dto.qyzx.QyzxAuthDto;
邓实川 committed
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
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 {
58 59
	@Value("${config-8timer.register-childAccount-max-num}")
	private Integer maxNum;
邓实川 committed
60 61 62 63 64 65 66

	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()));
	}
ilal committed
67 68 69 70 71 72
	
	private QyzxEmpEntAsso selectMain_(Integer orgCode, Integer empNum) {
		return QyzxEmpEntAsso.builder().build()
				.selectOne(new LambdaQueryWrapper<QyzxEmpEntAsso>().eq(QyzxEmpEntAsso::getOrgCode, orgCode)
						.eq(QyzxEmpEntAsso::getEmpNum, empNum));
	}
邓实川 committed
73 74 75 76

	@PostMapping(value = "/addChildAccount")
	@ApiOperation(value = "新增子账号", httpMethod = "POST", notes = "接口发布说明")
	@Log(title = "新增-子账号", businessType = BusinessType.INSERT)
77
	public Result<Void> addChildAccount(@CurrentUser UserBean userBean, @RequestParam Integer childEmpNum) {
邓实川 committed
78 79
		Integer orgCode = userBean.getOrgCode();
		Integer empNum = userBean.getEmpNum();
ilal committed
80 81 82
		
//		QyzxEmpEntAsso qyzxEmpEntAsso = selectMain(orgCode, empNum);
		QyzxEmpEntAsso qyzxEmpEntAsso = selectMain_(orgCode, childEmpNum);
邓实川 committed
83
		if (qyzxEmpEntAsso != null) {
84 85 86
			if (qyzxEmpEntAsso.getUserType() == SysRoleType.U_TYPE_ADMIN.getType()
					|| qyzxEmpEntAsso.getUserType() == SysRoleType.U_TYPE_C_ADMIN.getType())
				return ResultUtil.error("当前用户已是管理员");
87 88 89 90 91
			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("子账号数量超过上限");
92 93 94
			if (QyzxEmpEntAsso.builder().userType(SysRoleType.U_TYPE_C_ADMIN.getType()).build()
					.update(new LambdaQueryWrapper<QyzxEmpEntAsso>().eq(QyzxEmpEntAsso::getOrgCode, orgCode)
							.eq(QyzxEmpEntAsso::getEmpNum, childEmpNum)))
邓实川 committed
95 96 97 98 99
				return ResultUtil.success("添加成功");
		}
		return ResultUtil.error("暂无添加权限");
	}

100 101 102
	@PostMapping(value = "/removeChildAccount")
	@ApiOperation(value = "移除子账号", httpMethod = "POST", notes = "接口发布说明")
	@Log(title = "移除-子账号", businessType = BusinessType.INSERT)
103
	public Result<Void> removeChildAccount(@CurrentUser UserBean userBean, @RequestParam Integer childEmpNum) {
邓实川 committed
104 105
		Integer orgCode = userBean.getOrgCode();
		Integer empNum = userBean.getEmpNum();
ilal committed
106 107
//		QyzxEmpEntAsso qyzxEmpEntAsso = selectMain(orgCode, empNum);
		QyzxEmpEntAsso qyzxEmpEntAsso = selectMain_(orgCode, childEmpNum);
108
		if (qyzxEmpEntAsso != null) {
109 110
			if (qyzxEmpEntAsso.getUserType() == SysRoleType.U_TYPE_ADMIN.getType())
				return ResultUtil.error("主账号暂时不能删除");
111 112 113 114
			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("添加成功");
邓实川 committed
115
		}
116
		return ResultUtil.error("暂无操作权限");
邓实川 committed
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
	}

//	@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 = "接口发布说明")
137
	public Result<List<QyzxAuthDto>> getAll(@CurrentUser UserBean userBean) {
邓实川 committed
138 139 140 141 142 143
		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));
144
		List<QyzxAuthDto> ygs = new ArrayList<QyzxAuthDto>();
邓实川 committed
145 146 147 148 149
		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)
150 151
							.select(YgglMainEmp::getName, YgglMainEmp::getPhone, YgglMainEmp::getEmpNum, YgglMainEmp::getCustomNum));
			QyzxEmpLogin qyzxEmpLogin = QyzxEmpLogin.builder().id(empNum).build().selectById();
152 153 154 155 156 157 158 159

			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());
160 161
			dto.setPhone(qyzxEmpLogin.getPhone());
			dto.setCustomNum(yg.getCustomNum());
162 163
			if (qyzxEmpEntAsso != null)
				dto.setUserType(qyzxEmpEntAsso.getUserType());
邓实川 committed
164
			if (yg != null)
165
				ygs.add(dto);
邓实川 committed
166
		}
167
		Collections.sort(ygs, Comparator.comparing(QyzxAuthDto::getUserType));
邓实川 committed
168 169 170
		return ResultUtil.data(ygs, "查询成功");
	}

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
	@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("当前用户无权限操作");
	}
邓实川 committed
199
}