Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ public class UserController {
UserService userService;
@Autowired
NotifyService notifyService;

@Autowired
BaseApi baseApi;

Expand Down Expand Up @@ -131,5 +130,24 @@ public void downloadLeaseContract(@RequestAttribute int uid, HttpServletResponse
userService.downloadContractFile(uid,response);
}

/**
* @author LiXiaoKang
* @description 新增获取用户权限与所属组信息
* @create 1/10/2020 8:38 PM
*/

/**
* 获取用户权限信息
* @param uid
* @return
*/
@GetMapping("/user/permission")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

加个统一前缀“/api/v2”

public List<String> getPermissions(@RequestAttribute int uid){
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

写一个通用返回类CommonResult,所有返回值都用这个类包裹

return userService.getPermissionNames(uid);
}

@GetMapping("/user/team")
public List<String> getTeams(@RequestAttribute int uid){
return userService.getTeams(uid);
}
}
31 changes: 31 additions & 0 deletions src/main/java/com/softeng/dingtalk/entity/Permission.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.softeng.dingtalk.entity;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
* @author LiXiaoKang
* @description 用户权限类
* @date 02/02/2023
*/
@Getter
@Setter
@Entity
@NoArgsConstructor
@ToString
public class Permission {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;

private String name;

private String description;
}
29 changes: 29 additions & 0 deletions src/main/java/com/softeng/dingtalk/entity/Team.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.softeng.dingtalk.entity;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
* @author LiXiaoKang
* @description 用户组实体类
* @date 02/02/2023
*/
@Getter
@Setter
@Entity
@NoArgsConstructor
@ToString
public class Team {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;

private String name;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

加个描述字段description

}
11 changes: 11 additions & 0 deletions src/main/java/com/softeng/dingtalk/entity/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,17 @@ public class User {
@OneToMany(mappedBy = "user", cascade = CascadeType.REMOVE)
private List<Prize> allPrizes;

/**
* @author LiXiaoKang
* @description todo-用户权限重构
* @date 2/3/2023
*/

/**
* 用户权限id(代替authority)
*/
private int permissionId;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

一个用户可以属于多个权限组,一个权限组有多个权限,用户应该有所属组的所有权限。这里应该是list

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

另:设置一层直接对应数据库表的对象,比如UserPo,PermissionPo,mapper层负责直接增删改查这些对象,repo层调用mapper层读取Po对象,将Po对象转换组装成Entity,提供给service使用,或者将Entity拆散成Po,调用mapper层写入。



public User(String userid, String unionid, String name, String avatar, int authority, Position position) {
this.userid = userid;
Expand Down
31 changes: 31 additions & 0 deletions src/main/java/com/softeng/dingtalk/entity/UserPermission.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.softeng.dingtalk.entity;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;

/**
* @author LiXiaoKang
* @description 用户-用户权限实体类
* @date 02/02/2023
*/
@Getter
@Setter
@Entity
@NoArgsConstructor
@ToString
// 设置联合主键的注解
@IdClass(UserPermissionAssociatePK.class)
public class UserPermission {

@Id
private int userId;

@Id
private int permissionId;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.softeng.dingtalk.entity;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;

/**
* @author LiXiaoKang
* @description 用户-权限实体类的联合主键
* @date 02/02/2023
*/

@Getter
@Setter
@NoArgsConstructor
@ToString
public class UserPermissionAssociatePK implements Serializable {

private int userId;

private int permissionId;

@Override
public boolean equals(Object obj){
if(obj instanceof UserPermissionAssociatePK){
return userId == ((UserPermissionAssociatePK) obj).userId && permissionId == ((UserPermissionAssociatePK) obj).getPermissionId();
}
return false;
}

@Override
public int hashCode(){
return userId+permissionId;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

    • 两边加空格
  1. userId * 10000 + permissionId是不是好一点

}
}
32 changes: 32 additions & 0 deletions src/main/java/com/softeng/dingtalk/entity/UserTeam.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.softeng.dingtalk.entity;


import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;

/**
* @author LiXiaoKang
* @description 用户组实体类
* @date 02/02/2023
*/
@Getter
@Setter
@Entity
@NoArgsConstructor
@ToString
// 设置联合主键的注解
@IdClass(UserTeamAssociatePK.class)
public class UserTeam {

@Id
private int userId;

@Id
private int teamId;
}
38 changes: 38 additions & 0 deletions src/main/java/com/softeng/dingtalk/entity/UserTeamAssociatePK.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.softeng.dingtalk.entity;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;

/**
* @author LiXiaoKang
* @description 用户-用户组实体类的联合主键
* @date 02/02/2023
*/

@Getter
@Setter
@NoArgsConstructor
@ToString
public class UserTeamAssociatePK implements Serializable {

private int userId;

private int teamId;

@Override
public boolean equals(Object obj){
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

代码相似,可以考虑

  1. 抽取代码,使用设计模式设计一下(模版方法啥的)
  2. 我不知道JPA里有联合主键这个概念,有的话可以考虑单独新建一个包,专门放这种类,增加代码可读性

if(obj instanceof UserTeamAssociatePK){
return userId == ((UserTeamAssociatePK) obj).userId && teamId == ((UserTeamAssociatePK) obj).getTeamId();
}
return false;
}

@Override
public int hashCode(){
return userId+teamId;
}
}
9 changes: 8 additions & 1 deletion src/main/java/com/softeng/dingtalk/enums/Position.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,14 @@ public enum Position {
ACADEMIC("学硕"),
PROFESSIONAL("专硕"),
UNDERGRADUATE("本科生"),
OTHER("待定");
OTHER("待定"),

/**
* @author LiXiaoKang
* @description todo-新增职位/学位
* @create 2/4/2023
*/
TEACHER("教师");

private String title;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.softeng.dingtalk.repository;

import com.softeng.dingtalk.entity.Permission;
import org.springframework.stereotype.Repository;

/**
* @author LiXiaoKang
* @description 操作Permission实体类的接口
* @date 2/5/2023
*/

@Repository
public interface PermissionRepository extends CustomizedRepository<Permission, Integer>{

Permission findById(int id);
}
15 changes: 15 additions & 0 deletions src/main/java/com/softeng/dingtalk/repository/TeamRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.softeng.dingtalk.repository;

import com.softeng.dingtalk.entity.Team;
import org.springframework.stereotype.Repository;

/**
* @author LiXiaoKang
* @description 操作Team实体类的接口
* @date 2/5/2023
*/

@Repository
public interface TeamRepository extends CustomizedRepository<Team, Integer>{
Team findById(int id);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.softeng.dingtalk.repository;

import com.softeng.dingtalk.entity.UserPermission;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
* @author LiXiaoKang
* @description 操作UserPermission实体类的接口
* @date 2/5/2023
*/

@Repository
public interface UserPermissionRepository extends CustomizedRepository<UserPermission, UserPermissionRepository>{

/**
* 获取用户的所有权限
* @param userId 用户id
* @return 用户所有权限
*/
List<UserPermission> findAllByUserId(int userId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.softeng.dingtalk.repository;

import com.softeng.dingtalk.entity.UserTeam;
import com.softeng.dingtalk.entity.UserTeamAssociatePK;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
* @author LiXiaoKang
* @description 操作UserTeam实体类的接口
* @date 2/5/2023
*/

@Repository
public interface UserTeamRepository extends CustomizedRepository<UserTeam, UserTeamAssociatePK>{

/**
* 获取用户所在的所有用户组
* @param userId 用户id
* @return 用户所在的所有用户组
*/
List<UserTeam> findAllByUserId(int userId);
}
Loading