Sfoglia il codice sorgente

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

zhangnaiwen 2 anni fa
parent
commit
7d7741c982
4 ha cambiato i file con 83 aggiunte e 57 eliminazioni
  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.role import ns as role
 from app.api.data import ns as data
 from app.api.data import ns as data
 from app.api.log import ns as log
 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')
 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(role)
 api.add_namespace(data)
 api.add_namespace(data)
 api.add_namespace(log)
 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 import request, jsonify
 from flask_restx import Resource, Namespace, reqparse
 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='消息管理接口')
 ns = Namespace('message', description='消息管理接口')
 
 
 
 
-class MessageApi(Resource):
+@ns.route('/message_list')
+class MessageTypeApi(Resource):
+    @ns.doc(id='message_list', description='消息列表')
     def get(self):
     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)
         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):
     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='')
         return jsonify(code=StatesCode.SUCCESS, message='成功', data='')

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

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