package com.hxzk.gps.service.impl.User;
|
|
import cn.dev33.satoken.stp.StpUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.github.pagehelper.Page;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.hxzk.gps.controller.User.Results.*;
|
import com.hxzk.gps.entity.Fence.TbFence;
|
import com.hxzk.gps.entity.Role.Role;
|
import com.hxzk.gps.entity.System.TbSystemOperationLog;
|
import com.hxzk.gps.entity.User.TbUser;
|
import com.hxzk.gps.entity.User.dto.LoginResult;
|
import com.hxzk.gps.mapper.User.TbUserMapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.hxzk.gps.service.Company.TbCompanyService;
|
import com.hxzk.gps.service.Log.TbLoginLogService;
|
import com.hxzk.gps.service.Role.IRoleService;
|
import com.hxzk.gps.service.System.TbSystemOperationLogService;
|
import com.hxzk.gps.service.User.TbUserService;
|
import com.hxzk.gps.util.GetUser.UserInfoUtil;
|
import com.hxzk.gps.util.MessageUtils.MessageUtils;
|
import com.hxzk.gps.util.Result.ReturnMessage;
|
import com.hxzk.gps.util.Result.TableDto;
|
import com.hxzk.gps.controller.User.Results.UserTreeTableDto;
|
import com.hxzk.gps.controller.System.SystemLogUtil;
|
import com.hxzk.gps.util.Time.TimeUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.StringUtils;
|
|
import java.util.*;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author YuZhiTong
|
* @since 2025-04-17
|
*/
|
@Service
|
public class TbUserServiceImpl extends ServiceImpl<TbUserMapper, TbUser> implements TbUserService {
|
/*
|
* Service注入
|
* */
|
@Autowired
|
private TbUserMapper userMapper;
|
@Autowired
|
private TbCompanyService companyService;
|
@Autowired
|
private IRoleService roleService;
|
@Autowired
|
private TbSystemOperationLogService systemOperationLogService;
|
@Autowired
|
TbLoginLogService loginLogService;
|
|
/*
|
* 用户登录
|
* */
|
@Override
|
|
public LoginResult Login(String username, String password,String status,String clientIp) {
|
|
String message = "";
|
if (status.equals("3")){
|
message = MessageUtils.getMessage("Loginfreeze");
|
return new LoginResult(201, message, "000");
|
}
|
try {
|
QueryWrapper queryWrapper = new QueryWrapper();
|
queryWrapper.eq("username", username);
|
queryWrapper.eq("password", password);
|
TbUser tbUser = baseMapper.selectOne(queryWrapper);
|
|
if (tbUser == null) {
|
message = MessageUtils.getMessage("LoginNull");
|
return new LoginResult(201, message, "000");
|
} else {
|
if (tbUser.getStatus().equals("1")){
|
message = MessageUtils.getMessage("Loginfreeze");
|
return new LoginResult(201, message, "000");
|
}
|
message = MessageUtils.getMessage("LoginSuccess");
|
StpUtil.login(tbUser.getUsername()+"-"+tbUser.getJuesename()+"-"+tbUser.getCompanyname()+"-"+tbUser.getCompanyid());
|
TbUser user = new TbUser();
|
user.setId(tbUser.getId());
|
user.setStatus(StpUtil.getTokenValue());
|
userMapper.updateById(user);
|
loginLogService.add(tbUser.getUsername(),clientIp,TimeUtil.GetTime(),tbUser.getCompanyname());
|
return new LoginResult(200, message, StpUtil.getTokenInfo().getTokenValue());
|
}
|
} catch (Exception e) {
|
message = MessageUtils.getMessage("LoginError");
|
return new LoginResult(201, message, "555");
|
}
|
}
|
|
@Override
|
public LoginResult phoneLogin(String phone, String clientIp) {
|
QueryWrapper queryWrapper = new QueryWrapper();
|
queryWrapper.eq("phone", phone);
|
TbUser tbUser = baseMapper.selectOne(queryWrapper);
|
StpUtil.login(tbUser.getUsername()+"-"+tbUser.getJuesename()+"-"+tbUser.getCompanyname()+"-"+tbUser.getCompanyid());
|
loginLogService.add(tbUser.getUsername(),clientIp,TimeUtil.GetTime(),tbUser.getCompanyname());
|
return new LoginResult(200, MessageUtils.getMessage("LoginSuccess"), StpUtil.getTokenInfo().getTokenValue());
|
}
|
|
|
/*
|
* 用户菜单导航
|
* */
|
@Override
|
public MenuListResult UserMenu() {
|
String username = UserInfoUtil.getUserName();
|
List<MenuList> menus = userMapper.FindUserRoleList(username);
|
Map<Integer, MenuList> menuMap = new HashMap<>();
|
for (MenuList menu : menus) {
|
menuMap.put(menu.getId(), menu);
|
}
|
MenuList root = new MenuList(); // Dummy root to collect all top-level menus
|
for (MenuList menu : menus) {
|
if (menu.getParentId() == null) {
|
root.getChildren().add(menu);
|
} else {
|
menuMap.get(menu.getParentId()).getChildren().add(menu);
|
}
|
}
|
String message = MessageUtils.getMessage("Success");
|
return new MenuListResult(200,message,root.getChildren());
|
}
|
|
|
/*
|
* 用户列表信息
|
* */
|
|
@Override
|
public UserResult FindUserInfo(UserTreeTableDto userTreeTableDto) {
|
// 创建查询包装器
|
QueryWrapper<TbUser> queryWrapper = new QueryWrapper<>();
|
|
// 处理部门 ID 为空的情况
|
if (StringUtils.isEmpty(userTreeTableDto.getDepartmentId())) {
|
List<Long> list = companyService.getChildCompanyIds(UserInfoUtil.getUserCompanyId());
|
queryWrapper.in("companyid", list);
|
} else {
|
queryWrapper.eq("companyid", userTreeTableDto.getDepartmentId());
|
}
|
|
// 处理用户名查询条件
|
Optional.ofNullable(userTreeTableDto.getUsername())
|
.ifPresent(username -> queryWrapper.like("username", username));
|
|
// 直接使用分页查询
|
Page<TbUser> page = PageHelper.startPage(userTreeTableDto.getPageNum(), userTreeTableDto.getPageSize())
|
.doSelectPage(() -> baseMapper.selectList(queryWrapper));
|
|
// 封装结果
|
TableDto tableDto = new TableDto(page.getResult(), page.getPageNum(), page.getPageSize(), page.getTotal());
|
String message = MessageUtils.getMessage("Success");
|
|
return new UserResult(200, message, tableDto);
|
}
|
/*
|
* 菜单列表信息
|
* */
|
@Override
|
public MenuListResult MenuAll() {
|
List<MenuListDtoAll> menus = userMapper.FindUserRoleListAll();
|
Map<Integer, MenuListDtoAll> menuMap = new HashMap<>();
|
for (MenuListDtoAll menu : menus) {
|
menuMap.put(menu.getId(), menu);
|
}
|
MenuListDtoAll root = new MenuListDtoAll(); // Dummy root to collect all top-level menus
|
for (MenuListDtoAll menu : menus) {
|
if (menu.getParentId() == null) {
|
root.getChildren().add(menu);
|
} else {
|
menuMap.get(menu.getParentId()).getChildren().add(menu);
|
}
|
}
|
return new MenuListResult(200,"成功",root.getChildren());
|
}
|
|
/*
|
* 添加用户
|
* */
|
@Override
|
public ReturnMessage add(TbUser user){
|
/*
|
声明操作状态
|
* */
|
boolean isSuccess = false;
|
/*
|
* 公司ID如果为空默认使用当前登录用户公司即可
|
* */
|
if (user.getCompanyid().equals("")){
|
user.setCompanyname(companyService.getChildCompanyName(UserInfoUtil.getUserCompanyId()));
|
user.setCompanyid(UserInfoUtil.getUserCompanyId());
|
}else{
|
user.setCompanyname(companyService.getChildCompanyName(user.getCompanyid()));
|
user.setCompanyid(user.getCompanyid());
|
}
|
user.setJueseid(user.getJuesename());
|
user.setJuesename(roleService.FindRoleName(user.getJuesename()));
|
/*
|
* 校验用户是否重复
|
* */
|
if (baseMapper.selectCount(new QueryWrapper<TbUser>()
|
.eq("username", user.getUsername())
|
.eq("companyname", user.getCompanyname())) > 0) {
|
return ReturnMessage.ReturnMessageError("UserRepeat");
|
}
|
try {
|
// 若用户不重复,插入用户并返回成功消息
|
user.setTime(TimeUtil.GetTime());
|
baseMapper.insert(user);
|
isSuccess = true;
|
}catch (Exception e){
|
|
}
|
return SystemLogUtil.handleAddResult(isSuccess,"UserAdd",user.getUsername());
|
|
}
|
|
@Override
|
public ReturnMessage update(TbUser user) {
|
/*
|
声明操作状态
|
* */
|
boolean isSuccess = false;
|
QueryWrapper queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("id",user.getId());
|
try {
|
if (user.getCompanyid().equals("")){
|
user.setCompanyid(UserInfoUtil.getUserCompanyId());
|
}
|
|
/*
|
* 更新时间覆盖
|
* */
|
user.setTime(TimeUtil.GetTime());
|
user.setJuesename(roleService.FindRoleName(user.getJuesename()));
|
isSuccess= true;
|
baseMapper.update(user,queryWrapper);
|
}catch (Exception e){
|
}
|
return SystemLogUtil.handleUpdateResult(isSuccess,"UserUpdate",user.getUsername());
|
}
|
|
@Override
|
public ReturnMessage delete(TbUser user) {
|
/*
|
声明操作状态
|
* */
|
boolean isSuccess = false;
|
try {
|
baseMapper.delete(new QueryWrapper<TbUser>().eq("id", user.getId()));
|
isSuccess = true;
|
}catch (Exception e){
|
|
}
|
return SystemLogUtil.handleDeleteResult(isSuccess,"UserDelete",user.getUsername());
|
|
}
|
|
|
|
/*
|
* 添加操作日志
|
* */
|
|
}
|