1
0
mirror of https://github.com/FatttSnake/Pinnacle-OA.git synced 2026-04-06 07:21:24 +08:00

Optimized source code structure. Added api document to LoginController

This commit is contained in:
2023-05-23 03:18:10 +08:00
parent dc32b1d234
commit 6dfcba36bb
74 changed files with 115 additions and 790 deletions

View File

@@ -1,22 +1,16 @@
package com.cfive.pinnacle.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cfive.pinnacle.entity.Attendance;
import com.cfive.pinnacle.mapper.AttendanceMapper;
import com.cfive.pinnacle.mapper.UserMapper;
import com.cfive.pinnacle.mapper.permission.UserMapper;
import com.cfive.pinnacle.service.IAttendanceService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
@@ -41,8 +35,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
@Override
public List<Attendance> getAttendanceAndUserByid(Long userId) {
List<Attendance> attendances = attendanceMapper.getAttendanceAndUserByid(userId);
return attendances;
return attendanceMapper.getAttendanceAndUserByid(userId);
}
@Override

View File

@@ -1,16 +1,12 @@
package com.cfive.pinnacle.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cfive.pinnacle.entity.Department;
import com.cfive.pinnacle.entity.User;
import com.cfive.pinnacle.mapper.DepartmentMapper;
import com.cfive.pinnacle.mapper.UserMapper;
import com.cfive.pinnacle.service.IDepartmentService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
@@ -25,8 +21,7 @@ import java.util.List;
public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Department> implements IDepartmentService {
@Autowired
private DepartmentMapper departmentMapper;
@Autowired
private UserMapper userMapper;
@Override
public List<Department> getDepartAndUser() {
return departmentMapper.getDepartAndUser();

View File

@@ -1,98 +0,0 @@
package com.cfive.pinnacle.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cfive.pinnacle.entity.Group;
import com.cfive.pinnacle.entity.RoleGroup;
import com.cfive.pinnacle.mapper.GroupMapper;
import com.cfive.pinnacle.mapper.RoleGroupMapper;
import com.cfive.pinnacle.service.IGroupService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashSet;
import java.util.List;
/**
* <p>
* 用户组 服务实现类
* </p>
*
* @author FatttSnake
* @since 2023-04-30
*/
@Service
public class GroupServiceImpl extends ServiceImpl<GroupMapper, Group> implements IGroupService {
private GroupMapper groupMapper;
private RoleGroupMapper roleGroupMapper;
@Autowired
public void setGroupMapper(GroupMapper groupMapper) {
this.groupMapper = groupMapper;
}
@Autowired
public void setRoleGroupMapper(RoleGroupMapper roleGroupMapper) {
this.roleGroupMapper = roleGroupMapper;
}
@Override
public List<Group> getAllGroup() {
return groupMapper.getAll();
}
@Override
public Group getGroup(Long id) {
return groupMapper.getOneById(id);
}
@Override
@Transactional
public boolean addGroup(Group group) {
if (groupMapper.insert(group) == 1) {
group.getRoles().forEach(role -> {
RoleGroup roleGroup = new RoleGroup();
roleGroup.setGroupId(group.getId());
roleGroup.setRoleId(role.getId());
if (roleGroupMapper.insert(roleGroup) != 1) {
throw new RuntimeException("Add role_group failure");
}
});
return true;
} else {
throw new RuntimeException("Add group failure");
}
}
@Override
@Transactional
public boolean modifyGroup(Group group) {
groupMapper.updateById(group);
Group originalGroup = getGroup(group.getId());
HashSet<Long> newRoleIds = new HashSet<>();
group.getRoles().forEach(role -> newRoleIds.add(role.getId()));
HashSet<Long> addRoleIds = new HashSet<>(newRoleIds);
if (originalGroup != null) {
HashSet<Long> originalRoleIds = new HashSet<>();
originalGroup.getRoles().forEach(role -> originalRoleIds.add(role.getId()));
HashSet<Long> deleteRoleIds = new HashSet<>(originalRoleIds);
deleteRoleIds.removeAll(newRoleIds);
addRoleIds.removeAll(originalRoleIds);
deleteRoleIds.forEach(deleteRoleId -> {
LambdaQueryWrapper<RoleGroup> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(RoleGroup::getGroupId, group.getId())
.eq(RoleGroup::getRoleId, deleteRoleId);
roleGroupMapper.delete(wrapper);
});
}
addRoleIds.forEach(addRoleId -> {
RoleGroup roleGroup = new RoleGroup();
roleGroup.setGroupId(group.getId());
roleGroup.setRoleId(addRoleId);
roleGroupMapper.insert(roleGroup);
});
return true;
}
}

View File

@@ -5,12 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.cfive.pinnacle.entity.Notice;
import com.cfive.pinnacle.entity.NoticeReceive;
import com.cfive.pinnacle.entity.common.ResponseCode;
import com.cfive.pinnacle.entity.common.ResponseResult;
import com.cfive.pinnacle.mapper.NoticeMapper;
import com.cfive.pinnacle.mapper.NoticeReceiveMapper;
import com.cfive.pinnacle.mapper.NoticeTypeMapper;
import com.cfive.pinnacle.mapper.UserMapper;
import com.cfive.pinnacle.mapper.permission.UserMapper;
import com.cfive.pinnacle.service.INoticeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cfive.pinnacle.utils.WebUtil;

View File

@@ -1,20 +0,0 @@
package com.cfive.pinnacle.service.impl;
import com.cfive.pinnacle.entity.RoleGroup;
import com.cfive.pinnacle.mapper.RoleGroupMapper;
import com.cfive.pinnacle.service.IRoleGroupService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 中间表-角色-用户组 服务实现类
* </p>
*
* @author FatttSnake
* @since 2023-04-30
*/
@Service
public class RoleGroupServiceImpl extends ServiceImpl<RoleGroupMapper, RoleGroup> implements IRoleGroupService {
}

View File

@@ -1,100 +0,0 @@
package com.cfive.pinnacle.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cfive.pinnacle.entity.Role;
import com.cfive.pinnacle.entity.permission.PowerRole;
import com.cfive.pinnacle.mapper.RoleMapper;
import com.cfive.pinnacle.mapper.permission.PowerRoleMapper;
import com.cfive.pinnacle.service.IRoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashSet;
import java.util.List;
/**
* <p>
* 角色 服务实现类
* </p>
*
* @author FatttSnake
* @since 2023-04-30
*/
@Service
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IRoleService {
private RoleMapper roleMapper;
private PowerRoleMapper powerRoleMapper;
@Autowired
public void setRoleMapper(RoleMapper roleMapper) {
this.roleMapper = roleMapper;
}
@Autowired
public void setPowerRoleMapper(PowerRoleMapper powerRoleMapper) {
this.powerRoleMapper = powerRoleMapper;
}
@Override
public List<Role> getAllRole() {
return roleMapper.getAll();
}
@Override
public Role getRole(long id) {
return roleMapper.getOneById(id);
}
@Override
@Transactional
public boolean addRole(Role role) {
if (roleMapper.insert(role) == 1) {
role.getPowers().forEach(power -> {
PowerRole powerRole = new PowerRole();
powerRole.setRoleId(role.getId());
powerRole.setPowerId(power.getId());
if (powerRoleMapper.insert(powerRole) != 1) {
throw new RuntimeException("Add power_role failure");
}
});
return true;
} else {
throw new RuntimeException("Add role failure");
}
}
@Override
@Transactional
public boolean modifyRole(Role role) {
roleMapper.updateById(role);
Role originalRole = getRole(role.getId());
HashSet<Long> newPowerIds = new HashSet<>();
role.getPowers().forEach(power -> newPowerIds.add(power.getId()));
HashSet<Long> addPowerIds = new HashSet<>(newPowerIds);
if (originalRole != null) {
HashSet<Long> originalPowerIds = new HashSet<>();
originalRole.getMenus().forEach(menu -> originalPowerIds.add(menu.getPowerId()));
originalRole.getElements().forEach(element -> originalPowerIds.add(element.getPowerId()));
originalRole.getOperations().forEach(operation -> originalPowerIds.add(operation.getPowerId()));
HashSet<Long> deletePowerIds = new HashSet<>(originalPowerIds);
deletePowerIds.removeAll(newPowerIds);
addPowerIds.removeAll(originalPowerIds);
deletePowerIds.forEach(deletePowerId -> {
LambdaQueryWrapper<PowerRole> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PowerRole::getRoleId, role.getId())
.eq(PowerRole::getPowerId, deletePowerId);
powerRoleMapper.delete(wrapper);
});
}
addPowerIds.forEach(addPowerId -> {
PowerRole powerRole = new PowerRole();
powerRole.setRoleId(role.getId());
powerRole.setPowerId(addPowerId);
powerRoleMapper.insert(powerRole);
});
return true;
}
}

View File

@@ -1,20 +0,0 @@
package com.cfive.pinnacle.service.impl;
import com.cfive.pinnacle.entity.UserGroup;
import com.cfive.pinnacle.mapper.UserGroupMapper;
import com.cfive.pinnacle.service.IUserGroupService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 中间表-用户-用户组 服务实现类
* </p>
*
* @author FatttSnake
* @since 2023-04-30
*/
@Service
public class UserGroupServiceImpl extends ServiceImpl<UserGroupMapper, UserGroup> implements IUserGroupService {
}

View File

@@ -1,20 +0,0 @@
package com.cfive.pinnacle.service.impl;
import com.cfive.pinnacle.entity.UserRole;
import com.cfive.pinnacle.mapper.UserRoleMapper;
import com.cfive.pinnacle.service.IUserRoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 中间表-用户-角色 服务实现类
* </p>
*
* @author FatttSnake
* @since 2023-04-30
*/
@Service
public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> implements IUserRoleService {
}

View File

@@ -1,209 +0,0 @@
package com.cfive.pinnacle.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cfive.pinnacle.entity.*;
import com.cfive.pinnacle.entity.permission.Element;
import com.cfive.pinnacle.entity.permission.Menu;
import com.cfive.pinnacle.entity.permission.Operation;
import com.cfive.pinnacle.mapper.*;
import com.cfive.pinnacle.mapper.permission.ElementMapper;
import com.cfive.pinnacle.mapper.permission.MenuMapper;
import com.cfive.pinnacle.mapper.permission.OperationMapper;
import com.cfive.pinnacle.service.IUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cfive.pinnacle.utils.WebUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.HashSet;
import java.util.List;
/**
* <p>
* 用户 服务实现类
* </p>
*
* @author FatttSnake
* @since 2023-04-30
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
private UserMapper userMapper;
private MenuMapper menuMapper;
private ElementMapper elementMapper;
private OperationMapper operationMapper;
private UserRoleMapper userRoleMapper;
private UserGroupMapper userGroupMapper;
private PasswordEncoder passwordEncoder;
@Autowired
public void setUserMapper(UserMapper userMapper) {
this.userMapper = userMapper;
}
@Autowired
public void setMenuMapper(MenuMapper menuMapper) {
this.menuMapper = menuMapper;
}
@Autowired
public void setElementMapper(ElementMapper elementMapper) {
this.elementMapper = elementMapper;
}
@Autowired
public void setOperationMapper(OperationMapper operationMapper) {
this.operationMapper = operationMapper;
}
@Autowired
public void setUserRoleMapper(UserRoleMapper userRoleMapper) {
this.userRoleMapper = userRoleMapper;
}
@Autowired
public void setUserGroupMapper(UserGroupMapper userGroupMapper) {
this.userGroupMapper = userGroupMapper;
}
@Autowired
public void setPasswordEncoder(PasswordEncoder passwordEncoder) {
this.passwordEncoder = passwordEncoder;
}
@Override
public User getInfo() {
return WebUtil.getLoginUser().getUser();
}
@Override
public List<User> getAllUser() {
List<User> users = userMapper.getAll();
users.forEach(user -> {
if (user.getId() == 1L) {
user.setRoles(List.of(new Role(0L, "超级管理员")));
user.setGroups(List.of(new Group(0L, "超级管理员")));
}
});
return users;
}
@Override
public User getUser(long id) {
User user = userMapper.getOneById(id);
if (user.getId() == 1L) {
user.setRoles(List.of(new Role(0L, "超级管理员")));
user.setGroups(List.of(new Group(0L, "超级管理员")));
}
return user;
}
@Override
public User getUserWithPower(String username) {
User user = userMapper.getOneWithPowerByUsername(username);
if (user.getId() == 1L) {
List<Menu> menus = menuMapper.selectList(null);
List<Element> elements = elementMapper.selectList(null);
List<Operation> operations = operationMapper.selectList(null);
user.setMenus(menus);
user.setElements(elements);
user.setOperations(operations);
}
return user;
}
@Override
@Transactional
public boolean addUser(User user) {
String encryptedPassword = passwordEncoder.encode(user.getPasswd());
user.setPasswd(encryptedPassword);
if (userMapper.insert(user) == 1) {
user.getRoles().forEach(role -> {
UserRole userRole = new UserRole();
userRole.setUserId(user.getId());
userRole.setRoleId(role.getId());
if (userRoleMapper.insert(userRole) != 1) {
throw new RuntimeException("Add user_role failure");
}
});
user.getGroups().forEach(group -> {
UserGroup userGroup = new UserGroup();
userGroup.setUserId(user.getId());
userGroup.setGroupId(group.getId());
if (userGroupMapper.insert(userGroup) != 1) {
throw new RuntimeException("Add user_group failure");
}
});
return true;
} else {
throw new RuntimeException("Add group failure");
}
}
@Override
@Transactional
public boolean modifyUser(User user) {
if (StringUtils.hasText(user.getPasswd())) {
String encryptedPassword = passwordEncoder.encode(user.getPasswd());
user.setPasswd(encryptedPassword);
}
// Protect administrator
if (user.getId() == 1L) {
user.setDepartmentId(null);
user.setEnable(1);
user.setDeleted(0L);
userMapper.updateById(user);
return true;
}
userMapper.updateById(user);
User originalUser = getUser(user.getId());
HashSet<Long> newRoleIds = new HashSet<>();
HashSet<Long> newGroupIds = new HashSet<>();
user.getRoles().forEach(role -> newRoleIds.add(role.getId()));
user.getGroups().forEach(group -> newGroupIds.add(group.getId()));
HashSet<Long> addRoleIds = new HashSet<>(newRoleIds);
HashSet<Long> addGroupIds = new HashSet<>(newGroupIds);
if (originalUser != null) {
HashSet<Long> originalRoleIds = new HashSet<>();
HashSet<Long> originalGroupIds = new HashSet<>();
originalUser.getRoles().forEach(role -> originalRoleIds.add(role.getId()));
originalUser.getGroups().forEach(group -> originalGroupIds.add(group.getId()));
HashSet<Long> deleteRoleIds = new HashSet<>(originalRoleIds);
HashSet<Long> deleteGroupIds = new HashSet<>(originalGroupIds);
deleteRoleIds.removeAll(newRoleIds);
deleteGroupIds.removeAll(newGroupIds);
addRoleIds.removeAll(originalRoleIds);
addGroupIds.removeAll(originalGroupIds);
deleteRoleIds.forEach(deleteRoleId -> {
LambdaQueryWrapper<UserRole> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(UserRole::getUserId, user.getId())
.eq(UserRole::getRoleId, deleteRoleId);
userRoleMapper.delete(wrapper);
});
deleteGroupIds.forEach(deleteGroupId -> {
LambdaQueryWrapper<UserGroup> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(UserGroup::getUserId, user.getId())
.eq(UserGroup::getGroupId, deleteGroupId);
userGroupMapper.delete(wrapper);
});
}
addRoleIds.forEach(addRoleId -> {
UserRole userRole = new UserRole();
userRole.setUserId(user.getId());
userRole.setRoleId(addRoleId);
userRoleMapper.insert(userRole);
});
addGroupIds.forEach(addGroupId -> {
UserGroup userGroup = new UserGroup();
userGroup.setUserId(user.getId());
userGroup.setGroupId(addGroupId);
userGroupMapper.insert(userGroup);
});
return true;
}
}

View File

@@ -1,20 +0,0 @@
package com.cfive.pinnacle.service.impl;
import com.cfive.pinnacle.entity.UserWork;
import com.cfive.pinnacle.mapper.UserWorkMapper;
import com.cfive.pinnacle.service.IUserWorkService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 中间表-用户-工作事项 服务实现类
* </p>
*
* @author FatttSnake
* @since 2023-04-30
*/
@Service
public class UserWorkServiceImpl extends ServiceImpl<UserWorkMapper, UserWork> implements IUserWorkService {
}

View File

@@ -2,11 +2,10 @@ package com.cfive.pinnacle.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.cfive.pinnacle.entity.Notice;
import com.cfive.pinnacle.entity.User;
import com.cfive.pinnacle.entity.permission.User;
import com.cfive.pinnacle.entity.UserWork;
import com.cfive.pinnacle.entity.Work;
import com.cfive.pinnacle.mapper.UserMapper;
import com.cfive.pinnacle.mapper.permission.UserMapper;
import com.cfive.pinnacle.mapper.UserWorkMapper;
import com.cfive.pinnacle.mapper.WorkMapper;
import com.cfive.pinnacle.service.IWorkService;
@@ -17,8 +16,6 @@ import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.text.DecimalFormat;
import java.time.LocalDateTime;
import java.util.List;
/**
@@ -101,7 +98,7 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper, Work> implements IW
public double getProgress(Long workId) {
double workNum = userWorkMapper.selectCount(new QueryWrapper<UserWork>().eq("work_id",workId));
double completeNum = userWorkMapper.selectCount(new QueryWrapper<UserWork>().eq("work_id",workId).eq("status",1));
double progress = 0;
double progress;
progress = (completeNum / workNum) * 100;
progress = (double) Math.round(progress * 100) / 100;
return progress;
@@ -115,10 +112,7 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper, Work> implements IW
@Override
@Transactional(isolation = Isolation.READ_COMMITTED,propagation = Propagation.REQUIRED)
public boolean addWork(Work work) {
boolean flag = true;
if (workMapper.insert(work) <= 0) {
flag = false;
}
boolean flag = workMapper.insert(work) > 0;
long workId = work.getId();
for (User user :
work.getWorker()) {
@@ -135,11 +129,7 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper, Work> implements IW
@Override
@Transactional(isolation = Isolation.READ_COMMITTED,propagation = Propagation.REQUIRED)
public boolean deleteByWorkId(Long workId) {
boolean flag = false;
if (userWorkMapper.delete(new QueryWrapper<UserWork>().eq("work_id", workId)) > 0 && workMapper.deleteById(workId) > 0) {
flag = true;
}
return flag;
return userWorkMapper.delete(new QueryWrapper<UserWork>().eq("work_id", workId)) > 0 && workMapper.deleteById(workId) > 0;
}
@Override
@@ -151,10 +141,7 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper, Work> implements IW
@Override
@Transactional(isolation = Isolation.READ_COMMITTED,propagation = Propagation.REQUIRED)
public boolean updateWork(Work work) {
boolean flag = true;
if (userWorkMapper.delete(new QueryWrapper<UserWork>().eq("work_id", work.getId())) <= 0) {
flag = false;
}
boolean flag = userWorkMapper.delete(new QueryWrapper<UserWork>().eq("work_id", work.getId())) > 0;
if (workMapper.update(null, new UpdateWrapper<Work>().eq("id", work.getId()).set("old", 1)) <= 0) {
flag = false;
}