zhangnaiwen 2 年之前
父节点
当前提交
23c3daf49c
共有 5 个文件被更改,包括 201 次插入201 次删除
  1. 3 0
      src/app/api/log.py
  2. 103 103
      src/app/api/organization.py
  3. 17 7
      src/app/api/role.py
  4. 65 90
      src/app/api/users.py
  5. 13 1
      src/app/configs/config.py

+ 3 - 0
src/app/api/log.py

@@ -28,6 +28,8 @@ log_list.add_argument(name='operation_status', type=int, location='args', requir
 class LogList(Resource):
     method_decorators = [login_required]
 
+    @ns.doc(id='log', description='日志列表')
+    @ns.expect(log_list)
     def get(self):
         """获取日志列表"""
         page_size = int(request.args.get('page_size', 20))
@@ -63,6 +65,7 @@ class LogList(Resource):
 class LogExportApi(Resource):
     method_decorators = [login_required]
 
+    @ns.doc(id='log_export', description='日志导出')
     def get(self):
         """日志导出"""
         with Session(engine) as session:

+ 103 - 103
src/app/api/organization.py

@@ -1,4 +1,5 @@
 import json
+import os
 
 from flask import request, jsonify
 from flask_restx import Resource, Namespace, reqparse
@@ -6,6 +7,7 @@ from sqlalchemy import select, insert, delete, update
 from sqlalchemy.orm import Session
 from werkzeug.datastructures import FileStorage
 
+from app.configs.config import COMPANY_LOGO_PATH, COMPANY_LOGO_URL
 from app.defines import StatesCode, Module, OperationType
 from app.database import engine
 from app.modle.organization import Company, Department
@@ -57,16 +59,31 @@ company_details.add_argument(name='on_guard_size', type=str, location='form', re
 delete_company = reqparse.RequestParser(bundle_errors=True)
 delete_company.add_argument(name='company_id', type=int, location='form', required=False, help='公司id')
 
+get_company_details = reqparse.RequestParser(bundle_errors=True)
+get_company_details.add_argument(name='company_id', type=int, location='args', required=False, help='公司id')
+
 
 @ns.route('/company')
 class CompanyApi(Resource):
     method_decorators = [login_required]
 
-    @ns.doc(id='get_company', description='搜索公司')
-    @ns.expect()
+    @ns.doc(id='get_company_details', description='获取公司详情')
+    @ns.expect(get_company_details)
     def get(self):
-        """搜索公司"""
-        return {"code": StatesCode.SUCCESS, "message": "成功", "data": '查询'}
+        """获取公司详情"""
+
+        company_id = request.args.get('company_id')
+
+        if company_id is None:
+            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="公司id不能为空")
+
+        with Session(engine) as session:
+            stmt = select(Company).where(Company.id == company_id)
+            results = session.execute(stmt).scalars().all()
+
+        save_log(request, Module.ORGANIZATION, OperationType.INQUIRE, StatesCode.SUCCESS)
+
+        return jsonify(code=StatesCode.SUCCESS, message='成功', data=to_dict(results))
 
     @ns.doc(id='add_company', description='添加公司')
     @ns.expect(company_details)
@@ -75,8 +92,6 @@ class CompanyApi(Resource):
 
         company_name = request.form.get('company_name')
         logo = request.files.get('logo')
-        if logo:
-            logo = logo.read()
         abbreviation = request.form.get('abbreviation')
         code = request.form.get('code')
         registered_address = request.form.get('registered_address')
@@ -89,6 +104,13 @@ class CompanyApi(Resource):
         if company_name is None:
             return jsonify(code=StatesCode.UNKNOWN_ERROR, message="公司名不能为空")
 
+        # 公司商标存储(url),
+        if logo:
+            logo.save(os.path.join(COMPANY_LOGO_PATH, logo.filename))
+            logo_url = COMPANY_LOGO_URL + logo.filename
+        else:
+            logo_url = None
+
         with Session(engine) as session:
             # 判断公司是否存在
             stmt = select(Company).where(Company.company_name == company_name)
@@ -99,7 +121,7 @@ class CompanyApi(Resource):
             # 添加公司
             stmt = insert(Company).values(
                 company_name=company_name,
-                logo=logo,
+                logo=logo_url if logo_url else None,
                 abbreviation=abbreviation,
                 code=code,
                 registered_address=registered_address,
@@ -117,52 +139,6 @@ class CompanyApi(Resource):
 
         return jsonify(code=StatesCode.SUCCESS, message='添加成功')
 
-    @ns.doc(id='delete_company', description='删除公司')
-    @ns.expect(delete_company)
-    def delete(self):
-        """删除公司"""
-        company_id = request.form.get('company_id')
-
-        if company_id is None:
-            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="公司id不能为空")
-
-        with Session(engine) as session:
-            stmt = select(Company).where(Company.id == company_id)
-
-            session.delete(session.execute(stmt).scalars().first())
-            session.commit()
-
-        save_log(request, Module.ORGANIZATION, OperationType.DELETE, StatesCode.SUCCESS)
-
-        return jsonify(code=StatesCode.SUCCESS, message="删除成功")
-
-
-get_company_details = reqparse.RequestParser(bundle_errors=True)
-get_company_details.add_argument(name='company_id', type=int, location='args', required=False, help='公司id')
-
-
-@ns.route('/company_details')
-class CompanyDetailsApi(Resource):
-    method_decorators = [login_required]
-
-    @ns.doc(id='get_company_details', description='获取公司详情')
-    @ns.expect(get_company_details)
-    def get(self):
-        """获取公司详情"""
-
-        company_id = request.args.get('company_id')
-
-        if company_id is None:
-            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="公司id不能为空")
-
-        with Session(engine) as session:
-            stmt = select(Company).where(Company.id == company_id)
-            results = session.execute(stmt).scalars().all()
-
-        save_log(request, Module.ORGANIZATION, OperationType.INQUIRE, StatesCode.SUCCESS)
-
-        return jsonify(code=StatesCode.SUCCESS, message='成功', data=to_dict(results))
-
     @ns.doc(id='update_company_details', description='修改公司详情')
     @ns.expect(company_details)
     def put(self):
@@ -170,8 +146,6 @@ class CompanyDetailsApi(Resource):
         company_id = request.form.get('company_id')
         company_name = request.form.get('company_name')
         logo = request.files.get('logo')
-        if logo:
-            logo = logo.read()
         abbreviation = request.form.get('abbreviation')
         code = request.form.get('code')
         registered_address = request.form.get('registered_address')
@@ -184,10 +158,17 @@ class CompanyDetailsApi(Resource):
         if company_name is None:
             return jsonify(code=StatesCode.UNKNOWN_ERROR, message="公司名不能为空")
 
+        # 公司商标存储(url),
+        if logo:
+            logo.save(os.path.join(COMPANY_LOGO_PATH, logo.filename))
+            logo_url = COMPANY_LOGO_URL + logo.filename
+        else:
+            logo_url = None
+
         with Session(engine) as session:
             stmt = update(Company).where(Company.id == company_id).values(
                 company_name=company_name,
-                logo=logo,
+                logo=logo_url if logo_url else None,
                 abbreviation=abbreviation,
                 code=code,
                 registered_address=registered_address,
@@ -204,6 +185,25 @@ class CompanyDetailsApi(Resource):
 
         return jsonify(code=StatesCode.SUCCESS, message='修改成功')
 
+    @ns.doc(id='delete_company', description='删除公司')
+    @ns.expect(company_details)
+    def delete(self):
+        """删除公司"""
+        company_id = request.form.get('company_id')
+
+        if company_id is None:
+            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="公司id不能为空")
+
+        with Session(engine) as session:
+            stmt = select(Company).where(Company.id == company_id)
+
+            session.delete(session.execute(stmt).scalars().first())
+            session.commit()
+
+        save_log(request, Module.ORGANIZATION, OperationType.DELETE, StatesCode.SUCCESS)
+
+        return jsonify(code=StatesCode.SUCCESS, message="删除成功")
+
 
 department_details = reqparse.RequestParser(bundle_errors=True)
 department_details.add_argument(name='department_id', type=str, location='form', required=False, help='部门id')
@@ -219,8 +219,8 @@ department_details.add_argument(name='thirdparty_staff', type=str, location='for
 department_details.add_argument(name='censure', type=str, location='form', required=False, help='职责')
 
 
-@ns.route('/department')
-class DepartmentApi(Resource):
+@ns.route('/department_list')
+class DepartmentListApi(Resource):
     method_decorators = [login_required]
 
     @ns.doc(id='department_list', description='获取公司下部门列表')
@@ -245,6 +245,33 @@ class DepartmentApi(Resource):
 
         return jsonify(code=StatesCode.SUCCESS, message='成功', data=data)
 
+
+get_department = reqparse.RequestParser(bundle_errors=True)
+get_department.add_argument(name='department_id', type=str, location='args', required=False, help='部门id')
+
+
+@ns.route('/department')
+class DepartmentApi(Resource):
+    method_decorators = [login_required]
+
+    @ns.doc(id='get_department_details', description='获取部门详情')
+    @ns.expect(get_department)
+    def get(self):
+        """获取部门详情"""
+
+        department_id = request.args.get('department_id')
+
+        if department_id is None:
+            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="部门id不能为空")
+
+        with Session(engine) as session:
+            stmt = select(Department).where(Department.id == department_id)
+            results = session.execute(stmt).scalars().all()
+
+        save_log(request, Module.ORGANIZATION, OperationType.INQUIRE, StatesCode.SUCCESS)
+
+        return jsonify(code=StatesCode.SUCCESS, message="成功", data=to_dict(results))
+
     @ns.doc(id='add_department', description='添加部门')
     @ns.expect(department_details)
     def post(self):
@@ -284,51 +311,6 @@ class DepartmentApi(Resource):
 
         return {"code": StatesCode.SUCCESS, "message": "成功"}
 
-    @ns.doc(id='delete_company_details', description='删除部门')
-    @ns.expect(department_details)
-    def delete(self):
-        """删除部门"""
-        department_id = request.form.get('department_id')
-
-        if department_id is None:
-            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="部门id不能为空")
-
-        with Session(engine) as session:
-            stmt = delete(Department).where(Department.id == department_id)
-            session.execute(stmt)
-            session.commit()
-
-        save_log(request, Module.ORGANIZATION, OperationType.DELETE, StatesCode.SUCCESS)
-
-        return {"code": StatesCode.SUCCESS, "message": "成功", "data": '删除部门'}
-
-
-get_department = reqparse.RequestParser(bundle_errors=True)
-get_department.add_argument(name='department_id', type=str, location='args', required=False, help='部门id')
-
-
-@ns.route('/department_details')
-class DepartmentDetailsApi(Resource):
-    method_decorators = [login_required]
-
-    @ns.doc(id='get_department_details', description='获取部门详情')
-    @ns.expect(get_department)
-    def get(self):
-        """获取部门详情"""
-
-        department_id = request.args.get('department_id')
-
-        if department_id is None:
-            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="部门id不能为空")
-
-        with Session(engine) as session:
-            stmt = select(Department).where(Department.id == department_id)
-            results = session.execute(stmt).scalars().all()
-
-        save_log(request, Module.ORGANIZATION, OperationType.INQUIRE, StatesCode.SUCCESS)
-
-        return jsonify(code=StatesCode.SUCCESS, message="成功", data=to_dict(results))
-
     @ns.doc(id='update_company_details', description='修改部门详情')
     @ns.expect(department_details)
     def put(self):
@@ -370,6 +352,24 @@ class DepartmentDetailsApi(Resource):
 
         return jsonify(code=StatesCode.SUCCESS, message="成功")
 
+    @ns.doc(id='delete_company_details', description='删除部门')
+    @ns.expect(department_details)
+    def delete(self):
+        """删除部门"""
+        department_id = request.form.get('department_id')
+
+        if department_id is None:
+            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="部门id不能为空")
+
+        with Session(engine) as session:
+            stmt = delete(Department).where(Department.id == department_id)
+            session.execute(stmt)
+            session.commit()
+
+        save_log(request, Module.ORGANIZATION, OperationType.DELETE, StatesCode.SUCCESS)
+
+        return {"code": StatesCode.SUCCESS, "message": "成功", "data": '删除部门'}
+
 
 batch_delete_company = reqparse.RequestParser(bundle_errors=True)
 batch_delete_company.add_argument(name='company_ids', type=list, location='form', required=False, help='公司ids')

+ 17 - 7
src/app/api/role.py

@@ -47,20 +47,30 @@ role.add_argument(name='role_name', type=str, location='form', required=False, h
 role.add_argument(name='role_describe', type=str, location='form', required=False, help='角色描述')
 role.add_argument(name='role_permission', type=str, location='form', required=False, help='角色权限')
 
+role_id = reqparse.RequestParser(bundle_errors=True)
+role_id.add_argument(name='role_id', type=int, location='args', required=False, help='角色id')
+
 
 @ns.route('/role')
 class RoleApi(Resource):
     method_decorators = [login_required]
 
-    @ns.doc(id='get_role', description='搜索角色')
-    @ns.expect()
+    @ns.doc(id='get_role', description='获取角色')
+    @ns.expect(role_id)
     def get(self):
-        """搜索角色"""
-        data = {
-            "name": "决策组",
+        """获取角色"""
+        role_id = request.args.get('role_id')
+
+        if role_id is None:
+            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="角色id不能为空")
+
+        with Session(engine) as session:
+            stmt = select(Role).where(Role.id == role_id)
+            results = session.execute(stmt).scalars().all()
+
+        save_log(request, Module.ROLE, OperationType.INQUIRE, StatesCode.SUCCESS)
 
-        }
-        return {"code": StatesCode.SUCCESS, "message": "成功", "data": data}
+        return {"code": StatesCode.SUCCESS, "message": "成功", "data": to_dict(results)}
 
     @ns.doc(id='add_role', description='添加角色')
     @ns.expect(role)

+ 65 - 90
src/app/api/users.py

@@ -61,24 +61,31 @@ add_user.add_argument(name='on_job_status', type=str, required=False, location='
 add_user.add_argument(name='duty', type=str, required=False, location='form', help='职务')
 add_user.add_argument(name='nationality', type=str, required=False, location='form', help='国籍')
 
-users_status = reqparse.RequestParser(bundle_errors=True)
-users_status.add_argument(name='id', type=int, required=True, location='form', help='用户id')
-users_status.add_argument(name='status', type=int, required=True, location='form', help='用户状态')
 
-del_users = reqparse.RequestParser(bundle_errors=True)
-del_users.add_argument(name='id', type=int, required=True, location='form', help='用户id')
+user_details = reqparse.RequestParser(bundle_errors=True)
+user_details.add_argument(name='id', type=int, required=True, location='args', help='用户id')
 
 
 @ns.route('/user')
 class UsersApi(Resource):
-    # method_decorators = [login_required]
+    method_decorators = [login_required]
 
-    @ns.doc(id='query_users', description='搜索用户')
-    @ns.expect()
+    @ns.doc(id='get_users_details', description='获取用户详情')
+    @ns.expect(user_details)
     def get(self):
-        """搜索用户"""
-        data = []
-        return {"code": StatesCode.SUCCESS, "message": "成功", "data": data}
+        """获取用户详情"""
+        user_id = request.args.get('id')
+
+        if user_id is None:
+            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="用户id不能为空")
+
+        with Session(engine) as session:
+            stmt = select(User).where(User.id == user_id)
+            results = session.execute(stmt).scalars().all()
+
+        save_log(request, Module.USER, OperationType.INQUIRE, StatesCode.SUCCESS)
+
+        return jsonify(code=StatesCode.SUCCESS, message='成功', data=to_dict(results))
 
     @ns.doc(id='add_users', description='添加用户')
     @ns.expect(add_user)
@@ -135,85 +142,6 @@ class UsersApi(Resource):
 
         return jsonify(code=StatesCode.SUCCESS, message="添加用户成功")
 
-    @ns.doc(id='modify_users_status', description='修改用户状态,激活、禁用')
-    @ns.expect(users_status)
-    def put(self):
-        """修改用户状态,激活、禁用"""
-        user_id = int(request.form.get('id'))
-        account_status = int(request.form.get('status'))
-
-        if user_id is None or account_status is None:
-            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="用户id或用户状态不能为空")
-
-        with Session(engine) as session:
-            stmt = update(User).where(User.id == user_id).values(account_status=account_status)
-            session.execute(stmt)
-            session.commit()
-
-        save_log(request, Module.USER, OperationType.UPDATE, StatesCode.SUCCESS)
-
-        return jsonify(code=StatesCode.SUCCESS, message="修改用户状态成功")
-
-    @ns.doc(id='delete_users', description='删除用户')
-    @ns.expect(del_users)
-    def delete(self):
-        """删除用户"""
-        user_id = request.form.get('id')
-
-        if user_id is None:
-            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="用户id不能为空")
-
-        with Session(engine) as session:
-            stmt = delete(User).where(User.id == user_id)
-            session.execute(stmt)
-            session.commit()
-
-        save_log(request, Module.USER, OperationType.DELETE, StatesCode.SUCCESS)
-
-        return jsonify(code=StatesCode.SUCCESS, message="删除成功")
-
-
-user_details = reqparse.RequestParser(bundle_errors=True)
-user_details.add_argument(name='id', type=int, required=True, location='args', help='用户id')
-
-
-# user_details_update = reqparse.RequestParser(bundle_errors=True)
-# user_details_update.add_argument(name='username', type=str, required=False, location='form', help='用户名')
-# user_details_update.add_argument(name='password', type=str, required=False, location='form', help='密码')
-# user_details_update.add_argument(name='photograph', type=str, required=False, location='form', help='照片')
-# user_details_update.add_argument(name='name', type=str, required=False, location='form', help='姓名')
-# user_details_update.add_argument(name='phone', type=str, required=False, location='form', help='电话')
-# user_details_update.add_argument(name='email', type=str, required=False, location='form', help='邮箱')
-# user_details_update.add_argument(name='company', type=str, required=False, location='form', help='公司')
-# user_details_update.add_argument(name='department', type=str, required=False, location='form', help='部门')
-# user_details_update.add_argument(name='role', type=str, required=False, location='form', help='角色')
-# user_details_update.add_argument(name='permission', type=str, required=False, location='form', help='权限')
-# user_details_update.add_argument(name='on_job_status', type=str, required=False, location='form', help='在职状态')
-# user_details_update.add_argument(name='duty', type=str, required=False, location='form', help='职务')
-# user_details_update.add_argument(name='nationality', type=str, required=False, location='form', help='国籍')
-
-
-@ns.route('/user_details')
-class GetUsersApi(Resource):
-    method_decorators = [login_required]
-
-    @ns.doc(id='get_users_details', description='获取用户详情')
-    @ns.expect(user_details)
-    def get(self):
-        """获取用户详情"""
-        user_id = request.args.get('id')
-
-        if user_id is None:
-            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="用户id不能为空")
-
-        with Session(engine) as session:
-            stmt = select(User).where(User.id == user_id)
-            results = session.execute(stmt).scalars().all()
-
-        save_log(request, Module.USER, OperationType.INQUIRE, StatesCode.SUCCESS)
-
-        return jsonify(code=StatesCode.SUCCESS, message='成功', data=to_dict(results))
-
     @ns.doc(id='update_users_details', description='更新用户详情')
     @ns.expect(add_user)
     def put(self):
@@ -257,6 +185,53 @@ class GetUsersApi(Resource):
 
         return jsonify(code=StatesCode.SUCCESS, message='修改成功')
 
+    @ns.doc(id='delete_users', description='删除用户')
+    @ns.expect(add_user)
+    def delete(self):
+        """删除用户"""
+        user_id = request.form.get('id')
+
+        if user_id is None:
+            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="用户id不能为空")
+
+        with Session(engine) as session:
+            stmt = delete(User).where(User.id == user_id)
+            session.execute(stmt)
+            session.commit()
+
+        save_log(request, Module.USER, OperationType.DELETE, StatesCode.SUCCESS)
+
+        return jsonify(code=StatesCode.SUCCESS, message="删除成功")
+
+
+users_status = reqparse.RequestParser(bundle_errors=True)
+users_status.add_argument(name='id', type=int, required=True, location='form', help='用户id')
+users_status.add_argument(name='status', type=int, required=True, location='form', help='用户状态')
+
+
+@ns.route('/user_status')
+class GetUsersApi(Resource):
+    method_decorators = [login_required]
+
+    @ns.doc(id='modify_users_status', description='修改用户状态,激活、禁用')
+    @ns.expect(users_status)
+    def put(self):
+        """修改用户状态,激活、禁用"""
+        user_id = int(request.form.get('id'))
+        account_status = int(request.form.get('status'))
+
+        if user_id is None or account_status is None:
+            return jsonify(code=StatesCode.UNKNOWN_ERROR, message="用户id或用户状态不能为空")
+
+        with Session(engine) as session:
+            stmt = update(User).where(User.id == user_id).values(account_status=account_status)
+            session.execute(stmt)
+            session.commit()
+
+        save_log(request, Module.USER, OperationType.UPDATE, StatesCode.SUCCESS)
+
+        return jsonify(code=StatesCode.SUCCESS, message="修改用户状态成功")
+
 
 batch_delete_user = reqparse.RequestParser(bundle_errors=True)
 batch_delete_user.add_argument(name='users_id', type=str, required=True, location='form', help='用户id列表')

+ 13 - 1
src/app/configs/config.py

@@ -1,2 +1,14 @@
-JWT_SECRET = ''
+JWT_SECRET = 'SKYversation0816'
 JWT_EXPIRY = 3600
+
+# 公司商标存储地址
+COMPANY_LOGO_PATH = "/Users/mac/data/company_logo"
+COMPANY_LOGO_URL = 'http://127.0.0.1/company_logo/'
+
+# 报表存储地址
+STATEMENT_FILE_PATH = '/Users/mac/data/statement'
+STATEMENT_FILE_URL = 'http://127.0.0.1/statement/'
+# 报告存储地址
+
+
+# 公司图片存醋地址