From 0a9e8cd8159e543285ab59e5d4da0e9f9511b66f Mon Sep 17 00:00:00 2001 From: bruce Date: Sat, 15 Feb 2025 13:19:36 +0800 Subject: [PATCH] =?UTF-8?q?v0.1.7=20=E5=AE=8C=E6=88=90=E9=AB=98=E6=A0=A1?= =?UTF-8?q?=E9=99=A2=E7=B3=BB=E6=A8=A1=E5=9D=97=E5=90=8E=E7=AB=AF=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E5=AE=8C=E6=88=90=E7=94=A8=E6=88=B7=E4=B8=8E?= =?UTF-8?q?=E9=AB=98=E6=A0=A1=E4=B9=8B=E9=97=B4=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{Constant => constant}/HttpStatus.java | 2 +- .../sams/controller/CollegeController.java | 74 ++++++++++++++++ .../controller/CollegeLeaderController.java | 47 ++++++++++ .../com/bruce/sams/domain/sms/College.java | 88 +++++++++++++++++++ .../bruce/sams/domain/sms/CollegeLeader.java | 73 +++++++++++++++ .../exception/AccountDisabledException.java | 2 +- .../exception/PasswordIncorrectException.java | 2 +- .../sams/exception/UserNotFoundException.java | 2 +- .../sams/mapper/CollegeLeaderMapper.java | 33 +++++++ .../com/bruce/sams/mapper/CollegeMapper.java | 34 +++++++ .../{SysRoleMapper.java => RoleMapper.java} | 2 +- .../{SysUserMapper.java => UserMapper.java} | 2 +- .../com/bruce/sams/service/AuthService.java | 2 +- .../sams/service/CollegeLeaderService.java | 27 ++++++ .../bruce/sams/service/CollegeService.java | 44 ++++++++++ .../sams/service/impl/AuthServiceImpl.java | 8 +- .../impl/CollegeLeaderServiceImpl.java | 88 +++++++++++++++++++ .../sams/service/impl/CollegeServiceImpl.java | 65 ++++++++++++++ .../sams/service/impl/UserServiceImpl.java | 6 +- .../java/com/bruce/sams/utils/AjaxResult.java | 15 +--- .../resources/mapper/CollegeLeaderMapper.xml | 16 ++++ src/main/resources/mapper/CollegeMapper.xml | 18 ++++ .../{SysRoleMapper.xml => RoleMapper.xml} | 2 +- .../{SysUserMapper.xml => UserMapper.xml} | 2 +- 24 files changed, 625 insertions(+), 29 deletions(-) rename src/main/java/com/bruce/sams/{Constant => constant}/HttpStatus.java (98%) create mode 100644 src/main/java/com/bruce/sams/controller/CollegeController.java create mode 100644 src/main/java/com/bruce/sams/controller/CollegeLeaderController.java create mode 100644 src/main/java/com/bruce/sams/domain/sms/College.java create mode 100644 src/main/java/com/bruce/sams/domain/sms/CollegeLeader.java create mode 100644 src/main/java/com/bruce/sams/mapper/CollegeLeaderMapper.java create mode 100644 src/main/java/com/bruce/sams/mapper/CollegeMapper.java rename src/main/java/com/bruce/sams/mapper/{SysRoleMapper.java => RoleMapper.java} (89%) rename src/main/java/com/bruce/sams/mapper/{SysUserMapper.java => UserMapper.java} (92%) create mode 100644 src/main/java/com/bruce/sams/service/CollegeLeaderService.java create mode 100644 src/main/java/com/bruce/sams/service/CollegeService.java create mode 100644 src/main/java/com/bruce/sams/service/impl/CollegeLeaderServiceImpl.java create mode 100644 src/main/java/com/bruce/sams/service/impl/CollegeServiceImpl.java create mode 100644 src/main/resources/mapper/CollegeLeaderMapper.xml create mode 100644 src/main/resources/mapper/CollegeMapper.xml rename src/main/resources/mapper/{SysRoleMapper.xml => RoleMapper.xml} (91%) rename src/main/resources/mapper/{SysUserMapper.xml => UserMapper.xml} (94%) diff --git a/src/main/java/com/bruce/sams/Constant/HttpStatus.java b/src/main/java/com/bruce/sams/constant/HttpStatus.java similarity index 98% rename from src/main/java/com/bruce/sams/Constant/HttpStatus.java rename to src/main/java/com/bruce/sams/constant/HttpStatus.java index 7560e0ef..eb5ac706 100644 --- a/src/main/java/com/bruce/sams/Constant/HttpStatus.java +++ b/src/main/java/com/bruce/sams/constant/HttpStatus.java @@ -1,4 +1,4 @@ -package com.bruce.sams.Constant; +package com.bruce.sams.constant; /** * 返回状态码 diff --git a/src/main/java/com/bruce/sams/controller/CollegeController.java b/src/main/java/com/bruce/sams/controller/CollegeController.java new file mode 100644 index 00000000..188239fc --- /dev/null +++ b/src/main/java/com/bruce/sams/controller/CollegeController.java @@ -0,0 +1,74 @@ +package com.bruce.sams.controller; + +import com.bruce.sams.utils.AjaxResult; +import com.bruce.sams.domain.sms.College; +import com.bruce.sams.service.CollegeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 高校院系管理控制器 + */ +@RestController +@RequestMapping("/api/admin/college") +public class CollegeController { + + @Autowired + private CollegeService collegeService; + + /** + * 获取所有高校 + */ + @GetMapping("/universities") + public AjaxResult getAllUniversities() { + List universities = collegeService.getAllUniversities(); + return AjaxResult.success("查询成功", universities); + } + + /** + * 获取某高校的所有院系 + */ + @GetMapping("/{universityId}/departments") + public AjaxResult getDepartments(@PathVariable Long universityId) { + List departments = collegeService.getDepartmentsByUniversity(universityId); + return AjaxResult.success("查询成功", departments); + } + + /** + * 获取某院系的详细信息 + */ + @GetMapping("/{collegeId}") + public AjaxResult getCollegeById(@PathVariable Long collegeId) { + College college = collegeService.getCollegeById(collegeId); + return college != null ? AjaxResult.success("查询成功", college) : AjaxResult.error("院系不存在"); + } + + /** + * 添加高校或院系 + */ + @PostMapping("/add") + public AjaxResult addCollege(@RequestBody College college) { + collegeService.addCollege(college); + return AjaxResult.success("添加成功"); + } + + /** + * 更新高校或院系信息 + */ + @PutMapping("/update") + public AjaxResult updateCollege(@RequestBody College college) { + collegeService.updateCollege(college); + return AjaxResult.success("更新成功"); + } + + /** + * 删除高校或院系 + */ + @DeleteMapping("/delete/{collegeId}") + public AjaxResult deleteCollege(@PathVariable Long collegeId) { + collegeService.deleteCollege(collegeId); + return AjaxResult.success("删除成功"); + } +} diff --git a/src/main/java/com/bruce/sams/controller/CollegeLeaderController.java b/src/main/java/com/bruce/sams/controller/CollegeLeaderController.java new file mode 100644 index 00000000..16c23c31 --- /dev/null +++ b/src/main/java/com/bruce/sams/controller/CollegeLeaderController.java @@ -0,0 +1,47 @@ +package com.bruce.sams.controller; + +import com.bruce.sams.domain.sms.CollegeLeader; +import com.bruce.sams.service.CollegeLeaderService; +import com.bruce.sams.utils.AjaxResult; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * 高校/院系负责人管理控制器 + */ +@RestController +@RequestMapping("/api/admin/college-leader") +public class CollegeLeaderController { + + @Autowired + private CollegeLeaderService collegeLeaderService; + + /** + * 查询高校/院系负责人 + */ + @GetMapping("/{collegeId}") + public AjaxResult getCollegeLeader(@PathVariable Long collegeId) { + CollegeLeader leader = collegeLeaderService.getCollegeLeader(collegeId); + return leader != null ? AjaxResult.success("查询成功", leader) : AjaxResult.error("未找到负责人"); + } + + /** + * 指派负责人 + */ + @PostMapping("/assign") + public AjaxResult assignLeader(@RequestAttribute Long adminUserId, + @RequestParam Long collegeId, + @RequestParam Long userId) { + collegeLeaderService.assignLeader(collegeId, userId, adminUserId); + return AjaxResult.success("指派成功"); + } + + /** + * 移除负责人 + */ + @DeleteMapping("/remove/{collegeId}") + public AjaxResult removeLeader(@RequestAttribute Long adminUserId, @PathVariable Long collegeId) { + collegeLeaderService.removeLeader(collegeId, adminUserId); + return AjaxResult.success("负责人移除成功"); + } +} \ No newline at end of file diff --git a/src/main/java/com/bruce/sams/domain/sms/College.java b/src/main/java/com/bruce/sams/domain/sms/College.java new file mode 100644 index 00000000..2c53cec3 --- /dev/null +++ b/src/main/java/com/bruce/sams/domain/sms/College.java @@ -0,0 +1,88 @@ +package com.bruce.sams.domain.sms; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.util.Date; +import lombok.Data; + +/** + * 高校及院系表 + * @TableName sms_college + */ +@TableName(value ="sms_college") +@Data +public class College { + /** + * 院系ID + */ + @TableId(type = IdType.AUTO) + private Long collegeId; + + /** + * 名称(高校或院系) + */ + private String collegeName; + + /** + * 父院系ID(高校此值为空) + */ + private Long parentId; + + /** + * 邮箱 + */ + private String email; + + /** + * 创建时间 + */ + private Date createdAt; + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + College other = (College) that; + return (this.getCollegeId() == null ? other.getCollegeId() == null : this.getCollegeId().equals(other.getCollegeId())) + && (this.getCollegeName() == null ? other.getCollegeName() == null : this.getCollegeName().equals(other.getCollegeName())) + && (this.getParentId() == null ? other.getParentId() == null : this.getParentId().equals(other.getParentId())) + && (this.getEmail() == null ? other.getEmail() == null : this.getEmail().equals(other.getEmail())) + && (this.getCreatedAt() == null ? other.getCreatedAt() == null : this.getCreatedAt().equals(other.getCreatedAt())); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getCollegeId() == null) ? 0 : getCollegeId().hashCode()); + result = prime * result + ((getCollegeName() == null) ? 0 : getCollegeName().hashCode()); + result = prime * result + ((getParentId() == null) ? 0 : getParentId().hashCode()); + result = prime * result + ((getEmail() == null) ? 0 : getEmail().hashCode()); + result = prime * result + ((getCreatedAt() == null) ? 0 : getCreatedAt().hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", collegeId=").append(collegeId); + sb.append(", collegeName=").append(collegeName); + sb.append(", parentId=").append(parentId); + sb.append(", email=").append(email); + sb.append(", createdAt=").append(createdAt); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/bruce/sams/domain/sms/CollegeLeader.java b/src/main/java/com/bruce/sams/domain/sms/CollegeLeader.java new file mode 100644 index 00000000..2bea15b2 --- /dev/null +++ b/src/main/java/com/bruce/sams/domain/sms/CollegeLeader.java @@ -0,0 +1,73 @@ +package com.bruce.sams.domain.sms; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.util.Date; +import lombok.Data; + +/** + * 院系负责人表 + * @TableName sms_college_leader + */ +@TableName(value ="sms_college_leader") +@Data +public class CollegeLeader { + /** + * 院系ID + */ + @TableId + private Long collegeId; + + /** + * 负责人ID + */ + @TableId + private Long userId; + + /** + * 指派时间 + */ + private Date assignedAt; + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + CollegeLeader other = (CollegeLeader) that; + return (this.getCollegeId() == null ? other.getCollegeId() == null : this.getCollegeId().equals(other.getCollegeId())) + && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId())) + && (this.getAssignedAt() == null ? other.getAssignedAt() == null : this.getAssignedAt().equals(other.getAssignedAt())); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getCollegeId() == null) ? 0 : getCollegeId().hashCode()); + result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode()); + result = prime * result + ((getAssignedAt() == null) ? 0 : getAssignedAt().hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", collegeId=").append(collegeId); + sb.append(", userId=").append(userId); + sb.append(", assignedAt=").append(assignedAt); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/bruce/sams/exception/AccountDisabledException.java b/src/main/java/com/bruce/sams/exception/AccountDisabledException.java index bb3a5b1a..e855671b 100644 --- a/src/main/java/com/bruce/sams/exception/AccountDisabledException.java +++ b/src/main/java/com/bruce/sams/exception/AccountDisabledException.java @@ -1,6 +1,6 @@ package com.bruce.sams.exception; -import com.bruce.sams.Constant.HttpStatus; +import com.bruce.sams.constant.HttpStatus; /** * 账号被禁用异常 diff --git a/src/main/java/com/bruce/sams/exception/PasswordIncorrectException.java b/src/main/java/com/bruce/sams/exception/PasswordIncorrectException.java index 7d28e6b4..6c18badf 100644 --- a/src/main/java/com/bruce/sams/exception/PasswordIncorrectException.java +++ b/src/main/java/com/bruce/sams/exception/PasswordIncorrectException.java @@ -1,6 +1,6 @@ package com.bruce.sams.exception; -import com.bruce.sams.Constant.HttpStatus; +import com.bruce.sams.constant.HttpStatus; /** * 密码错误异常 diff --git a/src/main/java/com/bruce/sams/exception/UserNotFoundException.java b/src/main/java/com/bruce/sams/exception/UserNotFoundException.java index d7adbf74..379ffaee 100644 --- a/src/main/java/com/bruce/sams/exception/UserNotFoundException.java +++ b/src/main/java/com/bruce/sams/exception/UserNotFoundException.java @@ -1,6 +1,6 @@ package com.bruce.sams.exception; -import com.bruce.sams.Constant.HttpStatus; +import com.bruce.sams.constant.HttpStatus; /** * 用户未找到异常 diff --git a/src/main/java/com/bruce/sams/mapper/CollegeLeaderMapper.java b/src/main/java/com/bruce/sams/mapper/CollegeLeaderMapper.java new file mode 100644 index 00000000..d2197d99 --- /dev/null +++ b/src/main/java/com/bruce/sams/mapper/CollegeLeaderMapper.java @@ -0,0 +1,33 @@ +package com.bruce.sams.mapper; + +import com.bruce.sams.domain.sms.CollegeLeader; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +/** +* @author bruce +* @description 针对表【sms_college_leader(院系负责人表)】的数据库操作Mapper +* @createDate 2025-02-14 14:46:05 +* @Entity com.bruce.sams.domain.sms.CollegeLeader +*/ +@Mapper +public interface CollegeLeaderMapper extends BaseMapper { + /** + * 查询某个高校/院系的负责人 + */ + @Select("SELECT * FROM sms_college_leader WHERE college_id = #{collegeId}") + CollegeLeader findLeaderByCollegeId(Long collegeId); + + /** + * 移除某个高校/院系的负责人 + */ + @Delete("DELETE FROM sms_college_leader WHERE college_id = #{collegeId}") + void removeLeaderByCollegeId(Long collegeId); + +} + + + + diff --git a/src/main/java/com/bruce/sams/mapper/CollegeMapper.java b/src/main/java/com/bruce/sams/mapper/CollegeMapper.java new file mode 100644 index 00000000..45483a3f --- /dev/null +++ b/src/main/java/com/bruce/sams/mapper/CollegeMapper.java @@ -0,0 +1,34 @@ +package com.bruce.sams.mapper; + +import com.bruce.sams.domain.sms.College; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** +* @author bruce +* @description 针对表【sms_college(高校及院系表)】的数据库操作Mapper +* @createDate 2025-02-14 13:18:44 +* @Entity com.bruce.sams.domain.sms.College +*/ +@Mapper +public interface CollegeMapper extends BaseMapper { + /** + * 查询某个高校的所有院系 + */ + @Select("SELECT * FROM sms_college WHERE parent_id = #{collegeId}") + List findDepartmentsByUniversityId(Long collegeId); + + /** + * 获取所有高校 + */ + @Select("SELECT * FROM sms_college WHERE parent_id IS NULL") + List findAllUniversities(); + +} + + + + diff --git a/src/main/java/com/bruce/sams/mapper/SysRoleMapper.java b/src/main/java/com/bruce/sams/mapper/RoleMapper.java similarity index 89% rename from src/main/java/com/bruce/sams/mapper/SysRoleMapper.java rename to src/main/java/com/bruce/sams/mapper/RoleMapper.java index be500a8e..eb205880 100644 --- a/src/main/java/com/bruce/sams/mapper/SysRoleMapper.java +++ b/src/main/java/com/bruce/sams/mapper/RoleMapper.java @@ -12,7 +12,7 @@ import org.apache.ibatis.annotations.Select; * @Entity generator.domain.SysRole */ @Mapper -public interface SysRoleMapper extends BaseMapper { +public interface RoleMapper extends BaseMapper { @Select("SELECT * FROM sys_role WHERE role_id = #{roleId}") Role findByRoleId(Long roleId); diff --git a/src/main/java/com/bruce/sams/mapper/SysUserMapper.java b/src/main/java/com/bruce/sams/mapper/UserMapper.java similarity index 92% rename from src/main/java/com/bruce/sams/mapper/SysUserMapper.java rename to src/main/java/com/bruce/sams/mapper/UserMapper.java index 72bf950a..2caefb0f 100644 --- a/src/main/java/com/bruce/sams/mapper/SysUserMapper.java +++ b/src/main/java/com/bruce/sams/mapper/UserMapper.java @@ -6,7 +6,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @Mapper -public interface SysUserMapper extends BaseMapper { +public interface UserMapper extends BaseMapper { // 通过用户名查询用户 @Select("SELECT * FROM sys_user WHERE user_name = #{identifier}") diff --git a/src/main/java/com/bruce/sams/service/AuthService.java b/src/main/java/com/bruce/sams/service/AuthService.java index be8a5f73..892e512c 100644 --- a/src/main/java/com/bruce/sams/service/AuthService.java +++ b/src/main/java/com/bruce/sams/service/AuthService.java @@ -12,5 +12,5 @@ public interface AuthService { * @param loginRequest 登录请求体(包含 username / schoolId / email + password) * @return JWT 令牌(成功)或 null(失败) */ - public String authenticate(LoginRequest loginRequest); + String authenticate(LoginRequest loginRequest); } diff --git a/src/main/java/com/bruce/sams/service/CollegeLeaderService.java b/src/main/java/com/bruce/sams/service/CollegeLeaderService.java new file mode 100644 index 00000000..6e81decc --- /dev/null +++ b/src/main/java/com/bruce/sams/service/CollegeLeaderService.java @@ -0,0 +1,27 @@ +package com.bruce.sams.service; + +import com.bruce.sams.domain.sms.CollegeLeader; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author bruce +* @description 针对表【sms_college_leader(院系负责人表)】的数据库操作Service +* @createDate 2025-02-14 14:46:05 +*/ +public interface CollegeLeaderService extends IService { + /** + * 查询高校/院系负责人 + */ + CollegeLeader getCollegeLeader(Long collegeId); + + /** + * 指派高校/院系负责人(系统管理员 或 学校管理员) + */ + public void assignLeader(Long collegeId, Long userId, Long adminUserId); + + /** + * 移除负责人 + */ + public void removeLeader(Long collegeId, Long adminUserId); + +} diff --git a/src/main/java/com/bruce/sams/service/CollegeService.java b/src/main/java/com/bruce/sams/service/CollegeService.java new file mode 100644 index 00000000..44561bfb --- /dev/null +++ b/src/main/java/com/bruce/sams/service/CollegeService.java @@ -0,0 +1,44 @@ +package com.bruce.sams.service; + +import com.bruce.sams.domain.sms.College; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** +* @author bruce +* @description 针对表【sms_college(高校及院系表)】的数据库操作Service +* @createDate 2025-02-14 13:18:44 +*/ +public interface CollegeService extends IService { + /** + * 查询所有高校 + */ + public List getAllUniversities(); + + /** + * 查询某高校的所有院系 + */ + public List getDepartmentsByUniversity(Long universityId); + + /** + * 查询院系详情 + */ + public College getCollegeById(Long collegeId); + + /** + * 添加高校或院系 + */ + public void addCollege(College college); + + /** + * 更新高校/院系信息 + */ + public void updateCollege(College college); + + /** + * 删除高校/院系 + */ + public void deleteCollege(Long collegeId); + +} diff --git a/src/main/java/com/bruce/sams/service/impl/AuthServiceImpl.java b/src/main/java/com/bruce/sams/service/impl/AuthServiceImpl.java index 9f29d2fb..2d51418c 100644 --- a/src/main/java/com/bruce/sams/service/impl/AuthServiceImpl.java +++ b/src/main/java/com/bruce/sams/service/impl/AuthServiceImpl.java @@ -5,8 +5,8 @@ import com.bruce.sams.domain.sys.User; import com.bruce.sams.exception.AccountDisabledException; import com.bruce.sams.exception.PasswordIncorrectException; import com.bruce.sams.exception.UserNotFoundException; -import com.bruce.sams.mapper.SysRoleMapper; -import com.bruce.sams.mapper.SysUserMapper; +import com.bruce.sams.mapper.RoleMapper; +import com.bruce.sams.mapper.UserMapper; import com.bruce.sams.service.AuthService; import com.bruce.sams.utils.PasswordUtil; import com.bruce.sams.utils.TokenUtil; @@ -20,10 +20,10 @@ import org.springframework.stereotype.Service; public class AuthServiceImpl implements AuthService { @Autowired - private SysUserMapper userMapper; + private UserMapper userMapper; @Autowired - private SysRoleMapper roleMapper; + private RoleMapper roleMapper; /** * 处理用户认证,支持用户名、学号、邮箱登录 diff --git a/src/main/java/com/bruce/sams/service/impl/CollegeLeaderServiceImpl.java b/src/main/java/com/bruce/sams/service/impl/CollegeLeaderServiceImpl.java new file mode 100644 index 00000000..df7d11e5 --- /dev/null +++ b/src/main/java/com/bruce/sams/service/impl/CollegeLeaderServiceImpl.java @@ -0,0 +1,88 @@ +package com.bruce.sams.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bruce.sams.constant.HttpStatus; +import com.bruce.sams.domain.sms.CollegeLeader; +import com.bruce.sams.domain.sys.User; +import com.bruce.sams.exception.AccountDisabledException; +import com.bruce.sams.exception.CustomException; +import com.bruce.sams.exception.UserNotFoundException; +import com.bruce.sams.mapper.UserMapper; +import com.bruce.sams.service.CollegeLeaderService; +import com.bruce.sams.mapper.CollegeLeaderMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; + +/** +* @author bruce +* @description 针对表【sms_college_leader(院系负责人表)】的数据库操作Service实现 +* @createDate 2025-02-14 14:46:05 +*/ +@Service +public class CollegeLeaderServiceImpl extends ServiceImpl + implements CollegeLeaderService{ + + @Autowired + private CollegeLeaderMapper collegeLeaderMapper; + + @Autowired + private UserMapper userMapper; + + /** + * 查询高校/院系负责人 + */ + public CollegeLeader getCollegeLeader(Long collegeId) { + return collegeLeaderMapper.findLeaderByCollegeId(collegeId); + } + + /** + * 指派高校/院系负责人(系统管理员 或 学校管理员) + */ + public void assignLeader(Long collegeId, Long userId, Long adminUserId) { + // 查询用户是否存在 + User user = userMapper.selectById(userId); + if (user == null) { + throw new UserNotFoundException(); + } + + // 检查是否禁用 + if ("banned".equals(user.getStatus())) { + throw new AccountDisabledException(); + } + + // 检查指派权限(系统管理员只能指派学校管理员,学校管理员只能指派学院管理员) + User adminUser = userMapper.selectById(adminUserId); + if (adminUser == null || adminUser.getRoleId() > 1) { // roleId=0 为系统管理员,roleId=1 为学校管理员 + throw new CustomException(HttpStatus.FORBIDDEN, "无权指派负责人"); + } + + // 如果已存在负责人,先移除 + collegeLeaderMapper.removeLeaderByCollegeId(collegeId); + + // 指派新负责人 + CollegeLeader leader = new CollegeLeader(); + leader.setCollegeId(collegeId); + leader.setUserId(userId); + leader.setAssignedAt(new Date()); + + collegeLeaderMapper.insert(leader); + } + + /** + * 移除负责人 + */ + public void removeLeader(Long collegeId, Long adminUserId) { + User adminUser = userMapper.selectById(adminUserId); + if (adminUser == null || adminUser.getRoleId() > 1) { + throw new CustomException(HttpStatus.FORBIDDEN, "无权移除负责人"); + } + + collegeLeaderMapper.removeLeaderByCollegeId(collegeId); + } +} + + + + diff --git a/src/main/java/com/bruce/sams/service/impl/CollegeServiceImpl.java b/src/main/java/com/bruce/sams/service/impl/CollegeServiceImpl.java new file mode 100644 index 00000000..fd4d6dcf --- /dev/null +++ b/src/main/java/com/bruce/sams/service/impl/CollegeServiceImpl.java @@ -0,0 +1,65 @@ +package com.bruce.sams.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bruce.sams.domain.sms.College; +import com.bruce.sams.service.CollegeService; +import com.bruce.sams.mapper.CollegeMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class CollegeServiceImpl extends ServiceImpl + implements CollegeService{ + + @Autowired + private CollegeMapper collegeMapper; + + /** + * 查询所有高校 + */ + public List getAllUniversities() { + return collegeMapper.findAllUniversities(); + } + + /** + * 查询某高校的所有院系 + */ + public List getDepartmentsByUniversity(Long universityId) { + return collegeMapper.findDepartmentsByUniversityId(universityId); + } + + /** + * 查询院系详情 + */ + public College getCollegeById(Long collegeId) { + return collegeMapper.selectById(collegeId); + } + + /** + * 添加高校或院系 + */ + public void addCollege(College college) { + collegeMapper.insert(college); + } + + /** + * 更新高校/院系信息 + */ + public void updateCollege(College college) { + collegeMapper.updateById(college); + } + + /** + * 删除高校/院系 + */ + public void deleteCollege(Long collegeId) { + collegeMapper.deleteById(collegeId); + } +} + + + + diff --git a/src/main/java/com/bruce/sams/service/impl/UserServiceImpl.java b/src/main/java/com/bruce/sams/service/impl/UserServiceImpl.java index 2f1be5b8..819957f3 100644 --- a/src/main/java/com/bruce/sams/service/impl/UserServiceImpl.java +++ b/src/main/java/com/bruce/sams/service/impl/UserServiceImpl.java @@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bruce.sams.domain.sys.User; import com.bruce.sams.exception.PasswordIncorrectException; import com.bruce.sams.exception.UserNotFoundException; -import com.bruce.sams.mapper.SysUserMapper; +import com.bruce.sams.mapper.UserMapper; import com.bruce.sams.service.UserService; import com.bruce.sams.utils.PasswordUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -14,11 +14,11 @@ import org.springframework.stereotype.Service; import java.util.List; @Service -public class UserServiceImpl extends ServiceImpl +public class UserServiceImpl extends ServiceImpl implements UserService { @Autowired - private SysUserMapper userMapper; + private UserMapper userMapper; /** * 批量导入用户 diff --git a/src/main/java/com/bruce/sams/utils/AjaxResult.java b/src/main/java/com/bruce/sams/utils/AjaxResult.java index 23b9a637..e84638f9 100644 --- a/src/main/java/com/bruce/sams/utils/AjaxResult.java +++ b/src/main/java/com/bruce/sams/utils/AjaxResult.java @@ -1,6 +1,6 @@ package com.bruce.sams.utils; -import com.bruce.sams.Constant.HttpStatus; +import com.bruce.sams.constant.HttpStatus; import java.util.HashMap; import java.util.Objects; @@ -23,19 +23,8 @@ public class AjaxResult extends HashMap /** 数据对象 */ public static final String DATA_TAG = "data"; - /** - * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。 - */ - public AjaxResult() - { - } + public AjaxResult() {} - /** - * 初始化一个新创建的 AjaxResult 对象 - * - * @param code 状态码 - * @param msg 返回内容 - */ public AjaxResult(int code, String msg) { super.put(CODE_TAG, code); diff --git a/src/main/resources/mapper/CollegeLeaderMapper.xml b/src/main/resources/mapper/CollegeLeaderMapper.xml new file mode 100644 index 00000000..cc67deb1 --- /dev/null +++ b/src/main/resources/mapper/CollegeLeaderMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + college_id,user_id,assigned_at + + diff --git a/src/main/resources/mapper/CollegeMapper.xml b/src/main/resources/mapper/CollegeMapper.xml new file mode 100644 index 00000000..534e9c5b --- /dev/null +++ b/src/main/resources/mapper/CollegeMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + college_id,college_name,parent_id,email,created_at + + diff --git a/src/main/resources/mapper/SysRoleMapper.xml b/src/main/resources/mapper/RoleMapper.xml similarity index 91% rename from src/main/resources/mapper/SysRoleMapper.xml rename to src/main/resources/mapper/RoleMapper.xml index 8981fcbd..e5050517 100644 --- a/src/main/resources/mapper/SysRoleMapper.xml +++ b/src/main/resources/mapper/RoleMapper.xml @@ -2,7 +2,7 @@ - + diff --git a/src/main/resources/mapper/SysUserMapper.xml b/src/main/resources/mapper/UserMapper.xml similarity index 94% rename from src/main/resources/mapper/SysUserMapper.xml rename to src/main/resources/mapper/UserMapper.xml index 79b9e154..ee4a5d68 100644 --- a/src/main/resources/mapper/SysUserMapper.xml +++ b/src/main/resources/mapper/UserMapper.xml @@ -2,7 +2,7 @@ - +