Browse Source

提交开源任务材料

10.0
LAPTOP-SB56SG4Q\86185 3 years ago
parent
commit
216ad41eaf
  1. 5
      README.md
  2. BIN
      doc/JSD-9481-需求确认书V2.docx
  3. BIN
      doc/JSD-9481配置使用说明.docx
  4. BIN
      lib/finekit-10.0.jar
  5. 28
      plugin.xml
  6. 22
      src/main/java/com/fr/plugin/idha/Constants.java
  7. 45
      src/main/java/com/fr/plugin/idha/LocaleFinder.java
  8. 107
      src/main/java/com/fr/plugin/idha/bean/Group.java
  9. 75
      src/main/java/com/fr/plugin/idha/bean/GroupCode.java
  10. 108
      src/main/java/com/fr/plugin/idha/bean/RoleGroup.java
  11. 80
      src/main/java/com/fr/plugin/idha/bean/RoleGroupMiddle.java
  12. 43
      src/main/java/com/fr/plugin/idha/dao/RoleGroupDao.java
  13. 43
      src/main/java/com/fr/plugin/idha/dao/RoleGroupMiddleDao.java
  14. 125
      src/main/java/com/fr/plugin/idha/entity/RoleGroupEntity.java
  15. 89
      src/main/java/com/fr/plugin/idha/entity/RoleGroupMiddleEntity.java
  16. 82
      src/main/java/com/fr/plugin/idha/function/GetExpandRole.java
  17. 41
      src/main/java/com/fr/plugin/idha/interfaces/OrganizationComponent.java
  18. 47
      src/main/java/com/fr/plugin/idha/interfaces/OrganizationHttpHandlerProvider.java
  19. 50
      src/main/java/com/fr/plugin/idha/interfaces/OrganizationSystemOption.java
  20. 45
      src/main/java/com/fr/plugin/idha/interfaces/RoleGroupDBAccess.java
  21. 27
      src/main/java/com/fr/plugin/idha/util/HttpUtils.java
  22. 413
      src/main/java/com/fr/plugin/idha/web/RoleGroupService.java
  23. 49
      src/main/java/com/fr/plugin/idha/web/http/DeleteRoleGroupHandler.java
  24. 67
      src/main/java/com/fr/plugin/idha/web/http/GetCodesHandler.java
  25. 67
      src/main/java/com/fr/plugin/idha/web/http/GetGroupsHandler.java
  26. 75
      src/main/java/com/fr/plugin/idha/web/http/GetRoleGroupHandler.java
  27. 64
      src/main/java/com/fr/plugin/idha/web/http/GetRoleGroupRootHandler.java
  28. 69
      src/main/java/com/fr/plugin/idha/web/http/GetRolesHandler.java
  29. 100
      src/main/java/com/fr/plugin/idha/web/http/SaveRoleGroupHandler.java
  30. 78
      src/main/java/com/fr/plugin/idha/web/http/SearchGroupsHandler.java
  31. 85
      src/main/java/com/fr/plugin/idha/web/http/UpdateRoleGroupMiddleHandler.java
  32. BIN
      src/main/resources/com/fr/plugin/idha/images/logo16.png
  33. 43
      src/main/resources/com/fr/plugin/idha/locale/lang.properties
  34. 43
      src/main/resources/com/fr/plugin/idha/locale/lang_zh_CN.properties
  35. 2
      src/main/resources/com/fr/plugin/idha/web/idha.css
  36. 2
      src/main/resources/com/fr/plugin/idha/web/idha.js

5
README.md

@ -1,3 +1,6 @@
# open-JSD-9481 # open-JSD-9481
JSD-9481 组织维度管理 JSD-9481 组织维度管理\
免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\
仅作为开发者学习参考使用!禁止用于任何商业用途!\
为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系hugh处理。

BIN
doc/JSD-9481-需求确认书V2.docx

Binary file not shown.

BIN
doc/JSD-9481配置使用说明.docx

Binary file not shown.

BIN
lib/finekit-10.0.jar

Binary file not shown.

28
plugin.xml

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<id>com.fr.plugin.idha.org</id>
<name><![CDATA[组织维度管理]]></name>
<active>yes</active>
<version>1.1</version>
<env-version>10.0~11.0</env-version>
<jartime>2021-06-13</jartime>
<vendor>fr.open</vendor>
<description><![CDATA[组织维度管理]]></description>
<change-notes><![CDATA[
[2021-06-13]适配升级,角色查询功能修改。<br/>
版本1.0主要功能:<br/>
组织维度管理。<br/>
]]></change-notes>
<main-package>com.fr.plugin.idha</main-package>
<extra-decision>
<SystemOptionProvider class="com.fr.plugin.idha.interfaces.OrganizationSystemOption"/>
<HttpHandlerProvider class="com.fr.plugin.idha.interfaces.OrganizationHttpHandlerProvider"/>
</extra-decision>
<extra-core>
<LocaleFinder class="com.fr.plugin.idha.LocaleFinder"/>
<DBAccessProvider class="com.fr.plugin.idha.interfaces.RoleGroupDBAccess"/>
<FunctionDefineProvider class="com.fr.plugin.idha.function.GetExpandRole" name="GetExpandRole"
description="用户维度查询函数。示例:GetExpandRole($$$)"/>
</extra-core>
<function-recorder class="com.fr.plugin.idha.LocaleFinder"/>
</plugin>

22
src/main/java/com/fr/plugin/idha/Constants.java

@ -0,0 +1,22 @@
/**
* Copyright (C), 2015-2019
* FileName: Constants
* Author: Louis
* Date: 2019/9/4 16:09
* Description: Constants
* History:
* <author> <time> <version> <desc>
*/
package com.fr.plugin.idha;
/**
* Function Description<br>
* Constants
*
* @author fr.open
* @since 1.0.0
*/
public class Constants {
public static final String PLUGIN_ID = "com.fr.plugin.idha.org";
public static final String ICON_PATH = "/com/fr/plugin/idha/images/logo16.png";
}

45
src/main/java/com/fr/plugin/idha/LocaleFinder.java

@ -0,0 +1,45 @@
/**
* Copyright (C), 2015-2019
* FileName: LocaleFinder
* Author: Louis
* Date: 2019/9/4 16:20
* Description: LocaleFinder
* History:
* <author> <time> <version> <desc>
*/
package com.fr.plugin.idha;
import com.fanruan.api.util.StringKit;
import com.fr.intelli.record.Focus;
import com.fr.intelli.record.Original;
import com.fr.plugin.context.PluginContexts;
import com.fr.record.analyzer.EnableMetrics;
import com.fr.stable.fun.Authorize;
import com.fr.stable.fun.impl.AbstractLocaleFinder;
import static com.fr.plugin.idha.Constants.PLUGIN_ID;
/**
* Function Description<br>
* LocaleFinder
*
* @author fr.open
* @since 1.0.0
*/
@EnableMetrics
@Authorize(callSignKey = PLUGIN_ID)
public class LocaleFinder extends AbstractLocaleFinder {
@Override
@Focus(id = PLUGIN_ID, text = "Plugin-idha", source = Original.PLUGIN)
public String find() {
if (PluginContexts.currentContext().isAvailable()) {
return "com/fr/plugin/idha/locale/lang";
}
return StringKit.EMPTY;
}
@Override
public int currentAPILevel() {
return CURRENT_LEVEL;
}
}

107
src/main/java/com/fr/plugin/idha/bean/Group.java

@ -0,0 +1,107 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: Group
* Author: Louis
* Date: 2020/6/11 15:01
*/
package com.fr.plugin.idha.bean;
import com.fr.json.JSONArray;
import com.fr.json.JSONException;
import com.fr.json.JSONObject;
/**
* Function Description<br>
* Group
*
* @author fr.open
* @since 1.0.0
*/
public class Group {
private String id;
private Boolean isParent;
private Boolean open;
private String pId;
private String pText;
private String parentNames;
private String privilegeDetailBeanList;
private String text;
public JSONObject toJSONObject() throws JSONException {
JSONObject result = JSONObject.create();
result.put("id", this.getId());
result.put("isParent", this.getParent());
result.put("open", this.getOpen());
result.put("pId", this.getpId());
result.put("pText", this.getpText());
result.put("parentNames", JSONArray.create());
result.put("privilegeDetailBeanList", this.getPrivilegeDetailBeanList());
result.put("text", this.getText());
return result;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Boolean getParent() {
return isParent;
}
public void setParent(Boolean parent) {
isParent = parent;
}
public Boolean getOpen() {
return open;
}
public void setOpen(Boolean open) {
this.open = open;
}
public String getpId() {
return pId;
}
public void setpId(String pId) {
this.pId = pId;
}
public String getpText() {
return pText;
}
public void setpText(String pText) {
this.pText = pText;
}
public String getParentNames() {
return parentNames;
}
public void setParentNames(String parentNames) {
this.parentNames = parentNames;
}
public String getPrivilegeDetailBeanList() {
return privilegeDetailBeanList;
}
public void setPrivilegeDetailBeanList(String privilegeDetailBeanList) {
this.privilegeDetailBeanList = privilegeDetailBeanList;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}

75
src/main/java/com/fr/plugin/idha/bean/GroupCode.java

@ -0,0 +1,75 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: GroupCode
* Author: Louis
* Date: 2020/6/26 21:33
*/
package com.fr.plugin.idha.bean;
import com.fanruan.api.util.CodeKit;
import com.fr.json.JSONException;
import com.fr.json.JSONObject;
/**
* <Function Description><br>
* <GroupCode>
*
* @author fr.open
* @since 1.0.0
*/
public class GroupCode {
private String id;
private String groupId;
private String roleId;
private String groupCode;
private String codeName;
public JSONObject toJSONObject() throws JSONException {
JSONObject result = JSONObject.create();
result.put("id", CodeKit.encodeURIComponent(this.getGroupCode()));
result.put("text", this.getCodeName());
result.put("description", this.getCodeName());
return result;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
}
public String getGroupCode() {
return groupCode;
}
public void setGroupCode(String groupCode) {
this.groupCode = groupCode;
}
public String getCodeName() {
return codeName;
}
public void setCodeName(String codeName) {
this.codeName = codeName;
}
}

108
src/main/java/com/fr/plugin/idha/bean/RoleGroup.java

@ -0,0 +1,108 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: RoleGroup
* Author: Louis
* Date: 2020/6/3 16:31
*/
package com.fr.plugin.idha.bean;
import com.fr.general.ComparatorUtils;
import com.fr.json.JSONException;
import com.fr.json.JSONObject;
import com.fr.plugin.idha.entity.RoleGroupEntity;
import com.fr.stable.db.data.BaseDataRecord;
import java.io.Serializable;
/**
* Function Description<br>
* RoleGroup
*
* @author fr.open
* @since 1.0.0
*/
public class RoleGroup extends BaseDataRecord implements Serializable {
private static final long serialVersionUID = -1056416324881106459L;
private String groupCode;
private String groupName;
private String connection;
private String sql;
private long timeStamp;
public RoleGroup() {
}
public RoleGroupEntity createEntity(RoleGroupEntity roleGroupEntity) {
roleGroupEntity.setId(this.getId());
roleGroupEntity.setGroupCode(this.groupCode);
roleGroupEntity.setGroupName(this.groupName);
roleGroupEntity.setConnection(this.connection);
roleGroupEntity.setSql(this.sql);
roleGroupEntity.setTimeStamp(this.timeStamp);
return roleGroupEntity;
}
public String getGroupCode() {
return this.groupCode;
}
public void setGroupCode(String groupCode) {
this.groupCode = groupCode;
}
public String getGroupName() {
return this.groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getConnection() {
return this.connection;
}
public void setConnection(String connection) {
this.connection = connection;
}
public String getSql() {
return this.sql;
}
public void setSql(String sql) {
this.sql = sql;
}
public long getTimeStamp() {
return this.timeStamp;
}
public void setTimeStamp(long timeStamp) {
this.timeStamp = timeStamp;
}
public JSONObject toJSONObject() throws JSONException {
JSONObject result = JSONObject.create();
result.put("id", this.getId());
result.put("groupCode", this.groupCode);
result.put("groupName", this.groupName);
result.put("connection", this.connection);
result.put("sql", this.sql);
return result;
}
public JSONObject toJSONRootNode() throws JSONException {
JSONObject result = JSONObject.create();
result.put("value", this.getId());
result.put("text", this.groupName);
result.put("cardType", "roleGroup.user.group");
return result;
}
public boolean equals(Object obj) {
return obj instanceof RoleGroupEntity && ComparatorUtils.equals(((RoleGroupEntity) obj).getId(), this.getId());
}
}

80
src/main/java/com/fr/plugin/idha/bean/RoleGroupMiddle.java

@ -0,0 +1,80 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: RoleGroupMiddle
* Author: Louis
* Date: 2020/6/4 14:38
*/
package com.fr.plugin.idha.bean;
import com.fr.general.ComparatorUtils;
import com.fr.json.JSONException;
import com.fr.json.JSONObject;
import com.fr.plugin.idha.entity.RoleGroupMiddleEntity;
import com.fr.stable.db.data.BaseDataRecord;
import java.io.Serializable;
/**
* Function Description<br>
* RoleGroupMiddle
*
* @author fr.open
* @since 1.0.0
*/
public class RoleGroupMiddle extends BaseDataRecord implements Serializable {
private static final long serialVersionUID = -915422230631687470L;
private String groupId;
private String code;
private String roleId;
public RoleGroupMiddle() {
}
public RoleGroupMiddleEntity createEntity(RoleGroupMiddleEntity roleGroupMiddleEntity) {
roleGroupMiddleEntity.setId(this.getId());
roleGroupMiddleEntity.setGroupId(this.getGroupId());
roleGroupMiddleEntity.setCode(this.getCode());
roleGroupMiddleEntity.setRoleId(this.getRoleId());
return roleGroupMiddleEntity;
}
public JSONObject toJSONObject() throws JSONException {
JSONObject result = JSONObject.create();
result.put("id", this.getId());
result.put("groupId", this.getGroupId());
result.put("code", this.getCode());
result.put("roleId", this.getRoleId());
return result;
}
@Override
public boolean equals(Object obj) {
return obj instanceof RoleGroupMiddleEntity && ComparatorUtils.equals(((RoleGroupMiddleEntity) obj).getId(), this.getId());
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
}
}

43
src/main/java/com/fr/plugin/idha/dao/RoleGroupDao.java

@ -0,0 +1,43 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: RoleGroupDAO
* Author: Louis
* Date: 2020/6/4 11:44
*/
package com.fr.plugin.idha.dao;
import com.fr.plugin.idha.entity.RoleGroupEntity;
import com.fr.stable.db.dao.BaseDAO;
import com.fr.stable.db.dao.DAOProvider;
import com.fr.stable.db.session.DAOSession;
/**
* Function Description<br>
* RoleGroupDAO
*
* @author fr.open
* @since 1.0.0
*/
public class RoleGroupDao extends BaseDAO<RoleGroupEntity> {
public final static DAOProvider<RoleGroupEntity> DAO = new DAOProvider<RoleGroupEntity>() {
@Override
public Class<RoleGroupEntity> getEntityClass() {
return RoleGroupEntity.class;
}
@Override
public Class<? extends BaseDAO<RoleGroupEntity>> getDAOClass() {
return RoleGroupDao.class;
}
};
public RoleGroupDao(DAOSession daoSession) {
super(daoSession);
}
@Override
protected Class<RoleGroupEntity> getEntityClass() {
return RoleGroupEntity.class;
}
}

43
src/main/java/com/fr/plugin/idha/dao/RoleGroupMiddleDao.java

@ -0,0 +1,43 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: RoleGroupMiddleDao
* Author: Louis
* Date: 2020/6/4 14:33
*/
package com.fr.plugin.idha.dao;
import com.fr.plugin.idha.entity.RoleGroupMiddleEntity;
import com.fr.stable.db.dao.BaseDAO;
import com.fr.stable.db.dao.DAOProvider;
import com.fr.stable.db.session.DAOSession;
/**
* Function Description<br>
* RoleGroupMiddleDao
*
* @author fr.open
* @since 1.0.0
*/
public class RoleGroupMiddleDao extends BaseDAO<RoleGroupMiddleEntity> {
public final static DAOProvider<RoleGroupMiddleEntity> DAO = new DAOProvider<RoleGroupMiddleEntity>() {
@Override
public Class<RoleGroupMiddleEntity> getEntityClass() {
return RoleGroupMiddleEntity.class;
}
@Override
public Class<? extends BaseDAO<RoleGroupMiddleEntity>> getDAOClass() {
return RoleGroupMiddleDao.class;
}
};
public RoleGroupMiddleDao(DAOSession daoSession) {
super(daoSession);
}
@Override
protected Class<RoleGroupMiddleEntity> getEntityClass() {
return RoleGroupMiddleEntity.class;
}
}

125
src/main/java/com/fr/plugin/idha/entity/RoleGroupEntity.java

@ -0,0 +1,125 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: RoleGroupEntity
* Author: Louis
* Date: 2020/6/3 16:18
*/
package com.fr.plugin.idha.entity;
import com.fr.plugin.idha.bean.RoleGroup;
import com.fr.stable.db.entity.BaseEntity;
import com.fr.third.javax.persistence.Column;
import com.fr.third.javax.persistence.Entity;
import com.fr.third.javax.persistence.Table;
/**
* Function Description<br>
* RoleGroupEntity
*
* @author fr.open
* @since 1.0.0
*/
@Entity
@Table(name = "fine_role_group")
public class RoleGroupEntity extends BaseEntity {
public static final String COLUMN_GROUP_CODE = "groupCode";
public static final String COLUMN_GROUP_NAME = "groupName";
public static final String COLUMN_CONNECTION = "connection";
public static final String COLUMN_SQL = "sql";
public static final String COLUMN_TIMESTAMP = "timeStamp";
private static final long serialVersionUID = 2019521971055841884L;
@Column(name = "groupCode")
private String groupCode = "";
@Column(name = "groupName")
private String groupName = "";
@Column(name = "connection")
private String connection = "";
@Column(name = "sql")
private String sql = "";
@Column(name = "timeStamp")
private long timeStamp = 0L;
public RoleGroupEntity() {
}
public RoleGroup createBean(RoleGroup group) {
group.setId(this.getId());
group.setGroupCode(this.getGroupCode());
group.setGroupName(this.getGroupName());
group.setConnection(this.getConnection());
group.setSql(this.getSql());
group.setTimeStamp(this.getTimeStamp());
return group;
}
public RoleGroupEntity id(String id) {
this.setId(id);
return this;
}
public String getGroupCode() {
return this.groupCode;
}
public void setGroupCode(String groupCode) {
this.groupCode = groupCode;
}
public RoleGroupEntity groupName(String groupName) {
this.setGroupName(groupName);
return this;
}
public String getGroupName() {
return this.groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public RoleGroupEntity groupCode(String groupCode) {
this.setGroupCode(groupCode);
return this;
}
public String getConnection() {
return this.connection;
}
public void setConnection(String connection) {
this.connection = connection;
}
public RoleGroupEntity connection(String connection) {
this.setConnection(connection);
return this;
}
public String getSql() {
return this.sql;
}
public void setSql(String sql) {
this.sql = sql;
}
public RoleGroupEntity sql(String sql) {
this.setSql(sql);
return this;
}
public long getTimeStamp() {
return this.timeStamp;
}
public void setTimeStamp(long timeStamp) {
this.timeStamp = timeStamp;
}
public RoleGroupEntity timeStamp(long timeStamp) {
this.setTimeStamp(timeStamp);
return this;
}
}

89
src/main/java/com/fr/plugin/idha/entity/RoleGroupMiddleEntity.java

@ -0,0 +1,89 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: RoleGroupMiddleEntity
* Author: Louis
* Date: 2020/6/4 14:14
*/
package com.fr.plugin.idha.entity;
import com.fanruan.api.util.AssistKit;
import com.fanruan.api.util.StringKit;
import com.fr.stable.db.entity.BaseEntity;
import com.fr.third.javax.persistence.Column;
import com.fr.third.javax.persistence.Entity;
import com.fr.third.javax.persistence.Table;
/**
* Function Description<br>
* RoleGroupMiddleEntity
*
* @author fr.open
* @since 1.0.0
*/
@Entity
@Table(name = "fine_role_group_middle")
public class RoleGroupMiddleEntity extends BaseEntity {
public static final String COLUMN_GROUP_ID = "groupId";
public static final String COLUMN_CODE = "code";
public static final String COLUMN_ROLE_ID = "roleId";
@Column(name = "groupId")
private String groupId = StringKit.EMPTY;
@Column(name = "code")
private String code = StringKit.EMPTY;
@Column(name = "roleId")
private String roleId = StringKit.EMPTY;
public RoleGroupMiddleEntity() {
}
public RoleGroupMiddleEntity id(String id) {
this.setId(id);
return this;
}
public RoleGroupMiddleEntity groupId(String groupId) {
this.setGroupId(groupId);
return this;
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public RoleGroupMiddleEntity code(String code) {
this.setCode(code);
return this;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public RoleGroupMiddleEntity roleId(String roleId) {
this.setRoleId(roleId);
return this;
}
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
}
@Override
public String toString() {
return AssistKit.toString(this);
}
}

82
src/main/java/com/fr/plugin/idha/function/GetExpandRole.java

@ -0,0 +1,82 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: GetExpandRole
* Author: Louis
* Date: 2020/6/14 15:31
*/
package com.fr.plugin.idha.function;
import com.fanruan.api.decision.user.UserKit;
import com.fanruan.api.log.LogKit;
import com.fanruan.api.util.StringKit;
import com.fr.base.Utils;
import com.fr.decision.authority.data.CustomRole;
import com.fr.decision.webservice.v10.user.CustomRoleService;
import com.fr.general.ComparatorUtils;
import com.fr.plugin.idha.web.RoleGroupService;
import com.fr.script.AbstractFunction;
import com.fr.stable.Primitive;
import com.fr.stable.script.Function;
import org.jetbrains.annotations.NotNull;
import java.util.HashSet;
import java.util.List;
/**
* Function Description<br>
* GetExpandRole
*
* @author fr.open
* @since 1.0.0
*/
public class GetExpandRole extends AbstractFunction {
public GetExpandRole() {
}
@Override
public Object run(Object[] args) {
if (args.length < 1) {
return Primitive.ERROR_NAME;
}
String userName = Utils.objectToString(args[0]);
String groupRootCode = StringKit.EMPTY;
if (ComparatorUtils.equals(args.length, 2)) {
groupRootCode = Utils.objectToString(args[1]);
}
if (StringKit.isEmpty(userName)) {
return Primitive.ERROR_NAME;
}
try {
String userId = UserKit.getUser(userName).getId();
HashSet<String> roleIds = getCustomRoleIds(userId);
HashSet<String> codeSet = RoleGroupService.GetCodeList(roleIds, groupRootCode);
return codeSet.toString();
} catch (Exception e) {
LogKit.error(e.getMessage(), e);
}
return Primitive.ERROR_NAME;
}
@Override
public Type getType() {
return OTHER;
}
/**
* 通过userid查询自定义角色id
*
* @param userId
* @return
* @throws Exception
*/
private HashSet<String> getCustomRoleIds(@NotNull String userId) throws Exception {
HashSet<String> result = new HashSet<String>();
List<CustomRole> customRoleList = CustomRoleService.getInstance().getCustomRolesByUser(userId);
for (CustomRole customRole : customRoleList) {
result.add(customRole.getId());
}
return result;
}
}

41
src/main/java/com/fr/plugin/idha/interfaces/OrganizationComponent.java

@ -0,0 +1,41 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: OrganizationComponent
* Author: Louis
* Date: 2020/6/3 15:07
*/
package com.fr.plugin.idha.interfaces;
import com.fr.plugin.context.PluginContexts;
import com.fr.web.struct.Component;
import com.fr.web.struct.browser.RequestClient;
import com.fr.web.struct.category.ScriptPath;
import com.fr.web.struct.category.StylePath;
/**
* Function Description<br>
* OrganizationComponent
*
* @author fr.open
* @since 1.0.0
*/
public class OrganizationComponent extends Component {
public static OrganizationComponent KEY = new OrganizationComponent();
public OrganizationComponent() {
}
@Override
public ScriptPath script(RequestClient client) {
if (PluginContexts.currentContext().isAvailable()) {
return ScriptPath.build("/com/fr/plugin/idha/web/idha.js");
}
return ScriptPath.EMPTY;
}
@Override
public StylePath style(RequestClient client) {
return StylePath.build("/com/fr/plugin/idha/web/idha.css");
}
}

47
src/main/java/com/fr/plugin/idha/interfaces/OrganizationHttpHandlerProvider.java

@ -0,0 +1,47 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: OrganizationHttpHandlerProvider
* Author: Louis
* Date: 2020/6/3 15:36
*/
package com.fr.plugin.idha.interfaces;
import com.fr.decision.fun.impl.AbstractHttpHandlerProvider;
import com.fr.decision.fun.impl.BaseHttpHandler;
import com.fr.plugin.context.PluginContexts;
import com.fr.plugin.idha.web.http.*;
import com.fr.stable.fun.Authorize;
import static com.fr.plugin.idha.Constants.PLUGIN_ID;
/**
* Function Description<br>
* OrganizationHttpHandlerProvider
*
* @author fr.open
* @since 1.0.0
*/
@Authorize(callSignKey = PLUGIN_ID)
public class OrganizationHttpHandlerProvider extends AbstractHttpHandlerProvider {
public OrganizationHttpHandlerProvider() {
}
@Override
public BaseHttpHandler[] registerHandlers() {
if (!PluginContexts.currentContext().isAvailable()) {
return new BaseHttpHandler[]{};
}
return new BaseHttpHandler[]{
new GetCodesHandler(),
new SearchGroupsHandler(),
new GetGroupsHandler(),
new GetRolesHandler(),
new UpdateRoleGroupMiddleHandler(),
new GetRoleGroupRootHandler(),
new GetRoleGroupHandler(),
new DeleteRoleGroupHandler(),
new SaveRoleGroupHandler()
};
}
}

50
src/main/java/com/fr/plugin/idha/interfaces/OrganizationSystemOption.java

@ -0,0 +1,50 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: OrganizationSystemOption
* Author: Louis
* Date: 2020/6/3 14:23
*/
package com.fr.plugin.idha.interfaces;
import com.fanruan.api.i18n.I18nKit;
import com.fr.decision.fun.impl.AbstractSystemOptionProvider;
import com.fr.decision.web.MainComponent;
import com.fr.web.struct.Atom;
/**
* Function Description<br>
* 组织维度管理
*
* @author fr.open
* @since 1.0.0
*/
public class OrganizationSystemOption extends AbstractSystemOptionProvider {
public OrganizationSystemOption() {
}
@Override
public String id() {
return "OrganizationSystemOption";
}
@Override
public String displayName() {
return I18nKit.getLocText("Plugin-idha_Organizational_Dimension_Manager");
}
@Override
public int sortIndex() {
return 2;
}
@Override
public Atom attach() {
return MainComponent.KEY;
}
@Override
public Atom client() {
return OrganizationComponent.KEY;
}
}

45
src/main/java/com/fr/plugin/idha/interfaces/RoleGroupDBAccess.java

@ -0,0 +1,45 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: RoleGroupDBAccess
* Author: Louis
* Date: 2020/6/4 11:48
*/
package com.fr.plugin.idha.interfaces;
import com.fr.plugin.db.AbstractDBAccessProvider;
import com.fr.plugin.idha.dao.RoleGroupDao;
import com.fr.plugin.idha.dao.RoleGroupMiddleDao;
import com.fr.stable.db.accessor.DBAccessor;
import com.fr.stable.db.dao.DAOProvider;
/**
* Function Description<br>
* RoleGroupDBAccess
*
* @author fr.open
* @since 1.0.0
*/
public class RoleGroupDBAccess extends AbstractDBAccessProvider {
private static DBAccessor accessor;
public RoleGroupDBAccess() {
}
public static DBAccessor getAccessor() {
return accessor;
}
@Override
public DAOProvider[] registerDAO() {
return new DAOProvider[]{
RoleGroupDao.DAO,
RoleGroupMiddleDao.DAO
};
}
@Override
public void onDBAvailable(DBAccessor dbAccessor) {
accessor = dbAccessor;
}
}

27
src/main/java/com/fr/plugin/idha/util/HttpUtils.java

@ -0,0 +1,27 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: HttpUtils
* Author: Louis
* Date: 2020/6/4 15:45
*/
package com.fr.plugin.idha.util;
import com.fr.json.JSONException;
import com.fr.json.JSONObject;
/**
* Function Description<br>
* HttpUtils
*
* @author fr.open
* @since 1.0.0
*/
public class HttpUtils {
public static JSONObject createSuccessResponseJSONObject() throws JSONException {
JSONObject result = JSONObject.create();
result.put("errorCode", 0);
result.put("status", "success");
return result;
}
}

413
src/main/java/com/fr/plugin/idha/web/RoleGroupService.java

@ -0,0 +1,413 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: RoleGroupService
* Author: Louis
* Date: 2020/6/4 16:12
*/
package com.fr.plugin.idha.web;
import com.fanruan.api.data.ConnectionKit;
import com.fanruan.api.util.StringKit;
import com.fr.data.impl.AbstractDBDataModel;
import com.fr.data.impl.Connection;
import com.fr.data.impl.DBTableData;
import com.fr.decision.base.util.UUIDUtil;
import com.fr.decision.webservice.bean.user.RoleBean;
import com.fr.decision.webservice.v10.user.CustomRoleService;
import com.fr.general.ComparatorUtils;
import com.fr.general.data.TableDataException;
import com.fr.plugin.idha.bean.Group;
import com.fr.plugin.idha.bean.GroupCode;
import com.fr.plugin.idha.dao.RoleGroupDao;
import com.fr.plugin.idha.dao.RoleGroupMiddleDao;
import com.fr.plugin.idha.entity.RoleGroupEntity;
import com.fr.plugin.idha.entity.RoleGroupMiddleEntity;
import com.fr.plugin.idha.interfaces.RoleGroupDBAccess;
import com.fr.stable.db.action.DBAction;
import com.fr.stable.db.dao.DAOContext;
import com.fr.stable.query.QueryFactory;
import com.fr.stable.query.condition.QueryCondition;
import com.fr.stable.query.restriction.RestrictionFactory;
import org.jetbrains.annotations.NotNull;
import java.util.*;
/**
* Function Description<br>
* RoleGroupService
*
* @author fr.open
* @since 1.0.0
*/
public class RoleGroupService {
/**
* 查询全部角色组按照时间排序
*
* @return
* @throws Exception
*/
public static List<RoleGroupEntity> getAllSortedByTimeStamp() throws Exception {
return RoleGroupDBAccess.getAccessor().runQueryAction(new DBAction<List<RoleGroupEntity>>() {
@Override
public List<RoleGroupEntity> run(DAOContext daoContext) throws Exception {
return daoContext.getDAO(RoleGroupDao.class).find(QueryFactory.create().addSort("timeStamp", true));
}
});
}
/**
* 查询全部角色组
*
* @return
* @throws Exception
*/
public static List<RoleGroupEntity> getAll() throws Exception {
return RoleGroupDBAccess.getAccessor().runQueryAction(new DBAction<List<RoleGroupEntity>>() {
@Override
public List<RoleGroupEntity> run(DAOContext daoContext) throws Exception {
return daoContext.getDAO(RoleGroupDao.class).find(QueryFactory.create());
}
});
}
/**
* Save
*
* @param saveRoleGroup
* @throws Exception
*/
public static void save(final RoleGroupEntity saveRoleGroup) throws Exception {
RoleGroupDBAccess.getAccessor().runDMLAction(new DBAction<RoleGroupEntity>() {
@Override
public RoleGroupEntity run(DAOContext daoContext) throws Exception {
(daoContext.getDAO(RoleGroupDao.class)).addOrUpdate(saveRoleGroup);
return null;
}
});
}
/**
* Delete
*
* @param id
* @throws Exception
*/
public static void delete(final String id) throws Exception {
RoleGroupDBAccess.getAccessor().runDMLAction(new DBAction<RoleGroupEntity>() {
@Override
public RoleGroupEntity run(DAOContext daoContext) throws Exception {
(daoContext.getDAO(RoleGroupDao.class)).remove(id);
return null;
}
});
}
/**
* 通过groupCode查询自定义角色
*
* @param groupId
* @param groupCode
* @return
* @throws Exception
*/
public static List<RoleBean> getRolesByGroupId(final String groupId, final String groupCode) throws Exception {
List<RoleGroupMiddleEntity> middleEntityList = RoleGroupDBAccess.getAccessor().runQueryAction(new DBAction<List<RoleGroupMiddleEntity>>() {
@Override
public List<RoleGroupMiddleEntity> run(DAOContext daoContext) throws Exception {
return daoContext.getDAO(RoleGroupMiddleDao.class).find(
QueryFactory.create().addRestriction(RestrictionFactory.eq(RoleGroupMiddleEntity.COLUMN_GROUP_ID, groupId))
.addRestriction(RestrictionFactory.eq(RoleGroupMiddleEntity.COLUMN_CODE, groupCode))
);
}
});
if (middleEntityList == null || middleEntityList.isEmpty()) {
return null;
}
List<RoleBean> roleEntityList = new ArrayList<>();
RoleBean roleBean;
for (final RoleGroupMiddleEntity middleEntity : middleEntityList) {
roleBean = CustomRoleService.getInstance().getCustomRole(middleEntity.getRoleId());
roleEntityList.add(roleBean);
}
return roleEntityList;
}
/**
* 删除维度与自定义角色关联
*
* @param groupId
* @param code
* @param roleIds
* @throws Exception
*/
public static void deleteMiddle(final String groupId, final String code, final Set<String> roleIds) throws Exception {
RoleGroupDBAccess.getAccessor().runDMLAction(new DBAction<RoleGroupMiddleEntity>() {
@Override
public RoleGroupMiddleEntity run(DAOContext daoContext) throws Exception {
daoContext.getDAO(RoleGroupMiddleDao.class).remove(
QueryFactory.create()
.addRestriction(RestrictionFactory.eq(RoleGroupMiddleEntity.COLUMN_GROUP_ID, groupId))
.addRestriction(RestrictionFactory.eq(RoleGroupMiddleEntity.COLUMN_CODE, code))
.addRestriction(RestrictionFactory.in(RoleGroupMiddleEntity.COLUMN_ROLE_ID, roleIds))
);
return null;
}
});
}
/**
* 新增维度与自定义角色关联
*
* @param groupId
* @param code
* @param roleIds
* @throws Exception
*/
public static void saveMiddle(final String groupId, final String code, final Set<String> roleIds) throws Exception {
for (String roleId : roleIds) {
final RoleGroupMiddleEntity roleGroupMiddleEntity = (new RoleGroupMiddleEntity())
.id(UUIDUtil.generate())
.groupId(groupId)
.code(code)
.roleId(roleId);
RoleGroupDBAccess.getAccessor().runDMLAction(new DBAction<RoleGroupMiddleEntity>() {
@Override
public RoleGroupMiddleEntity run(DAOContext daoContext) throws Exception {
daoContext.getDAO(RoleGroupMiddleDao.class).addOrUpdate(roleGroupMiddleEntity);
return null;
}
});
}
}
/**
* 删除自定义角色与维度code关联
*
* @param groupId
* @param roleId
* @param groupCodes
* @throws Exception
*/
public static void deleteMiddleByID(final String groupId, final String roleId, final Set<String> groupCodes) throws Exception {
RoleGroupDBAccess.getAccessor().runDMLAction(new DBAction<RoleGroupMiddleEntity>() {
@Override
public RoleGroupMiddleEntity run(DAOContext daoContext) throws Exception {
daoContext.getDAO(RoleGroupMiddleDao.class).remove(
QueryFactory.create()
.addRestriction(RestrictionFactory.eq(RoleGroupMiddleEntity.COLUMN_GROUP_ID, groupId))
.addRestriction(RestrictionFactory.eq(RoleGroupMiddleEntity.COLUMN_ROLE_ID, roleId))
.addRestriction(RestrictionFactory.in(RoleGroupMiddleEntity.COLUMN_CODE, groupCodes))
);
return null;
}
});
}
/**
* 新增自定义角色与维度code关联
*
* @param groupId
* @param roleId
* @param groupCodes
* @throws Exception
*/
public static void saveMiddleByCode(final String groupId, final String roleId, final Set<String> groupCodes) throws Exception {
for (String code : groupCodes) {
final RoleGroupMiddleEntity roleGroupMiddleEntity = (new RoleGroupMiddleEntity())
.id(UUIDUtil.generate())
.groupId(groupId)
.roleId(roleId)
.code(code);
RoleGroupDBAccess.getAccessor().runDMLAction(new DBAction<RoleGroupMiddleEntity>() {
@Override
public RoleGroupMiddleEntity run(DAOContext daoContext) throws Exception {
daoContext.getDAO(RoleGroupMiddleDao.class).addOrUpdate(roleGroupMiddleEntity);
return null;
}
});
}
}
/**
* 查询指定维度的code列表
*
* @param rootId
* @param pId
* @return
* @throws Exception
*/
public static List<Group> getCodeByID(final String rootId, final String pId) throws Exception {
RoleGroupEntity roleGroupEntity = getRoleGroupEntity(rootId);
if (roleGroupEntity == null || StringKit.isEmpty(roleGroupEntity.getGroupCode())
|| StringKit.isEmpty(roleGroupEntity.getConnection()) || StringKit.isEmpty(roleGroupEntity.getSql())) {
return null;
}
Connection connection = ConnectionKit.getConnection(roleGroupEntity.getConnection());
if (connection == null) {
return null;
}
AbstractDBDataModel dataModel = DBTableData.createCacheableDBResultSet(connection, roleGroupEntity.getSql(), -1);
if (!ComparatorUtils.equals(dataModel.getColumnCount(), 3)) {
return null;
}
List<Group> result = new ArrayList<Group>();
String filter = StringKit.equals(rootId, pId) ? roleGroupEntity.getGroupCode() : pId;
for (int row = 0; row < dataModel.getRowCount(); row++) {
if (StringKit.equals(filter, String.valueOf(dataModel.getValueAt(row, 1)))) {
result.add(createGroup(roleGroupEntity, dataModel, row));
}
}
return result;
}
/**
* 搜索code值列表
*
* @param rootId
* @param keyword
* @return
* @throws Exception
*/
public static List<Group> searchGroupCode(final String rootId, final String keyword) throws Exception {
RoleGroupEntity roleGroupEntity = getRoleGroupEntity(rootId);
if (roleGroupEntity == null || StringKit.isEmpty(roleGroupEntity.getConnection()) || StringKit.isEmpty(roleGroupEntity.getSql())) {
return null;
}
Connection connection = ConnectionKit.getConnection(roleGroupEntity.getConnection());
if (connection == null) {
return null;
}
AbstractDBDataModel dataModel = DBTableData.createCacheableDBResultSet(connection, roleGroupEntity.getSql(), -1);
if (!ComparatorUtils.equals(dataModel.getColumnCount(), 3)) {
return null;
}
List<Group> result = new ArrayList<Group>();
for (int row = 0; row < dataModel.getRowCount(); row++) {
if (String.valueOf(dataModel.getValueAt(row, 2)).contains(keyword)) {
result.add(createGroup(roleGroupEntity, dataModel, row));
}
}
return result;
}
@NotNull
private static Group createGroup(RoleGroupEntity roleGroupEntity, AbstractDBDataModel dataModel, int row) throws TableDataException {
Group group = new Group();
group.setId(String.valueOf(dataModel.getValueAt(row, 0)));
group.setParent(Boolean.FALSE);
group.setOpen(Boolean.FALSE);
group.setpId(String.valueOf(dataModel.getValueAt(row, 1)));
group.setpText(roleGroupEntity.getGroupName());
group.setParentNames(roleGroupEntity.getGroupName());
group.setPrivilegeDetailBeanList(null);
group.setText(String.valueOf(dataModel.getValueAt(row, 2)));
return group;
}
private static RoleGroupEntity getRoleGroupEntity(final String rootId) throws Exception {
return RoleGroupDBAccess.getAccessor().runQueryAction(new DBAction<RoleGroupEntity>() {
@Override
public RoleGroupEntity run(DAOContext daoContext) throws Exception {
return daoContext.getDAO(RoleGroupDao.class).getById(rootId);
}
});
}
/**
* 通过自定义角色查询维度code列表
*
* @param roleIds
* @param groupRootCode
* @return
*/
public static HashSet<String> GetCodeList(final Set<String> roleIds, final String groupRootCode) throws Exception {
final QueryCondition queryCondition = QueryFactory.create().addRestriction(RestrictionFactory.in(RoleGroupMiddleEntity.COLUMN_ROLE_ID, roleIds));
if (StringKit.isNotEmpty(groupRootCode)) {
RoleGroupEntity roleGroupEntity = RoleGroupDBAccess.getAccessor().runQueryAction(new DBAction<RoleGroupEntity>() {
@Override
public RoleGroupEntity run(DAOContext daoContext) throws Exception {
return daoContext.getDAO(RoleGroupDao.class).findOne(
QueryFactory.create().addRestriction(RestrictionFactory.eq(RoleGroupEntity.COLUMN_GROUP_CODE, groupRootCode))
);
}
});
if (roleGroupEntity != null) {
queryCondition.addRestriction(RestrictionFactory.eq(RoleGroupMiddleEntity.COLUMN_GROUP_ID, roleGroupEntity.getId()));
}
}
List<RoleGroupMiddleEntity> middleEntityList = RoleGroupDBAccess.getAccessor().runQueryAction(new DBAction<List<RoleGroupMiddleEntity>>() {
@Override
public List<RoleGroupMiddleEntity> run(DAOContext daoContext) throws Exception {
return daoContext.getDAO(RoleGroupMiddleDao.class).find(queryCondition);
}
});
HashSet<String> codeSet = new HashSet<String>();
for (RoleGroupMiddleEntity entity : middleEntityList) {
codeSet.add(entity.getCode());
}
return codeSet;
}
/**
* 通过自定义角色查询指定维度的code列表
*
* @param groupId
* @param roleId
* @return
*/
public static List<GroupCode> getCodeListByRole(String groupId, String roleId) throws Exception {
Map<String, String> codeMap = getCodeMapByID(groupId);
final QueryCondition queryCondition = QueryFactory.create().addRestriction(RestrictionFactory.eq(RoleGroupMiddleEntity.COLUMN_GROUP_ID, groupId))
.addRestriction(RestrictionFactory.eq(RoleGroupMiddleEntity.COLUMN_ROLE_ID, roleId))
.addSort(RoleGroupMiddleEntity.COLUMN_CODE);
List<RoleGroupMiddleEntity> middleEntityList = RoleGroupDBAccess.getAccessor().runQueryAction(new DBAction<List<RoleGroupMiddleEntity>>() {
@Override
public List<RoleGroupMiddleEntity> run(DAOContext daoContext) throws Exception {
return daoContext.getDAO(RoleGroupMiddleDao.class).find(queryCondition);
}
});
List<GroupCode> codeList = new ArrayList<GroupCode>();
for (RoleGroupMiddleEntity entity : middleEntityList) {
GroupCode groupCode = new GroupCode();
groupCode.setId(entity.getId());
groupCode.setGroupId(entity.getGroupId());
groupCode.setGroupCode(entity.getCode());
groupCode.setRoleId(entity.getRoleId());
if (codeMap != null) {
groupCode.setCodeName(codeMap.get(entity.getCode()));
}
codeList.add(groupCode);
}
return codeList;
}
/**
* 查询指定维度的code列表
*
* @param groupId
* @return
* @throws Exception
*/
private static Map<String, String> getCodeMapByID(final String groupId) throws Exception {
RoleGroupEntity roleGroupEntity = getRoleGroupEntity(groupId);
if (roleGroupEntity == null || StringKit.isEmpty(roleGroupEntity.getGroupCode())
|| StringKit.isEmpty(roleGroupEntity.getConnection()) || StringKit.isEmpty(roleGroupEntity.getSql())) {
return null;
}
Connection connection = ConnectionKit.getConnection(roleGroupEntity.getConnection());
if (connection == null) {
return null;
}
AbstractDBDataModel dataModel = DBTableData.createCacheableDBResultSet(connection, roleGroupEntity.getSql(), -1);
if (!ComparatorUtils.equals(dataModel.getColumnCount(), 3)) {
return null;
}
Map<String, String> result = new HashMap<String, String>();
for (int row = 0; row < dataModel.getRowCount(); row++) {
result.put(String.valueOf(dataModel.getValueAt(row, 0)),
String.valueOf(dataModel.getValueAt(row, 2)));
}
return result;
}
}

49
src/main/java/com/fr/plugin/idha/web/http/DeleteRoleGroupHandler.java

@ -0,0 +1,49 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: DeleteRoleGroupHandler
* Author: Louis
* Date: 2020/6/3 15:57
*/
package com.fr.plugin.idha.web.http;
import com.fr.decision.fun.impl.BaseHttpHandler;
import com.fr.json.JSONObject;
import com.fr.plugin.idha.util.HttpUtils;
import com.fr.plugin.idha.web.RoleGroupService;
import com.fr.third.springframework.web.bind.annotation.RequestMethod;
import com.fr.web.utils.WebUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Function Description<br>
* DeleteRoleGroupHandler
*
* @author fr.open
* @since 1.0.0
*/
public class DeleteRoleGroupHandler extends BaseHttpHandler {
public DeleteRoleGroupHandler() {
}
public RequestMethod getMethod() {
return RequestMethod.DELETE;
}
public String getPath() {
return "/od/roleGroup";
}
public boolean isPublic() {
return false;
}
public void handle(HttpServletRequest request, HttpServletResponse response) throws Exception {
final String id = WebUtils.getHTTPRequestParameter(request, "id");
RoleGroupService.delete(id);
JSONObject result = HttpUtils.createSuccessResponseJSONObject();
WebUtils.flushSuccessMessageAutoClose(request, response, result);
}
}

67
src/main/java/com/fr/plugin/idha/web/http/GetCodesHandler.java

@ -0,0 +1,67 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: GetCodesHandler
* Author: Louis
* Date: 2020/6/26 21:28
*/
package com.fr.plugin.idha.web.http;
import com.fr.decision.fun.impl.BaseHttpHandler;
import com.fr.json.JSONArray;
import com.fr.json.JSONObject;
import com.fr.plugin.context.PluginContexts;
import com.fr.plugin.idha.bean.GroupCode;
import com.fr.plugin.idha.util.HttpUtils;
import com.fr.plugin.idha.web.RoleGroupService;
import com.fr.third.springframework.web.bind.annotation.RequestMethod;
import com.fr.web.utils.WebUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* <Function Description><br>
* <GetCodesHandler>
*
* @author fr.open
* @since 1.0.0
*/
public class GetCodesHandler extends BaseHttpHandler {
public GetCodesHandler() {
}
@Override
public RequestMethod getMethod() {
return RequestMethod.GET;
}
@Override
public String getPath() {
return "/od/codes";
}
@Override
public boolean isPublic() {
return false;
}
@Override
public void handle(HttpServletRequest request, HttpServletResponse response) throws Exception {
String groupId = WebUtils.getHTTPRequestParameter(request, "groupId");
String roleId = WebUtils.getHTTPRequestParameter(request, "roleId");
List<GroupCode> groupCodeList = RoleGroupService.getCodeListByRole(groupId, roleId);
JSONArray data = new JSONArray();
JSONObject result = HttpUtils.createSuccessResponseJSONObject();
if (!groupCodeList.isEmpty()) {
for (GroupCode groupCode : groupCodeList) {
data.put(groupCode.toJSONObject());
}
}
if (PluginContexts.currentContext().isAvailable()) {
result.put("data", data);
}
WebUtils.flushSuccessMessageAutoClose(request, response, result);
}
}

67
src/main/java/com/fr/plugin/idha/web/http/GetGroupsHandler.java

@ -0,0 +1,67 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: GetGroupsHandler
* Author: Louis
* Date: 2020/6/11 11:58
*/
package com.fr.plugin.idha.web.http;
import com.fr.decision.fun.impl.BaseHttpHandler;
import com.fr.json.JSONArray;
import com.fr.json.JSONObject;
import com.fr.plugin.context.PluginContexts;
import com.fr.plugin.idha.bean.Group;
import com.fr.plugin.idha.util.HttpUtils;
import com.fr.plugin.idha.web.RoleGroupService;
import com.fr.third.springframework.web.bind.annotation.RequestMethod;
import com.fr.web.utils.WebUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* Function Description<br>
* GetGroupsHandler
*
* @author fr.open
* @since 1.0.0
*/
public class GetGroupsHandler extends BaseHttpHandler {
public GetGroupsHandler() {
}
@Override
public RequestMethod getMethod() {
return RequestMethod.GET;
}
@Override
public String getPath() {
return "/od/groups";
}
@Override
public boolean isPublic() {
return false;
}
@Override
public void handle(HttpServletRequest request, HttpServletResponse response) throws Exception {
String rootId = WebUtils.getHTTPRequestParameter(request, "rootId");
String id = WebUtils.getHTTPRequestParameter(request, "id");
List<Group> groupList = RoleGroupService.getCodeByID(rootId, id);
JSONArray data = new JSONArray();
JSONObject result = HttpUtils.createSuccessResponseJSONObject();
if (groupList != null && !groupList.isEmpty()) {
for (Group group : groupList) {
data.put(group.toJSONObject());
}
}
if (PluginContexts.currentContext().isAvailable()) {
result.put("data", data);
}
WebUtils.flushSuccessMessageAutoClose(request, response, result);
}
}

75
src/main/java/com/fr/plugin/idha/web/http/GetRoleGroupHandler.java

@ -0,0 +1,75 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: GetRoleGroupHandler
* Author: Louis
* Date: 2020/6/3 15:45
*/
package com.fr.plugin.idha.web.http;
import com.fr.decision.fun.impl.BaseHttpHandler;
import com.fr.json.JSONArray;
import com.fr.json.JSONObject;
import com.fr.plugin.context.PluginContexts;
import com.fr.plugin.idha.bean.RoleGroup;
import com.fr.plugin.idha.entity.RoleGroupEntity;
import com.fr.plugin.idha.util.HttpUtils;
import com.fr.plugin.idha.web.RoleGroupService;
import com.fr.third.springframework.web.bind.annotation.RequestMethod;
import com.fr.web.utils.WebUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* Function Description<br>
* 查询角色组信息
*
* @author fr.open
* @since 1.0.0
*/
public class GetRoleGroupHandler extends BaseHttpHandler {
public GetRoleGroupHandler() {
}
@Override
public RequestMethod getMethod() {
return RequestMethod.GET;
}
@Override
public String getPath() {
return "/od/roleGroup";
}
@Override
public boolean isPublic() {
return false;
}
@Override
public void handle(HttpServletRequest request, HttpServletResponse response) throws Exception {
int startIdx = WebUtils.getHTTPRequestIntParameter(request, "startIdx", -1);
int count = WebUtils.getHTTPRequestIntParameter(request, "count", -1);
List<RoleGroupEntity> groupEntityList = RoleGroupService.getAllSortedByTimeStamp();
JSONArray groupList = new JSONArray();
JSONObject result = HttpUtils.createSuccessResponseJSONObject();
if (startIdx == -1 && count == -1) {
for (RoleGroupEntity roleGroupEntity : groupEntityList) {
groupList.put(roleGroupEntity.createBean(new RoleGroup()).toJSONObject());
}
} else if (startIdx > -1 && count > -1) {
int length = Math.min(count + startIdx, groupEntityList.size());
for (int i = startIdx; i < length; ++i) {
RoleGroupEntity roleGroupEntity = groupEntityList.get(i);
groupList.put(roleGroupEntity.createBean(new RoleGroup()).toJSONObject());
}
}
result.put("total", groupEntityList.size());
if (PluginContexts.currentContext().isAvailable()) {
result.put("groupList", groupList);
}
WebUtils.flushSuccessMessageAutoClose(request, response, result);
}
}

64
src/main/java/com/fr/plugin/idha/web/http/GetRoleGroupRootHandler.java

@ -0,0 +1,64 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: GetRoleGroupRootHandler
* Author: Louis
* Date: 2020/6/12 21:59
*/
package com.fr.plugin.idha.web.http;
import com.fr.decision.fun.impl.BaseHttpHandler;
import com.fr.json.JSONArray;
import com.fr.json.JSONObject;
import com.fr.plugin.context.PluginContexts;
import com.fr.plugin.idha.bean.RoleGroup;
import com.fr.plugin.idha.entity.RoleGroupEntity;
import com.fr.plugin.idha.util.HttpUtils;
import com.fr.plugin.idha.web.RoleGroupService;
import com.fr.third.springframework.web.bind.annotation.RequestMethod;
import com.fr.web.utils.WebUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* Function Description<br>
* GetRoleGroupRootHandler
*
* @author fr.open
* @since 1.0.0
*/
public class GetRoleGroupRootHandler extends BaseHttpHandler {
public GetRoleGroupRootHandler() {
}
@Override
public RequestMethod getMethod() {
return RequestMethod.GET;
}
@Override
public String getPath() {
return "/od/roleGroup/root";
}
@Override
public boolean isPublic() {
return false;
}
@Override
public void handle(HttpServletRequest request, HttpServletResponse response) throws Exception {
List<RoleGroupEntity> groupEntityList = RoleGroupService.getAll();
JSONArray groupList = new JSONArray();
JSONObject result = HttpUtils.createSuccessResponseJSONObject();
for (RoleGroupEntity roleGroupEntity : groupEntityList) {
groupList.put(roleGroupEntity.createBean(new RoleGroup()).toJSONRootNode());
}
if (PluginContexts.currentContext().isAvailable()) {
result.put("data", groupList);
}
WebUtils.flushSuccessMessageAutoClose(request, response, result);
}
}

69
src/main/java/com/fr/plugin/idha/web/http/GetRolesHandler.java

@ -0,0 +1,69 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: GetRolesHandler
* Author: Louis
* Date: 2020/6/10 14:32
*/
package com.fr.plugin.idha.web.http;
import com.fr.decision.fun.impl.BaseHttpHandler;
import com.fr.decision.webservice.bean.user.RoleBean;
import com.fr.json.JSONArray;
import com.fr.json.JSONObject;
import com.fr.plugin.context.PluginContexts;
import com.fr.plugin.idha.util.HttpUtils;
import com.fr.plugin.idha.web.RoleGroupService;
import com.fr.third.springframework.web.bind.annotation.RequestMethod;
import com.fr.web.utils.WebUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* Function Description<br>
* 通过GroupId查询自定义角色
*
* @author fr.open
* @since 1.0.0
*/
public class GetRolesHandler extends BaseHttpHandler {
public GetRolesHandler() {
}
@Override
public RequestMethod getMethod() {
return RequestMethod.GET;
}
@Override
public String getPath() {
return "/od/roles";
}
@Override
public boolean isPublic() {
return false;
}
@Override
public void handle(HttpServletRequest request, HttpServletResponse response) throws Exception {
String groupId = WebUtils.getHTTPRequestParameter(request, "groupId");
String groupCode = WebUtils.getHTTPRequestParameter(request, "groupCode");
List<RoleBean> roleEntityList = RoleGroupService.getRolesByGroupId(groupId, groupCode);
JSONArray data = new JSONArray();
JSONObject result = HttpUtils.createSuccessResponseJSONObject();
if (roleEntityList != null && PluginContexts.currentContext().isAvailable()) {
for (RoleBean roleBean : roleEntityList) {
JSONObject role = JSONObject.create();
role.put("id", roleBean.getId());
role.put("text", roleBean.getText());
role.put("description", roleBean.getDescription());
data.put(role);
}
}
result.put("data", data);
WebUtils.flushSuccessMessageAutoClose(request, response, result);
}
}

100
src/main/java/com/fr/plugin/idha/web/http/SaveRoleGroupHandler.java

@ -0,0 +1,100 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: SaveRoleGroupHandler
* Author: Louis
* Date: 2020/6/3 16:06
*/
package com.fr.plugin.idha.web.http;
import com.fr.decision.base.util.UUIDUtil;
import com.fr.decision.fun.impl.BaseHttpHandler;
import com.fr.general.ComparatorUtils;
import com.fr.json.JSONArray;
import com.fr.json.JSONObject;
import com.fr.plugin.context.PluginContexts;
import com.fr.plugin.idha.entity.RoleGroupEntity;
import com.fr.plugin.idha.web.RoleGroupService;
import com.fr.stable.StringUtils;
import com.fr.third.springframework.web.bind.annotation.RequestMethod;
import com.fr.web.utils.WebUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* Function Description<br>
* SaveRoleGroupHandler
*
* @author fr.open
* @since 1.0.0
*/
public class SaveRoleGroupHandler extends BaseHttpHandler {
public SaveRoleGroupHandler() {
}
@Override
public RequestMethod getMethod() {
return RequestMethod.POST;
}
@Override
public String getPath() {
return "/od/roleGroup";
}
@Override
public boolean isPublic() {
return false;
}
@Override
public void handle(HttpServletRequest request, HttpServletResponse response) throws Exception {
JSONArray groupArr = new JSONArray(WebUtils.getHTTPRequestParameter(request, "groupArr"));
JSONArray groupIds = new JSONArray();
for (int i = 0; i < groupArr.length(); ++i) {
String groupId = groupArr.optJSONObject(i).optString("id");
final boolean groupIdIsNotEmpty = StringUtils.isNotEmpty(groupId);
if (StringUtils.isEmpty(groupId)) {
groupId = UUIDUtil.generate();
}
String groupCode = groupArr.optJSONObject(i).optString("groupCode");
String groupName = groupArr.optJSONObject(i).optString("groupName");
String connection = groupArr.optJSONObject(i).optString("connection");
String sql = groupArr.optJSONObject(i).optString("sql");
List<RoleGroupEntity> groupList = RoleGroupService.getAll();
if (groupList != null) {
for (RoleGroupEntity roleGroupEntity : groupList) {
if (ComparatorUtils.equals(roleGroupEntity.getGroupCode(), groupCode) && !groupIdIsNotEmpty) {
WebUtils.flushFailureMessageAutoClose(request, response, 11205018, "Group name is already existed");
return;
}
if (groupIdIsNotEmpty && ComparatorUtils.equals(roleGroupEntity.getGroupCode(), groupCode)
&& !ComparatorUtils.equals(groupId, roleGroupEntity.getId())) {
WebUtils.flushFailureMessageAutoClose(request, response, 11205018, "Group name is already existed");
return;
}
}
}
final RoleGroupEntity saveRoleGroup = (new RoleGroupEntity()).id(groupId)
.groupCode(groupCode)
.groupName(groupName)
.connection(connection)
.sql(sql)
.timeStamp(System.currentTimeMillis());
RoleGroupService.save(saveRoleGroup);
groupIds.put(groupId);
}
JSONObject result = JSONObject.create();
result.put("errorCode", 0);
if (PluginContexts.currentContext().isAvailable()) {
result.put("groupIds", groupIds);
}
WebUtils.flushSuccessMessageAutoClose(request, response, result);
}
}

78
src/main/java/com/fr/plugin/idha/web/http/SearchGroupsHandler.java

@ -0,0 +1,78 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: SearchGroupsHandler
* Author: Louis
* Date: 2020/6/12 11:33
*/
package com.fr.plugin.idha.web.http;
import com.fanruan.api.util.CodeKit;
import com.fr.decision.fun.impl.BaseHttpHandler;
import com.fr.json.JSONArray;
import com.fr.json.JSONObject;
import com.fr.plugin.context.PluginContexts;
import com.fr.plugin.idha.bean.Group;
import com.fr.plugin.idha.util.HttpUtils;
import com.fr.plugin.idha.web.RoleGroupService;
import com.fr.third.springframework.web.bind.annotation.RequestMethod;
import com.fr.web.utils.WebUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* Function Description<br>
* SearchGroupsHandler
*
* @author fr.open
* @since 1.0.0
*/
public class SearchGroupsHandler extends BaseHttpHandler {
public SearchGroupsHandler() {
}
@Override
public RequestMethod getMethod() {
return RequestMethod.GET;
}
@Override
public String getPath() {
return "/od/groups/search";
}
@Override
public boolean isPublic() {
return false;
}
@Override
public void handle(HttpServletRequest request, HttpServletResponse response) throws Exception {
String rootId = WebUtils.getHTTPRequestParameter(request, "rootId");
String keyword = WebUtils.getHTTPRequestParameter(request, "keyword");
int page = WebUtils.getHTTPRequestIntParameter(request, "page");
int count = WebUtils.getHTTPRequestIntParameter(request, "count");
List<Group> groupList = RoleGroupService.searchGroupCode(rootId, CodeKit.cjkDecode(keyword));
JSONArray items = new JSONArray();
JSONObject result = HttpUtils.createSuccessResponseJSONObject();
boolean hasNext = false;
if (groupList != null && !groupList.isEmpty() && PluginContexts.currentContext().isAvailable()) {
int startIndex = (page * count) - count;
int endIndex = page * count;
if (endIndex > groupList.size()) {
endIndex = groupList.size();
} else {
hasNext = true;
}
for (int index = startIndex; index < endIndex; index++) {
items.put(groupList.get(index).toJSONObject());
}
}
result.put("items", items);
result.put("hasNext", hasNext);
result.put("page", page);
WebUtils.flushSuccessMessageAutoClose(request, response, result);
}
}

85
src/main/java/com/fr/plugin/idha/web/http/UpdateRoleGroupMiddleHandler.java

@ -0,0 +1,85 @@
/*
* Copyright (C), 2018-2020
* Project: starter
* FileName: DeleteRoleGroupMiddleHandler
* Author: Louis
* Date: 2020/6/10 15:54
*/
package com.fr.plugin.idha.web.http;
import com.fanruan.api.util.StringKit;
import com.fr.decision.fun.impl.BaseHttpHandler;
import com.fr.json.JSONArray;
import com.fr.json.JSONObject;
import com.fr.plugin.idha.util.HttpUtils;
import com.fr.plugin.idha.web.RoleGroupService;
import com.fr.third.springframework.web.bind.annotation.RequestMethod;
import com.fr.web.utils.WebUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashSet;
/**
* Function Description<br>
* DeleteRoleGroupMiddleHandler
*
* @author fr.open
* @since 1.0.0
*/
public class UpdateRoleGroupMiddleHandler extends BaseHttpHandler {
public UpdateRoleGroupMiddleHandler() {
}
public RequestMethod getMethod() {
return RequestMethod.POST;
}
public String getPath() {
return "/od/role";
}
public boolean isPublic() {
return false;
}
public void handle(HttpServletRequest request, HttpServletResponse response) throws Exception {
final String groupId = WebUtils.getHTTPRequestParameter(request, "groupId");
final String groupCode = WebUtils.getHTTPRequestParameter(request, "groupCode");
final String param_addRoleIds = WebUtils.getHTTPRequestParameter(request, "addRoleIds");
final String param_removeRoleIds = WebUtils.getHTTPRequestParameter(request, "removeRoleIds");
final String roleId = WebUtils.getHTTPRequestParameter(request, "roleId");
final String param_addGroupCodes = WebUtils.getHTTPRequestParameter(request, "addGroupCodes");
final String param_removeGroupCodes = WebUtils.getHTTPRequestParameter(request, "removeGroupCodes");
// 选择角色添加和删除
if (StringKit.isNotEmpty(groupId) && StringKit.isNotEmpty(groupCode) && StringKit.isNotEmpty(param_addRoleIds)) {
final JSONArray addRoleIds = new JSONArray(param_addRoleIds);
if (!addRoleIds.isEmpty()) {
RoleGroupService.saveMiddle(groupId, groupCode, new HashSet<String>(addRoleIds.getList()));
}
}
if (StringKit.isNotEmpty(groupId) && StringKit.isNotEmpty(groupCode) && StringKit.isNotEmpty(param_removeRoleIds)) {
final JSONArray removeRoleIds = new JSONArray(param_removeRoleIds);
if (!removeRoleIds.isEmpty()) {
RoleGroupService.deleteMiddle(groupId, groupCode, new HashSet<String>(removeRoleIds.getList()));
}
}
// 选择维度code添加和删除
if (StringKit.isNotEmpty(groupId) && StringKit.isNotEmpty(roleId) && StringKit.isNotEmpty(param_addGroupCodes)) {
final JSONArray addGroupCodes = new JSONArray(param_addGroupCodes);
if (!addGroupCodes.isEmpty()) {
RoleGroupService.saveMiddleByCode(groupId, roleId, new HashSet<String>(addGroupCodes.getList()));
}
}
if (StringKit.isNotEmpty(groupId) && StringKit.isNotEmpty(roleId) && StringKit.isNotEmpty(param_removeGroupCodes)) {
final JSONArray removeGroupCodes = new JSONArray(param_removeGroupCodes);
if (!removeGroupCodes.isEmpty()) {
RoleGroupService.deleteMiddleByID(groupId, roleId, new HashSet<String>(removeGroupCodes.getList()));
}
}
JSONObject result = HttpUtils.createSuccessResponseJSONObject();
WebUtils.flushSuccessMessageAutoClose(request, response, result);
}
}

BIN
src/main/resources/com/fr/plugin/idha/images/logo16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

43
src/main/resources/com/fr/plugin/idha/locale/lang.properties

@ -0,0 +1,43 @@
Plugin-idha=Organizational Dimension Manager
Plugin-idha_Organizational_Dimension_Manager=Organizational Dimension Manager
##js groupmanagement
Plugin-idha_NetWork-Anomaly=Network exception, please check the network configuration
Plugin-idha_Role_Group=Role Group
Plugin-idha_Group_Code=Group Code
Plugin-idha_Group_Name=Group Name
Plugin-idha_Group_Connection=Connection
Plugin-idha_Group_Sql=SQL
Plugin-idha_Group_Code_Empty=Group Code Is Empty
Plugin-idha_Group_Name_Empty=Group Name Is Empty
Plugin-idha_Group_Connection_Empty=Connection Is Empty
Plugin-idha_Group_Sql_Empty=Sql Is Empty
Plugin-idha_New_Group=Create Role Group
Plugin-idha_Modify_Group=Modify Role Group
Plugin-idha_DeleteGroup_Confirm_Popup=Determine to delete the Role Group
Plugin-idha_Confirm=Confirm
Plugin-idha_Cancel=Cancel
Plugin-idha_Not_Null=Not allowed to be empty
##js group_role
Plugin-idha_Group=Group
Plugin-idha_Group_Code_List=Group Code List
Plugin-idha_Edit_Group_Role=Edit Role
Plugin-idha_Role_Root_No_Add=Role Root No Add
Plugin-idha_Group_No_Auth_Tip=Role No Auth Tip
Plugin-idha_Please_Choose_Group=Please Choose Group
Plugin-idha_Search_Or_Add_Role=Search Or Add Role
Plugin-idha_Select_Role=Select Role
Plugin-idha_Group_No_Role_Need_Add_Tip=Group No Role, Need Add
Plugin-idha_User_Select_Group_To_View=Select Group To View
Plugin-idha_Confirm_Delete_Role=Confirm Delete Role?
Plugin-idha_User_Belong_To_Role_Tip=User Belong To Role\uFF1F
Plugin-idha_Group_Name_Can_Not_Null=Group Name Can Not Null
## js all_role
Plugin-idha_All_Role_List=All Role List
Plugin-idha_Join_Group_Code_List=Join Group Code List
Plugin-idha_Edit_Group_Code=Edit Code
Plugin-idha_Please_Choose_Role=Please Choose Role
Plugin-idha_Role_No_Code_Need_Add_Tip=Role No Code, Need Add
Plugin-idha_User_Select_Role_To_View=Select Role To View
Plugin-idha_Select_Group_Code=\u9009\u62E9\u7EF4\u5EA6Code
Plugin-idha_Search_Or_Add_Code=Search Or Add Code
Plugin-idha_Confirm_Delete_Code=Confirm Delete Code?

43
src/main/resources/com/fr/plugin/idha/locale/lang_zh_CN.properties

@ -0,0 +1,43 @@
Plugin-idha=\u7EC4\u7EC7\u7EF4\u5EA6\u7BA1\u7406
Plugin-idha_Organizational_Dimension_Manager=\u7EC4\u7EC7\u7EF4\u5EA6\u7BA1\u7406
##js groupmanager
Plugin-idha_NetWork-Anomaly=\u7F51\u7EDC\u5F02\u5E38\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u914D\u7F6E
Plugin-idha_Role_Group=\u7EC4\u7EC7\u7EF4\u5EA6
Plugin-idha_Group_Code=\u7EF4\u5EA6\u7F16\u7801
Plugin-idha_Group_Name=\u7EF4\u5EA6\u540D\u79F0
Plugin-idha_Group_Connection=\u6570\u636E\u6E90\u8FDE\u63A5
Plugin-idha_Group_Sql=SQL\u8BED\u53E5
Plugin-idha_Group_Code_Empty=\u7EF4\u5EA6\u7F16\u7801\u4E0D\u80FD\u4E3A\u7A7A
Plugin-idha_Group_Name_Empty=\u7EF4\u5EA6\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
Plugin-idha_Group_Connection_Empty=\u6570\u636E\u6E90\u94FE\u63A5\u4E0D\u80FD\u4E3A\u7A7A
Plugin-idha_Group_Sql_Empty=SQL\u8BED\u53E5\u4E0D\u80FD\u4E3A\u7A7A
Plugin-idha_New_Group=\u65B0\u5EFA\u7EC4\u7EC7\u7EF4\u5EA6
Plugin-idha_Modify_Group=\u4FEE\u6539\u7EC4\u7EC7\u7EF4\u5EA6
Plugin-idha_DeleteGroup_Confirm_Popup=\u786E\u5B9A\u5220\u9664\u6B64\u7EC4\u7EC7\u7EF4\u5EA6
Plugin-idha_Confirm=\u786E\u5B9A
Plugin-idha_Cancel=\u53D6\u6D88
Plugin-idha_Not_Null=\u4E0D\u5141\u8BB8\u4E3A\u7A7A
##js group_role
Plugin-idha_Group=\u7EF4\u5EA6
Plugin-idha_Group_Code_List=Code\u5217\u8868
Plugin-idha_Edit_Group_Role=\u7F16\u8F91\u89D2\u8272
Plugin-idha_Role_Root_No_Add=\u4E0D\u80FD\u4E3A\u6839\u8282\u70B9\u6DFB\u52A0\u89D2\u8272
Plugin-idha_Group_No_Auth_Tip=\u60A8\u6CA1\u6709\u8BE5\u7EF4\u5EA6\u8282\u70B9\u7684\u6743\u9650,\u5982\u6709\u7591\u95EE\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
Plugin-idha_Please_Choose_Group=\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u7EF4\u5EA6
Plugin-idha_Search_Or_Add_Role=\u641C\u7D22\u6216\u9009\u62E9\u89D2\u8272
Plugin-idha_Select_Role=\u9009\u62E9\u89D2\u8272
Plugin-idha_Group_No_Role_Need_Add_Tip=\u6682\u65E0\u89D2\u8272,\u70B9\u51FB\u9009\u62E9\u89D2\u8272\u8FDB\u884C\u6DFB\u52A0
Plugin-idha_User_Select_Group_To_View=\u8BF7\u9009\u62E9\u7EF4\u5EA6\u8FDB\u884C\u67E5\u770B
Plugin-idha_Confirm_Delete_Role=\u786E\u8BA4\u5220\u9664\u8BE5\u89D2\u8272?
Plugin-idha_User_Belong_To_Role_Tip=\u60A8\u5C5E\u4E8E\u8BE5\u804C\u52A1\uFF0C\u5220\u9664\u8BE5\u804C\u52A1\u53EF\u80FD\u5BF9\u60A8\u7684\u6743\u9650\u4EA7\u751F\u5F71\u54CD\uFF0C\u786E\u5B9A\u5220\u9664\uFF1F
Plugin-idha_Group_Name_Can_Not_Null=\u7EF4\u5EA6\u540D\u4E0D\u80FD\u4E3A\u7A7A
## js all_role
Plugin-idha_All_Role_List=\u5168\u90E8\u89D2\u8272\u5217\u8868
Plugin-idha_Join_Group_Code_List=\u5173\u8054Code\u5217\u8868
Plugin-idha_Edit_Group_Code=\u7F16\u8F91Code
Plugin-idha_Please_Choose_Role=\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u89D2\u8272
Plugin-idha_Role_No_Code_Need_Add_Tip=\u6682\u65E0Code,\u70B9\u51FB\u9009\u62E9code\u8FDB\u884C\u6DFB\u52A0
Plugin-idha_User_Select_Role_To_View=\u8BF7\u9009\u62E9\u89D2\u8272\u8FDB\u884C\u67E5\u770B
Plugin-idha_Select_Group_Code=\u9009\u62E9\u7EF4\u5EA6Code
Plugin-idha_Search_Or_Add_Code=\u641C\u7D22\u6216\u9009\u62E9Code
Plugin-idha_Confirm_Delete_Code=\u786E\u8BA4\u5220\u9664\u8BE5Code?

2
src/main/resources/com/fr/plugin/idha/web/idha.css

@ -0,0 +1,2 @@
/* simple-template 20-06-17 13:47:33 */
.roleGroup-container{font-family:PingFangSC-Regular,serif;font-size:12px;color:#3D4D66}.roleGroup-container .bi-combo .bi-editor-trigger,.roleGroup-container .bi-editor{border-radius:2px}.roleGroup-gray-color{color:#9EA6B2}.roleGroup-table-header{background:#EAF2FD}.odd{background:#FFF}.even{background:#FBFDFF}.roleGroup-tab-title{background:#FFF}.roleGroup-tab-content{background:#F7F8FA}.roleGroup-section-container{background:#FFF}.page-button{border:1px solid #E8EAED;border-radius:2px}.roleGroup-no-border{border:0}.roleGroup-border-box{box-sizing:border-box}.roleGroup-title{font-family:PingFangSC-Medium;color:#3D4D66}

2
src/main/resources/com/fr/plugin/idha/web/idha.js

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save