diff --git a/src/main/java/xyz/playedu/api/PlayeduApiApplication.java b/src/main/java/xyz/playedu/api/PlayeduApiApplication.java index 1aa297c..a5524a3 100644 --- a/src/main/java/xyz/playedu/api/PlayeduApiApplication.java +++ b/src/main/java/xyz/playedu/api/PlayeduApiApplication.java @@ -2,7 +2,6 @@ package xyz.playedu.api; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.ComponentScan; import org.springframework.scheduling.annotation.EnableAsync; @EnableAsync diff --git a/src/main/java/xyz/playedu/api/checks/AdminPermissionCheck.java b/src/main/java/xyz/playedu/api/checks/AdminPermissionCheck.java new file mode 100644 index 0000000..59e16dc --- /dev/null +++ b/src/main/java/xyz/playedu/api/checks/AdminPermissionCheck.java @@ -0,0 +1,65 @@ +package xyz.playedu.api.checks; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; +import xyz.playedu.api.constant.BPermissionConstant; +import xyz.playedu.api.domain.AdminPermission; +import xyz.playedu.api.service.AdminPermissionService; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +/** + * @Author 杭州白书科技有限公司 + * @create 2023/2/20 14:31 + */ +@Component +public class AdminPermissionCheck implements ApplicationRunner { + + @Autowired + private AdminPermissionService permissionService; + + private final String[][] ACTION_PERMISSIONS = { + {"管理员-查看", BPermissionConstant.ADMIN_USER_INDEX}, + {"管理员-添加", BPermissionConstant.ADMIN_USER_STORE}, + {"管理员-编辑", BPermissionConstant.ADMIN_USER_UPDATE}, + {"管理员-删除", BPermissionConstant.ADMIN_USER_DESTROY}, + + {"部门-查看", BPermissionConstant.DEPARTMENT_INDEX}, + {"部门-添加", BPermissionConstant.DEPARTMENT_STORE}, + {"部门-编辑", BPermissionConstant.DEPARTMENT_UPDATE}, + {"部门-删除", BPermissionConstant.DEPARTMENT_DESTROY}, + }; + + @Override + public void run(ApplicationArguments args) throws Exception { + HashMap slugs = permissionService.allSlugs(); + List list = new ArrayList<>(); + Date now = new Date(); + + for (int i = 0; i < ACTION_PERMISSIONS.length; i++) { + String[] item = ACTION_PERMISSIONS[i]; + if (slugs.get(item[1]) != null) {//已经存在 + continue; + } + AdminPermission permission = new AdminPermission(); + + permission.setName(item[0]); + permission.setSlug(item[1]); + permission.setType("action"); + permission.setCreatedAt(now); + + list.add(permission); + } + + if (list.size() == 0) { + return; + } + + permissionService.saveBatch(list); + } +} diff --git a/src/main/java/xyz/playedu/api/constant/BPermissionConstant.java b/src/main/java/xyz/playedu/api/constant/BPermissionConstant.java new file mode 100644 index 0000000..9a208c1 --- /dev/null +++ b/src/main/java/xyz/playedu/api/constant/BPermissionConstant.java @@ -0,0 +1,19 @@ +package xyz.playedu.api.constant; + +/** + * @Author 杭州白书科技有限公司 + * @create 2023/2/21 14:57 + */ +public class BPermissionConstant { + + public final static String ADMIN_USER_INDEX = "admin-user-index"; + public final static String ADMIN_USER_STORE = "admin-user-store"; + public final static String ADMIN_USER_UPDATE = "admin-user-update"; + public final static String ADMIN_USER_DESTROY = "admin-user-destroy"; + + public final static String DEPARTMENT_INDEX = "department-index"; + public final static String DEPARTMENT_STORE = "department-store"; + public final static String DEPARTMENT_UPDATE = "department-update"; + public final static String DEPARTMENT_DESTROY = "department-destroy"; + +} diff --git a/src/main/java/xyz/playedu/api/controller/backend/AdminPermissionController.java b/src/main/java/xyz/playedu/api/controller/backend/AdminPermissionController.java new file mode 100644 index 0000000..b200670 --- /dev/null +++ b/src/main/java/xyz/playedu/api/controller/backend/AdminPermissionController.java @@ -0,0 +1,30 @@ +package xyz.playedu.api.controller.backend; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import xyz.playedu.api.domain.AdminPermission; +import xyz.playedu.api.service.AdminPermissionService; +import xyz.playedu.api.types.JsonResponse; + +import java.util.List; + +/** + * @Author 杭州白书科技有限公司 + * @create 2023/2/20 14:19 + */ +@RestController +@RequestMapping("/backend/v1/admin-permission") +public class AdminPermissionController { + + @Autowired + private AdminPermissionService adminPermissionService; + + @GetMapping("/index") + public JsonResponse index() { + List data = adminPermissionService.list(); + return JsonResponse.data(data); + } + +} diff --git a/src/main/java/xyz/playedu/api/domain/AdminPermission.java b/src/main/java/xyz/playedu/api/domain/AdminPermission.java new file mode 100644 index 0000000..2ed37b2 --- /dev/null +++ b/src/main/java/xyz/playedu/api/domain/AdminPermission.java @@ -0,0 +1,93 @@ +package xyz.playedu.api.domain; + +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.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * + * @TableName admin_permissions + */ +@TableName(value ="admin_permissions") +@Data +public class AdminPermission implements Serializable { + /** + * + */ + @TableId(type = IdType.AUTO) + private Integer id; + + /** + * 类型[行为:action,数据:data] + */ + private String type; + + /** + * 权限名 + */ + private String name; + + /** + * slug + */ + private String slug; + + /** + * + */ + private Date createdAt; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + AdminPermission other = (AdminPermission) that; + return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId())) + && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType())) + && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName())) + && (this.getSlug() == null ? other.getSlug() == null : this.getSlug().equals(other.getSlug())) + && (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 + ((getId() == null) ? 0 : getId().hashCode()); + result = prime * result + ((getType() == null) ? 0 : getType().hashCode()); + result = prime * result + ((getName() == null) ? 0 : getName().hashCode()); + result = prime * result + ((getSlug() == null) ? 0 : getSlug().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(", id=").append(id); + sb.append(", type=").append(type); + sb.append(", name=").append(name); + sb.append(", slug=").append(slug); + sb.append(", createdAt=").append(createdAt); + sb.append(", serialVersionUID=").append(serialVersionUID); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/xyz/playedu/api/mapper/AdminPermissionMapper.java b/src/main/java/xyz/playedu/api/mapper/AdminPermissionMapper.java new file mode 100644 index 0000000..5a9eb54 --- /dev/null +++ b/src/main/java/xyz/playedu/api/mapper/AdminPermissionMapper.java @@ -0,0 +1,20 @@ +package xyz.playedu.api.mapper; + +import org.apache.ibatis.annotations.Mapper; +import xyz.playedu.api.domain.AdminPermission; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @author tengteng + * @description 针对表【admin_permissions】的数据库操作Mapper + * @createDate 2023-02-20 14:27:50 + * @Entity xyz.playedu.api.domain.AdminPermission + */ +@Mapper +public interface AdminPermissionMapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/xyz/playedu/api/service/AdminPermissionService.java b/src/main/java/xyz/playedu/api/service/AdminPermissionService.java new file mode 100644 index 0000000..82fce9b --- /dev/null +++ b/src/main/java/xyz/playedu/api/service/AdminPermissionService.java @@ -0,0 +1,17 @@ +package xyz.playedu.api.service; + +import xyz.playedu.api.domain.AdminPermission; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.HashMap; + +/** + * @author tengteng + * @description 针对表【admin_permissions】的数据库操作Service + * @createDate 2023-02-20 14:27:50 + */ +public interface AdminPermissionService extends IService { + + HashMap allSlugs(); + +} diff --git a/src/main/java/xyz/playedu/api/service/impl/AdminPermissionServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/AdminPermissionServiceImpl.java new file mode 100644 index 0000000..627c88f --- /dev/null +++ b/src/main/java/xyz/playedu/api/service/impl/AdminPermissionServiceImpl.java @@ -0,0 +1,33 @@ +package xyz.playedu.api.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import xyz.playedu.api.domain.AdminPermission; +import xyz.playedu.api.service.AdminPermissionService; +import xyz.playedu.api.mapper.AdminPermissionMapper; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; + +/** + * @author tengteng + * @description 针对表【admin_permissions】的数据库操作Service实现 + * @createDate 2023-02-20 14:27:50 + */ +@Service +public class AdminPermissionServiceImpl extends ServiceImpl implements AdminPermissionService { + + @Override + public HashMap allSlugs() { + List data = list(); + HashMap map = new HashMap<>(); + for (AdminPermission permission : data) { + map.put(permission.getSlug(), true); + } + return map; + } +} + + + + diff --git a/src/main/resources/mapper/AdminPermissionMapper.xml b/src/main/resources/mapper/AdminPermissionMapper.xml new file mode 100644 index 0000000..b32540f --- /dev/null +++ b/src/main/resources/mapper/AdminPermissionMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + id,type,name, + slug,created_at + +