From: qiaowei Date: Sun, 5 May 2019 09:51:17 +0000 (+0800) Subject: 功能维护、角色管理 X-Git-Tag: 1.0.0^2~240 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=c3c404f5955fc2783818edf68d8c4f495a1c02bd;p=epayment%2Ffood_payapi.git 功能维护、角色管理 --- diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/FunctionDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/FunctionDao.java index 619a5302..1e08ccbe 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/dao/FunctionDao.java +++ b/src/main/java/com/supwisdom/dlpay/framework/dao/FunctionDao.java @@ -10,9 +10,17 @@ import org.springframework.stereotype.Repository; import java.util.List; @Repository -public interface FunctionDao extends JpaRepository { - @Query("select distinct t from TFunction t,TRoleFunction a, TOperRole b where t.id=a.functionId and a.roleId=b.roleId and b.operid=?1 order by t.orderNum ") - List getTFunctionsByOperid(String operid); +public interface FunctionDao extends JpaRepository { + @Query("select distinct t from TFunction t,TRoleFunction a, TOperRole b where t.id=a.functionId and a.roleId=b.roleId and b.operid=?1 order by t.orderNum ") + List getTFunctionsByOperid(String operid); - Page findAllByNameContaining(String name,Pageable pageable); + Page findAllByNameContaining(String name, Pageable pageable); + + TFunction findByName(String name); + + TFunction findByNameAndIdNot(String name, Integer id); + + List findByParentId(Integer parentId); + + List findByIsLeaf(Integer isLeaf); } diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/PermissionDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/PermissionDao.java new file mode 100644 index 00000000..767df41a --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/framework/dao/PermissionDao.java @@ -0,0 +1,16 @@ +package com.supwisdom.dlpay.framework.dao; + +import com.supwisdom.dlpay.framework.domain.TPermission; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface PermissionDao extends JpaRepository { + List findByRoleFuncId(String roleFuncId); + + TPermission findByRoleFuncIdAndResid(String roleFuncId, Integer resid); + + void deleteByRoleFuncId(String roleFuncId); + + void deleteByRoleId(String roleId); +} diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/ResourceDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/ResourceDao.java index 22f5c1c6..d5a81c80 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/dao/ResourceDao.java +++ b/src/main/java/com/supwisdom/dlpay/framework/dao/ResourceDao.java @@ -4,7 +4,16 @@ import com.supwisdom.dlpay.framework.domain.TResource; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository -public interface ResourceDao extends JpaRepository { +public interface ResourceDao extends JpaRepository { TResource findByUri(String uri); + + List findByFunctionId(Integer functionId); + + TResource findByUriAndIdNot(String uri, Integer id); + + void deleteByFunctionId(Integer functionId); + } diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java index af771de6..0baed2ec 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java +++ b/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java @@ -1,6 +1,8 @@ package com.supwisdom.dlpay.framework.dao; import com.supwisdom.dlpay.framework.domain.TRole; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; @@ -9,9 +11,14 @@ import java.util.List; @Repository public interface RoleDao extends JpaRepository { - @Query("from TRole order by createtime asc ") - List getAllRoles(); + @Query("from TRole order by createtime asc ") + List getAllRoles(); - TRole findByRoleCode(String rolecode); + TRole findByRoleCode(String rolecode); + Page findAllByRoleNameContaining(String roleName, Pageable pageable); + + TRole findByRoleNameAndRoleIdNot(String roleName, String roleId); + + TRole findByRoleName(String roleName); } diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/RoleFunctionDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/RoleFunctionDao.java index de693925..565ebe63 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/dao/RoleFunctionDao.java +++ b/src/main/java/com/supwisdom/dlpay/framework/dao/RoleFunctionDao.java @@ -1,11 +1,29 @@ package com.supwisdom.dlpay.framework.dao; +import com.supwisdom.dlpay.framework.data.NodeData; import com.supwisdom.dlpay.framework.domain.TRoleFunction; +import com.supwisdom.dlpay.system.bean.ZTreeNode; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface RoleFunctionDao extends JpaRepository { - TRoleFunction findByRoleIdAndFunctionId(String roleId,String functionId); + TRoleFunction findByRoleIdAndFunctionId(String roleId, Integer functionId); + + void deleteByFunctionId(Integer functionId); + + List findByRoleId(String roleId); + + @Query(value = " select f.id||'' as id ,f.parentid||'' as pid,f.name,case when rf.id is null then 0 else 1 end as checked from tb_function f " + + " left join tb_role_function rf on rf.functionid = f.id and rf.roleid=?1 " + + " union all " + + " select r.id||'_res' as id,r.function_id||'' as pid,r.name,case when p.id is null then 0 else 1 end as checked from tb_resource r " + + " left join tb_permission p on p.resid = r.id and p.roleid=?1 " , nativeQuery = true) + List findByRoleIdNative(String roleId); + + void deleteByRoleId(String roleId); } diff --git a/src/main/java/com/supwisdom/dlpay/framework/data/NodeData.java b/src/main/java/com/supwisdom/dlpay/framework/data/NodeData.java new file mode 100644 index 00000000..19197d38 --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/framework/data/NodeData.java @@ -0,0 +1,13 @@ +package com.supwisdom.dlpay.framework.data; + +public interface NodeData { + String getId(); + + String getPid(); + + String getName(); + + boolean getOpen(); + + Integer getChecked(); +} diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java index 8c135e80..2f3b83cc 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java +++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java @@ -1,20 +1,18 @@ package com.supwisdom.dlpay.framework.domain; -import org.hibernate.annotations.GenericGenerator; - import javax.persistence.*; @Entity @Table(name = "TB_FUNCTION") +@SequenceGenerator(name="SEQ_FUNC",sequenceName="SEQ_FUNC",allocationSize=1) public class TFunction { @Id - @GenericGenerator(name = "idGenerator", strategy = "uuid") - @GeneratedValue(generator = "idGenerator") - @Column(name="ID", nullable = false, length = 32) - private String id; + @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_FUNC") + @Column(name="ID", nullable = false) + private Integer id; - @Column(name="PARENTID", length = 32) - private String parentId; + @Column(name="PARENTID") + private Integer parentId; @Column(name="NAME", length = 32) private String name; @@ -37,19 +35,19 @@ public class TFunction { @Column(name="LASTSAVED", length = 14) private String lastsaved; - public String getId() { + public Integer getId() { return id; } - public void setId(String id) { + public void setId(Integer id) { this.id = id; } - public String getParentId() { + public Integer getParentId() { return parentId; } - public void setParentId(String parentId) { + public void setParentId(Integer parentId) { this.parentId = parentId; } diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TPermission.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TPermission.java new file mode 100644 index 00000000..0d22f353 --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TPermission.java @@ -0,0 +1,56 @@ +package com.supwisdom.dlpay.framework.domain; + +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; + +@Entity +@Table(name = "TB_PERMISSION") +public class TPermission { + @Id + @GenericGenerator(name = "idGenerator", strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + @Column(name = "ID", nullable = false, length = 32) + private String id; + + @Column(name = "ROLE_FUNC_ID", length = 32) + private String roleFuncId; + + @Column(name = "RESID") + private Integer resid; + + @Column(name = "ROLEID") + private String roleId; + + public String getRoleId() { + return roleId; + } + + public void setRoleId(String roleId) { + this.roleId = roleId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getRoleFuncId() { + return roleFuncId; + } + + public void setRoleFuncId(String roleFuncId) { + this.roleFuncId = roleFuncId; + } + + public Integer getResid() { + return resid; + } + + public void setResid(Integer resid) { + this.resid = resid; + } +} diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TResource.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TResource.java index 889eacae..63044cbb 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/domain/TResource.java +++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TResource.java @@ -1,16 +1,15 @@ package com.supwisdom.dlpay.framework.domain; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; +import javax.persistence.*; @Entity @Table(name = "TB_RESOURCE") +@SequenceGenerator(name="SEQ_RES",sequenceName="SEQ_RES",allocationSize=1) public class TResource { @Id - @Column(name = "ID", nullable = false, length = 32) - private String id; + @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_RES") + @Column(name = "ID", nullable = false,length = 9) + private Integer id; @Column(name = "CODE", nullable = false, length = 32) private String code; @@ -22,13 +21,13 @@ public class TResource { private String uri; @Column(name = "FUNCTION_ID", nullable = false, length = 32) - private String functionId; + private Integer functionId; - public String getId() { + public Integer getId() { return id; } - public void setId(String id) { + public void setId(Integer id) { this.id = id; } @@ -56,11 +55,11 @@ public class TResource { this.uri = uri; } - public String getFunctionId() { + public Integer getFunctionId() { return functionId; } - public void setFunctionId(String functionId) { + public void setFunctionId(Integer functionId) { this.functionId = functionId; } } diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java index a621460f..c5e9f05e 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java +++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java @@ -17,7 +17,7 @@ public class TRoleFunction { private String roleId; @Column(name="FUNCTIONID", nullable = false, length = 32) - private String functionId; + private Integer functionId; @Column(name="PERMISSIONS", length = 200) private String permissions; @@ -38,11 +38,11 @@ public class TRoleFunction { this.roleId = roleId; } - public String getFunctionId() { + public Integer getFunctionId() { return functionId; } - public void setFunctionId(String functionId) { + public void setFunctionId(Integer functionId) { this.functionId = functionId; } diff --git a/src/main/java/com/supwisdom/dlpay/system/bean/ZTreeNode.java b/src/main/java/com/supwisdom/dlpay/system/bean/ZTreeNode.java new file mode 100644 index 00000000..9d502731 --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/system/bean/ZTreeNode.java @@ -0,0 +1,50 @@ +package com.supwisdom.dlpay.system.bean; + + +public class ZTreeNode { + private String id; + private String pId; + private String name; + private boolean checked; + private boolean open; + + public boolean isOpen() { + return open; + } + + public void setOpen(boolean open) { + this.open = open; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getpId() { + return pId; + } + + public void setpId(String pId) { + this.pId = pId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isChecked() { + return checked; + } + + public void setChecked(boolean checked) { + this.checked = checked; + } +} diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/FunctionController.java b/src/main/java/com/supwisdom/dlpay/system/controller/FunctionController.java index 16c598a7..978819c6 100644 --- a/src/main/java/com/supwisdom/dlpay/system/controller/FunctionController.java +++ b/src/main/java/com/supwisdom/dlpay/system/controller/FunctionController.java @@ -1,8 +1,10 @@ package com.supwisdom.dlpay.system.controller; +import com.supwisdom.dlpay.consume.bean.JsonResult; import com.supwisdom.dlpay.framework.domain.TFunction; import com.supwisdom.dlpay.framework.domain.TOperator; +import com.supwisdom.dlpay.framework.domain.TResource; import com.supwisdom.dlpay.framework.util.PageResult; import com.supwisdom.dlpay.framework.util.StringUtil; import com.supwisdom.dlpay.framework.util.WebConstant; @@ -12,9 +14,9 @@ import com.supwisdom.dlpay.system.service.FunctionService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @Controller public class FunctionController { @@ -45,4 +47,85 @@ public class FunctionController { return new PageResult<>(99, "系统查询错误"); } } + + @GetMapping("/function/loadadd") + public String loadadd() { + return "system/function/form"; + } + + @PostMapping("/function/add") + @ResponseBody + public JsonResult add(@RequestBody TFunction function) { + if (function != null) { + return functionService.saveFunction(function); + } else { + return JsonResult.error("添加失败"); + } + } + @PostMapping("/function/delfunc") + @ResponseBody + public JsonResult delfunc(@RequestParam Integer funcid) { + return functionService.deleteFunction(funcid); + } + + @GetMapping("/function/checkname") + @ResponseBody + public JsonResult checkname(@RequestParam String name, + @RequestParam(value = "id", required = false) Integer id) { + TFunction function = functionService.getFunctionByNameAndId(name, id); + if (function == null) { + return JsonResult.ok(); + } else { + return JsonResult.error("功能名称重复"); + } + } + + @GetMapping("/function/loadsubadd") + public String loadsubadd(Model model) { + List functionList = functionService.getParentFunction(); + model.addAttribute("list", functionList); + return "system/function/subform"; + } + + @GetMapping("/function/loadres") + public String loadres(@RequestParam Integer functionid, Model model) { + TFunction function = functionService.getFunctionById(functionid); + List resources = functionService.getResources(functionid); + model.addAttribute("function", function); + model.addAttribute("resources", resources); + return "system/function/reslist"; + } + @GetMapping("/function/reslist") + @ResponseBody + public PageResult reslist(@RequestParam Integer functionid, Model model) { + List resources = functionService.getResources(functionid); + return new PageResult(resources); + } + @GetMapping("/function/loadresadd") + public String loadresadd(Model model) { + List functionList = functionService.getLeafFunction(); + model.addAttribute("list", functionList); + return "system/function/resform"; + } + + @PostMapping("/function/addres") + @ResponseBody + public JsonResult addres(@RequestBody TResource resource) { + if (resource != null) { + return functionService.saveRes(resource); + } else { + return JsonResult.error("添加失败"); + } + } + @GetMapping("/function/editres") + public String loadresadd(@RequestParam Integer resid,Model model) { + List functionList = functionService.getLeafFunction(); + model.addAttribute("list", functionList); + return "system/function/resform"; + } + @PostMapping("/function/delres") + @ResponseBody + public JsonResult delres(@RequestParam Integer resid) { + return functionService.deleteResource(resid); + } } diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java b/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java index 4fb7b2b4..d7c1faa9 100644 --- a/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java +++ b/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java @@ -1,18 +1,86 @@ package com.supwisdom.dlpay.system.controller; - +import com.supwisdom.dlpay.consume.bean.JsonResult; +import com.supwisdom.dlpay.framework.domain.TFunction; +import com.supwisdom.dlpay.framework.domain.TRole; +import com.supwisdom.dlpay.framework.domain.TRoleFunction; +import com.supwisdom.dlpay.framework.util.PageResult; +import com.supwisdom.dlpay.framework.util.WebConstant; +import com.supwisdom.dlpay.system.bean.FunctionSearchBean; +import com.supwisdom.dlpay.system.bean.ZTreeNode; +import com.supwisdom.dlpay.system.service.FunctionService; +import com.supwisdom.dlpay.system.service.RoleService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; @Controller -@RequestMapping("/role") public class RoleController { + @Autowired + private RoleService roleService; + @Autowired + private FunctionService functionService; + + @GetMapping("/role/index") + public String indexView() { + return "system/role/index"; + } + + @GetMapping("/role/list") + @ResponseBody + public PageResult getDataList(@RequestParam("page") Integer pageNo, + @RequestParam("limit") Integer pageSize, + @RequestParam(value = "searchkey", required = false) String searchKey) { + try { + if (null == pageNo || pageNo < 1) pageNo = WebConstant.PAGENO_DEFAULT; + if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT; + FunctionSearchBean searchBean = new FunctionSearchBean(); + searchBean.setPageNo(pageNo); + searchBean.setFunctioname(searchKey); + searchBean.setPageSize(pageSize); + return roleService.getRolesByKey(searchBean); + } catch (Exception e) { + e.printStackTrace(); + return new PageResult<>(99, "系统查询错误"); + } + } + + @GetMapping("/role/loadadd") + public String loadadd() { + return "system/role/form"; + } + + @PostMapping("/role/add") + @ResponseBody + public JsonResult add(@RequestBody TRole role) { + if (role != null) { + return roleService.saveRole(role); + } else { + return JsonResult.error("添加失败"); + } + } + + @GetMapping("/role/loadfunc") + public String loadfunc() { + return "system/role/func"; + } - @GetMapping("/index") - public String indexView(Model model) { - return "system/role/index"; - } + @PostMapping("/role/addfunc") + @ResponseBody + public JsonResult addfunc(@RequestParam String roleId, + @RequestParam String funcs) { + return roleService.saveRoleFuncId(roleId, funcs); + } + @GetMapping("/role/func") + @ResponseBody + public JsonResult func(@RequestParam String roleId) { + List nodes = roleService.findByRoleIdNative(roleId); + JsonResult result = JsonResult.ok(); + result.put("node", nodes); + return result; + } } diff --git a/src/main/java/com/supwisdom/dlpay/system/service/FunctionService.java b/src/main/java/com/supwisdom/dlpay/system/service/FunctionService.java index 55cc2aa3..f3b07be4 100644 --- a/src/main/java/com/supwisdom/dlpay/system/service/FunctionService.java +++ b/src/main/java/com/supwisdom/dlpay/system/service/FunctionService.java @@ -1,6 +1,8 @@ package com.supwisdom.dlpay.system.service; +import com.supwisdom.dlpay.consume.bean.JsonResult; import com.supwisdom.dlpay.framework.domain.TFunction; +import com.supwisdom.dlpay.framework.domain.TResource; import com.supwisdom.dlpay.framework.util.PageResult; import com.supwisdom.dlpay.system.bean.FunctionSearchBean; @@ -10,7 +12,25 @@ import java.util.Map; public interface FunctionService { List getFunctionsByOperid(String operid); - List> getMenuTree(List funcList, String parentId); + List> getMenuTree(List funcList, Integer parentId); PageResult getFunctionsByKey(FunctionSearchBean param); + + TFunction getFunctionByNameAndId(String name,Integer id); + + JsonResult saveFunction(TFunction function); + + TFunction getFunctionById(Integer id); + + JsonResult deleteFunction(Integer funcid); + + List getParentFunction(); + + List getResources(Integer function); + + List getLeafFunction(); + + JsonResult saveRes(TResource resource); + + JsonResult deleteResource(Integer resid); } diff --git a/src/main/java/com/supwisdom/dlpay/system/service/RoleService.java b/src/main/java/com/supwisdom/dlpay/system/service/RoleService.java index e4b8082e..3d47b837 100644 --- a/src/main/java/com/supwisdom/dlpay/system/service/RoleService.java +++ b/src/main/java/com/supwisdom/dlpay/system/service/RoleService.java @@ -1,8 +1,13 @@ package com.supwisdom.dlpay.system.service; +import com.supwisdom.dlpay.consume.bean.JsonResult; +import com.supwisdom.dlpay.framework.domain.TPermission; import com.supwisdom.dlpay.framework.domain.TResource; import com.supwisdom.dlpay.framework.domain.TRole; import com.supwisdom.dlpay.framework.domain.TRoleFunction; +import com.supwisdom.dlpay.framework.util.PageResult; +import com.supwisdom.dlpay.system.bean.FunctionSearchBean; +import com.supwisdom.dlpay.system.bean.ZTreeNode; import java.util.List; @@ -13,5 +18,19 @@ public interface RoleService { TResource findResourceByURI(String uri); - TRoleFunction findRoleFunctionByRoleIdAndFunctionId(String roleid, String functionid); + TRoleFunction findRoleFunctionByRoleIdAndFunctionId(String roleid, Integer functionid); + + PageResult getRolesByKey(FunctionSearchBean param); + + JsonResult saveRole(TRole role); + + List getRoleFuncByRoleid(String roleId); + + List findByRoleFuncId(String roleFuncId); + + TPermission findByRoleFuncIdAndResid(String roleFuncId, Integer resid); + + JsonResult saveRoleFuncId(String roleId, String funcs); + + List findByRoleIdNative(String roleId); } diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/FunctionServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/FunctionServiceImpl.java index 41b14600..2e394b13 100644 --- a/src/main/java/com/supwisdom/dlpay/system/service/impl/FunctionServiceImpl.java +++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/FunctionServiceImpl.java @@ -1,7 +1,11 @@ package com.supwisdom.dlpay.system.service.impl; +import com.supwisdom.dlpay.consume.bean.JsonResult; import com.supwisdom.dlpay.framework.dao.FunctionDao; +import com.supwisdom.dlpay.framework.dao.ResourceDao; +import com.supwisdom.dlpay.framework.dao.RoleFunctionDao; import com.supwisdom.dlpay.framework.domain.TFunction; +import com.supwisdom.dlpay.framework.domain.TResource; import com.supwisdom.dlpay.framework.util.PageResult; import com.supwisdom.dlpay.framework.util.StringUtil; import com.supwisdom.dlpay.system.bean.FunctionSearchBean; @@ -21,6 +25,10 @@ import java.util.Map; public class FunctionServiceImpl implements FunctionService { @Autowired private FunctionDao functionDao; + @Autowired + private ResourceDao resourceDao; + @Autowired + private RoleFunctionDao roleFunctionDao; @Override public List getFunctionsByOperid(String operid) { @@ -30,7 +38,7 @@ public class FunctionServiceImpl implements FunctionService { } @Override - public List> getMenuTree(List funcList, String parentId) { + public List> getMenuTree(List funcList, Integer parentId) { List> list = new ArrayList<>(0); for (TFunction func : funcList) { if (parentId.equals(func.getParentId())) { @@ -58,4 +66,76 @@ public class FunctionServiceImpl implements FunctionService { } return new PageResult<>(functionDao.findAll(pageable)); } + + @Override + public TFunction getFunctionByNameAndId(String name, Integer id) { + if (id != null && id != 0) { + return functionDao.findByNameAndIdNot(name, id); + } + return functionDao.findByName(name); + } + + @Override + public JsonResult saveFunction(TFunction function) { + TFunction temp = getFunctionByNameAndId(function.getName(), function.getId()); + if (temp != null) { + return JsonResult.error("功能名称重复"); + } + if (function.getParentId() == null) { + function.setParentId(-1); + } + functionDao.save(function); + return JsonResult.ok("成功"); + } + + @Override + public TFunction getFunctionById(Integer id) { + return functionDao.getOne(id); + } + + @Override + public List getParentFunction() { + return functionDao.findByIsLeaf(0); + } + + @Override + public List getResources(Integer function) { + return resourceDao.findByFunctionId(function); + } + + @Override + public List getLeafFunction() { + return functionDao.findByIsLeaf(1); + } + + @Override + public JsonResult saveRes(TResource resource) { + if (resource.getId() != null && resource.getId() != 0) { + TResource temp = resourceDao.findByUriAndIdNot(resource.getUri(), resource.getId()); + if (temp != null) { + return JsonResult.error("资源路径已存在"); + } + } else { + TResource temp = resourceDao.findByUri(resource.getUri()); + if (temp != null) { + return JsonResult.error("资源路径已存在"); + } + } + resourceDao.save(resource); + return JsonResult.ok("成功"); + } + + @Override + public JsonResult deleteResource(Integer resid) { + resourceDao.deleteById(resid); + return JsonResult.ok("成功"); + } + + @Override + public JsonResult deleteFunction(Integer funcid) { + resourceDao.deleteByFunctionId(funcid); + roleFunctionDao.deleteByFunctionId(funcid); + functionDao.deleteById(funcid); + return JsonResult.ok("成功"); + } } diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java index f78b052a..4796efae 100644 --- a/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java +++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java @@ -1,49 +1,162 @@ package com.supwisdom.dlpay.system.service.impl; +import com.supwisdom.dlpay.consume.bean.JsonResult; +import com.supwisdom.dlpay.framework.dao.PermissionDao; import com.supwisdom.dlpay.framework.dao.ResourceDao; import com.supwisdom.dlpay.framework.dao.RoleDao; import com.supwisdom.dlpay.framework.dao.RoleFunctionDao; +import com.supwisdom.dlpay.framework.data.NodeData; +import com.supwisdom.dlpay.framework.domain.TPermission; import com.supwisdom.dlpay.framework.domain.TResource; import com.supwisdom.dlpay.framework.domain.TRole; import com.supwisdom.dlpay.framework.domain.TRoleFunction; +import com.supwisdom.dlpay.framework.util.DateUtil; +import com.supwisdom.dlpay.framework.util.PageResult; import com.supwisdom.dlpay.framework.util.StringUtil; +import com.supwisdom.dlpay.system.bean.FunctionSearchBean; +import com.supwisdom.dlpay.system.bean.ZTreeNode; import com.supwisdom.dlpay.system.service.RoleService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.Optional; @Service public class RoleServiceImpl implements RoleService { - @Autowired - private RoleDao roleDao; - - @Autowired - private ResourceDao resourceDao; - - @Autowired - private RoleFunctionDao roleFunctionDao; - - @Override - public List findAllRoles() { - List list = roleDao.getAllRoles(); - if(!StringUtil.isEmpty(list)) return list; - return new ArrayList<>(0); - } - - @Override - public TRole findRoleByRolecode(String rolecode) { - return roleDao.findByRoleCode(rolecode); - } - - @Override - public TResource findResourceByURI(String uri) { - return resourceDao.findByUri(uri); - } - - @Override - public TRoleFunction findRoleFunctionByRoleIdAndFunctionId(String roleid, String functionid) { - return roleFunctionDao.findByRoleIdAndFunctionId(roleid,functionid); - } + @Autowired + private RoleDao roleDao; + + @Autowired + private ResourceDao resourceDao; + + @Autowired + private RoleFunctionDao roleFunctionDao; + + @Autowired + private PermissionDao permissionDao; + + @Override + public List findAllRoles() { + List list = roleDao.getAllRoles(); + if (!StringUtil.isEmpty(list)) return list; + return new ArrayList<>(0); + } + + @Override + public TRole findRoleByRolecode(String rolecode) { + return roleDao.findByRoleCode(rolecode); + } + + @Override + public TResource findResourceByURI(String uri) { + return resourceDao.findByUri(uri); + } + + @Override + public TRoleFunction findRoleFunctionByRoleIdAndFunctionId(String roleid, Integer functionid) { + return roleFunctionDao.findByRoleIdAndFunctionId(roleid, functionid); + } + + @Override + public PageResult getRolesByKey(FunctionSearchBean param) { + Pageable pageable = PageRequest.of(param.getPageNo() - 1, param.getPageSize() + , Sort.by("createtime")); + if (!StringUtil.isEmpty(param.getFunctioname())) { + return new PageResult<>(roleDao.findAllByRoleNameContaining(param.getFunctioname(), pageable)); + } + return new PageResult<>(roleDao.findAll(pageable)); + } + + @Override + public JsonResult saveRole(TRole role) { + if (!StringUtil.isEmpty(role.getRoleId())) { + TRole temp = roleDao.findByRoleNameAndRoleIdNot(role.getRoleName(), role.getRoleId()); + if (temp != null) { + return JsonResult.error("角色名称已存在"); + } + Optional opt = roleDao.findById(role.getRoleId()); + if (opt == null || !opt.isPresent()) { + return JsonResult.error("角色已被删除"); + } + temp = opt.get(); + temp.setRoleName(role.getRoleName()); + temp.setRoleDesc(role.getRoleDesc()); + temp.setLastsaved(DateUtil.getNow()); + roleDao.save(temp); + } else { + TRole temp = roleDao.findByRoleName(role.getRoleName()); + if (temp != null) { + return JsonResult.error("角色名称已存在"); + } + role.setCreatetime(DateUtil.getNow()); + role.setEditflag(1); + role.setRoleCode("ROLE_ADMIN"); + roleDao.save(role); + } + return JsonResult.ok("成功"); + } + + @Override + public List getRoleFuncByRoleid(String roleId) { + return roleFunctionDao.findByRoleId(roleId); + } + + + @Override + public List findByRoleFuncId(String roleFuncId) { + return permissionDao.findByRoleFuncId(roleFuncId); + } + + @Override + public TPermission findByRoleFuncIdAndResid(String roleFuncId, Integer resid) { + return permissionDao.findByRoleFuncIdAndResid(roleFuncId, resid); + } + + @Override + public JsonResult saveRoleFuncId(String roleId, String funcs) { + Optional ret = roleDao.findById(roleId); + if (ret == null || !ret.isPresent()) { + return JsonResult.error("角色不存在"); + } + roleFunctionDao.deleteByRoleId(roleId); + permissionDao.deleteByRoleId(roleId); + String[] datas = funcs.split(","); + for (String func : datas) { + if (func.contains("_res")) { + String id = func.replace("_res", ""); + TPermission permission = new TPermission(); + permission.setResid(Integer.valueOf(id)); + permission.setRoleId(roleId); + permissionDao.save(permission); + } else { + TRoleFunction roleFunction = new TRoleFunction(); + roleFunction.setFunctionId(Integer.valueOf(func)); + roleFunction.setRoleId(roleId); + roleFunctionDao.save(roleFunction); + } + } + return JsonResult.ok("成功"); + } + + @Override + public List findByRoleIdNative(String roleId) { + List nodeData = roleFunctionDao.findByRoleIdNative(roleId); + List ret = new ArrayList<>(); + for (NodeData data : nodeData) { + ZTreeNode zTreeNode = new ZTreeNode(); + zTreeNode.setpId(data.getPid()); + zTreeNode.setId(data.getId()); + zTreeNode.setName(data.getName()); + zTreeNode.setChecked(data.getChecked() == 0 ? false : true); + zTreeNode.setOpen(true); + ret.add(zTreeNode); + } + return ret; + } } diff --git a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt index 24afe10b..10f66030 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt @@ -199,7 +199,7 @@ class WebMainController { fun menuView(@AuthenticationPrincipal operUser: UserDetails, model: Model): String { model.addAttribute("loginOper", operUser as TOperator) val funclist = functionService.getFunctionsByOperid(operUser.operid) - model.addAttribute("menus", functionService.getMenuTree(funclist, "-1")) + model.addAttribute("menus", functionService.getMenuTree(funclist, -1)) model.addAttribute("payapiVersion", commonService.getSystemVersion()) return "index" } diff --git a/src/main/resources/static/custom/module/admin.js b/src/main/resources/static/custom/module/admin.js index 344c44db..334e29e7 100755 --- a/src/main/resources/static/custom/module/admin.js +++ b/src/main/resources/static/custom/module/admin.js @@ -89,24 +89,26 @@ layui.define(['layer'], function (exports) { return layer.open(param); }, - go:function(url,data,success){ + go:function(url,data,success,error){ $.ajax({ url: url, data: data, async: false, dataType: 'json', type: 'post', - success: success + success: success, + error:error }) }, - dgo:function(url,data,success){ + dgo:function(url,data,success,error){ $.ajax({ url: url, data: data, async: false, dataType: 'json', type: 'get', - success: success + success: success, + error:error }) }, // 封装ajax请求,返回数据类型为json diff --git a/src/main/resources/templates/system/function/form.html b/src/main/resources/templates/system/function/form.html index cd67f9fc..94ef8cc4 100755 --- a/src/main/resources/templates/system/function/form.html +++ b/src/main/resources/templates/system/function/form.html @@ -1,43 +1,117 @@ -
+ +
+
- +
- +
- +
- - - - - - - - - - - - +
- +
- +
-
- +
+ +
+ +
+
+
+ +
+ +
+
+ + -
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/system/function/index.html b/src/main/resources/templates/system/function/index.html index afcda4c3..245090cf 100755 --- a/src/main/resources/templates/system/function/index.html +++ b/src/main/resources/templates/system/function/index.html @@ -10,28 +10,19 @@
搜索:   - - +
-
+
- - - diff --git a/src/main/resources/templates/system/function/resform.html b/src/main/resources/templates/system/function/resform.html new file mode 100755 index 00000000..78f77479 --- /dev/null +++ b/src/main/resources/templates/system/function/resform.html @@ -0,0 +1,94 @@ + +
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/system/function/reslist.html b/src/main/resources/templates/system/function/reslist.html new file mode 100755 index 00000000..d95cbfe2 --- /dev/null +++ b/src/main/resources/templates/system/function/reslist.html @@ -0,0 +1,90 @@ +
+ +
+ + +
+ diff --git a/src/main/resources/templates/system/function/subform.html b/src/main/resources/templates/system/function/subform.html new file mode 100755 index 00000000..def716f3 --- /dev/null +++ b/src/main/resources/templates/system/function/subform.html @@ -0,0 +1,106 @@ + +
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ + +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/system/operator/index.html b/src/main/resources/templates/system/operator/index.html index 1f6dad4a..14861c7f 100644 --- a/src/main/resources/templates/system/operator/index.html +++ b/src/main/resources/templates/system/operator/index.html @@ -110,7 +110,6 @@ }); }; - // 工具条点击事件 table.on('tool(user-table)', function (obj) { console.log(obj); diff --git a/src/main/resources/templates/system/role/form.html b/src/main/resources/templates/system/role/form.html new file mode 100755 index 00000000..0769c8cd --- /dev/null +++ b/src/main/resources/templates/system/role/form.html @@ -0,0 +1,74 @@ + +
+ +
+ +
+ +
+
+
+ +
+ +
+
+ + +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/system/role/func.html b/src/main/resources/templates/system/role/func.html new file mode 100755 index 00000000..d838bb52 --- /dev/null +++ b/src/main/resources/templates/system/role/func.html @@ -0,0 +1,88 @@ +
+
+
    +
    + +
    + \ No newline at end of file diff --git a/src/main/resources/templates/system/role/index.html b/src/main/resources/templates/system/role/index.html index df1c4150..c96d5298 100644 --- a/src/main/resources/templates/system/role/index.html +++ b/src/main/resources/templates/system/role/index.html @@ -7,6 +7,111 @@
    -
    +
    + 搜索: +   + + +
    +
    - \ No newline at end of file + + \ No newline at end of file