Browse Source

no message

libushang 9 months ago
parent
commit
2f2295c928
2 changed files with 146 additions and 1 deletions
  1. 20 1
      models/xxfb_base.py
  2. 126 0
      routers/api/infoPublish/back.py

+ 20 - 1
models/xxfb_base.py

@@ -19,6 +19,7 @@ class InfoPublishBase(Base):
     add_time = Column(DateTime, default=datetime.now, comment='录入时间')
     response_type = Column(Integer, default='0', server_default='0', comment='消息反馈方式')
     publish_time = Column(DateTime, default=datetime.now, comment='发布时间')
+    publish_type = Column(Integer, default='0', server_default='0', comment='发布类型')
     examine_by = Column(String, default='', server_default='', comment='审核人')
     publish_status = Column(Integer, default='0', server_default='0', comment='发布状态')
     examine_status = Column(Integer, default='0', server_default='0', comment='审批状态')
@@ -39,7 +40,7 @@ class InfoPublishResponses(Base):
     # 定义字段
     id = Column(Integer, autoincrement=True, primary_key=True)  # 主键
     publish_id = Column(Integer, default='0', server_default='0', comment='主表ID')
-    user_id = Column(Integer, default='0', server_default='0', comment='主表ID')
+    user_id = Column(Integer, default='0', server_default='0', comment='账号ID')
     user_name = Column(String, default='', server_default='', comment='账号名称')
     nick_name = Column(String, default='', server_default='', comment='用户姓名')
     dept_name = Column(String, default='', server_default='', comment='部门名称')
@@ -48,6 +49,7 @@ class InfoPublishResponses(Base):
     sent_time = Column(DateTime, default=datetime.now, comment='发送时间')
     response_type = Column(Integer, default='0', server_default='0', comment='反馈方式')
     response_time = Column(DateTime, default=datetime.now, comment='反馈时间')
+    publish_channel = Column(String, default='', server_default='', comment='推送渠道')
 
     class Config:
         orm_mode = True
@@ -71,5 +73,22 @@ class InfoPublishFile(Base):
     create_by = Column(Integer, default=None, comment='创建者')
     del_flag = Column(String(1), default='0', comment='删除标志(0代表存在 2代表删除)') #更新预案信息的时候 先将原有的进行备注删除
 
+    class Config:
+        orm_mode = True
+
+
+class InfoPublishExamine(Base):
+    __tablename__ = 'infopublish_examine'
+
+    id = Column(Integer, autoincrement=True, primary_key=True)
+    publish_id = Column(Integer, default='0', server_default='0', comment='主表ID')
+    examine_type = Column(Integer, default='0', server_default='0', comment='审核类型 0 草稿 10 提交 20 领导审批 30 重新提交')
+    examine_sub_type = Column(Integer, default='0', server_default='0', comment='审核类型 0 草稿 10 提交 20 待审批 21 审批通过 22 审批不通过 30 重新提交')
+    examine_time = Column(DateTime, default=datetime.now, comment='审批时间')
+    user_id = Column(Integer, default='0', server_default='0', comment='主表ID')
+    user_name = Column(String, default='', server_default='', comment='审批账号')
+    nick_name = Column(String, default='', server_default='', comment='审批姓名')
+    del_flag = Column(String, default='0', comment='删除标志(0代表存在 2代表删除)')
+
     class Config:
         orm_mode = True

+ 126 - 0
routers/api/infoPublish/back.py

@@ -201,3 +201,129 @@ async def get_publish_list(
         # 处理异常
         traceback.print_exc()
         raise HTTPException(status_code=500, detail=str(e))
+
+@router.get('/edit')
+async def get_edit_info(
+    request: Request, 
+    info_id: str = Query(None, description='信息ID'),
+    db: Session = Depends(get_db)):
+
+    row = db.query(InfoPublishBase).filter(InfoPublishBase.id == info_id).first()
+    data = get_model_dict(row)
+    data['add_time'] = get_datetime_str(data['add_time'])
+    data['publish_time'] = get_datetime_str(data['publish_time'])
+
+    data["examines"] = []
+    rows = db.query(InfoPublishBase).filter(InfoPublishExamine.publish_id == info_id).filter(InfoPublishExamine.del_flag == '0').all()
+    for row in rows:
+        data["examines"].append({
+            "examine_type": row.examine_type,
+            "examine_sub_type": row.examine_sub_type,
+            "content": row.content,
+            "examine_time": get_datetime_str(row.examine_time),
+            "user_id": row.user_id,
+            "user_name": row.user_name,
+            "nick_name": row.nick_name
+        })
+    return {
+        "code": 200,
+        "msg": "查询成功",
+        "data": data
+    }
+
+@router.post('/edit')
+async def post_edit_info(
+    request: Request, 
+    body = Depends(remove_xss_json), 
+    db: Session = Depends(get_db),
+    user_id = Depends(valid_access_token)):
+
+    info_id = body['info_id']
+    del body['info_id']
+    body['recorded_by'] = user_id
+
+    db.query(InfoPublishBase).filter(InfoPublishBase.id == info_id).update(body)
+    db.commit()
+
+    return {
+        "code": 200,
+        "msg": "保存信息成功"
+    }
+
+@router.post('/examine')
+async def post_examine_info(
+    request: Request, 
+    body = Depends(remove_xss_json), 
+    db: Session = Depends(get_db),
+    user_id = Depends(valid_access_token)):
+
+    user_row = db.query(SysUser).filter(SysUser.user_id == user_id).first()
+
+    new_examine = InfoPublishExamine(
+        pubish_id = body['info_id'],
+        examine_type = body['examine_type'],
+        examine_sub_type = body['examine_sub_type'],
+        content = body['content'],
+        examine_time = datetime.now(),
+        user_id = user_id,
+        user_name = user_row.user_name,
+        nick_name = user_row.nick_name
+    )
+    
+    db.add(new_examine)
+    db.commit()
+
+    return {
+        "code": 200,
+        "msg": "保存审批记录成功"
+    }
+
+@router.get("send_list")
+async def get_send_list(
+    info_id: str = Query('', description='信息ID'),
+    keywords: str = Query('', description='关键字'),
+    sort_by: str = Query('', description='排序字段'),
+    sort_order: str = Query("asc", description='排序方式'),
+    page: int = Query(1, gt=0, description='页码'),
+    page_size: int = Query(10, gt=0, description='pageSize'),
+    db: Session = Depends(get_db)
+):
+    try:
+        # 应用查询条件
+        where = ()
+        where = and_(where, InfoPublishResponses.publish_id == info_id)
+
+        # 计算总条目数
+        q = db.query(func.count(InfoPublishResponses.id))
+        q = q.filter(where)
+        total = q.scalar()
+        
+        # 执行分页查询
+        q = db.query(InfoPublishResponses)
+        q = q.filter(where)
+        rows = q.order_by(InfoPublishResponses.id.desc()).offset((page - 1) * page_size).limit(page_size).all()
+
+        data = []
+        for row in rows:
+            data.append({
+                "user_id": row.user_id,
+                "user_name": row.user_name,
+                "nick_name": row.nick_name,
+                "dept_name": row.dept_name,
+                "sent_status": row.sent_status,
+                "sent_time": get_datetime_str(row.sent_time),
+                "response_type": row.response_type
+            })
+
+        # 返回结果
+        return {
+            "code": 200,
+            "msg": "查询成功",
+            "data": data,
+            "total": total
+        }
+
+    except Exception as e:
+        # 处理异常
+        traceback.print_exc()
+        raise HTTPException(status_code=500, detail=str(e))