diff --git a/src/main/java/com/dsideal/QingLong/DataShare/Controller/DataShareController.java b/src/main/java/com/dsideal/QingLong/DataShare/Controller/DataShareController.java index f0f08496..73164371 100644 --- a/src/main/java/com/dsideal/QingLong/DataShare/Controller/DataShareController.java +++ b/src/main/java/com/dsideal/QingLong/DataShare/Controller/DataShareController.java @@ -278,7 +278,7 @@ public class DataShareController extends Controller { @IsSysAdminInterface({"1"}) @IsNumericInterface({"system_id"}) public void changePwd(int system_id) { - dm.changePwd(system_id,CommonUtil.generatePassword(10)); + dm.changePwd(system_id, CommonUtil.generatePassword(10)); Kv kv = Kv.by("success", true); kv.set("message", "修改成功!"); renderJson(kv); @@ -302,6 +302,14 @@ public class DataShareController extends Controller { renderJson(kv); return; } + //检查一下共享的表是不是已经被其它系统共享过? + if (!dm.checkShareTable(system_id,table_names)) { + Kv kv = Kv.by("success", false); + kv.set("message", "检查到要共享的数据表已经被其它业务系统共享,请检查后重新录入!"); + renderJson(kv); + return; + } + dm.share(system_id, table_names); Kv kv = Kv.by("success", true); kv.set("message", "保存成功!"); diff --git a/src/main/java/com/dsideal/QingLong/DataShare/Model/DataShareModel.java b/src/main/java/com/dsideal/QingLong/DataShare/Model/DataShareModel.java index af25c6cc..7b8a5a22 100644 --- a/src/main/java/com/dsideal/QingLong/DataShare/Model/DataShareModel.java +++ b/src/main/java/com/dsideal/QingLong/DataShare/Model/DataShareModel.java @@ -9,8 +9,7 @@ import com.jfinal.plugin.activerecord.Page; import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.activerecord.SqlPara; -import java.util.ArrayList; -import java.util.List; +import java.util.*; public class DataShareModel { public Page listSystem(String keyword, int exclude, int page, int limit) { @@ -66,10 +65,16 @@ public class DataShareModel { PgUtil.delUser(user_name); //2、删除数据表记录 Db.deleteById("t_datashare_system", "system_id", system_id); - //3、删除此系统共享表 - String sql = "delete from t_datashare_table where system_id=?"; + + //3、共享了哪些表 + String sql = "select * from t_datashare_table where system_id=?"; + List shareTableList = Db.find(sql, system_id); + //4、删除此系统共享表 + sql = "delete from t_datashare_table where system_id=?"; Db.update(sql, system_id); - //4、删除所有其它系统对此系统的订阅 + + //5、删除所有其它系统对此系统的订阅 + List subSystemList = getSubSystemList(system_id); sql = "select * from t_datashare_system"; List list = Db.find(sql); for (Record record : list) { @@ -87,6 +92,37 @@ public class DataShareModel { sql = "update t_datashare_system set subscribe_system_ids=? where system_id=?"; Db.update(sql, new_subscribe_system_ids, sub_system_id); } + //5、回收其它订阅系统对它共享表的授权 + for (Record record : shareTableList) { + String table_name = record.getStr("table_name"); + for (Integer v_system_id : subSystemList) { + String v_user_name = getSystemById(v_system_id).getStr("user_name"); + PgUtil.revokeUserPrivilege(v_user_name, table_name, PgUtil.READ); + } + } + } + + /** + * 功能:检查要共享的表是不是已经被其它业务系统共享过? + * + * @param table_names + * @return + */ + public boolean checkShareTable(int system_id, String table_names) { + String sql = "select * from t_datashare_table"; + List list = Db.find(sql); + Map _map = new HashMap<>(); + for (Record record : list) { + _map.put(record.getStr("table_name"), record.getInt("system_id")); + } + for (String s : table_names.split(",")) { + if (_map.containsKey(s)) { + if (_map.get(s) != system_id) { + return false; + } + } + } + return true; } /**