diff --git a/pom.xml b/pom.xml
index ce45c54..6019dae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,6 +56,11 @@
mysql-connector-j
runtime
+
+ cn.hutool
+ hutool-all
+ 5.8.11
+
org.springframework.boot
spring-boot-configuration-processor
diff --git a/src/main/java/top/suyiiyii/sims/common/Result.java b/src/main/java/top/suyiiyii/sims/common/Result.java
new file mode 100644
index 0000000..6303948
--- /dev/null
+++ b/src/main/java/top/suyiiyii/sims/common/Result.java
@@ -0,0 +1,45 @@
+package top.suyiiyii.sims.common;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @Author tortoise
+ * @Date 2024/8/10 21:18
+ * @PackageName:top.suyiiyii.sims.common
+ * @ClassName: Result
+ * @Description: TODO
+ * @Version 1.0
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class Result {
+
+ public static final String CODE_SUCCESS="200";
+ public static final String CODE_AUTH_ERROR="401";
+ public static final String CODE_SYS_ERROR="500";
+ private String code;
+
+ private String msg;
+ private Object data;
+ public static Result success(){
+ return new Result(CODE_SUCCESS,"success",null);
+ }
+ public static Result success(Object data){
+ return new Result(CODE_SUCCESS,"success",data);
+ }
+ public static Result error(String msg) {
+ return new Result(CODE_SYS_ERROR, msg, null);
+ }
+
+ public static Result error(String code,String msg){
+ return new Result(code,msg,null);
+ }
+ public static Result authError(String msg){
+ return new Result(CODE_AUTH_ERROR,"系统错误",null);
+ }
+}
diff --git a/src/main/java/top/suyiiyii/sims/controller/HelloController.java b/src/main/java/top/suyiiyii/sims/controller/HelloController.java
index b9f4c20..9962cad 100644
--- a/src/main/java/top/suyiiyii/sims/controller/HelloController.java
+++ b/src/main/java/top/suyiiyii/sims/controller/HelloController.java
@@ -3,6 +3,7 @@ package top.suyiiyii.sims.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
+import top.suyiiyii.sims.common.Result;
import java.util.List;
@@ -18,5 +19,9 @@ public class HelloController {
List list = List.of(username,age.toString());
return list;
}
+ @GetMapping("/helloResult")
+ public Result healthz() {
+ return Result.success("Hello World");
+ }
}
diff --git a/src/main/java/top/suyiiyii/sims/controller/UserController.java b/src/main/java/top/suyiiyii/sims/controller/UserController.java
new file mode 100644
index 0000000..2f75848
--- /dev/null
+++ b/src/main/java/top/suyiiyii/sims/controller/UserController.java
@@ -0,0 +1,65 @@
+package top.suyiiyii.sims.controller;
+
+import cn.hutool.core.util.StrUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import top.suyiiyii.sims.common.Result;
+import top.suyiiyii.sims.entity.User;
+import top.suyiiyii.sims.exception.ServiceException;
+import top.suyiiyii.sims.service.UserService;
+
+import java.util.List;
+
+
+/**
+ * @Author tortoise
+ * @Date 2024/8/10 22:25
+ * @PackageName:top.suyiiyii.sims.controller
+ * @ClassName: UserController
+ * @Description: TODO
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/user")
+public class UserController {
+ @Autowired
+ UserService userService;
+ @GetMapping("/")
+ public Result hello(){
+
+ return Result.success("success");
+
+ }
+ @PostMapping("/login")
+ public Result login(@RequestBody User user){
+ if(StrUtil.isBlank(user.getUsername())||StrUtil.isBlank(user.getPassword())){
+
+ return Result.error("用户名或密码不能为空");
+ }
+ user =userService.login(user);
+
+
+ return Result.success(user);
+ }
+ @PostMapping("/register")
+ public Result register(@RequestBody User user){
+ if(StrUtil.isBlank(user.getUsername())||StrUtil.isBlank(user.getPassword())){
+
+ return Result.error("用户名或密码不能为空");
+ }
+ if(user.getPassword() == null || user.getPassword().length() < 3) {
+ throw new ServiceException("密码长度不能小于3位");
+ }
+
+ user =userService.register(user);
+
+ return Result.success(user);
+ }
+
+
+ @GetMapping("/selectAll")
+ public Result selectAll() {
+ List users = userService.selectAll();
+ return Result.success(users);
+ }
+}
diff --git a/src/main/java/top/suyiiyii/sims/entity/Attachment.java b/src/main/java/top/suyiiyii/sims/entity/Attachment.java
index 1a3f602..c9606c4 100644
--- a/src/main/java/top/suyiiyii/sims/entity/Attachment.java
+++ b/src/main/java/top/suyiiyii/sims/entity/Attachment.java
@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.tangzc.mpe.autotable.annotation.Table;
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
/**
* @Author tortoise
@@ -16,7 +18,10 @@ import lombok.Data;
*/
@Data
@Table
+@AllArgsConstructor
+@NoArgsConstructor
public class Attachment {
+ @TableId("id")
private Integer id;
private Integer recordId;
// 文件路径
diff --git a/src/main/java/top/suyiiyii/sims/entity/HierarchyRelation.java b/src/main/java/top/suyiiyii/sims/entity/HierarchyRelation.java
index a0f2724..def612c 100644
--- a/src/main/java/top/suyiiyii/sims/entity/HierarchyRelation.java
+++ b/src/main/java/top/suyiiyii/sims/entity/HierarchyRelation.java
@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.tangzc.mpe.autotable.annotation.Table;
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
/**
* @Author tortoise
@@ -16,8 +18,10 @@ import lombok.Data;
*/
@Data
@Table
+@AllArgsConstructor
+@NoArgsConstructor
public class HierarchyRelation {
-
+ @TableId("id")
private Integer id;
// 上级用户ID
diff --git a/src/main/java/top/suyiiyii/sims/entity/Notification.java b/src/main/java/top/suyiiyii/sims/entity/Notification.java
index 402b5b0..d3a5779 100644
--- a/src/main/java/top/suyiiyii/sims/entity/Notification.java
+++ b/src/main/java/top/suyiiyii/sims/entity/Notification.java
@@ -1,7 +1,10 @@
package top.suyiiyii.sims.entity;
+import com.baomidou.mybatisplus.annotation.TableId;
import com.tangzc.mpe.autotable.annotation.Table;
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@@ -15,7 +18,10 @@ import java.time.LocalDateTime;
*/
@Data
@Table
+@AllArgsConstructor
+@NoArgsConstructor
public class Notification {
+ @TableId("id")
private Integer id;
private String title;
private String content;
diff --git a/src/main/java/top/suyiiyii/sims/entity/Permissions.java b/src/main/java/top/suyiiyii/sims/entity/Permissions.java
index 33c19f2..7ac059f 100644
--- a/src/main/java/top/suyiiyii/sims/entity/Permissions.java
+++ b/src/main/java/top/suyiiyii/sims/entity/Permissions.java
@@ -3,7 +3,9 @@ package top.suyiiyii.sims.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.tangzc.mpe.autotable.annotation.Table;
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
/**
* @Author tortoise
@@ -15,8 +17,10 @@ import lombok.Data;
*/
@Data
@Table
+@AllArgsConstructor
+@NoArgsConstructor
public class Permissions {
-
+ @TableId("id")
private Integer id;
//权限id
private Integer permissionId;
diff --git a/src/main/java/top/suyiiyii/sims/entity/RevokeRequest.java b/src/main/java/top/suyiiyii/sims/entity/RevokeRequest.java
index 66b8b34..f72ccc7 100644
--- a/src/main/java/top/suyiiyii/sims/entity/RevokeRequest.java
+++ b/src/main/java/top/suyiiyii/sims/entity/RevokeRequest.java
@@ -1,7 +1,10 @@
package top.suyiiyii.sims.entity;
+import com.baomidou.mybatisplus.annotation.TableId;
import com.tangzc.mpe.autotable.annotation.Table;
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@@ -15,8 +18,10 @@ import java.time.LocalDateTime;
*/
@Data
@Table
+@AllArgsConstructor
+@NoArgsConstructor
public class RevokeRequest {
-
+ @TableId("id")
private Integer id;
private Integer recordId;
private Integer userId;
diff --git a/src/main/java/top/suyiiyii/sims/entity/RevokedRecord.java b/src/main/java/top/suyiiyii/sims/entity/RevokedRecord.java
index 4dc5b2e..1fa6277 100644
--- a/src/main/java/top/suyiiyii/sims/entity/RevokedRecord.java
+++ b/src/main/java/top/suyiiyii/sims/entity/RevokedRecord.java
@@ -1,7 +1,10 @@
package top.suyiiyii.sims.entity;
+import com.baomidou.mybatisplus.annotation.TableId;
import com.tangzc.mpe.autotable.annotation.Table;
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@@ -15,8 +18,10 @@ import java.time.LocalDateTime;
*/
@Data
@Table
+@AllArgsConstructor
+@NoArgsConstructor
public class RevokedRecord {
-
+ @TableId("id")
private Integer id;
// 被撤销的奖惩记录ID
private Integer recordId;
diff --git a/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java b/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java
index 02b052a..8b705f7 100644
--- a/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java
+++ b/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentCategory.java
@@ -3,7 +3,9 @@ package top.suyiiyii.sims.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.tangzc.mpe.autotable.annotation.Table;
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
/**
* @Author tortoise
@@ -15,8 +17,10 @@ import lombok.Data;
*/
@Data
@Table
+@AllArgsConstructor
+@NoArgsConstructor
public class RewardPunishmentCategory {
-
+ @TableId("id")
private Integer id;
private Integer categoryId;
diff --git a/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentRecord.java b/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentRecord.java
index 6081c68..f7ec825 100644
--- a/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentRecord.java
+++ b/src/main/java/top/suyiiyii/sims/entity/RewardPunishmentRecord.java
@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.tangzc.mpe.autotable.annotation.Table;
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@@ -18,8 +20,10 @@ import java.time.LocalDateTime;
*/
@Data
@Table
+@AllArgsConstructor
+@NoArgsConstructor
public class RewardPunishmentRecord {
-
+ @TableId("id")
private Integer id;
// 用户ID
private Integer userId;
diff --git a/src/main/java/top/suyiiyii/sims/entity/Role.java b/src/main/java/top/suyiiyii/sims/entity/Role.java
index 0b1b59f..9c5a4c5 100644
--- a/src/main/java/top/suyiiyii/sims/entity/Role.java
+++ b/src/main/java/top/suyiiyii/sims/entity/Role.java
@@ -3,7 +3,9 @@ package top.suyiiyii.sims.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.tangzc.mpe.autotable.annotation.Table;
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
/**
* @Author tortoise
@@ -15,8 +17,10 @@ import lombok.Data;
*/
@Data
@Table
+@AllArgsConstructor
+@NoArgsConstructor
public class Role {
-
+ @TableId("id")
private Integer id;
private Integer roleId;
//管理员,普通用户,组员,组长,队长
diff --git a/src/main/java/top/suyiiyii/sims/entity/RolePermission.java b/src/main/java/top/suyiiyii/sims/entity/RolePermission.java
index 02b863b..f838187 100644
--- a/src/main/java/top/suyiiyii/sims/entity/RolePermission.java
+++ b/src/main/java/top/suyiiyii/sims/entity/RolePermission.java
@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.tangzc.mpe.autotable.annotation.Table;
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
import java.security.Permission;
@@ -18,8 +20,11 @@ import java.security.Permission;
*/
@Data
@Table
+@AllArgsConstructor
+@NoArgsConstructor
public class RolePermission {
- private Integer rolePermissionId;
+ @TableId("id")
+ private Integer id;
private Integer roleId;
private Integer permissionId;
}
diff --git a/src/main/java/top/suyiiyii/sims/entity/User.java b/src/main/java/top/suyiiyii/sims/entity/User.java
index ab369d2..6bf6cce 100644
--- a/src/main/java/top/suyiiyii/sims/entity/User.java
+++ b/src/main/java/top/suyiiyii/sims/entity/User.java
@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.tangzc.mpe.autotable.annotation.Table;
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
/**
* @Author tortoise
@@ -16,8 +18,10 @@ import lombok.Data;
*/
@Data
@Table
+@AllArgsConstructor
+@NoArgsConstructor
public class User {
-
+ @TableId("id")
private Integer id;
private Integer userId;
private String username;
diff --git a/src/main/java/top/suyiiyii/sims/entity/UserRole.java b/src/main/java/top/suyiiyii/sims/entity/UserRole.java
index 7d82f6d..323df76 100644
--- a/src/main/java/top/suyiiyii/sims/entity/UserRole.java
+++ b/src/main/java/top/suyiiyii/sims/entity/UserRole.java
@@ -3,7 +3,9 @@ package top.suyiiyii.sims.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.tangzc.mpe.autotable.annotation.Table;
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
/**
* @Author tortoise
@@ -15,8 +17,10 @@ import lombok.Data;
*/
@Data
@Table
+@AllArgsConstructor
+@NoArgsConstructor
public class UserRole {
-
+ @TableId("id")
private Integer id;
private Integer userId;
private Integer roleId;
diff --git a/src/main/java/top/suyiiyii/sims/exception/GlobalException.java b/src/main/java/top/suyiiyii/sims/exception/GlobalException.java
new file mode 100644
index 0000000..fc85068
--- /dev/null
+++ b/src/main/java/top/suyiiyii/sims/exception/GlobalException.java
@@ -0,0 +1,23 @@
+package top.suyiiyii.sims.exception;
+
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+import top.suyiiyii.sims.common.Result;
+
+/**
+ * @Author tortoise
+ * @Date 2024/8/11 1:38
+ * @PackageName:top.suyiiyii.sims.exception
+ * @ClassName: GlobalException
+ * @Description: TODO
+ * @Version 1.0
+ */
+@ControllerAdvice
+public class GlobalException {
+ @ExceptionHandler(ServiceException.class)
+ @ResponseBody
+ public Result ServiceException(ServiceException e){
+ return Result.error(e.getCode(),e.getMessage());
+ }
+}
diff --git a/src/main/java/top/suyiiyii/sims/exception/ServiceException.java b/src/main/java/top/suyiiyii/sims/exception/ServiceException.java
new file mode 100644
index 0000000..0b3e6d5
--- /dev/null
+++ b/src/main/java/top/suyiiyii/sims/exception/ServiceException.java
@@ -0,0 +1,25 @@
+package top.suyiiyii.sims.exception;
+
+import lombok.Getter;
+
+/**
+ * @Author tortoise
+ * @Date 2024/8/11 1:38
+ * @PackageName:top.suyiiyii.sims.exception
+ * @ClassName: ServiceException
+ * @Description: TODO
+ * @Version 1.0
+ */
+@Getter
+public class ServiceException extends RuntimeException{
+ public final String code;
+
+ public ServiceException(String msg){
+ super(msg);
+ this.code = "500";
+ }
+ public ServiceException(String code ,String msg){
+ super(msg);
+ this.code = code;
+ }
+}
diff --git a/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java b/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java
new file mode 100644
index 0000000..4c1734e
--- /dev/null
+++ b/src/main/java/top/suyiiyii/sims/mapper/UserMapper.java
@@ -0,0 +1,69 @@
+package top.suyiiyii.sims.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.*;
+import top.suyiiyii.sims.entity.User;
+
+import java.util.List;
+
+/**
+ * @Author tortoise
+ * @Date 2024/8/10 22:21
+ * @PackageName:top.suyiiyii.sims.mapper
+ * @ClassName: UserMapper
+ * @Description: TODO
+ * @Version 1.0
+ */
+@Mapper
+public interface UserMapper extends BaseMapper {
+ /**
+ * 添加新用户
+ * @param user 新用户对象
+ * @return 影响的行数
+ */
+ @Insert("insert INTO users (userId, username, password, name, email, group) " +
+ "VALUES (#{userId}, #{username}, #{password}, #{name}, #{email}, #{group})")
+ int addUser(User user);
+
+ /**
+ * 根据ID删除用户
+ * @param id 用户ID
+ * @return 影响的行数
+ */
+ @Delete("DELETE FROM users WHERE id = #{id}")
+ int deleteUser(Integer id);
+
+ /**
+ * 更新用户信息
+ * @param user 更新后的用户对象
+ * @return 影响的行数
+ */
+ @Update("UPDATE users SET " +
+ "userId = #{userId}, " +
+ "username = #{username}, " +
+ "password = #{password}, " +
+ "name = #{name}, " +
+ "email = #{email}, " +
+ "group = #{group} " +
+ "WHERE id = #{id}")
+ int updateUser(User user);
+
+ /**
+ * 根据ID查询用户信息
+ * @param userId 用户ID
+ * @return 用户对象
+ */
+ @Select("SELECT id, userId, username, password, name, email, group FROM users WHERE userId = #{userId}")
+ User selectByUserId(Integer userId);
+
+ /**
+ * 查询所有用户信息
+ * @return 用户列表
+ */
+ @Select("SELECT id, userId, username, password, name, email, group FROM users")
+ List selectAll();
+
+ @Select("select * from user where username = #{username}")
+ User selectByUserName(@Param("username") String username);
+
+}
diff --git a/src/main/java/top/suyiiyii/sims/service/UserService.java b/src/main/java/top/suyiiyii/sims/service/UserService.java
new file mode 100644
index 0000000..28a0aef
--- /dev/null
+++ b/src/main/java/top/suyiiyii/sims/service/UserService.java
@@ -0,0 +1,87 @@
+package top.suyiiyii.sims.service;
+
+
+
+import jakarta.annotation.Resource;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import top.suyiiyii.sims.entity.User;
+import top.suyiiyii.sims.exception.ServiceException;
+import top.suyiiyii.sims.mapper.UserMapper;
+
+import java.util.List;
+
+/**
+ * @Author tortoise
+ * @Date 2024/8/10 22:22
+ * @PackageName:top.suyiiyii.sims.service
+ * @ClassName: UserService
+ * @Description: TODO
+ * @Version 1.0
+ */
+@Service
+public class UserService {
+ @Autowired
+ UserMapper userMapper;
+
+ public void addUser(User user) {
+ userMapper.addUser(user);
+ }
+
+ public User selectByUserId(int id) {
+ return userMapper.selectByUserId(id);
+ }
+
+ public void updateUser(User user) {
+ userMapper.updateUser(user);
+ }
+
+ public void deleteUser(int id) {
+ userMapper.deleteUser(id);
+ }
+
+ public List selectAll() {
+ return userMapper.selectAll();
+ }
+
+ public User login(User user) {
+ User dbUser = userMapper.selectByUserName(user.getUsername());
+ if (dbUser == null) {
+ throw new ServiceException("账号不存在");
+ }
+ if (!dbUser.getPassword().equals(user.getPassword())) {
+ throw new ServiceException("密码或用户名错误");
+ }
+ return dbUser;
+ }
+
+ public User register(User user) {
+
+ User dbUser = userMapper.selectByUserId(user.getUserId());
+
+ if (user.getUsername() == null || user.getUsername().equals("")) {
+ throw new ServiceException("用户名不能为空");
+ }
+ if (dbUser != null) {
+ throw new ServiceException("账号已经存在");
+ }
+ if (user.getUserId() == null || user.getUserId().equals("")) {
+ throw new ServiceException("用户id不能为空");
+ }
+ if( user.getPassword() == null || user.getPassword().equals("")) {
+ throw new ServiceException("密码不能为空");
+ }
+ if (user.getEmail() == null || user.getEmail().equals("")) {
+ throw new ServiceException("邮箱不能为空");
+ }
+ if (user.getGroup() == null || user.getGroup().equals("")) {
+ throw new ServiceException("组别不能为空");
+ }
+
+ userMapper.addUser(user);
+ return user;
+
+
+ }
+}