diff --git a/base/rules.db b/base/rules.db index 4d1275e2d0045d1bbefdccfa5997d595275a7c2e..3d50d04f67d744d4df6f96b4897dbabf9bbd6d68 100644 Binary files a/base/rules.db and b/base/rules.db differ diff --git a/controllers/admin.py b/controllers/admin.py index ef3e54394426e4c88bfd35b4b0cc3602a645d2bd..be374ab50696808313328e176ffdf8165f86e477 100644 --- a/controllers/admin.py +++ b/controllers/admin.py @@ -6,7 +6,7 @@ import os from flask import Blueprint,request,render_template,jsonify,make_response -from controllers.service import storage_service +from controllers.service import storage_service,rules_service from base.R import R from utils.update import getLocalVer,getOnlineVer,download_new_version,download_lives,copy_to_update from utils import parser @@ -117,10 +117,22 @@ def admin_rule_state(state=0): # 管理员修改规则状态 if not verfy_token(): return R.error('请登录后再试') names = getParmas('names') - print(names,type(names)) - # lsg = storage_service() - res_id = 0 - return R.success(f'修改成功,记录ID为:{res_id}') + if not names: + return R.success(f'修改失败,没有传递names参数') + rule_list = names.split(',') + rules = rules_service() + # print(rules.query_all()) + # print(rules.getState(rule_list[0])) + # print(rule_list) + success_list = [] + for rule in rule_list: + try: + res_id = rules.setState(rule,state) + success_list.append(f'{rule}:{res_id}') + except: + success_list.append(rule) + + return R.success(f'修改成功,服务器反馈信息为:{success_list}') @admin.route('/force_update') def admin_force_update(): diff --git a/controllers/service.py b/controllers/service.py index a5b448570bcd5175a2d30e66b6d07c8c9d064514..6732482b0bac4860c2dfdf277fba8b54000dcfe1 100644 --- a/controllers/service.py +++ b/controllers/service.py @@ -6,7 +6,9 @@ from base.R import copy_utils from models.storage import Storage +from models.ruleclass import RuleClass from utils.cfg import cfg +from base.database import db class storage_service(object): @@ -66,4 +68,42 @@ class storage_service(object): @classmethod def clearItem(self,key): - return Storage.clearItem(key) \ No newline at end of file + return Storage.clearItem(key) + +class rules_service(object): + + @staticmethod + def query_all(): + # 查询所有 + res = RuleClass.query.all() + return copy_utils.obj_to_list(res) + + @classmethod + def hasItem(self, key): + return RuleClass.hasItem(key) + + def getState(self,key): + res = RuleClass.query.filter(RuleClass.name == key).first() + if not res: + return 1 + # print(res) + state = res.state + if state is None: + state = 1 + return state or 0 + + def setState(self,key,state=0): + res = RuleClass.query.filter(RuleClass.name == key).first() + if res: + res.state = state + db.session.add(res) + else: + res = RuleClass(name=key, state=state) + db.session.add(res) + db.session.flush() # 获取id + try: + db.session.commit() + return res.id + except Exception as e: + print(f'发生了错误:{e}') + return None \ No newline at end of file diff --git a/models/ruleclass.py b/models/ruleclass.py index f27578c9738b544321b88bd72f703b3600b90692..bd3312e83033fbd73d4e452c52d8d4ce2f5c64d2 100644 --- a/models/ruleclass.py +++ b/models/ruleclass.py @@ -14,11 +14,19 @@ class RuleClass(db.Model): class_name = db.Column(db.String(255)) class_url = db.Column(db.String(255)) cookie = db.Column(db.String(255)) - state = db.Column(db.Integer, default=0) + state = db.Column(db.Integer, default=1) order = db.Column(db.Integer, default=0) create_date = db.Column(db.DateTime, index=True, default=datetime.now) write_date = db.Column(db.DateTime, index=True, default=datetime.now,onupdate=datetime.now) def __repr__(self): return "" % ( - self.name, self.class_name, self.class_url, self.cookie) \ No newline at end of file + self.name, self.class_name, self.class_url, self.cookie) + + @classmethod + def hasItem(self, key): + exists = db.session.query(self).filter(self.name == key).scalar() is not None + if exists: + return True + else: + return False \ No newline at end of file diff --git a/templates/layui_list.html b/templates/layui_list.html index dd5fe1aaedaa3b8f0199a3a9becfb65ea863b9a5..6e400cda01ff578b875ce86bff4fda0352436f2c 100644 --- a/templates/layui_list.html +++ b/templates/layui_list.html @@ -260,7 +260,12 @@ layui.use(['table', 'dropdown'], function(){ var data = obj.data; //console.log(obj) if(obj.event === 'del'){ - let obj_name = obj.data.api.match(/rule=(.*)/)[1].split('&')[0]; + let obj_name; + try{ + obj_name = obj.data.api.match(/rule=(.*)/)[1].split('&')[0]; + }catch (e){ + obj_name = obj.data.key; + } layer.confirm('真的要隐藏规则'+obj_name+'么', function(index){ console.log(obj); let params = {"names":[obj_name].join(',')}; @@ -277,7 +282,7 @@ layui.use(['table', 'dropdown'], function(){ } }); - // obj.del(); + // obj.del(); //这是删除,隐藏规则是不需要删除规则的,最多也就刷新一下 layer.close(index); }); } else if(obj.event === 'edit'){