Merge remote-tracking branch 'origin/master'

This commit is contained in:
xiangZr-hhh 2024-01-20 21:41:40 +08:00
commit eb2caee36a
20 changed files with 179 additions and 54 deletions

View File

@ -15,7 +15,6 @@ public class CorsFilter implements Filter {
// 请求头处理
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
// 设置请求头
setHeader(response);

View File

@ -33,6 +33,7 @@ import java.util.regex.Pattern;
* @see Processing
* @see ResultUtil
* @since v1.0.0
* @author 筱锋xiao_lfeng|176yunxuan
*/
@Slf4j
@RestController

View File

@ -7,6 +7,9 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author xiaofeng
*/
@RestController
public class CustomController implements ErrorController {
@RequestMapping("/error")

View File

@ -2,13 +2,19 @@ package com.jsl.oa.controllers;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ResultUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author xiaofeng
*/
@Slf4j
@RestController
public class IndexController {
@RequestMapping("/")
public BaseResponse index() {
log.info("请求接口[GET]: /");
return ResultUtil.success("欢迎使用JSL-OA系统服务器处于正常状态");
}
}

View File

@ -7,12 +7,14 @@ import com.jsl.oa.utils.ErrorCode;
import com.jsl.oa.utils.Processing;
import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@Slf4j
@RestController
@RequiredArgsConstructor
public class PermissionController {
@ -21,14 +23,18 @@ public class PermissionController {
@PostMapping("/permission/add")
public BaseResponse permissionAdd(HttpServletRequest request, @RequestParam Long rid,@RequestParam Long pid) {
log.info("请求接口[POST]: /permission/add");
// 判断是否有参数错误
if (rid == null || pid == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
} else return permissionService.permissionAdd(request,rid,pid);
} else {
return permissionService.permissionAdd(request,rid,pid);
}
}
@GetMapping("/permission/current")
public BaseResponse permissionUser(HttpServletRequest request, @RequestParam Long uid) {
log.info("请求接口[GET]: /permission/current");
// 判断是否有参数错误
if (uid == null ) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
@ -37,12 +43,14 @@ public class PermissionController {
@GetMapping("/permission/get")
public BaseResponse permissionGet(HttpServletRequest request){
log.info("请求接口[GET]: /permission/get");
return permissionService.permissionGet(request);
}
@PutMapping("/permission/edit")
public BaseResponse permissionEdit(@RequestBody @Validated PermissionEditVo permissionEditVo, BindingResult bindingResult, HttpServletRequest request){
log.info("请求接口[PUT]: /permission/edit");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));

View File

@ -44,11 +44,14 @@ public class UserController {
* @return {@link BaseResponse}
*/
@PutMapping("/user/delete")
public BaseResponse userDelete(HttpServletRequest request,@RequestParam Long id) {
public BaseResponse userDelete(HttpServletRequest request, @RequestParam String id) {
log.info("请求接口[PUT]: /user/delete");
// 判断是否有参数错误
if (id == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
} else return userService.userDelete(request,id);
} else {
return userService.userDelete(request, Long.valueOf(id));
}
}
/**
@ -58,12 +61,13 @@ public class UserController {
* @return {@link BaseResponse}
*/
@PutMapping("/user/lock")
public BaseResponse userLock(HttpServletRequest request,@RequestParam Long id,@RequestParam Long isLock) {
public BaseResponse userLock(HttpServletRequest request, @RequestParam Long id, @RequestParam Long isLock) {
log.info("请求接口[PUT]: /user/lock");
// 判断是否有参数错误
if (id == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
}
return userService.userLock(request,id,isLock);
return userService.userLock(request, id, isLock);
}
/**
@ -75,6 +79,7 @@ public class UserController {
*/
@PutMapping("/user/profile/edit")
public BaseResponse userEditProfile(@RequestBody @Validated UserEditProfileVO userEditProfileVO, BindingResult bindingResult) {
log.info("请求接口[PUT]: /user/profile/edit");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
@ -97,6 +102,7 @@ public class UserController {
*/
@GetMapping("/user/current")
public BaseResponse userCurrent(HttpServletRequest request, @RequestParam @Nullable String id, @RequestParam @Nullable String username, @RequestParam @Nullable String email, @RequestParam @Nullable String phone) {
log.info("请求接口[GET]: /user/current");
// 检查数据是否有问题
ArrayList<String> arrayForError = new ArrayList<>();
if (id != null && !id.isEmpty()) {
@ -138,6 +144,7 @@ public class UserController {
@PostMapping("/user/current/all")
public BaseResponse userCurrentAll(@RequestBody @Validated UserAllCurrentVO userAllCurrentVO,
HttpServletRequest request, @NotNull BindingResult bindingResult) {
log.info("请求接口[POST]: /user/current/all");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
@ -153,12 +160,13 @@ public class UserController {
* @Param bindingResult:
**/
@PostMapping("/user/add")
public BaseResponse userAdd(@RequestBody @Validated UserAddVo userAddVo, BindingResult bindingResult, HttpServletRequest request){
public BaseResponse userAdd(@RequestBody @Validated UserAddVo userAddVo, BindingResult bindingResult, HttpServletRequest request) {
log.info("请求接口[POST]: /user/add");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return userService.userAdd(userAddVo,request);
return userService.userAdd(userAddVo, request);
}
@ -169,15 +177,15 @@ public class UserController {
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return userService.userEdit(userEditVO,request);
return userService.userEdit(userEditVO, request);
}
@GetMapping("/user/profile/get")
public BaseResponse userProfileGet(HttpServletRequest request) {
log.info("请求接口[GET]: /user/profile/get");
return userService.userProfileGet(request);
}
}

View File

@ -4,6 +4,7 @@ import com.google.gson.Gson;
import com.jsl.oa.mapper.InfoMapper;
import com.jsl.oa.model.doData.info.CarouselDO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Component;
@ -19,6 +20,7 @@ import java.util.Collections;
* @version v1.1.0
* @since v1.1.0
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class InfoDAO {
@ -33,6 +35,7 @@ public class InfoDAO {
* @return {@link CarouselDO}
*/
public CarouselDO getCarousel() {
log.info("\t> 执行 DAO 层 InfoDAO.getCarousel 方法");
String getCarouselSql = infoMapper.getCarousel();
CarouselDO getCarousel = null;
if (getCarouselSql != null && !getCarouselSql.equals("{}")) {
@ -78,6 +81,7 @@ public class InfoDAO {
* @return {@link Boolean}
*/
public boolean setCarousel(CarouselDO carouselDO) {
log.info("\t> 执行 DAO 层 InfoDAO.setCarousel 方法");
sortCarousel(carouselDO);
String setCarouselSql = gson.toJson(carouselDO);
return infoMapper.setCarousel(setCarouselSql);

View File

@ -6,10 +6,8 @@ import com.jsl.oa.model.doData.ProjectCuttingDO;
import com.jsl.oa.model.doData.ProjectDO;
import com.jsl.oa.model.doData.info.ProjectShowDO;
import com.jsl.oa.model.voData.ProjectInfoVO;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Component;
@ -17,6 +15,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@Slf4j
@Component
@RequiredArgsConstructor
public class ProjectDAO {
@ -25,27 +24,33 @@ public class ProjectDAO {
private final Gson gson;
public void projectAdd(ProjectInfoVO projectAdd) {
log.info("\t> 执行 DAO 层 ProjectDAO.projectAdd 方法");
projectMapper.projectAdd(projectAdd);
}
public void projectEdit(ProjectInfoVO projectEdit) {
log.info("\t> 执行 DAO 层 ProjectDAO.projectEdit 方法");
projectMapper.projectEdit(projectEdit);
}
public boolean isExistProject(Long id) {
log.info("\t> 执行 DAO 层 ProjectDAO.isExistProject 方法");
return projectMapper.getProjectById(id) != null;
}
public List<ProjectCuttingDO> projectGetUserInCutting(Long uid) {
log.info("\t> 执行 DAO 层 ProjectDAO.projectGetUserInCutting 方法");
return projectMapper.projectGetUserInCutting(uid);
}
public void projectAddUserForCutting(Long uid, Long pid) {
log.info("\t> 执行 DAO 层 ProjectDAO.projectAddUserForCutting 方法");
projectMapper.projectAddUserInCutting(uid, pid);
}
public ProjectShowDO getHeader() {
log.info("\t> 执行 DAO 层 ProjectDAO.getHeader 方法");
String getProjectShowSql = projectMapper.getHeader();
ProjectShowDO getProjectShow = null;
if (getProjectShowSql != null && !getProjectShowSql.equals("{}")) {
@ -67,9 +72,10 @@ public class ProjectDAO {
}
private void sortProject(ProjectShowDO projectShowDO) {
log.info("\t> 执行 DAO 层 ProjectDAO.sortProject 方法");
for (int i = 0; i < projectShowDO.getData().size(); i++) {
for (int j = 0; j < projectShowDO.getData().size(); j++) {
if (projectShowDO.getOrder().equals("desc")) {
if ("desc".equals(projectShowDO.getOrder())) {
if (projectShowDO.getData().get(i).getDisplayOrder() > projectShowDO.getData().get(j).getDisplayOrder()) {
Collections.swap(projectShowDO.getData(), i, j);
}
@ -83,21 +89,20 @@ public class ProjectDAO {
}
public boolean setProjectShow(ProjectShowDO projectShowDO) {
log.info("\t> 执行 DAO 层 ProjectDAO.setProjectShow 方法");
sortProject(projectShowDO);
String setProjectShow = gson.toJson(projectShowDO);
return projectMapper.setProjectShow(setProjectShow);
}
public List<ProjectDO> get() {
log.info("\t> 执行 DAO 层 ProjectDAO.get 方法");
return projectMapper.get();
}
public BaseResponse getByName(String name) {
if(projectMapper.getByName(name)!=null){
return ResultUtil.success(projectMapper.getByName(name));
}else return ResultUtil.error(ErrorCode.PROJECT_NOT_EXIST);
public ProjectDO getByName(String name) {
log.info("\t> 执行 DAO 层 ProjectDAO.getByName 方法");
return projectMapper.getByName(name);
}
public boolean projectDelete(Long id){

View File

@ -3,56 +3,68 @@ package com.jsl.oa.dao;
import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.model.doData.RoleDO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Component
@RequiredArgsConstructor
public class RoleDAO {
public final RoleMapper roleMapper;
public void roleAddUser(Long uid, Long rid) {
log.info("\t> 执行 DAO 层 RoleDAO.roleAddUser 方法");
roleMapper.roleAddUser(uid, rid);
}
public void roleRemoveUser(Long uid) {
log.info("\t> 执行 DAO 层 RoleDAO.roleRemoveUser 方法");
roleMapper.roleRemoveUser(uid);
}
public List<RoleDO> getRolesById(String id) {
log.info("\t> 执行 DAO 层 RoleDAO.getRolesById 方法");
ArrayList<RoleDO> getRoleList = new ArrayList<>();
getRoleList.add(roleMapper.getRoleById(Long.valueOf(id)));
return getRoleList;
}
public RoleDO getRoleById(Long id) {
log.info("\t> 执行 DAO 层 RoleDAO.getRoleById 方法");
return roleMapper.getRoleById(id);
}
public List<RoleDO> getRole() {
log.info("\t> 执行 DAO 层 RoleDAO.getRole 方法");
return roleMapper.getRole();
}
public void roleAdd(RoleDO roleDO) {
log.info("\t> 执行 DAO 层 RoleDAO.roleAdd 方法");
roleMapper.roleAdd(roleDO);
}
public boolean roleEdit(RoleDO getRole) {
log.info("\t> 执行 DAO 层 RoleDAO.roleEdit 方法");
return roleMapper.roleEdit(getRole);
}
public boolean roleDelete(Long id) {
log.info("\t> 执行 DAO 层 RoleDAO.roleDelete 方法");
return roleMapper.roleDelete(id);
}
public boolean isExistRoleByRoleName(String roleName) {
log.info("\t> 执行 DAO 层 RoleDAO.isExistRoleByRoleName 方法");
RoleDO roleDO = roleMapper.getRoleByRoleName(roleName);
return roleDO != null;
}
public boolean roleChangeUser(Long uid, Long rid) {
log.info("\t> 执行 DAO 层 RoleDAO.roleChangeUser 方法");
return roleMapper.roleChangeUser(uid, rid);
}
}

View File

@ -38,6 +38,7 @@ public class UserDAO {
* @author 筱锋xiao_lfeng
*/
public UserDO getUserInfoByUsername(String username) {
log.info("\t> 执行 DAO 层 UserDAO.getUserInfoByUsername 方法");
UserDO userDO = null;
// Redis 获取数据
// TODO: 10000-Redis: Redis 获取数据
@ -55,6 +56,7 @@ public class UserDAO {
* @return
*/
public Boolean isExistUser(Long id) {
log.info("\t> 执行 DAO 层 UserDAO.isExistUser 方法");
return userMapper.getUserById(id) != null;
}
@ -64,6 +66,7 @@ public class UserDAO {
* @param id
*/
public void userDelete(Long id) {
log.info("\t> 执行 DAO 层 UserDAO.userDelete 方法");
userMapper.userDelete(id);
}
@ -73,14 +76,17 @@ public class UserDAO {
* @param id
*/
public void userLock(Long id,Long isLock) {
log.info("\t> 执行 DAO 层 UserDAO.userLock 方法");
userMapper.userLock(id,isLock);
}
public void userEditProfile(UserEditProfileVO userEditProfileVO) {
log.info("\t> 执行 DAO 层 UserDAO.userEditProfile 方法");
userMapper.userEditProfile(userEditProfileVO);
}
public List<UserCurrentBackVO> userCurrentAll(UserAllCurrentVO userAllCurrentVO) {
log.info("\t> 执行 DAO 层 UserDAO.userCurrentAll 方法");
List<UserDO> userCurrentDO = userMapper.getAllUser(userAllCurrentVO);
List<UserCurrentBackVO> userCurrentDOList = new ArrayList<>();
userCurrentDO.forEach(it -> {
@ -91,6 +97,7 @@ public class UserDAO {
}
public List<UserCurrentBackVO> userCurrentAllLike(UserAllCurrentVO userAllCurrentVO) {
log.info("\t> 执行 DAO 层 UserDAO.userCurrentAllLike 方法");
List<UserDO> userCurrentDO = userMapper.getAllUserBySearch(userAllCurrentVO);
List<UserCurrentBackVO> userCurrentDOList = new ArrayList<>();
userCurrentDO.forEach(it -> {
@ -101,6 +108,7 @@ public class UserDAO {
@Contract("_ -> param1")
private @NotNull List<UserCurrentDO> userCurrentAll(@NotNull List<UserCurrentDO> userCurrentDO) {
log.info("\t> 执行 DAO 层 UserDAO.userCurrentAll 方法");
userCurrentDO.forEach(it -> {
it.setRole(roleMapper.getRoleUserByUid(it.getId()));
if (it.getRole() == null) {
@ -121,6 +129,7 @@ public class UserDAO {
* @return {@link UserCurrentDO}
*/
public UserCurrentDO userCurrentById(Long uid) {
log.info("\t> 执行 DAO 层 UserDAO.userCurrentById 方法");
UserCurrentDO userCurrentDO = userMapper.getUserCurrentById(uid);
return getUserCurrentForRole(userCurrentDO);
}
@ -132,6 +141,7 @@ public class UserDAO {
* @return {@link UserCurrentDO}
*/
public UserCurrentDO userCurrentByUsername(String username) {
log.info("\t> 执行 DAO 层 UserDAO.userCurrentByUsername 方法");
UserCurrentDO userCurrentDO = userMapper.getUserCurrentByUsername(username);
return getUserCurrentForRole(userCurrentDO);
}
@ -143,6 +153,7 @@ public class UserDAO {
* @return {@link UserCurrentDO}
*/
public UserCurrentDO userCurrentByEmail(String email) {
log.info("\t> 执行 DAO 层 UserDAO.userCurrentByEmail 方法");
UserCurrentDO userCurrentDO = userMapper.getUserCurrentByEmail(email);
return getUserCurrentForRole(userCurrentDO);
}
@ -154,11 +165,13 @@ public class UserDAO {
* @return {@link UserCurrentDO}
*/
public UserCurrentDO userCurrentByPhone(String phone) {
log.info("\t> 执行 DAO 层 UserDAO.userCurrentByPhone 方法");
UserCurrentDO userCurrentDO = userMapper.getUserCurrentByPhone(phone);
return getUserCurrentForRole(userCurrentDO);
}
private UserCurrentDO getUserCurrentForRole(UserCurrentDO userCurrentDO) {
log.info("\t> 执行 DAO 层 UserDAO.getUserCurrentForRole 方法");
if (userCurrentDO != null) {
RoleUserDO newRoleUserDO = new RoleUserDO();
newRoleUserDO.setRid(0L)
@ -179,11 +192,12 @@ public class UserDAO {
* @Param userDO: user 数据库表实体类
*/
public boolean userAdd(UserDO userDO) {
log.info("\t> 执行 DAO 层 userAdd 方法");
return userMapper.insertUser(userDO);
}
public void userEdit(UserDO userDO) {
log.info("> 执行 DAO 层 userEdit 方法");
log.info("\t> 执行 DAO 层 userEdit 方法");
userMapper.updateUser(userDO);
}
@ -194,10 +208,8 @@ public class UserDAO {
* @Param username: 用户名
**/
public Boolean isRepeatUser(String username) {
if (userMapper.getUserInfoByUsername(username) == null) {
return false;
}
return true;
log.info("\t> 执行 DAO 层 isRepeatUser 方法");
return userMapper.getUserInfoByUsername(username) != null;
}
@ -219,7 +231,7 @@ public class UserDAO {
* @Param userId
**/
public UserDO getUserById(Long userId) {
log.info("> 执行 DAO 层 getUserById 方法");
log.info("\t> 执行 DAO 层 getUserById 方法");
return userMapper.getUserById(userId);
}

View File

@ -13,6 +13,10 @@ import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Slf4j
@RestControllerAdvice
public class ProcessException {
@ -37,9 +41,18 @@ public class ProcessException {
@ExceptionHandler(value = MissingServletRequestParameterException.class)
public ResponseEntity<BaseResponse> businessMissingServletRequestParameterException(MissingServletRequestParameterException e) {
log.error(e.getMessage(), e);
// 使用正则表达式匹配并提取'id'部分
Pattern pattern = Pattern.compile("'.*?'");
Matcher matcher = pattern.matcher(Objects.requireNonNull(e.getMessage()));
// 查找匹配项
while (matcher.find()) {
String matchedGroup = matcher.group();
}
return ResponseEntity
.status(400)
.body(ResultUtil.error(ErrorCode.PARAMETER_ERROR, e.getMessage()));
.body(ResultUtil.error(ErrorCode.PARAMETER_ERROR, "缺少 " + e.getParameterName() + " 参数"));
}
@ExceptionHandler(value = Exception.class)

View File

@ -44,6 +44,7 @@ public class AuthServiceImpl implements AuthService {
@Override
public BaseResponse authRegister(@NotNull UserRegisterVO userRegisterVO) {
log.info("\t> 执行 Service 层 AuthService.userEdit 方法");
// 检查用户说是否存在
UserDO getUserByUsername = userMapper.getUserInfoByUsername(userRegisterVO.getUsername());
// 用户名已存在
@ -77,23 +78,24 @@ public class AuthServiceImpl implements AuthService {
@Override
public BaseResponse authLogin(@NotNull UserLoginVO userLoginVO) {
log.info("\t> 执行 Service 层 AuthService.userLogin 方法");
// 检查用户是否存在
UserDO userDO;
if (Pattern.matches("^[0-9A-Za-z_]{3,40}$", userLoginVO.getUser())) {
// 是否为用户名
log.info("userLogin: 用户名登陆");
log.info("\t\t> 用户名登陆");
userDO = userMapper.getUserInfoByUsername(userLoginVO.getUser());
} else if (Pattern.matches("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$", userLoginVO.getUser())) {
// 是否为手机号
log.info("userLogin: 手机号登陆");
log.info("\t\t> 手机号登陆");
userDO = userMapper.getUserInfoByPhone(userLoginVO.getUser());
} else if (Pattern.matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", userLoginVO.getUser())) {
// 是否为邮箱
log.info("userLogin: 邮箱登陆");
log.info("\t\t> 邮箱登陆");
return ResultUtil.error(ErrorCode.EMAIL_LOGIN_NOT_SUPPORT);
} else {
// 工号
log.info("userLogin: 工号登陆");
log.info("\t\t> 工号登陆");
userDO = userMapper.getUserByJobId(userLoginVO.getUser());
}
if (userDO != null) {
@ -102,6 +104,7 @@ public class AuthServiceImpl implements AuthService {
if (userDO.getAccountNoLocked()) {
// 获取用户并登陆
if (BCrypt.checkpw(userLoginVO.getPassword(), userDO.getPassword())) {
log.info("\t\t> 登陆成功,用户 [{}]{}", userDO.getId(), userDO.getUsername());
return this.encapsulateDisplayContent(userDO);
} else {
return ResultUtil.error(ErrorCode.WRONG_PASSWORD);
@ -119,6 +122,7 @@ public class AuthServiceImpl implements AuthService {
@Override
public BaseResponse authLoginByEmail(String email, Integer code) {
log.info("\t> 执行 Service 层 AuthService.authLoginByEmail 方法");
// 获取验证码是否有效
Integer redisCode = emailRedisUtil.getData(BusinessConstants.BUSINESS_LOGIN, email);
if (redisCode != null) {
@ -138,6 +142,7 @@ public class AuthServiceImpl implements AuthService {
@Override
public BaseResponse authLoginSendEmailCode(String email) {
log.info("\t> 执行 Service 层 AuthService.authLoginSendEmailCode 方法");
// 获取用户信息
UserDO userDO = userMapper.getUserInfoByEmail(email);
if (userDO != null) {
@ -163,6 +168,7 @@ public class AuthServiceImpl implements AuthService {
@Override
public BaseResponse authChangePassword(HttpServletRequest request, @NotNull UserChangePasswordVO userChangePasswordVO) {
log.info("\t> 执行 Service 层 AuthService.authChangePassword 方法");
// 检查新密码输入无误
if (!userChangePasswordVO.getNewPassword().equals(userChangePasswordVO.getConfirmPassword())) {
return ResultUtil.error(ErrorCode.PASSWORD_NOT_SAME);
@ -188,6 +194,7 @@ public class AuthServiceImpl implements AuthService {
@Override
public BaseResponse authLogout(HttpServletRequest request) {
log.info("\t> 执行 Service 层 AuthService.authLogout 方法");
// 获取用户
UserDO userDO = userMapper.getUserById(Processing.getAuthHeaderToUserId(request));
// 删除Token
@ -200,6 +207,7 @@ public class AuthServiceImpl implements AuthService {
@Override
public BaseResponse authForgetPassword(UserForgetPasswordVO userForgetPasswordVO) {
log.info("\t> 执行 Service 层 AuthService.authForgetPassword 方法");
// 获取验证码是否有效
Integer redisCode = emailRedisUtil.getData(BusinessConstants.BUSINESS_LOGIN, userForgetPasswordVO.getEmail());
if (redisCode != null) {

View File

@ -31,6 +31,7 @@ public class InfoServiceImpl implements InfoService {
@Override
public BaseResponse addHeaderImage(HttpServletRequest request, CarouselVO carouselVO) {
log.info("\t> 执行 Service 层 InfoService.addHeaderImage 方法");
// 用户权限校验
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
@ -60,6 +61,7 @@ public class InfoServiceImpl implements InfoService {
@Override
public BaseResponse editHeaderImage(HttpServletRequest request, CarouselVO carouselVO, Integer id) {
log.info("\t> 执行 Service 层 InfoService.editHeaderImage 方法");
// 用户权限校验
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
@ -91,6 +93,8 @@ public class InfoServiceImpl implements InfoService {
@Override
public BaseResponse getHeaderImage(Integer id) {
log.info("\t> 执行 Service 层 InfoService.getHeaderImage 方法");
// 获取轮播图信息
CarouselDO carouselDO = infoDAO.getCarousel();
if (id != null) {
if (id > carouselDO.getData().size()) {
@ -105,6 +109,7 @@ public class InfoServiceImpl implements InfoService {
@Override
public BaseResponse delHeaderImage(HttpServletRequest request, Integer id) {
log.info("\t> 执行 Service 层 InfoService.delHeaderImage 方法");
// 用户权限校验
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
@ -126,6 +131,7 @@ public class InfoServiceImpl implements InfoService {
@Override
public BaseResponse editSettingHeaderImage(HttpServletRequest request, Boolean showType) {
log.info("\t> 执行 Service 层 InfoService.editSettingHeaderImage 方法");
// 用户权限校验
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
@ -143,6 +149,7 @@ public class InfoServiceImpl implements InfoService {
@Override
public BaseResponse getHeaderUser(HttpServletRequest request, String order, String orderBy) {
log.info("\t> 执行 Service 层 InfoService.getHeaderUser 方法");
// 默认无参数情况
if (order == null) {
order = "asc";
@ -151,16 +158,16 @@ public class InfoServiceImpl implements InfoService {
orderBy = "userId";
}
// 检查参数是否错误
if (!(order.equals("asc") || order.equals("desc")) || !(orderBy.equals("userName") || orderBy.equals("userId"))) {
if (!("asc".equals(order) || "desc".equals(order)) || !("userName".equals(orderBy) || "userId".equals(orderBy))) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
}
//获取用户信息
List<UserDO> userDOS = userDAO.getRecommendUser();
List<UserDO> userDOList = userDAO.getRecommendUser();
//进行排序
Processing.orderUser(userDOS, order, orderBy);
Processing.orderUser(userDOList, order, orderBy);
//封装VO类
List<UserProfileVo> userProfileVos = new ArrayList<>();
for (UserDO userDO : userDOS) {
for (UserDO userDO : userDOList) {
UserProfileVo userProfileVo = new UserProfileVo();
Processing.copyProperties(userDO, userProfileVo);
userProfileVo.setSex(Processing.getSex(userDO.getSex()));

View File

@ -2,6 +2,7 @@ package com.jsl.oa.services.impl;
import com.jsl.oa.services.MailService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
@ -25,6 +26,7 @@ import javax.mail.internet.MimeMessage;
* @see JavaMailSender
* @see MimeMessageHelper
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class MailServiceImpl implements MailService {
@ -36,6 +38,7 @@ public class MailServiceImpl implements MailService {
@Override
public boolean sendMail(String sendTo, String subject, String text) {
log.info("\t> 执行 Service 层 MailService.sendMail 方法");
//发送多媒体邮件
try {
MimeMessage message = javaMailSender.createMimeMessage();
@ -47,9 +50,11 @@ public class MailServiceImpl implements MailService {
helper.setText(text, true);
javaMailSender.send(message);
log.info("\t> 发送邮件 {} 标题 {} 成功", sendTo, subject);
return true;
} catch (MessagingException e) {
//TODO: 10001-发送邮件失败处理
log.error("\t> 邮件发送失败", e);
return false;
}
@ -57,12 +62,14 @@ public class MailServiceImpl implements MailService {
@Override
public boolean sendMail(String sendTo, String model) {
log.info("\t> 执行 Service 层 MailService.sendMail 方法");
return false;
}
@Override
@Async
public void sendMailAboutUserLogin(String email, Integer code) {
log.info("\t> 执行 Service 层 MailService.sendMailAboutUserLogin 方法");
// 发送邮件带HTML模块部分
try {
MimeMessage message = javaMailSender.createMimeMessage();
@ -78,8 +85,10 @@ public class MailServiceImpl implements MailService {
mimeMessage.setText(emailContent, true);
javaMailSender.send(message);
log.info("\t> 发送登陆邮件给 {} 登陆验证码 {}", email, code);
} catch (MessagingException e) {
//TODO: 10001-发送邮件失败处理
log.error("\t> 邮件发送失败", e);
}
}
}

View File

@ -1,12 +1,9 @@
package com.jsl.oa.services.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.mapper.PermissionMapper;
import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.model.doData.PermissionDO;
import com.jsl.oa.model.doData.RolePermissionDO;
import com.jsl.oa.model.voData.PermissionContentVo;
import com.jsl.oa.model.voData.PermissionEditVo;
import com.jsl.oa.services.PermissionService;
@ -15,14 +12,13 @@ import com.jsl.oa.utils.ErrorCode;
import com.jsl.oa.utils.Processing;
import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
@RequiredArgsConstructor
public class PermissionServiceImpl implements PermissionService {
@ -33,6 +29,7 @@ public class PermissionServiceImpl implements PermissionService {
@Override
public BaseResponse permissionAdd(HttpServletRequest request, Long rid, Long pid) {
log.info("\t> 执行 Service 层 PermissionService.permissionAdd 方法");
if(!Processing.checkUserIsAdmin(request,roleMapper)){
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
@ -42,6 +39,7 @@ public class PermissionServiceImpl implements PermissionService {
@Override
public BaseResponse permissionUser(HttpServletRequest request, Long uid) {
log.info("\t> 执行 Service 层 PermissionService.permissionUser 方法");
if(userDAO.isExistUser(uid)){
List<String> permission = permissionMapper.permissionUser(uid);
return ResultUtil.success(permission);
@ -52,6 +50,7 @@ public class PermissionServiceImpl implements PermissionService {
@Override
public BaseResponse permissionGet(HttpServletRequest request) {
log.info("\t> 执行 Service 层 PermissionService.permissionGet 方法");
//检验用户权限是否为管理员
if(!Processing.checkUserIsAdmin(request,roleMapper)){
return ResultUtil.error(ErrorCode.NOT_ADMIN);
@ -66,6 +65,7 @@ public class PermissionServiceImpl implements PermissionService {
@Override
public BaseResponse permissionEdit(PermissionEditVo permissionEditVo, HttpServletRequest request) {
log.info("\t> 执行 Service 层 PermissionService.permissionEdit 方法");
//检验用户权限是否为管理员
if(!Processing.checkUserIsAdmin(request,roleMapper)){
return ResultUtil.error(ErrorCode.NOT_ADMIN);

View File

@ -15,6 +15,7 @@ import com.jsl.oa.utils.ErrorCode;
import com.jsl.oa.utils.Processing;
import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
@ -23,6 +24,7 @@ import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Service
@RequiredArgsConstructor
public class ProjectServiceImpl implements ProjectService {
@ -33,33 +35,39 @@ public class ProjectServiceImpl implements ProjectService {
@Override
public BaseResponse projectAdd(ProjectInfoVO projectAdd) {
log.info("\t> 执行 Service 层 ProjectService.projectAdd 方法");
projectDAO.projectAdd(projectAdd);
return ResultUtil.success("添加成功");
}
@Override
public BaseResponse projectEdit(@NotNull ProjectInfoVO projectEdit) {
log.info("\t> 执行 Service 层 ProjectService.projectEdit 方法");
//判断项目是否存在
if(projectDAO.isExistProject(projectEdit.getId())) {
if (projectDAO.isExistProject(projectEdit.getId())) {
projectDAO.projectEdit(projectEdit);
return ResultUtil.success("修改成功");
}else return ResultUtil.error(ErrorCode.PROJECT_NOT_EXIST);
} else {
return ResultUtil.error(ErrorCode.PROJECT_NOT_EXIST);
}
}
@Override
public BaseResponse projectGetUserInCutting(Long uid) {
if(userDAO.isExistUser(uid)) {
List<ProjectCuttingDO> projectCuttingDOList =projectDAO.projectGetUserInCutting(uid);
log.info("\t> 执行 Service 层 ProjectService.projectGetUserInCutting 方法");
if (userDAO.isExistUser(uid)) {
List<ProjectCuttingDO> projectCuttingDOList = projectDAO.projectGetUserInCutting(uid);
return ResultUtil.success(projectCuttingDOList);
} else {
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
}
else return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
}
@Override
public BaseResponse projectAddUserForCutting(Long uid, Long pid) {
if(userDAO.isExistUser(uid)){
projectDAO.projectAddUserForCutting(uid,pid);
log.info("\t> 执行 Service 层 ProjectService.projectAddUserForCutting 方法");
if (userDAO.isExistUser(uid)) {
projectDAO.projectAddUserForCutting(uid, pid);
return ResultUtil.success();
}
return null;
@ -67,6 +75,7 @@ public class ProjectServiceImpl implements ProjectService {
@Override
public BaseResponse getHeader(Integer id) {
log.info("\t> 执行 Service 层 InfoService.getHeader 方法");
ProjectShowDO projectShowDO = projectDAO.getHeader();
if (id != null) {
if (id > projectShowDO.getData().size()) {
@ -81,6 +90,7 @@ public class ProjectServiceImpl implements ProjectService {
@Override
public BaseResponse addHeader(HttpServletRequest request, ProjectShowVO projectShowVO) {
log.info("\t> 执行 Service 层 InfoService.addHeader 方法");
// 用户权限校验
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
@ -110,6 +120,7 @@ public class ProjectServiceImpl implements ProjectService {
@Override
public BaseResponse delHeader(Integer id, HttpServletRequest request) {
log.info("\t> 执行 Service 层 InfoService.delHeader 方法");
// 用户权限校验
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
@ -131,6 +142,7 @@ public class ProjectServiceImpl implements ProjectService {
@Override
public BaseResponse editHeader(HttpServletRequest request, ProjectShowVO projectShowVO, Integer id) {
log.info("\t> 执行 Service 层 InfoService.editHeader 方法");
// 用户权限校验
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
@ -162,14 +174,15 @@ public class ProjectServiceImpl implements ProjectService {
@Override
public BaseResponse get() {
List<ProjectDO> projectDOList =projectDAO.get();
log.info("\t> 执行 Service 层 ProjectService.get 方法");
List<ProjectDO> projectDOList = projectDAO.get();
return ResultUtil.success(projectDOList);
}
@Override
public BaseResponse getByName(String name) {
return projectDAO.getByName(name);
log.info("\t> 执行 Service 层 ProjectService.getByName 方法");
return ResultUtil.success(projectDAO.getByName(name));
}
@Override

View File

@ -12,12 +12,14 @@ import com.jsl.oa.utils.ErrorCode;
import com.jsl.oa.utils.Processing;
import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.regex.Pattern;
@Slf4j
@Service
@RequiredArgsConstructor
public class RoleServiceImpl implements RoleService {
@ -27,6 +29,7 @@ public class RoleServiceImpl implements RoleService {
@Override
public BaseResponse roleAddUser(HttpServletRequest request, Long uid, Long rid) {
log.info("\t> 执行 Service 层 RoleService.roleAddUser 方法");
if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
roleDAO.roleAddUser(uid, rid);
return ResultUtil.success();
@ -35,6 +38,7 @@ public class RoleServiceImpl implements RoleService {
@Override
public BaseResponse roleRemoveUser(HttpServletRequest request, Long uid) {
log.info("\t> 执行 Service 层 RoleService.roleRemoveUser 方法");
if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
roleDAO.roleRemoveUser(uid);
return ResultUtil.success();
@ -43,6 +47,7 @@ public class RoleServiceImpl implements RoleService {
@Override
public BaseResponse roleChangeUser(HttpServletRequest request, Long uid, Long rid) {
log.info("\t> 执行 Service 层 RoleService.roleChangeUser 方法");
//检测用户是否存在
if (!userDAO.isExistUser(uid)) {
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
@ -63,6 +68,7 @@ public class RoleServiceImpl implements RoleService {
@Override
public BaseResponse roleGet(HttpServletRequest request, String id) {
log.info("\t> 执行 Service 层 RoleService.roleGet 方法");
// 检查用户权限
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
@ -87,6 +93,7 @@ public class RoleServiceImpl implements RoleService {
@Override
public BaseResponse roleEdit(HttpServletRequest request, RoleEditVO roleEditVO) {
log.info("\t> 执行 Service 层 RoleService.roleEdit 方法");
// 检查用户权限
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
@ -110,6 +117,7 @@ public class RoleServiceImpl implements RoleService {
@Override
public BaseResponse roleDelete(HttpServletRequest request, Long id) {
log.info("\t> 执行 Service 层 RoleService.roleDelete 方法");
// 检查用户权限
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
@ -131,6 +139,7 @@ public class RoleServiceImpl implements RoleService {
@Override
public BaseResponse addRole(HttpServletRequest request, RoleAddVo roleAddVO) throws ClassCopyException {
log.info("\t> 执行 Service 层 RoleService.addRole 方法");
// 检查用户权限
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);

View File

@ -173,7 +173,7 @@ public class UserServiceImpl implements UserService {
@Override
public BaseResponse userEdit(UserEditVO userEditVO, HttpServletRequest request) {
log.info("> 执行 Service 层 userEdit 方法");
log.info("\t> 执行 Service 层 userEdit 方法");
// 检测用户是否为管理员
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);

View File

@ -11,47 +11,55 @@ public class ResultUtil {
@Contract(" -> new")
public static @NotNull BaseResponse success() {
log.info("成功: Success[200] {}", "操作成功");
log.info("==================================================");
return new BaseResponse("Success", 200, "操作成功", null);
}
@Contract("_ -> new")
public static @NotNull BaseResponse success(String message) {
log.info("成功: Success[200] {}", message);
log.info("==================================================");
return new BaseResponse("Success", 200, message, null);
}
@Contract(value = "_ -> new", pure = true)
public static @NotNull BaseResponse success(Object data) {
log.info("成功: Success[200] {}", "操作成功");
log.info("==================================================");
return new BaseResponse("Success", 200, "操作成功", data);
}
@Contract(value = "_, _ -> new", pure = true)
public static @NotNull BaseResponse success(String message, Object data) {
log.info("成功: Success[200] {}", message);
log.info("==================================================");
return new BaseResponse("Success", 200, message, data);
}
@Contract("_ -> new")
public static @NotNull BaseResponse error(@NotNull ErrorCode errorCode) {
log.warn("失败: 错误码[" + errorCode.getCode() + "] {} - {}", errorCode.getOutput(), errorCode.getMessage());
log.info("==================================================");
return new BaseResponse(errorCode.getOutput(), errorCode.getCode(), errorCode.getMessage());
}
@Contract("_, _ -> new")
public static @NotNull BaseResponse error(@NotNull ErrorCode errorCode, Object data) {
log.warn("失败: 错误码[" + errorCode.getCode() + "] {} - {}", errorCode.getOutput(), errorCode.getMessage());
log.info("==================================================");
return new BaseResponse(errorCode.getOutput(), errorCode.getCode(), errorCode.getMessage(), data);
}
@Contract(value = "_, _, _, _ -> new", pure = true)
public static @NotNull BaseResponse error(String output, Integer code, String message, Object data) {
log.warn("失败: 错误码[" + code + "] {} - {}", output, message);
log.info("==================================================");
return new BaseResponse(output, code, message, data);
}
public static @NotNull ResponseEntity<BaseResponse> error(String output, Integer code, String message) {
log.warn("失败: 错误码[" + code + "] {} - {}", output, message);
log.info("==================================================");
return ResponseEntity.status(code)
.body(new BaseResponse(output, code, message));
}

View File

@ -12,7 +12,7 @@ spring:
port: 6379
password: 123456
profiles:
active: dev
active: test
mybatis:
configuration:
map-underscore-to-camel-case: true