wangwei 7 年之前
父节点
当前提交
37e1da7e46

+ 25 - 2
core-api/src/main/java/cn/com/qmth/examcloud/service/core/api/OrgFunctionApi.java

@@ -9,9 +9,14 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import cn.com.qmth.examcloud.common.support.tree.TreeNode;
+import cn.com.qmth.examcloud.common.support.tree.TreeUtil;
+import cn.com.qmth.examcloud.common.support.tree.ZtreeNode;
 import cn.com.qmth.examcloud.service.core.entity.OrgFunction;
 import cn.com.qmth.examcloud.service.core.repo.OrgFunctionRepo;
 import io.swagger.annotations.ApiOperation;
@@ -35,13 +40,31 @@ public class OrgFunctionApi {
 	@GetMapping("/getAllFunctions")
 	public ResponseEntity<?> getAllFunctions() {
 		List<OrgFunction> allFuncs = orgFunctionRepo.findAll();
-		return new ResponseEntity<>(allFuncs, HttpStatus.OK);
+
+		List<TreeNode> zTreeData = TreeUtil.convert(allFuncs, ZtreeNode.class);
+		return new ResponseEntity<>(zTreeData, HttpStatus.OK);
 	}
 
 	@ApiOperation(value = "查询机构功能", notes = "查询")
 	@GetMapping("/{id}")
 	public ResponseEntity<?> getOrgFunctions(@PathVariable Long id) {
 		LOG.debug("getOrgFunctions(). id=" + id);
-		return new ResponseEntity<>("", HttpStatus.OK);
+		List<OrgFunction> orgFunctions = orgFunctionRepo.getOrgFunctions(id);
+		return new ResponseEntity<>(orgFunctions, HttpStatus.OK);
+	}
+
+	@ApiOperation(value = "修改机构功能", notes = "修改")
+	@PutMapping("/{id}")
+	public ResponseEntity<?> setOrgFunctions(@PathVariable Long id, @RequestBody String[] funcIds) {
+		LOG.debug("setOrgFunctions(). id=" + id);
+		try {
+			orgFunctionRepo.deleteAllOrgFunctions(id);
+			for (String funcId : funcIds) {
+				orgFunctionRepo.addOrgFunction(id, Long.parseLong(funcId));
+			}
+			return new ResponseEntity<>("", HttpStatus.CREATED);
+		} catch (Exception e) {
+			return new ResponseEntity<>("", HttpStatus.INTERNAL_SERVER_ERROR);
+		}
 	}
 }

+ 39 - 36
core-domain/pom.xml

@@ -1,42 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>core</artifactId>
-        <groupId>cn.com.qmth.examcloud.service</groupId>
-        <version>0.1.0</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<parent>
+		<artifactId>core</artifactId>
+		<groupId>cn.com.qmth.examcloud.service</groupId>
+		<version>0.1.0</version>
+	</parent>
+	<modelVersion>4.0.0</modelVersion>
 
-    <artifactId>core-domain</artifactId>
+	<artifactId>core-domain</artifactId>
 
-    <dependencies>
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-            <version>${mysql.version}</version>
-        </dependency>
+	<dependencies>
+		<dependency>
+			<groupId>mysql</groupId>
+			<artifactId>mysql-connector-java</artifactId>
+			<version>${mysql.version}</version>
+		</dependency>
 
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-jpa</artifactId>
-        </dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-jpa</artifactId>
+		</dependency>
 
-        <dependency>
-            <groupId>org.hibernate</groupId>
-            <artifactId>hibernate-validator</artifactId>
-        </dependency>
-        
-        <dependency>
-            <groupId>cn.com.qmth.examcloud.common</groupId>
-            <artifactId>common-util</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>cn.com.qmth.examcloud.common</groupId>
-            <artifactId>common-dto</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
+		<dependency>
+			<groupId>org.hibernate</groupId>
+			<artifactId>hibernate-validator</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>cn.com.qmth.examcloud.common</groupId>
+			<artifactId>common-util</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>cn.com.qmth.examcloud.common</groupId>
+			<artifactId>common-support</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>cn.com.qmth.examcloud.common</groupId>
+			<artifactId>common-dto</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+	</dependencies>
 </project>

+ 46 - 11
core-domain/src/main/java/cn/com/qmth/examcloud/service/core/entity/OrgFunction.java

@@ -2,12 +2,15 @@ package cn.com.qmth.examcloud.service.core.entity;
 
 import java.io.Serializable;
 
+import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.validation.constraints.NotNull;
 
+import cn.com.qmth.examcloud.common.support.tree.TreeNode;
+
 /**
  * 机构功能
  * 
@@ -16,13 +19,14 @@ import javax.validation.constraints.NotNull;
  */
 @Entity
 @Table(name = "ecs_core_function")
-public class OrgFunction implements Serializable {
+public class OrgFunction implements Serializable, TreeNode {
 
 	private static final long serialVersionUID = -3894524658332441373L;
 
 	@Id
 	@GeneratedValue
-	private Long id;
+	@Column(name = "id")
+	private Long funcId;
 
 	/**
 	 * 功能编码
@@ -34,7 +38,8 @@ public class OrgFunction implements Serializable {
 	 * 父功能id
 	 */
 	@NotNull
-	private Long parentId;
+	@Column(name = "parent_id")
+	private Long parentFuncId;
 
 	/**
 	 * 功能名称
@@ -54,12 +59,12 @@ public class OrgFunction implements Serializable {
 	@NotNull
 	private int weigth;
 
-	public Long getId() {
-		return id;
+	public Long getFuncId() {
+		return funcId;
 	}
 
-	public void setId(Long id) {
-		this.id = id;
+	public void setFuncId(Long funcId) {
+		this.funcId = funcId;
 	}
 
 	public String getFuncCode() {
@@ -70,12 +75,12 @@ public class OrgFunction implements Serializable {
 		this.funcCode = funcCode;
 	}
 
-	public Long getParentId() {
-		return parentId;
+	public Long getParentFuncId() {
+		return parentFuncId;
 	}
 
-	public void setParentId(Long parentId) {
-		this.parentId = parentId;
+	public void setParentFuncId(Long parentFuncId) {
+		this.parentFuncId = parentFuncId;
 	}
 
 	public String getFuncName() {
@@ -102,4 +107,34 @@ public class OrgFunction implements Serializable {
 		this.weigth = weigth;
 	}
 
+	@Override
+	public String getId() {
+		return String.valueOf(this.funcId);
+	}
+
+	@Override
+	public void setId(String id) {
+		this.funcId = Long.parseLong(id);
+	}
+
+	@Override
+	public String getName() {
+		return this.funcName;
+	}
+
+	@Override
+	public void setName(String name) {
+		this.funcName = name;
+	}
+
+	@Override
+	public String getParentId() {
+		return String.valueOf(this.parentFuncId);
+	}
+
+	@Override
+	public void setParentId(String parentId) {
+		this.parentFuncId = Long.parseLong(parentId);
+	}
+
 }

+ 15 - 4
core-domain/src/main/java/cn/com/qmth/examcloud/service/core/repo/OrgFunctionRepo.java

@@ -3,16 +3,27 @@ package cn.com.qmth.examcloud.service.core.repo;
 import java.util.List;
 
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.data.repository.query.QueryByExampleExecutor;
+import org.springframework.transaction.annotation.Transactional;
 
-import cn.com.qmth.examcloud.service.core.entity.Org;
 import cn.com.qmth.examcloud.service.core.entity.OrgFunction;
 
 public interface OrgFunctionRepo extends JpaRepository<OrgFunction, Long>, QueryByExampleExecutor<OrgFunction> {
-	
-	@Query(nativeQuery = true, value = "select * from ecs_core_org t where t.parent_id = 0 and t.enable = 1 order by t.id")
-	List<Org> findByOrgId(@Param("orgId") long orgId);
+
+	@Query(nativeQuery = true, value = "SELECT * from ecs_core_function x,ecs_core_org_function y where x.id=y.function_id and y.org_id = :orgId")
+	List<OrgFunction> getOrgFunctions(@Param("orgId") long orgId);
+
+	@Transactional
+	@Modifying
+	@Query(value = "delete from ecs_core_org_function  where org_id =?1", nativeQuery = true)
+	void deleteAllOrgFunctions(Long orgId);
+
+	@Transactional
+	@Modifying
+	@Query(value = "insert into ecs_core_org_function (org_id,function_id) values(?1,?2)", nativeQuery = true)
+	void addOrgFunction(Long orgId, Long funcId);
 
 }