xiatian 1 vuosi sitten
vanhempi
commit
2eb1043580

+ 12 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/basic/model/RoleInfo.java

@@ -109,6 +109,18 @@ public class RoleInfo implements Serializable {
 	public void setSchoolId(Integer schoolId) {
 		this.schoolId = schoolId;
 	}
+
+	public RoleInfo() {
+		super();
+	}
+
+	public RoleInfo(Integer schoolId, Role code, String name, Integer seq) {
+		super();
+		this.schoolId = schoolId;
+		this.code = code;
+		this.name = name;
+		this.seq = seq;
+	}
     
 
     

+ 2 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/basic/service/PrivilegeService.java

@@ -8,5 +8,7 @@ public interface PrivilegeService {
 
 	List<Privilege> getMenuPrivileges();
 
+	void initRoleAndPrivilege(Integer schoolId);
+
 
 }

+ 92 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/basic/service/impl/PrivilegeServiceImpl.java

@@ -3,21 +3,35 @@ package cn.com.qmth.stmms.biz.basic.service.impl;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import cn.com.qmth.stmms.biz.basic.dao.PrivilegeDao;
+import cn.com.qmth.stmms.biz.basic.dao.RoleInfoDao;
 import cn.com.qmth.stmms.biz.basic.model.Privilege;
+import cn.com.qmth.stmms.biz.basic.model.RoleInfo;
 import cn.com.qmth.stmms.biz.basic.service.PrivilegeService;
 import cn.com.qmth.stmms.biz.common.BaseQueryService;
 import cn.com.qmth.stmms.common.enums.PrivilegeType;
+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() {
@@ -33,4 +47,82 @@ public class PrivilegeServiceImpl extends BaseQueryService<Privilege> implements
 		}
 		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('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_report_subject','exam_report_subject_range')");
+		sql.append(" and s.id="+schoolId);
+		Query 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('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_report_subject','exam_report_subject_range')");
+		sql.append(" and s.id="+schoolId);
+		Query 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','operation_log')");
+		sql.append(" and s.id="+schoolId);
+		Query query = entityManager.createNativeQuery(sql.toString());
+		query.executeUpdate();
+	}
 }

+ 13 - 4
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/school/service/impl/SchoolServiceImpl.java

@@ -10,9 +10,6 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -21,6 +18,7 @@ import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import cn.com.qmth.stmms.biz.basic.service.PrivilegeService;
 import cn.com.qmth.stmms.biz.common.BaseQueryService;
 import cn.com.qmth.stmms.biz.config.model.SystemAuth;
 import cn.com.qmth.stmms.biz.config.service.SystemAuthService;
@@ -30,6 +28,8 @@ import cn.com.qmth.stmms.biz.school.query.SchoolSearchQuery;
 import cn.com.qmth.stmms.biz.school.service.SchoolService;
 import cn.com.qmth.stmms.biz.utils.SolarHttpUtil;
 import cn.com.qmth.stmms.common.utils.AesUtils;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
 
 @Service("schoolService")
 public class SchoolServiceImpl extends BaseQueryService<School> implements SchoolService {
@@ -39,6 +39,9 @@ public class SchoolServiceImpl extends BaseQueryService<School> implements Schoo
 
     @Autowired
     private SystemAuthService authService;
+    
+    @Autowired
+    private PrivilegeService privilegeService;
 
     @Value("${qmth.solar.host}")
     private String host;
@@ -83,12 +86,18 @@ public class SchoolServiceImpl extends BaseQueryService<School> implements Schoo
 
     @Transactional
     public School save(School school) {
+    	boolean isCreate=false;
         if (school.getId() != null && school.getId() > 0) {
             school.setUpdateTime(new Date());
         } else {
+        	isCreate=true;
             school.setCreateTime(new Date());
         }
-        return schoolDao.save(school);
+        School s=schoolDao.save(school);
+        if (isCreate) {
+        	privilegeService.initRoleAndPrivilege(school.getId());
+        }
+        return s;
     }
 
     @Transactional

+ 2 - 2
stmms-web/src/main/webapp/sql/upgrade/1.3.14.sql

@@ -194,7 +194,7 @@ SELECT s.id,'SUBJECT_HEADER',p.`code`,1 from b_privilege p join b_school s
 where p.`code` in('exam_mark','exam_mark-mark','exam_mark-group','exam_mark-marker','exam_mark-trial','exam_mark-library'
 ,'exam_mark-library-inspect','exam_mark-library-reject','exam_mark-arbitrate','exam_mark-quality','exam_reject_list'
 ,'exam_reject_list-paper','exam_reject_list-history','exam_problem_history','exam_problem_history-reset'
-,'exam_problem_history-batch-reset'
+,'exam_problem_history-batch_reset'
 ,'exam_inspected_info','exam_inspected_info-info','exam_inspected_info-list','exam_inspected_info-next_round'
 ,'exam_score','exam_report_subject','exam_report_subject_range');
 
@@ -203,7 +203,7 @@ SELECT s.id,'COLLEGE_ADMIN',p.`code`,1 from b_privilege p join b_school s
 where p.`code` in('exam_mark','exam_mark-mark','exam_mark-group','exam_mark-marker','exam_mark-trial','exam_mark-library'
 ,'exam_mark-library-inspect','exam_mark-library-reject','exam_mark-arbitrate','exam_mark-quality','exam_reject_list'
 ,'exam_reject_list-paper','exam_reject_list-history','exam_problem_history','exam_problem_history-reset'
-,'exam_problem_history-batch-reset'
+,'exam_problem_history-batch_reset'
 ,'exam_inspected_info','exam_inspected_info-info','exam_inspected_info-list','exam_inspected_info-next_round'
 ,'exam_score','exam_report_subject','exam_report_subject_range');