lidongdong
2022-11-25 b3bc52d303a62b67791f193b6e84306f6462c3db
flower_city/src/main/java/com/dg/core/controller/UserController.java
@@ -4,20 +4,21 @@
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.data.redis.core.RedisTemplate;
import org.springframework.data.repository.query.Param;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.util.HashMap;
@@ -27,17 +28,21 @@
@Api(tags = {"用户接口"})
@RestController
@RequestMapping("/user")
public class UserController extends BaseController{
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")
@@ -45,31 +50,112 @@
        Assert.notNull(account, "username can not be empty");
        Assert.notNull(password, "password can not be empty");
        SysUser user = IUserService.getUserByAccount(account);
        if (user == null || !password.equals(user.getPassword())) {
            //提示用户名或密码错误
            return ResultData.fail(HttpStatus.UNAUTHORIZED, "用户名或密码错误");
        SysUser user=null;
        //管理员登录
        user= IUserService.getUserByAccount(account);
        if(user==null)
        {
            List<HuaChengSysUser> 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<String, Object> 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<String, Object> 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);
        }
        String token = tokenManager.getTokenByUserId(user.getUserId());
//        String token = tokenManager.createToken(user.getUserId(), user.getRoleId());
        System.out.println("token "+token);
        if (token == null) {
            //生成一个token,保存用户登录状态
            token = tokenManager.createToken(user.getUserId(), user.getUserId());
        }
        user.setLoginDate(LocalDateTime.now());
        //更新登录时间
        IUserService.updateConfig(user);
        Map<String, Object> map = new HashMap<>();
        map.put("token", token);
        map.put("userId", user.getUserId());
        map.put("userName", user.getUserName());
        return ResultData.success(map);
    }
    @ApiOperation("发送登录短信验证码")
    @PostMapping(value = "/sendSms", consumes = "application/json")
@@ -77,10 +163,23 @@
            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);
    }
    /**
@@ -92,14 +191,15 @@
    @GetMapping("/getlist")
    @Authorization
    public TableDataInfo selectConfigList(@RequestParam(value = "pageNum",required = false) Integer pageNum,
                                          @RequestParam(value = "pageSize",required = false) Integer pageSize)
                                          @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<SysUser> pageParam = new Page<>(pageNum,pageSize);
        List<SysUser> list = IUserService.selectConfigList(pageParam,pageSize,"1");
        List<SysUser> list = IUserService.selectConfigList(pageParam,pageSize,null,keyword,null,"1");
        int num=IUserService.selectNum("1");
        int num=IUserService.selectNum(null,keyword,null,"1");
        return getDataTable(list,num);
    }
@@ -113,7 +213,7 @@
    @ApiOperation("新增用户接口")
    @PostMapping("/add")
    @Authorization
    public ResultData insertConfig(@RequestBody SysUser config)
    public ResultData insertConfig(@RequestBody SysUser config, @CurrentUser SysUser sysUser)
    {
        Assert.notNull(config, "parameter can not be empty");
@@ -132,14 +232,68 @@
            return error("昵称不能为空");
        }
        SysUser user = IUserService.getUserByAccount(config.getLoginName());
        if (user != null) {
            //提示用户名或密码错误
            return error("该账户已存在!");
        if(StringUtils.isEmpty(config.getPhonenumber()))
        {
            return error("手机号不能为空");
        }
        config.setUserType("1");
        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());
@@ -155,19 +309,19 @@
    @ApiOperation("修改用户接口")
    @PostMapping("/update")
    @Authorization
    public ResultData updateConfig(@RequestBody SysUser config)
    public ResultData updateConfig(@RequestBody SysUser config,@CurrentUser SysUser sys)
    {
        if(config.getUserId()==null)
        if(config.getId()==null)
        {
            return error("userId不能为空");
            return error("Id不能为空");
        }
        if(StringUtils.isEmpty(config.getLoginName()))
        {
            return error("账户不能为空");
        }
        config.setUserType("1");
        config.setPassword(null);
        config.setUpdateBy(sys.getUserId()+"");
        return toAjax(IUserService.updateConfig(config));
    }
@@ -206,7 +360,7 @@
            return error("userId不能为空");
        }
        SysUser sysUser=IUserService.getUserById(Long.valueOf(userId));
        SysUser sysUser=IUserService.selectData(userId,null,null);
        //删除标志(0代表存在 2代表删除)
        sysUser.setDelFlag("2");
        return toAjax(IUserService.updateConfig(sysUser));
@@ -234,7 +388,7 @@
            return error("密码不能为空");
        }
        SysUser sysUser=IUserService.getUserById(config.getUserId());
        SysUser sysUser=IUserService.selectData(config.getUserId()+"",null,null);
        if(sysUser==null)
        {
            return error("用户不存在");
@@ -249,6 +403,30 @@
    }
    /**
     * 获取登录人员信息
     *
     * @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));
    }