瀏覽代碼

消息表、消息列表、获取消息详情

zhangnaiwen 2 年之前
父節點
當前提交
7d7741c982
共有 4 個文件被更改,包括 83 次插入57 次删除
  1. 2 0
      src/app/api/__init__.py
  2. 49 57
      src/app/api/message.py
  3. 4 0
      src/app/configs/config.py
  4. 28 0
      src/app/modle/message.py

+ 2 - 0
src/app/api/__init__.py

@@ -6,6 +6,7 @@ from app.api.organization import ns as organization
 from app.api.role import ns as role
 from app.api.data import ns as data
 from app.api.log import ns as log
+from app.api.message import ns as message
 
 api = Api(version='v1.0', title='operation_management_center', description='运营管理中心', doc='/api')
 
@@ -15,3 +16,4 @@ api.add_namespace(organization)
 api.add_namespace(role)
 api.add_namespace(data)
 api.add_namespace(log)
+api.add_namespace(message)

+ 49 - 57
src/app/api/message.py

@@ -1,76 +1,68 @@
 from flask import request, jsonify
 from flask_restx import Resource, Namespace, reqparse
+from sqlalchemy import select
+from sqlalchemy.orm import Session
 
-from app.defines import StatesCode
+from app.database import engine
+from app.defines import StatesCode, Module, OperationType
+from app.configs.config import MESSAGR_TYPE
+from app.modle.message import Message
+from app.utils.save_log import save_log
+from app.utils.util import to_dict
 
 ns = Namespace('message', description='消息管理接口')
 
 
-class MessageApi(Resource):
+@ns.route('/message_list')
+class MessageTypeApi(Resource):
+    @ns.doc(id='message_list', description='消息列表')
     def get(self):
-        """获取消息"""
-        data = {
-            'name': '年度消息',
-            'superior': None,
-            'config': '钉钉',
-            'personnel': '全体',
-            'time': '2020-10-10',
-            'title': '标题',
-            'content': '内容',
-            'style': '样式'
-        }
-        return jsonify(code=StatesCode.SUCCESS, message='成功', data=data)
+        """获取消息列表"""
+        data = {}
+        for message in MESSAGR_TYPE:
+            with Session(engine) as session:
+                stmt = select(Message.id, Message.name).where(Message.type == message)
+
+                for row in session.execute(stmt):
+                    if data.get(message):
+                        data[message].append({"id": row.id, "name": row.name})
+                    else:
+                        data[message] = [{"id": row.id, "name": row.name}]
+
+        save_log(request, Module.MESSAGE, OperationType.INQUIRE, StatesCode.SUCCESS)
 
-    def put(self):
-        """修改消息"""
-        data = {
-            'name': '年度消息',
-            'superior': None,
-            'config': '钉钉',
-            'personnel': '全体',
-            'time': '2020-10-10',
-            'title': '标题',
-            'content': '内容',
-            'style': '样式'
-        }
         return jsonify(code=StatesCode.SUCCESS, message='成功', data=data)
 
-    def delete(self):
-        """删除消息"""
 
-        return jsonify(code=StatesCode.SUCCESS, message='成功', data='')
+message_details = reqparse.RequestParser(bundle_errors=True)
+message_details.add_argument(name='message_id', type=int, location='args', required=False, help='消息id')
 
 
-class InformationApi(Resource):
+class MessageApi(Resource):
+
+    @ns.doc(id='message_details', description='获取消息详情')
+    @ns.expect(message_details)
     def get(self):
-        """获取信息"""
-        data = {
-            'name': '年度消息',
-            'superior': None,
-            'config': '钉钉',
-            'personnel': '全体',
-            'time': '2020-10-10',
-            'title': '标题',
-            'content': '内容',
-            'style': '样式'
-        }
-        return jsonify(code=StatesCode.SUCCESS, message='成功', data=data)
+        """获取消息详情"""
 
-    def put(self):
-        """修改信息"""
-        data = {
-            'name': '年度消息',
-            'superior': None,
-            'config': '钉钉',
-            'personnel': '全体',
-            'time': '2020-10-10',
-            'title': '标题',
-            'content': '内容',
-            'style': '样式'
-        }
-        return jsonify(code=StatesCode.SUCCESS, message='成功', data=data)
+        message_id = request.args.get('message_id')
+
+        if message_id is None:
+            return jsonify(code=StatesCode.UNKNOWN_ERROR, message='消息id不能为空')
+
+        with Session(engine) as session:
+            stmt = select(Message).where(Message.id == message_id)
+            results = session.execute(stmt).scalars().all()
+
+        save_log(request, Module.MESSAGE, OperationType.INQUIRE, StatesCode.SUCCESS)
 
-    def delete(self):
-        """删除信息"""
+        return jsonify(code=StatesCode.SUCCESS, message='成功', data=to_dict(results))
+
+    def post(self):
+        """新增消息"""
+        pass
+
+    def put(self):
+        """修改消息"""
 
         return jsonify(code=StatesCode.SUCCESS, message='成功', data='')

+ 4 - 0
src/app/configs/config.py

@@ -1,6 +1,10 @@
 JWT_SECRET = 'SKYversation0816'
 JWT_EXPIRY = 3600
 
+
+MESSAGR_TYPE = ['普通消息','提醒消息']
+
+
 # 公司商标存储地址
 COMPANY_LOGO_PATH = "/Users/mac/data/company_logo"
 COMPANY_LOGO_URL = 'http://127.0.0.1/company_logo/'

+ 28 - 0
src/app/modle/message.py

@@ -0,0 +1,28 @@
+from sqlalchemy import String, Column, Integer, Text, create_engine
+
+from app.modle import Base
+
+
+class Message(Base):
+    """提醒消息表"""
+
+    __tablename__ = 'message'
+
+    id = Column(Integer, primary_key=True, autoincrement=True, nullable=False, unique=True, doc='id')
+    name = Column(String, nullable=True, unique=False, index=False, doc='消息名称')
+    pipeline = Column(String, nullable=True, unique=False, index=False, doc='通道配置')
+    staff = Column(String, nullable=True, unique=False, index=False, doc='人员配置')
+    send_time = Column(String, nullable=True, unique=False, index=False, doc='发送时间')
+    title = Column(String, nullable=True, unique=False, index=False, doc='标题')
+    content = Column(String, nullable=True, unique=False, index=False, doc='内容')
+    style = Column(String, nullable=True, unique=False, index=False, doc='样式')
+    type = Column(String, nullable=False, unique=False, index=False, doc='消息类型')
+# user = 'mac'
+# password = ''
+# host = 'localhost'
+# port = 5432
+# database = 'postgres'
+# uri = f'postgresql+psycopg2://{user}:{password}@{host}:{port}/{database}'
+#
+# engine = create_engine(uri)
+# Base.metadata.create_all(engine)