You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					194 lines
				
				7.0 KiB
			
		
		
			
		
	
	
					194 lines
				
				7.0 KiB
			| 
											1 year ago
										 | from datetime import datetime | ||
| 
											2 years ago
										 | from fastapi import status | ||
|  | from fastapi.encoders import jsonable_encoder | ||
| 
											1 year ago
										 | from fastapi.responses import JSONResponse, Response, StreamingResponse | ||
| 
											2 years ago
										 | from pydantic import BaseModel | ||
| 
											1 year ago
										 | from typing import Any, Dict, Optional | ||
| 
											1 year ago
										 | from config.constant import HttpStatusConstant | ||
| 
											2 years ago
										 | 
 | ||
|  | 
 | ||
|  | class ResponseUtil: | ||
|  |     """
 | ||
|  |     响应工具类 | ||
|  |     """
 | ||
|  | 
 | ||
|  |     @classmethod | ||
| 
											1 year ago
										 |     def success( | ||
|  |         cls, | ||
|  |         msg: str = '操作成功', | ||
|  |         data: Optional[Any] = None, | ||
|  |         rows: Optional[Any] = None, | ||
|  |         dict_content: Optional[Dict] = None, | ||
|  |         model_content: Optional[BaseModel] = None, | ||
|  |     ) -> Response: | ||
| 
											2 years ago
										 |         """
 | ||
|  |         成功响应方法 | ||
| 
											1 year ago
										 | 
 | ||
| 
											2 years ago
										 |         :param msg: 可选,自定义成功响应信息 | ||
|  |         :param data: 可选,成功响应结果中属性为data的值 | ||
|  |         :param rows: 可选,成功响应结果中属性为rows的值 | ||
|  |         :param dict_content: 可选,dict类型,成功响应结果中自定义属性的值 | ||
|  |         :param model_content: 可选,BaseModel类型,成功响应结果中自定义属性的值 | ||
|  |         :return: 成功响应结果 | ||
|  |         """
 | ||
| 
											1 year ago
										 |         result = {'code': HttpStatusConstant.SUCCESS, 'msg': msg} | ||
| 
											2 years ago
										 | 
 | ||
|  |         if data is not None: | ||
|  |             result['data'] = data | ||
|  |         if rows is not None: | ||
|  |             result['rows'] = rows | ||
|  |         if dict_content is not None: | ||
|  |             result.update(dict_content) | ||
|  |         if model_content is not None: | ||
|  |             result.update(model_content.model_dump(by_alias=True)) | ||
|  | 
 | ||
|  |         result.update({'success': True, 'time': datetime.now()}) | ||
|  | 
 | ||
| 
											1 year ago
										 |         return JSONResponse(status_code=status.HTTP_200_OK, content=jsonable_encoder(result)) | ||
| 
											2 years ago
										 | 
 | ||
|  |     @classmethod | ||
| 
											1 year ago
										 |     def failure( | ||
|  |         cls, | ||
|  |         msg: str = '操作失败', | ||
|  |         data: Optional[Any] = None, | ||
|  |         rows: Optional[Any] = None, | ||
|  |         dict_content: Optional[Dict] = None, | ||
|  |         model_content: Optional[BaseModel] = None, | ||
|  |     ) -> Response: | ||
| 
											2 years ago
										 |         """
 | ||
|  |         失败响应方法 | ||
| 
											1 year ago
										 | 
 | ||
| 
											2 years ago
										 |         :param msg: 可选,自定义失败响应信息 | ||
|  |         :param data: 可选,失败响应结果中属性为data的值 | ||
|  |         :param rows: 可选,失败响应结果中属性为rows的值 | ||
|  |         :param dict_content: 可选,dict类型,失败响应结果中自定义属性的值 | ||
|  |         :param model_content: 可选,BaseModel类型,失败响应结果中自定义属性的值 | ||
|  |         :return: 失败响应结果 | ||
|  |         """
 | ||
| 
											1 year ago
										 |         result = {'code': HttpStatusConstant.WARN, 'msg': msg} | ||
| 
											2 years ago
										 | 
 | ||
|  |         if data is not None: | ||
|  |             result['data'] = data | ||
|  |         if rows is not None: | ||
|  |             result['rows'] = rows | ||
|  |         if dict_content is not None: | ||
|  |             result.update(dict_content) | ||
|  |         if model_content is not None: | ||
|  |             result.update(model_content.model_dump(by_alias=True)) | ||
|  | 
 | ||
|  |         result.update({'success': False, 'time': datetime.now()}) | ||
|  | 
 | ||
| 
											1 year ago
										 |         return JSONResponse(status_code=status.HTTP_200_OK, content=jsonable_encoder(result)) | ||
| 
											2 years ago
										 | 
 | ||
|  |     @classmethod | ||
| 
											1 year ago
										 |     def unauthorized( | ||
|  |         cls, | ||
|  |         msg: str = '登录信息已过期,访问系统资源失败', | ||
|  |         data: Optional[Any] = None, | ||
|  |         rows: Optional[Any] = None, | ||
|  |         dict_content: Optional[Dict] = None, | ||
|  |         model_content: Optional[BaseModel] = None, | ||
|  |     ) -> Response: | ||
| 
											2 years ago
										 |         """
 | ||
|  |         未认证响应方法 | ||
| 
											1 year ago
										 | 
 | ||
| 
											2 years ago
										 |         :param msg: 可选,自定义未认证响应信息 | ||
|  |         :param data: 可选,未认证响应结果中属性为data的值 | ||
|  |         :param rows: 可选,未认证响应结果中属性为rows的值 | ||
|  |         :param dict_content: 可选,dict类型,未认证响应结果中自定义属性的值 | ||
|  |         :param model_content: 可选,BaseModel类型,未认证响应结果中自定义属性的值 | ||
|  |         :return: 未认证响应结果 | ||
|  |         """
 | ||
| 
											1 year ago
										 |         result = {'code': HttpStatusConstant.UNAUTHORIZED, 'msg': msg} | ||
| 
											2 years ago
										 | 
 | ||
|  |         if data is not None: | ||
|  |             result['data'] = data | ||
|  |         if rows is not None: | ||
|  |             result['rows'] = rows | ||
|  |         if dict_content is not None: | ||
|  |             result.update(dict_content) | ||
|  |         if model_content is not None: | ||
|  |             result.update(model_content.model_dump(by_alias=True)) | ||
|  | 
 | ||
|  |         result.update({'success': False, 'time': datetime.now()}) | ||
|  | 
 | ||
| 
											1 year ago
										 |         return JSONResponse(status_code=status.HTTP_200_OK, content=jsonable_encoder(result)) | ||
| 
											2 years ago
										 | 
 | ||
|  |     @classmethod | ||
| 
											1 year ago
										 |     def forbidden( | ||
|  |         cls, | ||
|  |         msg: str = '该用户无此接口权限', | ||
|  |         data: Optional[Any] = None, | ||
|  |         rows: Optional[Any] = None, | ||
|  |         dict_content: Optional[Dict] = None, | ||
|  |         model_content: Optional[BaseModel] = None, | ||
|  |     ) -> Response: | ||
| 
											2 years ago
										 |         """
 | ||
| 
											1 year ago
										 |         未授权响应方法 | ||
|  | 
 | ||
|  |         :param msg: 可选,自定义未授权响应信息 | ||
|  |         :param data: 可选,未授权响应结果中属性为data的值 | ||
|  |         :param rows: 可选,未授权响应结果中属性为rows的值 | ||
|  |         :param dict_content: 可选,dict类型,未授权响应结果中自定义属性的值 | ||
|  |         :param model_content: 可选,BaseModel类型,未授权响应结果中自定义属性的值 | ||
|  |         :return: 未授权响应结果 | ||
| 
											2 years ago
										 |         """
 | ||
| 
											1 year ago
										 |         result = {'code': HttpStatusConstant.FORBIDDEN, 'msg': msg} | ||
| 
											2 years ago
										 | 
 | ||
|  |         if data is not None: | ||
|  |             result['data'] = data | ||
|  |         if rows is not None: | ||
|  |             result['rows'] = rows | ||
|  |         if dict_content is not None: | ||
|  |             result.update(dict_content) | ||
|  |         if model_content is not None: | ||
|  |             result.update(model_content.model_dump(by_alias=True)) | ||
|  | 
 | ||
|  |         result.update({'success': False, 'time': datetime.now()}) | ||
|  | 
 | ||
| 
											1 year ago
										 |         return JSONResponse(status_code=status.HTTP_200_OK, content=jsonable_encoder(result)) | ||
| 
											2 years ago
										 | 
 | ||
|  |     @classmethod | ||
| 
											1 year ago
										 |     def error( | ||
|  |         cls, | ||
|  |         msg: str = '接口异常', | ||
|  |         data: Optional[Any] = None, | ||
|  |         rows: Optional[Any] = None, | ||
|  |         dict_content: Optional[Dict] = None, | ||
|  |         model_content: Optional[BaseModel] = None, | ||
|  |     ) -> Response: | ||
| 
											2 years ago
										 |         """
 | ||
|  |         错误响应方法 | ||
| 
											1 year ago
										 | 
 | ||
| 
											2 years ago
										 |         :param msg: 可选,自定义错误响应信息 | ||
|  |         :param data: 可选,错误响应结果中属性为data的值 | ||
|  |         :param rows: 可选,错误响应结果中属性为rows的值 | ||
|  |         :param dict_content: 可选,dict类型,错误响应结果中自定义属性的值 | ||
|  |         :param model_content: 可选,BaseModel类型,错误响应结果中自定义属性的值 | ||
|  |         :return: 错误响应结果 | ||
|  |         """
 | ||
| 
											1 year ago
										 |         result = {'code': HttpStatusConstant.ERROR, 'msg': msg} | ||
| 
											2 years ago
										 | 
 | ||
|  |         if data is not None: | ||
|  |             result['data'] = data | ||
|  |         if rows is not None: | ||
|  |             result['rows'] = rows | ||
|  |         if dict_content is not None: | ||
|  |             result.update(dict_content) | ||
|  |         if model_content is not None: | ||
|  |             result.update(model_content.model_dump(by_alias=True)) | ||
|  | 
 | ||
|  |         result.update({'success': False, 'time': datetime.now()}) | ||
|  | 
 | ||
| 
											1 year ago
										 |         return JSONResponse(status_code=status.HTTP_200_OK, content=jsonable_encoder(result)) | ||
| 
											2 years ago
										 | 
 | ||
|  |     @classmethod | ||
|  |     def streaming(cls, *, data: Any = None): | ||
|  |         """
 | ||
|  |         流式响应方法 | ||
| 
											1 year ago
										 | 
 | ||
| 
											2 years ago
										 |         :param data: 流式传输的内容 | ||
|  |         :return: 流式响应结果 | ||
|  |         """
 | ||
| 
											1 year ago
										 |         return StreamingResponse(status_code=status.HTTP_200_OK, content=data) |