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.*; /** *

* 服务实现类 *

* * @author YuZhiTong * @since 2025-04-17 */ @Service public class TbUserServiceImpl extends ServiceImpl 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 menus = userMapper.FindUserRoleList(username); Map 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 queryWrapper = new QueryWrapper<>(); // 处理部门 ID 为空的情况 if (StringUtils.isEmpty(userTreeTableDto.getDepartmentId())) { List 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 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 menus = userMapper.FindUserRoleListAll(); Map 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() .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().eq("id", user.getId())); isSuccess = true; }catch (Exception e){ } return SystemLogUtil.handleDeleteResult(isSuccess,"UserDelete",user.getUsername()); } /* * 添加操作日志 * */ }