package com.dg.core.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.dg.core.HttpStatus; import com.dg.core.ResultData; import com.dg.core.annotation.Authorization; import com.dg.core.annotation.CurrentUser; import com.dg.core.db.gen.entity.HuaChengSysUser; import com.dg.core.db.gen.entity.SysUser; import com.dg.core.manager.TokenManager; import com.dg.core.service.IHuaChengSysUserService; import com.dg.core.util.SmsUtil; import com.dg.core.util.Snowflake; import com.dg.core.util.TableDataInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.Assert; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.Map; @Api(tags = {"用户接口"}) @RestController @RequestMapping("/user") public class UserController extends BaseController { @Autowired com.dg.core.service.ISysUserService IUserService; @Autowired SmsUtil smsUtil; @Autowired TokenManager tokenManager; /** * 花城e+用户接口 */ @Autowired IHuaChengSysUserService iHuaChengSysUserService; @ApiOperation("登录接口") @PostMapping(path = "/login") public ResultData login(@RequestParam String account, @RequestParam String password, HttpServletRequest request) { Assert.notNull(account, "username can not be empty"); Assert.notNull(password, "password can not be empty"); SysUser user=null; //管理员登录 user= IUserService.getUserByAccount(account); if(user==null) { List list=iHuaChengSysUserService.selectData("",account,""); HuaChengSysUser huaChengSysUser=null; if(list!=null && list.size()>0 ) { huaChengSysUser=list.get(0); } if(huaChengSysUser==null || !password.equals(huaChengSysUser.getPassword())) { //提示用户名或密码错误 return ResultData.fail(HttpStatus.UNAUTHORIZED, "用户名或密码错误"); } //本地表查询用户 user = IUserService.selectData(huaChengSysUser.getUserId()+"",null,null); if (user == null) { //本地没有此用户 新用户 SysUser newSysUser=new SysUser(); //默认 1系统后台用户 newSysUser.setUserType("3"); newSysUser.setPhonenumber(huaChengSysUser.getPhone()); newSysUser.setUserId(huaChengSysUser.getUserId()); newSysUser.setUserName(huaChengSysUser.getNickName()); newSysUser.setSex(huaChengSysUser.getSex()); newSysUser.setAvatar(huaChengSysUser.getImageUrl()); newSysUser.setCreateTime(LocalDateTime.now()); newSysUser.setUpdateTime(LocalDateTime.now()); newSysUser.setOpenid(huaChengSysUser.getOpenid()); IUserService.insertConfig(newSysUser); } user = IUserService.selectData(huaChengSysUser.getUserId()+"",null,null); if (user == null) { return ResultData.error("用户不存在!请联系管理员"); } String token = tokenManager.getTokenByUserId(user.getUserId()); System.out.println("token "+token); if (token == null) { //生成一个token,保存用户登录状态 token = tokenManager.createToken(user.getUserId(), user.getUserId()); } user.setLoginDate(LocalDateTime.now()); //更新登录时间 IUserService.updateConfig(user); Map map = new HashMap<>(); map.put("token", token); map.put("userId", user.getUserId()); map.put("userName", user.getUserName()); map.put("permission", user.getPermission()); map.put("userType", user.getUserType()); map.put("departmentId", user.getDepartmentId()); map.put("departmentName", user.getDepartmentName()); map.put("moreDepartmentIds", user.getMoreDepartmentIds()); return ResultData.success(map); } else { if(StringUtils.equals("4",user.getUserType())) { //提示用户名或密码错误 return ResultData.fail(HttpStatus.UNAUTHORIZED, "账户不存在"); } if(!password.equals(user.getPassword())) { //提示用户名或密码错误 return ResultData.fail(HttpStatus.UNAUTHORIZED, "用户名或密码错误"); } String token = tokenManager.getTokenByUserId(user.getUserId()); System.out.println("token "+token); if (token == null) { //生成一个token,保存用户登录状态 token = tokenManager.createToken(user.getUserId(), user.getUserId()); } user.setLoginDate(LocalDateTime.now()); //更新登录时间 IUserService.updateConfig(user); Map map = new HashMap<>(); map.put("token", token); map.put("userId", user.getUserId()); map.put("userName", user.getUserName()); map.put("permission", user.getPermission()); map.put("userType", user.getUserType()); map.put("departmentId", user.getDepartmentId()); map.put("departmentName", user.getDepartmentName()); map.put("moreDepartmentIds", user.getMoreDepartmentIds()); return ResultData.success(map); } } @ApiOperation("发送登录短信验证码") @PostMapping(value = "/sendSms", consumes = "application/json") public ResultData smsSend(@RequestBody SysUser user) { return IUserService.smsSend(user); } @ApiOperation("账号密码验证登录") @GetMapping(value = "/loginByAccount") public ResultData loginByAccount(@RequestParam String phonenumber,@RequestParam String code) { return IUserService.loginByAccount(phonenumber,code); } @ApiOperation("通过手机号获取用户信息 登录") @PostMapping(value = "/loginPhionne") public ResultData loginPhionne(@RequestParam String phonenumber) { if(StringUtils.isEmpty(phonenumber)) { return ResultData.error("请输入手机号"); } return IUserService.loginByPhonenumber(phonenumber); } /** * 查询列表 * * @return 参数配置信息 */ @ApiOperation("用户列表接口") @GetMapping("/getlist") @Authorization public TableDataInfo selectConfigList(@RequestParam(value = "pageNum",required = false) Integer pageNum, @RequestParam(value = "pageSize",required = false) Integer pageSize, @RequestParam(value = "keyword",required = false) String keyword) { Assert.notNull(pageNum, "pageNum can not be empty"); Assert.notNull(pageSize, "pageSize can not be empty"); Page pageParam = new Page<>(pageNum,pageSize); List list = IUserService.selectConfigList(pageParam,pageSize,null,keyword,null,"1"); int num=IUserService.selectNum(null,keyword,null,"1"); return getDataTable(list,num); } /** * 新增用户 * * @param config 参数配置信息 * @return 结果 */ @ApiOperation("新增用户接口") @PostMapping("/add") @Authorization public ResultData insertConfig(@RequestBody SysUser config, @CurrentUser SysUser sysUser) { Assert.notNull(config, "parameter can not be empty"); if(StringUtils.isEmpty(config.getLoginName())) { return error("账户不能为空"); } if(StringUtils.isEmpty(config.getPassword())) { return error("密码不能为空"); } if(StringUtils.isEmpty(config.getUserName())) { return error("昵称不能为空"); } if(StringUtils.isEmpty(config.getPhonenumber())) { return error("手机号不能为空"); } SysUser user = IUserService.selectData("",config.getPhonenumber(),""); SysUser user2 = IUserService.selectData("","",config.getLoginName()); if (user != null) { if(StringUtils.equals("4",user.getUserType())) { config.setUserId(user.getUserId()); config.setCreateBy(user.getUserId()+""); config.setUserType("3"); config.setIsDivisionHead("1"); config.setUpdateTime(LocalDateTime.now()); config.setMasterIds(user2.getMasterIds()); config.setDepartmentIds(config.getDepartmentIds()); config.setDepartmentIdStr(config.getDepartmentIdStr()); config.setMattersIds(config.getMattersIds()); config.setMasterNames(config.getMasterNames()); config.setMattersNames(config.getMattersNames()); return toAjax(IUserService.updateConfig(config)); } else { //提示用户名或密码错误 return error("该用户已存在!"); } } if(user2 != null) { if(StringUtils.equals("4",user2.getUserType())) { config.setUserId(user2.getUserId()); config.setCreateBy(user2.getUserId()+""); config.setUserType("3"); config.setIsDivisionHead("1"); config.setUpdateTime(LocalDateTime.now()); config.setMasterIds(user2.getMasterIds()); config.setDepartmentIds(config.getDepartmentIds()); config.setDepartmentIdStr(config.getDepartmentIdStr()); config.setMattersIds(config.getMattersIds()); config.setMasterNames(config.getMasterNames()); config.setMattersNames(config.getMattersNames()); return toAjax(IUserService.updateConfig(config)); } else { //提示用户名或密码错误 return error("该用户已存在!"); } } config.setCreateBy(sysUser.getUserId()+""); config.setUserId(Snowflake.getId()+""); config.setUserType("3"); config.setIsDivisionHead("1"); config.setMoreDepartmentIds(config.getDepartmentId()); config.setCreateTime(LocalDateTime.now()); config.setUpdateTime(LocalDateTime.now()); return toAjax(IUserService.insertConfig(config)); } /** * 更新聊天记录 * * @param config 参数配置信息 * @return 结果 */ @ApiOperation("修改用户接口") @PostMapping("/update") @Authorization public ResultData updateConfig(@RequestBody SysUser config,@CurrentUser SysUser sys) { if(config.getId()==null) { return error("Id不能为空"); } if(StringUtils.isEmpty(config.getLoginName())) { return error("账户不能为空"); } if(StringUtils.isEmpty(config.getDepartmentId())) { return error("请选择部门"); } config.setMoreDepartmentIds(config.getDepartmentId()); config.setPassword(null); config.setUpdateBy(sys.getUserId()+""); return toAjax(IUserService.updateConfig(config)); } /** * 删除用户记录 * * @return 结果 */ @ApiOperation("删除用户接口(真删除)") @DeleteMapping("/delete/{userId}") @Authorization public ResultData deleteConfigById(@PathVariable("userId") String userId) { if(StringUtils.isEmpty(userId)) { return error("userId不能为空"); } return toAjax(IUserService.deleteConfigById(userId)); } /** * 删除用户记录 * * @return 结果 */ @ApiOperation("删除用户接口(修改状态 设置成已删除)") @DeleteMapping("/deleteflag/{userId}") @Authorization public ResultData delete(@PathVariable("userId") String userId) { if(StringUtils.isEmpty(userId)) { return error("userId不能为空"); } SysUser sysUser=IUserService.selectData(userId,null,null); //删除标志(0代表存在 2代表删除) sysUser.setDelFlag("2"); return toAjax(IUserService.updateConfig(sysUser)); } /** * 修改用户密码接口 * * @param config 参数配置信息 * @return 结果 */ @ApiOperation("修改用户密码接口") @PostMapping("/updatepws") @Authorization public ResultData updatePws(@RequestBody SysUser config) { if(config.getUserId()==null) { return error("userId不能为空"); } if(StringUtils.isEmpty(config.getPassword())) { return error("密码不能为空"); } SysUser sysUser=IUserService.selectData(config.getUserId()+"",null,null); if(sysUser==null) { return error("用户不存在"); } if(StringUtils.equals(sysUser.getPassword(),config.getPassword())) { return error("输入密码与原密码不能相同!"); } return toAjax(IUserService.updateConfig(config)); } /** * 获取登录人员信息 * * @return 结果 */ @ApiOperation(value = "获取登录人员信息,userType=1 为超级管理员 isDivisionHead=1 为部门领导",response = SysUser.class) @PostMapping("/getLoginInformation") @Authorization public ResultData getLoginInformation(@CurrentUser SysUser sysUse) { return ResultData.success(sysUse); } @ApiOperation("切换部门接口") @GetMapping(value = "/switch/department") public ResultData switchDepartment(@RequestParam(value = "departmentId",required = false) String departmentId, @CurrentUser SysUser sysUse) { sysUse.setDepartmentId(departmentId); return toAjax(IUserService.updateConfig(sysUse)); } }