|
|
|
@ -86,14 +86,23 @@ public class DataShareModel {
|
|
|
|
|
* @param table_names
|
|
|
|
|
*/
|
|
|
|
|
public void share(int system_id, String table_names) {
|
|
|
|
|
//记录PG权限
|
|
|
|
|
//系统的数据库账号
|
|
|
|
|
String user_name = getSystemById(system_id).getStr("user_name");
|
|
|
|
|
//1、回收原来共享表的写权限
|
|
|
|
|
for (Record r : getShareTable(system_id)) {//原来有哪些共享表?
|
|
|
|
|
String table_name = r.getStr("table_name");
|
|
|
|
|
PgUtil.revokeUserPrivilege(user_name, table_name, PgUtil.WRITE);
|
|
|
|
|
}
|
|
|
|
|
//2、重新分配共享表的写权限
|
|
|
|
|
for (String s : table_names.split(",")) {
|
|
|
|
|
PgUtil.grantUserPrivilege(getSystemById(system_id).getStr("user_name"), s, PgUtil.WRITE);
|
|
|
|
|
PgUtil.grantUserPrivilege(user_name, s, PgUtil.WRITE);
|
|
|
|
|
}
|
|
|
|
|
//删除旧数据
|
|
|
|
|
//3、原来订阅这个系统有第三方系统有哪些,它们的用户都需要取消对原来表的读授权
|
|
|
|
|
|
|
|
|
|
//4、删除旧数据
|
|
|
|
|
String sql = "delete from t_datashare_table where system_id=?";
|
|
|
|
|
Db.update(sql, system_id);
|
|
|
|
|
//保存新数据
|
|
|
|
|
//5、保存新数据
|
|
|
|
|
for (String s : table_names.split(",")) {
|
|
|
|
|
Record record = new Record();
|
|
|
|
|
record.set("system_id", system_id);
|
|
|
|
|