1.合并develop_comac分支代码。

This commit is contained in:
sxlong 2024-11-20 17:57:20 +08:00
commit 91e95ee10b
47 changed files with 1526 additions and 306 deletions

View File

@ -0,0 +1,28 @@
package com.electromagnetic.industry.software.data.manage.controller.category;
import com.electromagnetic.industry.software.data.manage.facade.Category.CategoryFacade;
import electromagnetic.data.framework.share.model.ElectromagneticResult;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RequestMapping("/data/ed/category")
@RestController
public class CategoryController {
@Resource
CategoryFacade categoryFacade;
/**
* 目录树查询
*/
@ApiOperation(value = "目录树查询", notes = "")
@RequestMapping(value = "/tree", method = RequestMethod.GET)
public ElectromagneticResult<?> categoryTree() {
return categoryFacade.categoryTree();
}
}

View File

@ -3,11 +3,15 @@
*/ */
package com.electromagnetic.industry.software.data.manage.controller.config; package com.electromagnetic.industry.software.data.manage.controller.config;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.documentation.swagger2.annotations.EnableSwagger2; import springfox.documentation.swagger2.annotations.EnableSwagger2;
import javax.annotation.Resource;
/** /**
* @author * @author
* @version $Id: d.java, v 0.1 2021-01-05 19:33 Exp $$ * @version $Id: d.java, v 0.1 2021-01-05 19:33 Exp $$
@ -15,6 +19,10 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration @Configuration
@EnableSwagger2 @EnableSwagger2
public class WebMvcConfig implements WebMvcConfigurer { public class WebMvcConfig implements WebMvcConfigurer {
@Resource
LoginInterceptor loginInterceptor;
/** /**
* *
* @param registry registry * @param registry registry
@ -28,5 +36,11 @@ public class WebMvcConfig implements WebMvcConfigurer {
.addResourceLocations("classpath:/META-INF/resources/webjars/"); .addResourceLocations("classpath:/META-INF/resources/webjars/");
} }
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/data/ed/user/login");
}
} }

View File

@ -1,15 +1,16 @@
package com.electromagnetic.industry.software.data.manage.controller.user; package com.electromagnetic.industry.software.data.manage.controller.user;
import com.electromagnetic.industry.software.data.manage.facade.user.UserFacade; import com.electromagnetic.industry.software.data.manage.facade.user.UserFacade;
import com.electromagnetic.industry.software.data.manage.request.user.GetSingleUserRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserModiRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserPublishRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserLoginRequest; import com.electromagnetic.industry.software.data.manage.request.user.UserLoginRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserRequest; import com.electromagnetic.industry.software.data.manage.request.user.UserRequest;
import electromagnetic.data.framework.share.result.BaseResult; import electromagnetic.data.framework.share.model.ElectromagneticResult;
import electromagnetic.data.framework.share.result.LoginResult; import com.electromagnetic.industry.software.data.manage.request.user.*;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping; import jdk.internal.org.objectweb.asm.tree.analysis.Value;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -22,14 +23,47 @@ public class UserController {
@ApiOperation(value = "登录", notes = "") @ApiOperation(value = "登录", notes = "")
@PostMapping("/login") @PostMapping("/login")
public LoginResult<?> login(@RequestBody UserLoginRequest loginRequest) { public ElectromagneticResult<?> login(@RequestBody UserLoginRequest loginRequest) {
return userFacade.login(loginRequest); return userFacade.login(loginRequest);
} }
@ApiOperation(value = "新增用户信息", notes = "") @ApiOperation(value = "新增用户信息", notes = "")
@PostMapping @PostMapping("/createUser")
public BaseResult<?> createUser(@RequestBody UserRequest userRequest) { public ElectromagneticResult<?> createUser(@RequestBody UserRequest userRequest) {
return userFacade.createUser(userRequest); return userFacade.createUser(userRequest);
} }
@ApiOperation(value="编辑用户信息",notes = "")
@PutMapping("/updateUser")
public ElectromagneticResult<?> updateUser(@RequestBody UserModiRequest userModiRequest){ return userFacade.modifyUser(userModiRequest);}
@ApiOperation(value = "发布用户信息", notes = "")
@RequestMapping(value = "/publish", method = RequestMethod.POST)
public ElectromagneticResult<?> publishUser(@RequestBody UserPublishRequest userPublishRequest) {
return userFacade.publishUser(userPublishRequest);
}
@ApiOperation(value = "获取单条用户信息", notes = "")
@RequestMapping(value = "/getInfo", method = RequestMethod.GET)
public ElectromagneticResult<?> getSingleUser(GetSingleUserRequest getSingleUserRequest) {
return userFacade.getSingleUser(getSingleUserRequest);
}
@ApiOperation(value = "查询用户信息", notes = "")
@RequestMapping(value = "/list", method = RequestMethod.POST)
public ElectromagneticResult<?> searchUser(@RequestBody SearchUserRequest searchUserRequest) {
return userFacade.searchUser(searchUserRequest);
}
@ApiOperation(value = "校验工号唯一性", notes = "")
@RequestMapping(value = "/validate", method = RequestMethod.POST)
public ElectromagneticResult<?> validateWorkNum(@RequestBody UserWorkNumRequest userWorkNumRequest) {
return userFacade.validateWorkNum(userWorkNumRequest);
}
@ApiOperation(value="删除用户信息",notes="")
@GetMapping(value = "/deleteUser")
public ElectromagneticResult<?> deleteUser(@RequestBody UserDeleteRequest userDeleteRequest) {
return userFacade.deleteUser(userDeleteRequest);
}
} }

View File

@ -1,4 +1,4 @@
#required #required
spring.application.name=electromagnetic-data spring.application.name=electromagnetic-data
# security # security
run.mode=NORMAL run.mode=NORMAL

View File

@ -0,0 +1,82 @@
package com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Data
public class Category implements Serializable {
/**
* 主键ID
*/
private Long id;
/**
* 目录类型ID
*/
private String categoryTypeId;
/**
* 上级编码为空则为一级
*/
private String parentId;
/**
* 目录编码
*/
private String categoryId;
/**
* 目录名称
*/
private String categoryName;
/**
* 目录状态
*/
private String categoryStatus;
/**
* 创建人
*/
private String creator;
/**
* 创建人姓名
*/
private String creatorName;
/**
* 创建时间
*/
private Date gmtCreate;
/**
* 编辑人
*/
private String modifier;
/**
* 编辑人姓名
*/
private String modifierName;
/**
* 编辑时间
*/
private Date gmtModified;
/**
* 是否有效0-无效 1-有效
*/
private int effectFlag;
/**
* 子目录
*/
private List<Category> children = new ArrayList<>();
}

View File

@ -0,0 +1,46 @@
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.interceptor;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.TokenService;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class LoginInterceptor implements HandlerInterceptor {
@Resource
TokenService tokenService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getHeader("Authorization");
if (token==null || !token.startsWith("Bearer ")) {
response.setStatus(401);
return false;
} else {
//token = token.substring(7);
}
boolean result = tokenService.isTokenValid(token.substring(7));
if (!result) {
response.setStatus(401);
return false;
} else {
return true;
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}

View File

@ -1,8 +1,9 @@
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model; package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model;
import cn.hutool.core.date.DateTime;
import lombok.Data; import lombok.Data;
import java.util.Date;
@Data @Data
public class Token { public class Token {
@ -29,10 +30,10 @@ public class Token {
/** /**
* 创建时间 * 创建时间
*/ */
private DateTime createdAt; private Date createdAt;
/** /**
* 过期时间 * 过期时间
*/ */
private DateTime expireAt; private Date expireAt;
} }

View File

@ -0,0 +1,46 @@
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params;
import lombok.Data;
@Data
public class SearchKeyWords {
/**
* 搜索关键词
*/
private String keyWord;
/**
* 用户状态
*/
private String userStatus;
/**
* 用户发布状态
*/
private String isPublished;
/**
* 排序方式: "asc" "desc"
*/
private String gmtCreate;
/**
* 排序方式: "asc" "desc"
*/
private String joinTime;
/**
* 排序方式: "asc" "desc"
*/
private String internEndDate;
/**
* 页码
*/
private int pageIndex;
/**
* 单页条目数量
*/
private int pageSize;
}

View File

@ -0,0 +1,18 @@
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.repository;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model.Category;
import java.util.List;
public interface CategoryRepository {
/**
* 获取顶级节点
*/
List<Category> getTopCategories();
/**
* 获取所有节点
*/
List<Category> getAllCategories();
}

View File

@ -10,4 +10,11 @@ public interface TokenRepository {
* @return * @return
*/ */
int insert(Token token); int insert(Token token);
/**
* 查询令牌
* @param token
* @return
*/
public Token selectToken(String token);
} }

View File

@ -1,6 +1,8 @@
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.repository; package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.repository;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.SearchKeyWords;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
import java.util.List;
public interface UserRepository { public interface UserRepository {
@ -11,10 +13,53 @@ public interface UserRepository {
*/ */
int insert(User user); int insert(User user);
/**
* 用户编辑
* @param user
* @return
*/
int modify(User user);
/**
* 用户发布
* @param userIds
* @return
*/
int publish(List<String> userIds);
/** /**
* 通过工号查询用户 * 通过工号查询用户
* @param workNumber * @param workNumber
* @return * @return
*/ */
User selectUserByWorkNumber(String workNumber); User selectUserByWorkNumber(String workNumber);
/**
* 通过用户编码查询用户
* @param userId
* @return
*/
User getSingleUser(String userId);
/**
* 查询用户
* @param searchKeyWords
* @return
*/
List<User> search(SearchKeyWords searchKeyWords);
/**
* 查询数据总条目数
* @param searchKeywords
* @return
*/
int getTotalCount (SearchKeyWords searchKeywords);
/**
* 删除用户
* @param userId
* @return
*/
int deleteUser(String userId);
} }

View File

@ -0,0 +1,14 @@
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model.Category;
import java.util.List;
public interface CategoryService {
/**
* 构建树结构
*/
public List<Category> buildCategoryTree();
}

View File

@ -1,6 +1,5 @@
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service; package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.Token;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo;
@ -20,4 +19,9 @@ public interface TokenService {
* @return * @return
*/ */
public Boolean createUserToken (User user, String tokenStr); public Boolean createUserToken (User user, String tokenStr);
/**
* 查看token是否有效
*/
public Boolean isTokenValid(String tokenStr);
} }

View File

@ -1,7 +1,9 @@
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service; package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.SearchKeyWords;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo;
import java.util.List;
public interface UserService { public interface UserService {
@ -12,6 +14,20 @@ public interface UserService {
*/ */
Boolean createUser(User user); Boolean createUser(User user);
/**
* 编辑用户
* @param user
* @return
*/
Boolean modifyUser(User user);
/**
* 用户发布
* @param userIds
* @return
*/
Boolean publishUser(List<String> userIds);
/** /**
* 通过工号查询用户 * 通过工号查询用户
* @param workNumber * @param workNumber
@ -26,4 +42,33 @@ public interface UserService {
* @return * @return
*/ */
Boolean matchPassword(User user, String password); Boolean matchPassword(User user, String password);
/**
* 获取单条用户信息
* @param userId
* @return
*/
User getSingleUser(String userId);
/**
* 查询用户信息
* @param searchKeyWords
* @return
*/
List<User> searchUser(SearchKeyWords searchKeyWords);
/**
* 查询数据总条目数
* @param searchKeywords
* @return
*/
int getTotalCount (SearchKeyWords searchKeywords);
/**
* 根据userId逻辑删除用户
* @param userId
* @return
*/
Boolean deleteUser(String userId);
} }

View File

@ -0,0 +1,83 @@
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.impl;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model.Category;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.repository.CategoryRepository;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.CategoryService;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class CategoryServiceImpl implements CategoryService {
@Resource
CategoryRepository categoryRepository;
/**
* 构建树结构
*/
@Override
public List<Category> buildCategoryTree(){
List<Category> categories = categoryRepository.getAllCategories();
List<Category> returnList = new ArrayList<>();
List<String> tempList = categories.stream().map(Category::getCategoryId).collect(Collectors.toList());
for (Category category : categories) {
if (!tempList.contains(category.getParentId())) {
recursionFn(categories, category);
returnList.add(category);
}
}
if (returnList.isEmpty()) {
returnList = categories;
}
return returnList;
}
/**
* 递归列表
* @param list
* @param category
*/
private void recursionFn (List<Category> list, Category category) {
List<Category> childList = getChildList(list, category);
category.setChildren(childList);
for (Category child : childList) {
if (hasChild(list, child)) {
recursionFn(list, child);
}
}
}
/**
* 得到子节点列表
* @param list
* @param category
* @return
*/
private List<Category> getChildList(List<Category> list, Category category) {
List<Category> childList = new ArrayList<>();
Iterator<Category> it = list.iterator();
while (it.hasNext()) {
Category child = it.next();
if (!StringUtils.isEmpty(child.getParentId()) && child.getParentId().equals(category.getCategoryId())) {
childList.add(child);
}
}
return childList;
}
/**
* 判断是否有子节点
* @param list
* @param category
* @return
*/
private boolean hasChild(List<Category> list, Category category) {
return !getChildList(list, category).isEmpty();
}
}

View File

@ -1,6 +1,7 @@
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.impl; package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.impl;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.SystemClock;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.Token; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.Token;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo;
@ -12,6 +13,7 @@ import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
@ -56,4 +58,17 @@ public class TokenServiceImpl implements TokenService {
token.setExpireAt(new DateTime(now()+UserConstant.DEFAULT_EXPIRE_TIME)); token.setExpireAt(new DateTime(now()+UserConstant.DEFAULT_EXPIRE_TIME));
return tokenRepository.insert(token)>0; return tokenRepository.insert(token)>0;
} }
/**
* 查看token是否有效
*/
@Override
public Boolean isTokenValid(String tokenStr){
Token token = tokenRepository.selectToken(tokenStr);
Date now = new Date(SystemClock.now());
if (token != null && now.before(token.getExpireAt())) {
return true;
}
return false;
}
} }

View File

@ -1,15 +1,16 @@
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.impl; package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.impl;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.SearchKeyWords;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.repository.UserRepository; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.repository.UserRepository;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.UserService; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.UserService;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.util.UserConstant;
import electromagnetic.data.framework.share.exception.LoggerConstant; import electromagnetic.data.framework.share.exception.LoggerConstant;
import electromagnetic.data.framework.share.util.SignUtils; import electromagnetic.data.framework.share.util.SignUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
import java.lang.String;
import javax.annotation.Resource; import javax.annotation.Resource;
@Service @Service
@ -30,6 +31,17 @@ public class UserServiceImpl implements UserService {
return userRepository.insert(user)>0; return userRepository.insert(user)>0;
} }
/**
* 编辑用户
*
* @param user
* @return
*/
@Override
public Boolean modifyUser(User user) {
return userRepository.modify(user)>0;
}
/** /**
* 通过工号查询用户 * 通过工号查询用户
* @param workNumber * @param workNumber
@ -48,7 +60,53 @@ public class UserServiceImpl implements UserService {
@Override @Override
public Boolean matchPassword(User user, String password){ public Boolean matchPassword(User user, String password){
String salt = user.getSalt(); String salt = user.getSalt();
String encodePwd = SignUtils.MD5(UserConstant.DEFAULT_PASSWORD+salt); String encodePwd = SignUtils.MD5(password+salt);
return user.getUserPwd().equals(encodePwd); return user.getUserPwd().equals(encodePwd);
} }
/**
* 用户发布
* @param userIds
* @return
*/
@Override
public Boolean publishUser(List<String> userIds) { return userRepository.publish(userIds)>0; }
/**
* 获取单条用户信息
* @param userId
* @return
*/
@Override
public User getSingleUser(String userId) { return userRepository.getSingleUser(userId); }
/**
* 查询用户信息
* @param searchKeyWords
* @return
*/
@Override
public List<User> searchUser(SearchKeyWords searchKeyWords) { return userRepository.search(searchKeyWords); }
/**
* 查询数据总条目数
* @param searchKeywords
* @return
*/
@Override
public int getTotalCount (SearchKeyWords searchKeywords) {
return userRepository.getTotalCount(searchKeywords);
}
/**
* 根据userId逻辑删除用户
*
* @param userId
* @return
*/
@Override
public Boolean deleteUser(String userId) {
return userRepository.deleteUser(userId)>0;
}
} }

View File

@ -71,6 +71,10 @@
<groupId>org.apache.tomcat.embed</groupId> <groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId> <artifactId>tomcat-embed-core</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -1,88 +0,0 @@
package electromagnetic.data.framework.share.result;
import java.io.Serializable;
public class BaseResult<T> implements Serializable{
private static final long serialVersionUID = 1L;
/**
* 请求成功还是失败
*/
private Boolean success;
/**
* 错误码
*/
private String errorCode;
/**
* 错误消息
*/
private String errorMessage;
public BaseResult() {
}
public BaseResult(Boolean success, String errorCode, String errorMessage) {
this.success = success;
this.errorCode = errorCode;
this.errorMessage = errorMessage;
}
/**
* Getter method for property <tt>success</tt>.
*
* @return property value of success
*/
public Boolean getSuccess() {
return success;
}
/**
* Setter method for property <tt>success</tt>.
*
* @param success value to be assigned to property success
*/
public void setSuccess(Boolean success) {
this.success = success;
}
/**
* Getter method for property <tt>errorCode</tt>.
*
* @return property value of errorCode
*/
public String getErrorCode() {
return errorCode;
}
/**
* Setter method for property <tt>errorCode</tt>.
*
* @param errorCode value to be assigned to property errorCode
*/
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
/**
* Getter method for property <tt>errorMsg</tt>.
*
* @return property value of errorMsg
*/
public String getErrorMessage() {
return errorMessage;
}
/**
* Setter method for property <tt>errorMsg</tt>.
*
* @param errorMessage value to be assigned to property errorMsg
*/
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
}

View File

@ -1,100 +0,0 @@
package electromagnetic.data.framework.share.result;
import java.io.Serializable;
public class LoginResult<T> implements Serializable{
private static final long serialVersionUID = 1L;
/**
* 请求成功还是失败
*/
private Boolean success;
/**
* 错误码
*/
private String errorCode;
/**
* 错误消息
*/
private String errorMessage;
/**
* 令牌
*/
private String token;
public LoginResult() {
}
public LoginResult(Boolean success, String errorCode, String errorMessage, String token) {
this.success = success;
this.errorCode = errorCode;
this.errorMessage = errorMessage;
this.token = token;
}
/**
* Getter method for property <tt>success</tt>.
*
* @return property value of success
*/
public Boolean getSuccess() {
return success;
}
/**
* Setter method for property <tt>success</tt>.
*
* @param success value to be assigned to property success
*/
public void setSuccess(Boolean success) {
this.success = success;
}
/**
* Getter method for property <tt>errorCode</tt>.
*
* @return property value of errorCode
*/
public String getErrorCode() {
return errorCode;
}
/**
* Setter method for property <tt>errorCode</tt>.
*
* @param errorCode value to be assigned to property errorCode
*/
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
/**
* Getter method for property <tt>errorMsg</tt>.
*
* @return property value of errorMsg
*/
public String getErrorMessage() {
return errorMessage;
}
/**
* Setter method for property <tt>errorMsg</tt>.
*
* @param errorMessage value to be assigned to property errorMsg
*/
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
}

View File

@ -132,7 +132,7 @@ public class AESUtils {
Security.addProvider(new BouncyCastleProvider()); Security.addProvider(new BouncyCastleProvider());
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
return cipher.doFinal(Base64.decodeBase64(enc)).toString(); return new String(cipher.doFinal(Base64.decodeBase64(enc)));
} catch (NoSuchPaddingException e) { } catch (NoSuchPaddingException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} catch (IllegalBlockSizeException e) { } catch (IllegalBlockSizeException e) {

View File

@ -1,42 +0,0 @@
package electromagnetic.data.framework.share.util;
import electromagnetic.data.framework.share.enums.ErrorEnum;
import electromagnetic.data.framework.share.result.BaseResult;
import electromagnetic.data.framework.share.result.CallbackResult;
/**
* 返回结果转换工具类
*
*/
public class BaseResultUtil {
public static <T> BaseResult<T> convertToResult(CallbackResult<T> callbackResult) {
BaseResult<T> BaseResult = new BaseResult<>();
BaseResult.setSuccess(callbackResult.isSuccess());
BaseResult.setErrorCode(callbackResult.getResultCode());
BaseResult.setErrorMessage(callbackResult.getResultMessage());
return BaseResult;
}
public static <T> BaseResult<T> success(T data){
BaseResult<T> BaseResult = new BaseResult<>();
BaseResult.setSuccess(true);
return BaseResult;
}
public static <T> BaseResult<T> fail(String code , String msg){
BaseResult<T> BaseResult = new BaseResult<>();
BaseResult.setSuccess(false);
BaseResult.setErrorCode(code);
BaseResult.setErrorMessage(msg);
return BaseResult;
}
public static <T> BaseResult fail(ErrorEnum errorEnum){
BaseResult<T> BaseResult = new BaseResult<>();
BaseResult.setSuccess(false);
BaseResult.setErrorCode(errorEnum.getCode());
BaseResult.setErrorMessage(errorEnum.getErrorMessage());
return BaseResult;
}
}

View File

@ -1,39 +0,0 @@
package electromagnetic.data.framework.share.util;
import electromagnetic.data.framework.share.enums.ErrorEnum;
import electromagnetic.data.framework.share.result.CallbackResult;
import electromagnetic.data.framework.share.result.LoginResult;
public class LoginResultUtil {
public static <T> LoginResult<T> convertToResult(CallbackResult<T> callbackResult) {
LoginResult<T> LoginResult = new LoginResult<>();
LoginResult.setSuccess(callbackResult.isSuccess());
LoginResult.setErrorCode(callbackResult.getResultCode());
LoginResult.setErrorMessage(callbackResult.getResultMessage());
return LoginResult;
}
public static <T> LoginResult<T> success(String token){
LoginResult<T> LoginResult = new LoginResult<>();
LoginResult.setSuccess(true);
LoginResult.setToken(token);
return LoginResult;
}
public static <T> LoginResult<T> fail(String code , String msg){
LoginResult<T> LoginResult = new LoginResult<>();
LoginResult.setSuccess(false);
LoginResult.setErrorCode(code);
LoginResult.setErrorMessage(msg);
return LoginResult;
}
public static <T> LoginResult fail(ErrorEnum errorEnum){
LoginResult<T> LoginResult = new LoginResult<>();
LoginResult.setSuccess(false);
LoginResult.setErrorCode(errorEnum.getCode());
LoginResult.setErrorMessage(errorEnum.getErrorMessage());
return LoginResult;
}
}

View File

@ -65,12 +65,12 @@ public enum ElectromagneticErrorEnum implements ErrorEnum {
REPORT_OFF_DESC_NULL(ErrorLevels.ERROR, ErrorTypes.BIZ, "53034", "REPORT_URL_ERROR", "下架原因不能为空"), REPORT_OFF_DESC_NULL(ErrorLevels.ERROR, ErrorTypes.BIZ, "53034", "REPORT_URL_ERROR", "下架原因不能为空"),
REPORT_CANCEL_OFF_DESC_NULL(ErrorLevels.ERROR, ErrorTypes.BIZ, "53035", "REPORT_URL_ERROR", "取消下架原因不能为空"), REPORT_CANCEL_OFF_DESC_NULL(ErrorLevels.ERROR, ErrorTypes.BIZ, "53035", "REPORT_URL_ERROR", "取消下架原因不能为空"),
DEPT_EXIST_REPORT(ErrorLevels.ERROR, ErrorTypes.BIZ, "53036", "DEPT_EXIST_REPORT", "部门下已挂在数据"), DEPT_EXIST_REPORT(ErrorLevels.ERROR, ErrorTypes.BIZ, "53036", "DEPT_EXIST_REPORT", "部门下已挂在数据"),
FINE_CREATE_USER_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53037", "FINE_CREATE_USER_ERROR", "帆软创建用户失败"), FINE_CREATE_USER_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53037", "FINE_CREATE_USER_ERROR", "创建用户失败"),
FINE_CONNECT_LIST_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53038", "FINE_CONNECT_LIST_ERROR", "获取finebi数据库连接列表错误"), FINE_CONNECT_LIST_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53038", "FINE_CONNECT_LIST_ERROR", "获取finebi数据库连接列表错误"),
FINE_CONNECT_TABLE_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53039", "FINE_CONNECT_TABLE_ERROR", "获取finebi数据库对应表列表错误"), FINE_CONNECT_TABLE_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53039", "FINE_CONNECT_TABLE_ERROR", "获取finebi数据库对应表列表错误"),
FINE_ADD_GROUP_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53040", "FINE_ADD_GROUP_ERROR", "添加分组报错"), FINE_ADD_GROUP_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53040", "FINE_ADD_GROUP_ERROR", "添加分组报错"),
FINE_ADD_PACK_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53041", "FINE_ADD_PACK_ERROR", "添加业务包报错"), FINE_ADD_PACK_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53041", "FINE_ADD_PACK_ERROR", "添加业务包报错"),
FINE_DELETE_USER_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53042", "FINE_DELETE_USER_ERROR", "帆软删除用户失败"), FINE_DELETE_USER_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53042", "FINE_DELETE_USER_ERROR", "删除用户失败"),
FINE_ADD_DB_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53043", "FINE_ADD_DB_ERROR", "数据集已存在,请不要重复添加"), FINE_ADD_DB_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53043", "FINE_ADD_DB_ERROR", "数据集已存在,请不要重复添加"),
FINE_GET_TABLE_INFO_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53044", "FINE_GET_TABLE_INFO_ERROR", "数据集表信息错误"), FINE_GET_TABLE_INFO_ERROR(ErrorLevels.ERROR, ErrorTypes.BIZ, "53044", "FINE_GET_TABLE_INFO_ERROR", "数据集表信息错误"),
LABEL_OBJNAME_IS_CHINESE(ErrorLevels.ERROR, ErrorTypes.BIZ, "53045", "LABEL_OSS_ANALYSIS_FAIL", "名称不能包含特殊字符(下划线,横杠,加号 除外)"), LABEL_OBJNAME_IS_CHINESE(ErrorLevels.ERROR, ErrorTypes.BIZ, "53045", "LABEL_OSS_ANALYSIS_FAIL", "名称不能包含特殊字符(下划线,横杠,加号 除外)"),

View File

@ -0,0 +1,12 @@
package com.electromagnetic.industry.software.data.manage.facade.Category;
import java.util.List;
import electromagnetic.data.framework.share.model.ElectromagneticResult;
public interface CategoryFacade {
/**
* 构建树结构
*/
ElectromagneticResult<?> categoryTree();
}

View File

@ -1,9 +1,12 @@
package com.electromagnetic.industry.software.data.manage.facade.user; package com.electromagnetic.industry.software.data.manage.facade.user;
import com.electromagnetic.industry.software.data.manage.request.user.GetSingleUserRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserModiRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserPublishRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserLoginRequest; import com.electromagnetic.industry.software.data.manage.request.user.UserLoginRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserRequest; import com.electromagnetic.industry.software.data.manage.request.user.UserRequest;
import electromagnetic.data.framework.share.result.BaseResult; import electromagnetic.data.framework.share.model.ElectromagneticResult;
import electromagnetic.data.framework.share.result.LoginResult; import com.electromagnetic.industry.software.data.manage.request.user.*;
public interface UserFacade { public interface UserFacade {
@ -12,13 +15,55 @@ public interface UserFacade {
* @param loginRequest * @param loginRequest
* @return * @return
*/ */
LoginResult<?> login(UserLoginRequest loginRequest); ElectromagneticResult<?> login(UserLoginRequest loginRequest);
/** /**
* 新增用户信息 * 新增用户信息
* @param userRequest * @param userRequest
* @return * @return
*/ */
BaseResult<?> createUser(UserRequest userRequest); ElectromagneticResult<?> createUser(UserRequest userRequest);
/**
* 编辑用户信息
* @param userModiRequest
* @return
*/
ElectromagneticResult<?> modifyUser(UserModiRequest userModiRequest);
/**
* 发布用户
* @param userPublishRequest
* @return
*/
ElectromagneticResult<?> publishUser(UserPublishRequest userPublishRequest);
/**
* 校验工号唯一性
* @param workNumberRequest
* @return
*/
ElectromagneticResult<?> validateWorkNum(UserWorkNumRequest workNumberRequest);
/**
* 通过用户编码获取单条用户信息
* @param getSingleUserRequest
* @return
*/
ElectromagneticResult<?> getSingleUser(GetSingleUserRequest getSingleUserRequest);
/**
* 查询用户信息
* @param searchUserRequest
* @return
*/
ElectromagneticResult<?> searchUser(SearchUserRequest searchUserRequest);
/**
* 刪除用戶逻辑删除
* @param userDeleteRequest
* @return
*/
ElectromagneticResult<?> deleteUser(UserDeleteRequest userDeleteRequest);
} }

View File

@ -0,0 +1,18 @@
package com.electromagnetic.industry.software.data.manage.request.user;
import cn.hutool.core.date.DateTime;
import electromagnetic.data.framework.share.model.BaseRequest;
import lombok.Data;
import java.io.Serializable;
@Data
public class GetSingleUserRequest extends BaseRequest implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户编码
*/
private String userId;
}

View File

@ -0,0 +1,53 @@
package com.electromagnetic.industry.software.data.manage.request.user;
import electromagnetic.data.framework.share.model.BaseRequest;
import lombok.Data;
import java.io.Serializable;
@Data
public class SearchUserRequest extends BaseRequest implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 搜索关键词
*/
private String keyWord;
/**
* 用户状态
*/
private String userStatus;
/**
* 用户发布状态1已发布0未发布
*/
private String isPublished;
/**
* 排序方式: "asc" "desc"
*/
private String gmtCreate;
/**
* 排序方式: "asc" "desc"
*/
private String joinTime;
/**
* 排序方式: "asc" "desc"
*/
private String internEndDate;
/**
* 页码
*/
private int pageIndex;
/**
* 单页条目数量
*/
private int pageSize;
}

View File

@ -0,0 +1,20 @@
package com.electromagnetic.industry.software.data.manage.request.user;
import cn.hutool.core.date.DateTime;
import electromagnetic.data.framework.share.model.BaseRequest;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class UserDeleteRequest extends BaseRequest implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户编码
*/
private String userId;
}

View File

@ -0,0 +1,70 @@
package com.electromagnetic.industry.software.data.manage.request.user;
import cn.hutool.core.date.DateTime;
import electromagnetic.data.framework.share.model.BaseRequest;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class UserModiRequest extends BaseRequest implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户Id
*/
private String userId;
/**
* 用户姓名
*/
private String userName;
/**
* 工号
*/
private String workNumber;
/**
* 手机号
*/
private String mobile;
/**
* 所属部门
*/
private String userDept;
/**
* 职称
*/
private String userTitle;
/**
* 入职日期
*/
private DateTime joinTime;
/**
* 工作状态
*/
private String userStatus;
/**
* 实习截止日期
*/
private Date internshipEndDate;
/**
* 创建者
*/
private String modifier;
/**
* 创建者姓名
*/
private String modifierName;
}

View File

@ -0,0 +1,21 @@
package com.electromagnetic.industry.software.data.manage.request.user;
import cn.hutool.core.date.DateTime;
import electromagnetic.data.framework.share.model.BaseRequest;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
public class UserPublishRequest extends BaseRequest implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户编码
*/
private List<String> userIds;
}

View File

@ -0,0 +1,22 @@
package com.electromagnetic.industry.software.data.manage.request.user;
import cn.hutool.core.date.DateTime;
import electromagnetic.data.framework.share.model.BaseRequest;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class UserWorkNumRequest extends BaseRequest implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 工号
*/
private String workNumber;
}

View File

@ -0,0 +1,108 @@
package com.electromagnetic.industry.software.data.manage.response.user;
import lombok.Data;
import java.util.Date;
@Data
public class SingleUserResponse {
private static final long serialVersionUID = -7475233976453471059L;
/**
* 主键ID
*/
private Long id;
/**
* 用户编码
*/
private String userId;
/**
* 用户姓名
*/
private String userName;
/**
* 工号
*/
private String workNumber;
/**
* 手机号
*/
private String mobile;
/**
* 所属部门
*/
private String userDept;
/**
* 职称
*/
private String userTitle;
/**
* 登录密码
*/
private String userPwd;
/**
* 入职日期
*/
private Date joinTime;
/**
* 工作状态
*/
private String userStatus;
/**
* 实习截止日期
*/
private Date internshipEndDate;
/**
* 是否已发布
*/
private Integer isPublished;
/**
*
*/
private String salt;
/**
* 创建人
*/
private String creator;
/**
* 创建人姓名
*/
private String creatorName;
/**
* 创建时间
*/
private Date gmtCreate;
/**
* 更新人
*/
private String modifier;
/**
* 更新人姓名
*/
private String modifierName;
/**
* 更新时间
*/
private Date gmtModified;
/**
* 是否有效:0-无效 1-有效
*/
private Integer effectFlag;
}

View File

@ -0,0 +1,13 @@
package com.electromagnetic.industry.software.data.manage.response.user;
import lombok.Data;
import java.io.Serializable;
@Data
public class UserLoginResponse implements Serializable {
private String token;
private String userId;
}

View File

@ -0,0 +1,31 @@
/**
* Copyright (c) 2004-2024 All Rights Reserved.
*/
package com.electromagnetic.industry.software.data.manage.response.user;
import lombok.Data;
import org.apache.catalina.User;
import java.io.Serializable;
import java.util.List;
/**
* 指标卡详情Reponse
* @author
* @version $Id: IndicatorCardDetail.java, v 0.1 2024-08-14 10:37
*/
@Data
public class UserSearchResponse implements Serializable {
private static final long serialVersionUID = -7475233976453471059L;
/**
* 用户列表
*/
private List<SingleUserResponse> userList;
/**
* 总数据数
*/
private long totalCount;
}

View File

@ -0,0 +1,22 @@
package com.electromagnetic.industry.software.data.manage.repository.dao;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model.Category;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface CategoryMapper {
/**
* 获取顶级节点
* @return
*/
List<Category> selectTopCategories();
/**
* 获取所有节点
* @return
*/
List<Category> selectAllCategories();
}

View File

@ -12,4 +12,11 @@ public interface TokenMapper {
* @return * @return
*/ */
int insert(Token token); int insert(Token token);
/**
* 查询
* @param token
* @return Token
*/
Token selectToken(String token);
} }

View File

@ -1,11 +1,13 @@
package com.electromagnetic.industry.software.data.manage.repository.dao; package com.electromagnetic.industry.software.data.manage.repository.dao;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.SearchKeyWords;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper @Mapper
public interface UserMapper { public interface UserMapper {
/** /**
* 插入 * 插入
* @param user * @param user
@ -13,10 +15,52 @@ public interface UserMapper {
*/ */
int insert(User user); int insert(User user);
/**
* 编辑
* @param user
* @return
*/
int modify(User user);
/**
* 发布
* @param userIds
* @return
*/
int publish(List<String> userIds);
/** /**
* 通过工号查询用户 * 通过工号查询用户
* @param workNumber * @param workNumber
* @return * @return
*/ */
User selectUserByWorkNumber(String workNumber); User selectUserByWorkNumber(String workNumber);
/**
* 通过用户编码查询用户
* @param userId
* @return
*/
User getSingleUser(String userId);
/**
* 通过用户编码查询用户
* @param searchKeywords
* @return
*/
List<User> search(SearchKeyWords searchKeywords);
/**
* 查询数据总条目数
* @param searchKeywords
* @return
*/
int getTotalCount (SearchKeyWords searchKeywords);
/**
* 通过用户ID删除用户
* @param userId
* @return
*/
int deleteUser(String userId);
} }

View File

@ -0,0 +1,33 @@
package com.electromagnetic.industry.software.data.manage.repository.impl;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model.Category;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.repository.CategoryRepository;
import com.electromagnetic.industry.software.data.manage.repository.dao.CategoryMapper;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.util.List;
@Repository
public class CategoryRepositoryImpl implements CategoryRepository {
@Resource
CategoryMapper categoryMapper;
/**
* 获取顶级节点
*/
@Override
public List<Category> getTopCategories(){
return categoryMapper.selectTopCategories();
}
/**
* 获取所有节点
*/
@Override
public List<Category> getAllCategories(){
return categoryMapper.selectAllCategories();
}
}

View File

@ -22,4 +22,12 @@ public class TokenRepositoryImpl implements TokenRepository {
public int insert(Token token){ public int insert(Token token){
return tokenMapper.insert(token); return tokenMapper.insert(token);
} }
/**
* 查询令牌
* @param token
* @return
*/
@Override
public Token selectToken(String token) {return tokenMapper.selectToken(token);}
} }

View File

@ -4,10 +4,12 @@
package com.electromagnetic.industry.software.data.manage.repository.impl; package com.electromagnetic.industry.software.data.manage.repository.impl;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.SearchKeyWords;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.repository.UserRepository; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.repository.UserRepository;
import com.electromagnetic.industry.software.data.manage.repository.dao.UserMapper; import com.electromagnetic.industry.software.data.manage.repository.dao.UserMapper;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -27,6 +29,28 @@ public class UserRepositoryImpl implements UserRepository {
return userMapper.insert(user); return userMapper.insert(user);
} }
/**
* 用户编辑
*
* @param user
* @return
*/
@Override
public int modify(User user) {
return userMapper.modify(user);
}
/**
* 用户发布
*
* @param userIds
* @return
*/
@Override
public int publish(List<String> userIds) {
return userMapper.publish(userIds);
}
/** /**
* 通过工号查询用户 * 通过工号查询用户
* @param workNumber * @param workNumber
@ -36,4 +60,44 @@ public class UserRepositoryImpl implements UserRepository {
public User selectUserByWorkNumber(String workNumber) { public User selectUserByWorkNumber(String workNumber) {
return userMapper.selectUserByWorkNumber(workNumber); return userMapper.selectUserByWorkNumber(workNumber);
} }
/**
* 通过工号查询用户
* @param userId
* @return
*/
@Override
public User getSingleUser(String userId) {
return userMapper.getSingleUser(userId);
}
/**
* 查询用户
* @param searchKeywords
* @return
*/
@Override
public List<User> search(SearchKeyWords searchKeywords) {
return userMapper.search(searchKeywords);
}
/**
* 查询数据总条目数
* @param searchKeywords
* @return
*/
@Override
public int getTotalCount (SearchKeyWords searchKeywords) {return userMapper.getTotalCount(searchKeywords);}
/**
* 删除用户
* @param userId
* @return
*/
@Override
public int deleteUser(String userId) {
return userMapper.deleteUser(userId);
}
} }

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.electromagnetic.industry.software.data.manage.repository.dao.CategoryMapper">
<resultMap id="CategoryResultMap" type="com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model.Category">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="category_type_id" jdbcType="VARCHAR" property="categoryTypeId" />
<result column="parent_id" jdbcType="VARCHAR" property="parentId" />
<result column="category_id" jdbcType="VARCHAR" property="categoryId" />
<result column="category_name" jdbcType="VARCHAR" property="categoryName" />
<result column="category_status" jdbcType="VARCHAR" property="categoryStatus" />
<result column="creator" jdbcType="VARCHAR" property="creator" />
<result column="creator_name" jdbcType="VARCHAR" property="creatorName" />
<result column="gmt_create" jdbcType="TIMESTAMP" property="gmtCreate" />
<result column="modifier" jdbcType="VARCHAR" property="modifier" />
<result column="modifier_name" jdbcType="VARCHAR" property="modifierName" />
<result column="gmt_modified" jdbcType="TIMESTAMP" property="gmtModified" />
<result column="effect_flag" jdbcType="TINYINT" property="effectFlag" />
</resultMap>
<sql id="selectUserVo">
select category_type_id, parent_id, category_id, category_name, category_status,
creator, creator_name, gmt_create, modifier, modifier_name, gmt_modified, effect_flag
from ed_category
</sql>
<select id="selectTopCategories" resultMap="CategoryResultMap">
<include refid="selectUserVo" />
where parent_id = 0 and category_status="available"
</select>
<select id="selectAllCategories" resultMap="CategoryResultMap">
<include refid="selectUserVo" />
where category_status="available"
</select>
</mapper>

View File

@ -10,6 +10,10 @@
<result column="expire_at" jdbcType="TIMESTAMP" property="expireAt" /> <result column="expire_at" jdbcType="TIMESTAMP" property="expireAt" />
</resultMap> </resultMap>
<sql id="selectTokenVo">
select id, user_id, token, is_long_term, created_at, expire_at from tokens
</sql>
<insert id="insert" parameterType="com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.Token"> <insert id="insert" parameterType="com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.Token">
insert into tokens( insert into tokens(
<if test="userId != null and userId !='' ">user_id,</if> <if test="userId != null and userId !='' ">user_id,</if>
@ -26,4 +30,10 @@
<if test="expireAt !=null">#{expireAt}</if> <if test="expireAt !=null">#{expireAt}</if>
) )
</insert> </insert>
<select id="selectToken" parameterType="String" resultMap="TokenResultMap">
<include refid="selectTokenVo" />
where token=#{token}
</select>
</mapper> </mapper>

View File

@ -68,9 +68,134 @@
1 1
) )
</insert> </insert>
<update id="modify" parameterType="com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User">
update ed_users
<set>
<if test="userId != null and userId != ''">user_id = #{userId},</if>
<if test="userName != null and userName != ''">user_name = #{userName},</if>
<if test="workNumber != null and workNumber != ''">work_number = #{workNumber},</if>
<if test="mobile != null and mobile != ''">mobile = #{mobile},</if>
<if test="userDept != null and userDept != ''">user_dept = #{userDept},</if>
<if test="userTitle != null and userTitle != ''">user_title = #{userTitle},</if>
<if test="joinTime != null">join_time = #{joinTime},</if>
<if test="userStatus != null and userStatus != ''">user_status = #{userStatus},</if>
<if test="internshipEndDate != null">internship_end_date = #{internshipEndDate},</if>
<if test="modifier != null and modifier != ''">modifier = #{modifier},</if>
<if test="modifierName != null and modifierName != ''">modifier_name = #{modifierName},</if>
</set>
where id= #{id}
</update>
<select id="selectUserByWorkNumber" parameterType="String" resultMap="UserResultMap">
<update id="publish" parameterType="com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User">
update ed_users
<trim prefix="SET" suffixOverrides=",">
is_published = 1
</trim>
where user_id IN
<foreach collection="userIds" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</update>
<select id="search" parameterType="com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.SearchKeyWords" resultMap="UserResultMap">
SELECT *
FROM ed_users
<where>
<!-- 条件 1按用户名或工号搜索 -->
<if test="keyWord != null and keyWord != ''">
(user_name LIKE CONCAT('%', #{keyWord}, '%') OR work_number LIKE CONCAT('%', #{keyWord}, '%'))
</if>
<!-- 条件 2按用户状态搜索 -->
<if test="userStatus != null and userStatus != ''">
<choose>
<when test="userStatus != 'all'">
AND user_status = #{userStatus}
</when>
</choose>
</if>
<!-- 条件 3按发布状态搜索 -->
<if test="isPublished != null and isPublished != ''">
<choose>
<when test="isPublished != 'all'">
AND is_published = CAST(#{isPublished} AS INT)
</when>
</choose>
</if>
</where>
<!-- 动态排序条件 -->
<choose>
<when test="gmtCreate == 'asc' or gmtCreate == 'desc'">
ORDER BY gmt_create ${gmtCreate}
</when>
<when test="joinTime == 'asc' or joinTime == 'desc'">
ORDER BY join_time ${joinTime}
</when>
<when test="internEndDate == 'asc' or internEndDate == 'desc'">
ORDER BY internship_end_date ${internEndDate}
</when>
</choose>
LIMIT #{pageSize} OFFSET #{pageIndex}
</select>
<select id="getTotalCount" parameterType="com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.SearchKeyWords" resultType="Integer">
SELECT COUNT(*)
FROM ed_users
<where>
<!-- 条件 1按用户名或工号搜索 -->
<if test="keyWord != null and keyWord != ''">
(user_name LIKE CONCAT('%', #{keyWord}, '%') OR work_number LIKE CONCAT('%', #{keyWord}, '%'))
</if>
<!-- 条件 2按用户状态搜索 -->
<if test="userStatus != null and userStatus != ''">
<choose>
<when test="userStatus != 'all'">
AND user_status = #{userStatus}
</when>
</choose>
</if>
<!-- 条件 3按发布状态搜索 -->
<if test="isPublished != null and isPublished != ''">
<choose>
<when test="isPublished != 'all'">
AND is_published = #{isPublished}
</when>
</choose>
</if>
</where>
<!-- 动态排序条件 -->
<choose>
<when test="gmtCreate == 'asc' or gmtCreate == 'desc'">
ORDER BY gmt_create ${gmtCreate}
</when>
<when test="joinTime == 'asc' or joinTime == 'desc'">
ORDER BY join_time ${joinTime}
</when>
<when test="internEndDate == 'asc' or internEndDate == 'desc'">
ORDER BY internship_end_date ${internEndDate}
</when>
</choose>
</select>
<select id="selectUserByWorkNumber" parameterType="String" resultMap="UserResultMap">
<include refid="selectUserVo" /> <include refid="selectUserVo" />
where work_number = #{workNumber} where work_number = #{workNumber}
</select> </select>
<select id="getSingleUser" parameterType="String" resultMap="UserResultMap">
<include refid="selectUserVo" />
where user_id = #{userId}
</select>
<update id="deleteUser" parameterType="String">
update ed_users
set effect_flag=0
where user_id = #{userId}
</update>
</mapper> </mapper>

View File

@ -0,0 +1,26 @@
package com.electromagnetic.industry.software.data.manage.service.facade.user;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model.Category;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.CategoryService;
import com.electromagnetic.industry.software.data.manage.facade.Category.CategoryFacade;
import electromagnetic.data.framework.share.model.ElectromagneticResult;
import electromagnetic.data.framework.share.model.ElectromagneticResultUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class CategoryFacadeImpl implements CategoryFacade {
@Resource
CategoryService categoryService;
/**
* 构建树结构
*/
public ElectromagneticResult<?> categoryTree(){
List<Category> list =categoryService.buildCategoryTree();
return ElectromagneticResultUtil.success(list);
}
}

View File

@ -1,25 +1,33 @@
package com.electromagnetic.industry.software.data.manage.service.facade.user; package com.electromagnetic.industry.software.data.manage.service.facade.user;
import com.electromagnetic.industry.software.data.manage.common.ElectromagneticErrorEnum;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.SearchKeyWords;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.TokenService; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.TokenService;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.UserService; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.UserService;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.util.UserConstant; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.util.UserConstant;
import com.electromagnetic.industry.software.data.manage.facade.user.UserFacade; import com.electromagnetic.industry.software.data.manage.facade.user.UserFacade;
import com.electromagnetic.industry.software.data.manage.request.user.*;
import com.electromagnetic.industry.software.data.manage.request.user.UserModiRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserPublishRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserLoginRequest; import com.electromagnetic.industry.software.data.manage.request.user.UserLoginRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserRequest; import com.electromagnetic.industry.software.data.manage.request.user.UserRequest;
import com.electromagnetic.industry.software.data.manage.response.user.SingleUserResponse;
import com.electromagnetic.industry.software.data.manage.response.user.UserLoginResponse;
import com.electromagnetic.industry.software.data.manage.response.user.UserSearchResponse;
import com.electromagnetic.industry.software.data.manage.service.mappers.UserMappers; import com.electromagnetic.industry.software.data.manage.service.mappers.UserMappers;
import com.github.pagehelper.PageInfo;
import electromagnetic.data.framework.share.id.IdWorker; import electromagnetic.data.framework.share.id.IdWorker;
import electromagnetic.data.framework.share.result.BaseResult; import electromagnetic.data.framework.share.model.ElectromagneticResult;
import electromagnetic.data.framework.share.result.LoginResult; import electromagnetic.data.framework.share.model.ElectromagneticResultUtil;
import electromagnetic.data.framework.share.sign.AESUtils; import electromagnetic.data.framework.share.sign.AESUtils;
import electromagnetic.data.framework.share.util.BaseResultUtil;
import electromagnetic.data.framework.share.util.LoginResultUtil;
import electromagnetic.data.framework.share.util.SignUtils; import electromagnetic.data.framework.share.util.SignUtils;
import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
@Service @Service
public class UserFacadeImpl implements UserFacade { public class UserFacadeImpl implements UserFacade {
@ -35,16 +43,19 @@ public class UserFacadeImpl implements UserFacade {
* @return * @return
*/ */
@Override @Override
public LoginResult<Boolean> login(UserLoginRequest loginRequest) { public ElectromagneticResult<UserLoginResponse> login(UserLoginRequest loginRequest) {
UserLoginInfo info = UserMappers.INSTANCE.getUserLoginRequestToModel(loginRequest); UserLoginInfo info = UserMappers.INSTANCE.getUserLoginRequestToModel(loginRequest);
String decodePwd = AESUtils.decrypt(info.getUserPwd(), UserConstant.SECRET_KEY); String decodePwd = AESUtils.decrypt(info.getUserPwd(), UserConstant.SECRET_KEY);
User user = userService.getUserByWorkNumber(info.getWorkNumber()); User user = userService.getUserByWorkNumber(info.getWorkNumber());
if (user==null || userService.matchPassword(user, decodePwd)) { if ( user!=null && userService.matchPassword(user, decodePwd)) {
String tokenStr = tokenService.createToken(info); String tokenStr = tokenService.createToken(info);
tokenService.createUserToken(user, tokenStr); tokenService.createUserToken(user, tokenStr);
return LoginResultUtil.success(tokenStr); UserLoginResponse userLoginResponse = new UserLoginResponse();
userLoginResponse.setToken(tokenStr);
userLoginResponse.setUserId(user.getUserId());
return ElectromagneticResultUtil.success(userLoginResponse);
} }
return LoginResultUtil.fail("500","用户不存在/密码错误"); return ElectromagneticResultUtil.fail("500","用户不存在/密码错误");
} }
/** /**
@ -53,12 +64,109 @@ public class UserFacadeImpl implements UserFacade {
* @return * @return
*/ */
@Override @Override
public BaseResult<Boolean> createUser(UserRequest userRequest){ public ElectromagneticResult<Boolean> createUser(UserRequest userRequest){
User user = UserMappers.INSTANCE.getUserRequestToModel(userRequest); User user = UserMappers.INSTANCE.getUserRequestToModel(userRequest);
user.setSalt(RandomStringUtils.randomAlphanumeric(16)); user.setSalt(RandomStringUtils.randomAlphanumeric(16));
user.setUserId(IdWorker.getSnowFlakeIdString()); user.setUserId(IdWorker.getSnowFlakeIdString());
user.setUserPwd(SignUtils.MD5(UserConstant.DEFAULT_PASSWORD+user.getSalt())); user.setUserPwd(SignUtils.MD5(UserConstant.DEFAULT_PASSWORD+user.getSalt()));
user.setIsPublished(UserConstant.DEFAULT_PUBLISH_STATUS); user.setIsPublished(UserConstant.DEFAULT_PUBLISH_STATUS);
return BaseResultUtil.success(userService.createUser(user)); return ElectromagneticResultUtil.success(userService.createUser(user));
} }
/**
* 修改用户信息
* @param userModiRequest
* @return
*/
@Override
public ElectromagneticResult<Boolean> modifyUser(UserModiRequest userModiRequest) {
// 将请求对象转换为模型对象
User user = UserMappers.INSTANCE.getUserModiRequestToModel(userModiRequest);
//根据操作结果构建 BaseResult 对象并返回
return ElectromagneticResultUtil.success(userService.modifyUser(user));
}
/**
* 发布用户信息
* @param userPublishRequest
* @return
*/
@Override
public ElectromagneticResult<Boolean> publishUser(UserPublishRequest userPublishRequest){
return ElectromagneticResultUtil.success(userService.publishUser(userPublishRequest.getUserIds()));
}
/**
* 校验工号唯一性
*
* @param userWorkNumRequest
* @return
*/
@Override
public ElectromagneticResult<?> validateWorkNum(UserWorkNumRequest userWorkNumRequest) {
// 将请求对象转换为模型对象
User user = UserMappers.INSTANCE.getUserWorkNumRequestToModel(userWorkNumRequest);
// 尝试根据工号获取用户
User existingUser = userService.getUserByWorkNumber(user.getWorkNumber());
// 根据是否存在具有相同工号的用户来确定工号的唯一性
boolean isWorkNumberUnique = (existingUser == null);
return ElectromagneticResultUtil.success(Boolean.valueOf(isWorkNumberUnique));
}
/**
* 获取单条用户信息
* @param getSingleUserRequest
* @return
*/
@Override
public ElectromagneticResult<SingleUserResponse> getSingleUser(GetSingleUserRequest getSingleUserRequest){
User user = userService.getSingleUser(getSingleUserRequest.getUserId());
SingleUserResponse singleUserResponse = UserMappers.INSTANCE.getSingleUserToResponse(user);
return ElectromagneticResultUtil.success(singleUserResponse);
}
/**
* 查询用户信息
* @param searchUserRequest
* @return
*/
@Override
public ElectromagneticResult<UserSearchResponse> searchUser(SearchUserRequest searchUserRequest){
searchUserRequest.setPageIndex((searchUserRequest.getPageIndex()-1)*searchUserRequest.getPageSize());
SearchKeyWords model = UserMappers.INSTANCE.getSearchKeywordsRequestToModel(searchUserRequest);
List<User> userList = userService.searchUser(model);
int totalCount = userService.getTotalCount(model);
List<SingleUserResponse> singleUserResponseList = UserMappers.INSTANCE.userListToResponseList(userList);
UserSearchResponse userSearchResponse = new UserSearchResponse();
userSearchResponse.setUserList(singleUserResponseList);
userSearchResponse.setTotalCount(totalCount);
return ElectromagneticResultUtil.success(userSearchResponse);
}
/**
* 刪除用戶逻辑删除
* @param userDeleteRequest
* @return
*/
@Override
public ElectromagneticResult<?> deleteUser(UserDeleteRequest userDeleteRequest) {
// 将请求对象转换为模型对象
User user = UserMappers.INSTANCE.getUserDeleteRequestToModel(userDeleteRequest);
// 检查用户是否已经被逻辑删除
User existingUser = userService.getSingleUser(user.getUserId());
if(existingUser != null && existingUser.getEffectFlag()==0){
// 如果用户已经被逻辑删除在这个假设中0 表示已删除则不进行任何操作或返回错误
return ElectromagneticResultUtil.fail(ElectromagneticErrorEnum. FINE_DELETE_USER_ERROR);
}
if(existingUser!=null && existingUser.getEffectFlag()==1){// 在这个假设中1 表示未删除
return ElectromagneticResultUtil.success(userService.deleteUser(user.getUserId()));
}else{
// 如果用户不存在理论上不应该发生除非数据库状态不一致则返回错误
return ElectromagneticResultUtil.fail(ElectromagneticErrorEnum. FINE_DELETE_USER_ERROR);
}
}
} }

View File

@ -3,13 +3,19 @@
*/ */
package com.electromagnetic.industry.software.data.manage.service.mappers; package com.electromagnetic.industry.software.data.manage.service.mappers;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.SearchKeyWords;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
import com.electromagnetic.industry.software.data.manage.request.user.UserModiRequest;
import com.electromagnetic.industry.software.data.manage.request.user.*;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo;
import com.electromagnetic.industry.software.data.manage.request.user.UserLoginRequest; import com.electromagnetic.industry.software.data.manage.request.user.UserLoginRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserRequest; import com.electromagnetic.industry.software.data.manage.request.user.UserRequest;
import com.electromagnetic.industry.software.data.manage.response.user.SingleUserResponse;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import java.util.List;
/** /**
* 用户模型转换 * 用户模型转换
* @author szt * @author szt
@ -31,4 +37,48 @@ public interface UserMappers {
* @return * @return
*/ */
UserLoginInfo getUserLoginRequestToModel(UserLoginRequest loginRequest); UserLoginInfo getUserLoginRequestToModel(UserLoginRequest loginRequest);
/**
* 获取单条用户信息Request转用户模型
* @param user
* @return
*/
SingleUserResponse getSingleUserToResponse(User user);
/**
* 获取单条用户信息Request转用户模型
* @param searchUserRequest
* @return
*/
SearchKeyWords getSearchKeywordsRequestToModel(SearchUserRequest searchUserRequest);
/**
* 获取用户列表转response列表
* @param users
* @return
*/
List<SingleUserResponse> userListToResponseList(List<User> users);
/**
* 编辑用户Request转用户模型
* @param userModiRequest
* @return
*/
User getUserModiRequestToModel(UserModiRequest userModiRequest);
/**
* 校验工号唯一性Request转用户模型
* @param userWorkNumRequest
* @return
*/
User getUserWorkNumRequestToModel(UserWorkNumRequest userWorkNumRequest);
/**
* 删除单条用户信息Request转用户模型
* @param userDeleteRequest
* @return
*/
User getUserDeleteRequestToModel(UserDeleteRequest userDeleteRequest);
} }