|
@@ -22,132 +22,153 @@ import cn.com.qmth.stmms.common.enums.Role;
|
|
|
|
|
|
@Service("privilegeService")
|
|
|
public class PrivilegeServiceImpl extends BaseQueryService<Privilege> implements PrivilegeService {
|
|
|
- private static List<Privilege> privileges = null;
|
|
|
- private static Object lock = new Object();
|
|
|
-
|
|
|
- @PersistenceContext
|
|
|
- private EntityManager entityManager;
|
|
|
- @Autowired
|
|
|
- private PrivilegeDao privilegeDao;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private RoleInfoDao roleInfoDao;
|
|
|
-
|
|
|
- @Override
|
|
|
- public List<Privilege> getMenuPrivileges() {
|
|
|
- if (privileges == null) {
|
|
|
- synchronized (lock) {
|
|
|
- if (privileges == null) {
|
|
|
- privileges = privilegeDao.findByPrivilegeTypeOrderByLevelAscSeqAsc(PrivilegeType.MENU);
|
|
|
- if (privileges == null) {
|
|
|
- privileges = new ArrayList<>();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return privileges;
|
|
|
- }
|
|
|
-
|
|
|
- @Transactional
|
|
|
- @Override
|
|
|
- public void initRoleAndPrivilege(Integer schoolId) {
|
|
|
- List<RoleInfo> ris=new ArrayList<>();
|
|
|
- ris.add(new RoleInfo(schoolId,Role.SYS_ADMIN, Role.SYS_ADMIN.getName(), 1));
|
|
|
- ris.add(new RoleInfo(schoolId,Role.SCHOOL_ADMIN, Role.SCHOOL_ADMIN.getName(), 2));
|
|
|
- ris.add(new RoleInfo(schoolId,Role.SCANNER, Role.SCANNER.getName(), 3));
|
|
|
- ris.add(new RoleInfo(schoolId,Role.SUBJECT_HEADER, Role.SUBJECT_HEADER.getName(), 4));
|
|
|
- ris.add(new RoleInfo(schoolId,Role.MARKER, Role.MARKER.getName(), 5));
|
|
|
- ris.add(new RoleInfo(schoolId,Role.SCHOOL_VIEWER, Role.SCHOOL_VIEWER.getName(), 6));
|
|
|
- ris.add(new RoleInfo(schoolId,Role.SCHOOL_DEV, Role.SCHOOL_DEV.getName(), 7));
|
|
|
- ris.add(new RoleInfo(schoolId,Role.INSPECTOR, Role.INSPECTOR.getName(), 8));
|
|
|
- ris.add(new RoleInfo(schoolId,Role.SCAN_ADMIN, Role.SCAN_ADMIN.getName(), 9));
|
|
|
- ris.add(new RoleInfo(schoolId,Role.COLLEGE_ADMIN, Role.COLLEGE_ADMIN.getName(), 10));
|
|
|
- roleInfoDao.save(ris);
|
|
|
- initSchoolAdminPrivilege(schoolId);
|
|
|
- initSubjectHeaderPrivilege(schoolId);
|
|
|
- initCollegeAdminPrivilege(schoolId);
|
|
|
- initInspectorPrivilege(schoolId);
|
|
|
- initSchoolViewerPrivilege(schoolId);
|
|
|
- }
|
|
|
-
|
|
|
- private void initSchoolAdminPrivilege(Integer schoolId) {
|
|
|
- StringBuilder sql = new StringBuilder();
|
|
|
- sql.append(" INSERT INTO b_role_privilege (`school_id`, `role_code`, `privilege_code`,`enable`) ");
|
|
|
- sql.append(" SELECT s.id,'SCHOOL_ADMIN',p.`code`,1 from b_privilege p join b_school s ");
|
|
|
- sql.append(" where s.id="+schoolId);
|
|
|
- Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
- query.executeUpdate();
|
|
|
- }
|
|
|
-
|
|
|
- private void initSubjectHeaderPrivilege(Integer schoolId) {
|
|
|
- StringBuilder sql = new StringBuilder();
|
|
|
- sql.append("INSERT INTO b_role_privilege (`school_id`, `role_code`, `privilege_code`,`enable`)");
|
|
|
- sql.append(" SELECT s.id,'SUBJECT_HEADER',p.`code`,1 from b_privilege p join b_school s ");
|
|
|
- sql.append(" where p.`code` in(`overview`,'exam_mark','exam_mark-mark','exam_mark-group','exam_mark-marker','exam_mark-trial','exam_mark-library'");;
|
|
|
- sql.append(" ,'exam_mark-library-inspect','exam_mark-library-reject','exam_mark-arbitrate','exam_mark-quality','exam_reject_list'");
|
|
|
- sql.append(" ,'exam_reject_list-paper','exam_reject_list-history','exam_problem_history','exam_problem_history-reset'");
|
|
|
- sql.append(" ,'exam_problem_history-batch_reset'");
|
|
|
- sql.append(" ,'exam_inspected_info','exam_inspected_info-info','exam_inspected_info-list','exam_inspected_info-next_round'");
|
|
|
- sql.append(" ,'exam_score','exam_score-export','exam_report_subject','exam_report_subject-total','exam_report_subject-range','exam_report_subject-college',"
|
|
|
- + "'exam_report_subject-teacher','exam_report_subject-class'"
|
|
|
- + ",'exam_report_subject-objective_question','exam_report_subject-subjective_question','exam_report_subject-group')");
|
|
|
- sql.append(" and s.id="+schoolId);
|
|
|
- Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
- query.executeUpdate();
|
|
|
-
|
|
|
- sql = new StringBuilder();
|
|
|
- sql.append("INSERT INTO b_role_privilege (`school_id`, `role_code`, `privilege_code`,`enable`)");
|
|
|
- sql.append(" SELECT s.id,'SUBJECT_HEADER',p.`code`,0 from b_privilege p join b_school s ");
|
|
|
- sql.append(" where p.`code` in('exam_mark-group-add','exam_mark-group-edit','exam_mark-group-reset_edit','exam_mark-group-delete')");
|
|
|
- sql.append(" and s.id="+schoolId);
|
|
|
- query = entityManager.createNativeQuery(sql.toString());
|
|
|
- query.executeUpdate();
|
|
|
- }
|
|
|
- private void initCollegeAdminPrivilege(Integer schoolId) {
|
|
|
- StringBuilder sql = new StringBuilder();
|
|
|
- sql.append("INSERT INTO b_role_privilege (`school_id`, `role_code`, `privilege_code`,`enable`)");
|
|
|
- sql.append(" SELECT s.id,'COLLEGE_ADMIN',p.`code`,1 from b_privilege p join b_school s ");
|
|
|
- sql.append(" where p.`code` in(`overview`,'exam_mark','exam_mark-mark','exam_mark-group','exam_mark-marker','exam_mark-trial','exam_mark-library'");
|
|
|
- sql.append(" ,'exam_mark-library-inspect','exam_mark-library-reject','exam_mark-arbitrate','exam_mark-quality','exam_reject_list'");
|
|
|
- sql.append(" ,'exam_reject_list-paper','exam_reject_list-history','exam_problem_history','exam_problem_history-reset'");
|
|
|
- sql.append(" ,'exam_problem_history-batch_reset'");
|
|
|
- sql.append(" ,'exam_inspected_info','exam_inspected_info-info','exam_inspected_info-list','exam_inspected_info-next_round'");
|
|
|
- sql.append(" ,'exam_score','exam_score-export','exam_report_subject','exam_report_subject-total','exam_report_subject-range','exam_report_subject-college',"
|
|
|
- + "'exam_report_subject-teacher','exam_report_subject-class'"
|
|
|
- + ",'exam_report_subject-objective_question','exam_report_subject-subjective_question','exam_report_subject-group')");
|
|
|
- sql.append(" and s.id="+schoolId);
|
|
|
- Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
- query.executeUpdate();
|
|
|
-
|
|
|
- sql = new StringBuilder();
|
|
|
- sql.append("INSERT INTO b_role_privilege (`school_id`, `role_code`, `privilege_code`,`enable`)");
|
|
|
- sql.append(" SELECT s.id,'COLLEGE_ADMIN',p.`code`,0 from b_privilege p join b_school s ");
|
|
|
- sql.append(" where p.`code` in('exam_mark-group-add','exam_mark-group-edit','exam_mark-group-reset_edit','exam_mark-group-delete')");
|
|
|
- sql.append(" and s.id="+schoolId);
|
|
|
- query = entityManager.createNativeQuery(sql.toString());
|
|
|
- query.executeUpdate();
|
|
|
- }
|
|
|
- private void initInspectorPrivilege(Integer schoolId) {
|
|
|
- StringBuilder sql = new StringBuilder();
|
|
|
- sql.append(" INSERT INTO b_role_privilege (`school_id`, `role_code`, `privilege_code`,`enable`)");
|
|
|
- sql.append(" SELECT s.id,'INSPECTOR',p.`code`,1 from b_privilege p join b_school s ");
|
|
|
- sql.append(" where p.`code` in('exam_inspected_info','exam_inspected_info-info','exam_inspected_info-list','exam_inspected_info-next_round')");
|
|
|
- sql.append(" and s.id="+schoolId);
|
|
|
- Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
- query.executeUpdate();
|
|
|
- }
|
|
|
- private void initSchoolViewerPrivilege(Integer schoolId) {
|
|
|
- StringBuilder sql = new StringBuilder();
|
|
|
- sql.append(" INSERT INTO b_role_privilege (`school_id`, `role_code`, `privilege_code`,`enable`)");
|
|
|
- sql.append(" SELECT s.id,'SCHOOL_VIEWER',p.`code`,1 from b_privilege p join b_school s ");
|
|
|
- sql.append(" where p.`code` in('exam_score','exam_report_subject','exam_report_subject-total','operation_log')");
|
|
|
- sql.append(" and s.id="+schoolId);
|
|
|
- Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
- query.executeUpdate();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public List<Privilege> getPagePrivilegesByParentCode(String parentCode) {
|
|
|
- return privilegeDao.findByPrivilegeTypeAndParentCodeOrderBySeqAsc(PrivilegeType.PAGE,parentCode);
|
|
|
- }
|
|
|
+
|
|
|
+ private static List<Privilege> privileges = null;
|
|
|
+
|
|
|
+ private static Object lock = new Object();
|
|
|
+
|
|
|
+ @PersistenceContext
|
|
|
+ private EntityManager entityManager;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PrivilegeDao privilegeDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RoleInfoDao roleInfoDao;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Privilege> getMenuPrivileges() {
|
|
|
+ if (privileges == null) {
|
|
|
+ synchronized (lock) {
|
|
|
+ if (privileges == null) {
|
|
|
+ privileges = privilegeDao.findByPrivilegeTypeOrderByLevelAscSeqAsc(PrivilegeType.MENU);
|
|
|
+ if (privileges == null) {
|
|
|
+ privileges = new ArrayList<>();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return privileges;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public void initRoleAndPrivilege(Integer schoolId) {
|
|
|
+ List<RoleInfo> ris = new ArrayList<>();
|
|
|
+ ris.add(new RoleInfo(schoolId, Role.SYS_ADMIN, Role.SYS_ADMIN.getName(), 1));
|
|
|
+ ris.add(new RoleInfo(schoolId, Role.SCHOOL_ADMIN, Role.SCHOOL_ADMIN.getName(), 2));
|
|
|
+ ris.add(new RoleInfo(schoolId, Role.SCANNER, Role.SCANNER.getName(), 3));
|
|
|
+ ris.add(new RoleInfo(schoolId, Role.SUBJECT_HEADER, Role.SUBJECT_HEADER.getName(), 4));
|
|
|
+ ris.add(new RoleInfo(schoolId, Role.MARKER, Role.MARKER.getName(), 5));
|
|
|
+ ris.add(new RoleInfo(schoolId, Role.SCHOOL_VIEWER, Role.SCHOOL_VIEWER.getName(), 6));
|
|
|
+ ris.add(new RoleInfo(schoolId, Role.SCHOOL_DEV, Role.SCHOOL_DEV.getName(), 7));
|
|
|
+ ris.add(new RoleInfo(schoolId, Role.INSPECTOR, Role.INSPECTOR.getName(), 8));
|
|
|
+ ris.add(new RoleInfo(schoolId, Role.SCAN_ADMIN, Role.SCAN_ADMIN.getName(), 9));
|
|
|
+ ris.add(new RoleInfo(schoolId, Role.COLLEGE_ADMIN, Role.COLLEGE_ADMIN.getName(), 10));
|
|
|
+ roleInfoDao.save(ris);
|
|
|
+ initSchoolAdminPrivilege(schoolId);
|
|
|
+ initSubjectHeaderPrivilege(schoolId);
|
|
|
+ initCollegeAdminPrivilege(schoolId);
|
|
|
+ initInspectorPrivilege(schoolId);
|
|
|
+ initSchoolViewerPrivilege(schoolId);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initSchoolAdminPrivilege(Integer schoolId) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append(" INSERT INTO b_role_privilege (`school_id`, `role_code`, `privilege_code`,`enable`) ");
|
|
|
+ sql.append(" SELECT s.id,'SCHOOL_ADMIN',p.`code`,1 from b_privilege p join b_school s ");
|
|
|
+ sql.append(" where s.id=" + schoolId);
|
|
|
+ Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
+ query.executeUpdate();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initSubjectHeaderPrivilege(Integer schoolId) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append("INSERT INTO b_role_privilege (`school_id`, `role_code`, `privilege_code`,`enable`)");
|
|
|
+ sql.append(" SELECT s.id,'SUBJECT_HEADER',p.`code`,1 from b_privilege p join b_school s ");
|
|
|
+ sql.append(
|
|
|
+ " where p.`code` in('overview','exam_mark','exam_mark-mark','exam_mark-group','exam_mark-marker','exam_mark-trial','exam_mark-library'");
|
|
|
+ ;
|
|
|
+ sql.append(
|
|
|
+ " ,'exam_mark-library-inspect','exam_mark-library-reject','exam_mark-arbitrate','exam_mark-quality','exam_reject_list'");
|
|
|
+ sql.append(
|
|
|
+ " ,'exam_reject_list-paper','exam_reject_list-history','exam_problem_history','exam_problem_history-reset'");
|
|
|
+ sql.append(" ,'exam_problem_history-batch_reset'");
|
|
|
+ sql.append(
|
|
|
+ " ,'exam_inspected_info','exam_inspected_info-info','exam_inspected_info-list','exam_inspected_info-next_round'");
|
|
|
+ sql.append(
|
|
|
+ " ,'exam_score','exam_score-export','exam_report_subject','exam_report_subject-total','exam_report_subject-range','exam_report_subject-college',"
|
|
|
+ + "'exam_report_subject-teacher','exam_report_subject-class'"
|
|
|
+ + ",'exam_report_subject-objective_question','exam_report_subject-subjective_question','exam_report_subject-group')");
|
|
|
+ sql.append(" and s.id=" + schoolId);
|
|
|
+ Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
+ query.executeUpdate();
|
|
|
+
|
|
|
+ sql = new StringBuilder();
|
|
|
+ sql.append("INSERT INTO b_role_privilege (`school_id`, `role_code`, `privilege_code`,`enable`)");
|
|
|
+ sql.append(" SELECT s.id,'SUBJECT_HEADER',p.`code`,0 from b_privilege p join b_school s ");
|
|
|
+ sql.append(
|
|
|
+ " where p.`code` in('exam_mark-group-add','exam_mark-group-edit','exam_mark-group-reset_edit','exam_mark-group-delete')");
|
|
|
+ sql.append(" and s.id=" + schoolId);
|
|
|
+ query = entityManager.createNativeQuery(sql.toString());
|
|
|
+ query.executeUpdate();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initCollegeAdminPrivilege(Integer schoolId) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append("INSERT INTO b_role_privilege (`school_id`, `role_code`, `privilege_code`,`enable`)");
|
|
|
+ sql.append(" SELECT s.id,'COLLEGE_ADMIN',p.`code`,1 from b_privilege p join b_school s ");
|
|
|
+ sql.append(
|
|
|
+ " where p.`code` in('overview','exam_mark','exam_mark-mark','exam_mark-group','exam_mark-marker','exam_mark-trial','exam_mark-library'");
|
|
|
+ sql.append(
|
|
|
+ " ,'exam_mark-library-inspect','exam_mark-library-reject','exam_mark-arbitrate','exam_mark-quality','exam_reject_list'");
|
|
|
+ sql.append(
|
|
|
+ " ,'exam_reject_list-paper','exam_reject_list-history','exam_problem_history','exam_problem_history-reset'");
|
|
|
+ sql.append(" ,'exam_problem_history-batch_reset'");
|
|
|
+ sql.append(
|
|
|
+ " ,'exam_inspected_info','exam_inspected_info-info','exam_inspected_info-list','exam_inspected_info-next_round'");
|
|
|
+ sql.append(
|
|
|
+ " ,'exam_score','exam_score-export','exam_report_subject','exam_report_subject-total','exam_report_subject-range','exam_report_subject-college',"
|
|
|
+ + "'exam_report_subject-teacher','exam_report_subject-class'"
|
|
|
+ + ",'exam_report_subject-objective_question','exam_report_subject-subjective_question','exam_report_subject-group')");
|
|
|
+ sql.append(" and s.id=" + schoolId);
|
|
|
+ Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
+ query.executeUpdate();
|
|
|
+
|
|
|
+ sql = new StringBuilder();
|
|
|
+ sql.append("INSERT INTO b_role_privilege (`school_id`, `role_code`, `privilege_code`,`enable`)");
|
|
|
+ sql.append(" SELECT s.id,'COLLEGE_ADMIN',p.`code`,0 from b_privilege p join b_school s ");
|
|
|
+ sql.append(
|
|
|
+ " where p.`code` in('exam_mark-group-add','exam_mark-group-edit','exam_mark-group-reset_edit','exam_mark-group-delete')");
|
|
|
+ sql.append(" and s.id=" + schoolId);
|
|
|
+ query = entityManager.createNativeQuery(sql.toString());
|
|
|
+ query.executeUpdate();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initInspectorPrivilege(Integer schoolId) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append(" INSERT INTO b_role_privilege (`school_id`, `role_code`, `privilege_code`,`enable`)");
|
|
|
+ sql.append(" SELECT s.id,'INSPECTOR',p.`code`,1 from b_privilege p join b_school s ");
|
|
|
+ sql.append(
|
|
|
+ " where p.`code` in('exam_inspected_info','exam_inspected_info-info','exam_inspected_info-list','exam_inspected_info-next_round')");
|
|
|
+ sql.append(" and s.id=" + schoolId);
|
|
|
+ Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
+ query.executeUpdate();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initSchoolViewerPrivilege(Integer schoolId) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ sql.append(" INSERT INTO b_role_privilege (`school_id`, `role_code`, `privilege_code`,`enable`)");
|
|
|
+ sql.append(" SELECT s.id,'SCHOOL_VIEWER',p.`code`,1 from b_privilege p join b_school s ");
|
|
|
+ sql.append(
|
|
|
+ " where p.`code` in('exam_score','exam_report_subject','exam_report_subject-total','operation_log')");
|
|
|
+ sql.append(" and s.id=" + schoolId);
|
|
|
+ Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
+ query.executeUpdate();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Privilege> getPagePrivilegesByParentCode(String parentCode) {
|
|
|
+ return privilegeDao.findByPrivilegeTypeAndParentCodeOrderBySeqAsc(PrivilegeType.PAGE, parentCode);
|
|
|
+ }
|
|
|
}
|