From 698a8beca1841241dac7087a95b45938d26b9dd1 Mon Sep 17 00:00:00 2001 From: apan Date: Thu, 4 Aug 2022 16:47:40 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common/Utils.py | 11 +++- apps/home/views.py | 31 +++++----- apps/power/views.py | 120 ++++++++++++++++++++++++++++++++---- apps/user/views.py | 84 +++++++++++++++++++++++-- db_logic/module.py | 38 +++++------- db_logic/module_relation.py | 15 +++++ db_logic/user.py | 56 +++++++++++++---- 7 files changed, 287 insertions(+), 68 deletions(-) diff --git a/Common/Utils.py b/Common/Utils.py index e8b32bd..f632fb6 100644 --- a/Common/Utils.py +++ b/Common/Utils.py @@ -70,7 +70,16 @@ class Utils(object): # @classmethod def to_dict(cls): return {c.name: getattr(cls, c.name, None) for c in cls.__table__.columns} - + # if not tp: + # return {c.name: getattr(cls, c.name, None) for c in cls.__table__.columns} + # else: + # # data_list = [] + # # for i in cls: + # # data_list.append( + # # {c.name: getattr(i, c.name, None) + # # for c in i.__table__.columns} + # # ) + # return [{c.name: getattr(i, c.name, None) for c in i.__table__.columns} for i in cls] #生成统一格式接口数据 def resultData(status, message, data=""): return json.dumps({"status": status, "message": message, "data": data}, ensure_ascii=False) diff --git a/apps/home/views.py b/apps/home/views.py index 7d0be47..0b571ad 100644 --- a/apps/home/views.py +++ b/apps/home/views.py @@ -19,22 +19,21 @@ from flask import Blueprint home_router = Blueprint('home', __name__, url_prefix="/home") -# 获取页面主概览数据 --- 查询条件,缺少柜体id,客户id -@home_router.route('/home_number', methods=["GET", "POST"]) -@token_auth.login_required -def get_record_type_drug_record_json(): - customer_id = request.values.get('customer_id') - client_id = request.values.get('client_id') - # 获取药剂记录今日入库 领用 归还Json数据 - typ_dic = BllMedicamentRecord().getTodayDrugRecordCount( - customerId=customer_id, clientId=client_id) - data = { - "putin_count": typ_dic.get(1), - "use_count": typ_dic.get(2), - "return_count": typ_dic.get(3), - "not_return_count": typ_dic[2] - typ_dic[3] - } - return jsonify(Utils.true_return(data=data)) +# # 获取页面主概览数据 --- 查询条件,缺少柜体id,客户id +# @home_router.route('/home_number', methods=["GET", "POST"]) +# @token_auth.login_required +# def get_record_type_drug_record_json(): +# customer_id = request.values.get('customer_id') +# client_id = request.values.get('client_id') +# # 获取药剂记录今日入库 领用 归还Json数据 +# typ_dic = BllMedicamentRecord().getTodayDrugRecordCount() +# data = { +# "putin_count": typ_dic.get(1), +# "use_count": typ_dic.get(2), +# "return_count": typ_dic.get(3), +# "not_return_count": typ_dic[2] - typ_dic[3] +# } +# return jsonify(Utils.true_return(data=data)) # 主概览 当日入库-领用-归还,预警列表, 信息总览 diff --git a/apps/power/views.py b/apps/power/views.py index b94ebae..c325df0 100644 --- a/apps/power/views.py +++ b/apps/power/views.py @@ -4,17 +4,21 @@ @Date:2022/08/01 17:04:40 ''' import sys -sys.path.append('.') - -from db_logic.user import BllUser +from models.power_models import EntityModuleRelation +sys.path.append('.') +from sqlalchemy import or_ +from db_logic.module import BllModule +from db_logic.role import BllRole from Common.auth import token_auth - - from flask import Blueprint, jsonify, request, g from db_logic.module_relation import BllModuleRelation + +from models.user_models import EntityRole from Common.Utils import Utils + + power_router = Blueprint('power', __name__) @@ -27,10 +31,102 @@ def get_user_power_list(): module_list = BllModuleRelation().get_user_module_list(user_id=user_info.user_id, role_id=user_info.role_id) module_list = Utils.msyql_table_model(module_list) return jsonify(Utils.true_return(data=module_list)) - # if len(module_list) > 6: - # for module in module_list: - # if module["module_code"] == "DataReport": - # if module_list.index(module) in [1,2,4]: - # module_list.pop(module_list.index(module)) - # module_list.insert(5, module) - # data = module_list + +# 获取角色列表 +@power_router.route("/get_list", methods=["GET", "POST"]) +@token_auth.login_required +def get_power_list(): + # 根据角色表进行关联查询, + # 思路:角色表角色id->模块权限表(object_id)-> 终端权限表() + # | | + # role_id=object_id module_id=module_id + data_list = BllModuleRelation().get_role_module() + return jsonify(Utils.true_return(data=Utils.msyql_table_model(data_list))) + +# 获取模块列表 +@power_router.route("/get_module_list", methods=["GET", "POST"]) +@token_auth.login_required +def get_module_list(): + data_list = BllModule().get_module_list() + return jsonify(Utils.true_return(data=Utils.msyql_table_model(data_list))) + +# 添加角色 +@power_router.route("/add_update_role", methods=["GET", "POST"]) +@token_auth.login_required +def add_role(): + role_id = request.values.get("role_id") + role_code = request.values.get("role_code") + role_name = request.values.get("role_name") + sys_module_list = request.values.get("sys_module_list") + client_module_list = request.values.get("client_module_list") + description = request.values.get("description") + # 获取角色代码或者角色名的角色信息 + obj = BllRole().findEntity( + or_(EntityRole.role_code == role_code, EntityRole.role_name == role_name)) + # 判断是创建角色 + if not role_id: + # 判断信息重复 + if obj: + return jsonify(Utils.false_return(msg="角色代码或角色名重复,创建失败")) + else: + # 创建角色 + role_max_obj = BllRole().execute("select max(sort_index) as sort_index from rms_role").fetchone() + role_id=Utils.UUID() + role_obj = EntityRole( + role_id=role_id, + role_code=role_code, + role_name=role_name, + role_level=1, + description=description, + sort_index=int(role_max_obj.sort_index or '0') + 1 + ) + BllRole().insert(role_obj) + else: + # 修改角色信息 + role_obj = BllRole().findEntity(role_id) + # 判断修改的信息是否重复 + if not obj or role_obj.role_id == role_id: + role_obj.role_code=role_code, + role_obj.role_name=role_name, + role_obj.description=description, + BllRole().update(role_obj) + else: + return jsonify(Utils.false_return(msg="角色代码或角色名重复,修改失败")) + # 删除原有的权限,每次重新创建 + BllModuleRelation().delete(EntityModuleRelation.object_id==role_id) + inster_module_list = [] + if sys_module_list: + sys_module_list = eval(sys_module_list) + for module_id in sys_module_list: + inster_module_list.append( + EntityModuleRelation( + object_type=1, + object_id=role_id, + module_id=module_id, + module_type=2, + create_date=Utils.get_str_datetime() + ) + ) + if client_module_list: + client_module_list = eval(client_module_list) + for module_id in client_module_list: + inster_module_list.append( + EntityModuleRelation( + object_type=1, + object_id=role_id, + module_id=module_id, + module_type=1, + create_date=Utils.get_str_datetime() + ) + ) + BllModuleRelation().insert_many(inster_module_list) + return jsonify(Utils.true_return()) + +# 删除角色 +@power_router.route("/del_role", methods=["GET", "POST"]) +@token_auth.login_required +def remove_role(): + role_id = request.values.get("role_id") + BllRole().delete(EntityRole.role_id==role_id) + BllModuleRelation().delete(EntityModuleRelation.object_id==role_id) + return jsonify(Utils.true_return(msg="删除成功")) diff --git a/apps/user/views.py b/apps/user/views.py index 9e5d7e7..b3c9bcd 100644 --- a/apps/user/views.py +++ b/apps/user/views.py @@ -5,9 +5,10 @@ ''' from flask import jsonify, request, Blueprint, g from Common.auth import token_auth -from Common.Utils import Utils +from Common.Utils import PageParam, Utils from db_logic.user import BllUser +from models.user_models import EntityUser user_router = Blueprint('user', __name__) @@ -40,8 +41,81 @@ def user_update_password(): return jsonify(Utils.false_return(msg=msg_token)) -@user_router.route("/get_user_power", methods=["GET"]) +# 获取用户列表 +@user_router.route("/get_user_list", methods=["GET", "POST"]) @token_auth.login_required -def get_user_power(): - print(g.current_user.user_id) - return jsonify(Utils.true_return()) +def get_user_info_list(): + user_code = request.values.get("user_code") + real_name = request.values.get("real_name") + role_name = request.values.get("role_name") + is_enabled = request.values.get("is_enabled") + + page = int(request.values.get("page", 1)) + page_size = int(request.values.get("page_size", 10)) + page_param = PageParam(page, page_size) + + data_list = BllUser().get_seach_user_list( + user_code=user_code, + real_name=real_name, + role_name=role_name, + is_enabled=is_enabled, + page_param=page_param + ) + + return jsonify(Utils.true_return(data={"total_count":page_param.totalRecords, "data_list": Utils.msyql_table_model(data_list)})) + +# 新增用户 +@user_router.route("/add", methods=["GET", "POST"]) +@token_auth.login_required +def add_user_info(): + + try: + obj = EntityUser( + real_name=request.values.get("real_name"), + mobile=request.values.get("mobile"), + sex=request.values.get("sex"), + email=request.values.get("email"), + user_code=request.values.get("user_code"), + qq=request.values.get("qq"), + role_id=request.values.get("role_id"), + is_enabled=request.values.get("is_enabled") + ) + BllUser().insert(obj) + # BllUser().update() + return jsonify(Utils.true_return(msg="添加成功")) + except Exception as error: + return jsonify(Utils.except_return(msg=error)) + +# 修改用户 +@user_router.route("/update", methods=["GET", "POST"]) +@token_auth.login_required +def update_user_info(): + user_id = request.values.get("user_id") + try: + obj = BllUser().findEntity(user_id) + if not obj: + return jsonify(Utils.false_return(msg="用户id有误")) + else: + obj.real_name = request.values.get("real_name") + obj.mobile = request.values.get("mobile") + obj.sex = request.values.get("sex") + obj.email = request.values.get("email") + obj.user_code = request.values.get("user_code") + obj.qq = request.values.get("qq") + obj.role_id = request.values.get("role_id") + obj.role_name = request.values.get("role_name") + obj.is_enabled = request.values.get("is_enabled") + obj.update_last_visit_date() + BllUser().update(obj) + return jsonify(Utils.true_return(msg="修改成功")) + except Exception as error: + return jsonify(Utils.except_return(msg=error)) + + +# 删除用户 +@user_router.route("/del", methods=["GET", "POST"]) +@token_auth.login_required +def del_user(): + user_id = request.values.get("user_id") + BllUser().delete(EntityUser.user_id==user_id) + return jsonify(Utils.true_return(msg="删除成功")) diff --git a/db_logic/module.py b/db_logic/module.py index e065493..50c3a4c 100644 --- a/db_logic/module.py +++ b/db_logic/module.py @@ -14,23 +14,14 @@ class BllModule(Repository): def __init__(self, entityType=EntityModule): return super().__init__(entityType) - """ - module_id = Column(String(50), primary_key=True, comment="模块ID") - module_type = Column(String(50), comment="模块类型") - module_code = Column(String(50), comment="") - module_name = Column(String(50), comment="模块名称") - icon = Column(String(50), comment="图片") - url_address = Column(String(50), comment="图片地址") - sort_index = Column(Integer, comment="排序下标") - module_weight = Column(Integer, comment="模块权重") - parent_id = Column(String(50), comment="父id") - is_enabled = Column(Integer, comment="是否启用") - description = Column(String(50), comment="备注") - create_date = Column(String(50), comment="创建时间") - create_user_id = Column(String(50), comment="创建用户id") - create_user_name = Column(String(50), comment="创建用户名") - is_add = Column(Integer, comment="") - """ + + def get_module_list(self): + sql_all = """ + select module_id, module_type, module_name, sort_index, description from rms_module where is_enabled=1 + """ + return self.execute(sql_all).fetchall() + # return self.findList().all() + def inster_info_list(self): obj_list = [] from demo import data_list @@ -53,8 +44,11 @@ class BllModule(Repository): obj_list.append(obj) self.insert_many(obj_list) -if __name__ == '__main__': - from Common.Utils import Utils - aaa = BllModule().inster_info_list() - # aaa_list = Utils.msyql_table_model(aaa) - print(aaa) +# if __name__ == '__main__': + # from Common.Utils import Utils + # aaa = BllModule().get_module_list() + # print([i for i in aaa]) + # aaa_list = Utils.to_dict(aaa, 1) + # for i in aaa_list: + # print(i) + # print(aaa) diff --git a/db_logic/module_relation.py b/db_logic/module_relation.py index 2d31dd2..75fc965 100644 --- a/db_logic/module_relation.py +++ b/db_logic/module_relation.py @@ -33,6 +33,21 @@ class BllModuleRelation(Repository): """ return self.execute(sql_all).fetchall() + def get_role_module(self): + sql_all = """ + select + a.role_name, + a.role_code, + a.description, + group_concat(c.module_name) module_name + from rms_role as a + LEFT JOIN rms_module_relation as b + on b.object_id=a.role_id + LEFT JOIN rms_module as c + on c.module_id=b.module_id + """ + return self.execute(sql_all).fetchall() + def add_inster_user_moduele(self): role_id = "a699ff99-117b-11ed-a086-f47b094925e5" obj_list = [] diff --git a/db_logic/user.py b/db_logic/user.py index c8d3a57..92da394 100644 --- a/db_logic/user.py +++ b/db_logic/user.py @@ -4,6 +4,8 @@ @Date:2022/07/18 16:44:57 ''' import sys + +import sqlalchemy sys.path.append(".") import jwt import base64 @@ -67,20 +69,50 @@ class BllUser(Repository): return None # return User.query.get(payload.get('user_id')) return self.findEntity(payload.get('user_id')) + + # 用户管理 + def get_seach_user_list(self, user_code, real_name, role_name, is_enabled, page_param): + filter_base = "" + if user_code: + filter_base += f" user_code like %'{user_code}'%" + if real_name: + if filter_base: + filter_base += " and " + filter_base += f" real_name like %'{real_name}'% " + if role_name: + if filter_base: + filter_base += " and " + filter_base += f" role_name like %'{role_name}'%" + if is_enabled: + if filter_base: + filter_base += " and " + filter_base += f" is_enabled={is_enabled}" + if filter_base: + filter_base = f" where {filter_base}" + sql_all = f""" + select * from rms_user {filter_base} order by create_date desc + """ + try: + count_number = len(self.execute(sql_all).fetchall()) + except Exception: + count_number = 0 + page_param.totalRecords = count_number + sql_page = Utils.sql_paging_assemble(sql_all, page_param) + return self.execute(sql_page).fetchall() - #根据条码获取用户 - def getUserByBarCode(self, barCode): - return self.findEntity(EntityUser.BarCode == barCode) + # #根据条码获取用户 + # def getUserByBarCode(self, barCode): + # return self.findEntity(EntityUser.BarCode == barCode) - #获取用户列表 - def getUserList(self, customerId, pageParam, keyWord=''): - keyWord = '%' + keyWord + '%' - orm_query = self.findList().filter(EntityUser.CustomerId == customerId - ).filter(or_(EntityUser.UserCode.like(keyWord), EntityUser.RealName.like(keyWord))).order_by(desc(EntityUser.CreateDate)) - return self.queryPage(orm_query, pageParam) + # #获取用户列表 + # def getUserList(self, customerId, pageParam, keyWord=''): + # keyWord = '%' + keyWord + '%' + # orm_query = self.findList().filter(EntityUser.CustomerId == customerId + # ).filter(or_(EntityUser.UserCode.like(keyWord), EntityUser.RealName.like(keyWord))).order_by(desc(EntityUser.CreateDate)) + # return self.queryPage(orm_query, pageParam) - #获取用户详情信息 - def getUserInfo(self, userId): - return self.findEntity(userId) + # #获取用户详情信息 + # def getUserInfo(self, userId): + # return self.findEntity(userId)