Compare commits

..

3 Commits

Author SHA1 Message Date
e0d5a5c6d6 2 2025-07-21 11:50:05 +08:00
8ec97becbc Merge remote-tracking branch 'origin/main' into fastapi 2025-07-21 10:40:05 +08:00
dab73ad6bf 1 2025-07-20 18:08:31 +08:00
8 changed files with 152 additions and 33 deletions

View File

@ -1,10 +1,14 @@
project/
├── src/
│ └── __init__.py
├── tests/ # ✅ 测试目录pytest 自动发现)
│ └── test_example.py
├── .python-version # ✅ 本地虚拟python环境uv venv 创建)
├── main.py # ✅ 主程序
├── pyproject.toml # ✅ 全局配置
├── README.md # ✅ 项目说明(包含安装、使用、发布)
└── uv.lock # ✅ uv 快照(可选)
# 项目目录结构说明
## 核心结构概览
```plaintext
project/ # 项目根目录
├── src/ # ✅ 源代码包
│ └── __init__.py # 包标识文件可定义公共API
├── tests/ # ✅ 测试目录pytest自动发现用例
│ └── test_example.py # 测试示例(需以`test_`前缀命名)
├── .python-version # ✅ 指定Python版本如3.11.4
├── main.py # ✅ 主程序入口CLI执行入口
├── pyproject.toml # ✅ 全局配置(依赖/元数据/构建设置)
├── README.md # ✅ 项目说明(必含安装/使用/发布指南)
└── uv.lock # ✅ UV依赖快照锁定版本号可选但推荐

28
main.py
View File

@ -1,29 +1,11 @@
from fastapi import FastAPI
import uvicorn
from src.utils.Log import Log
app = FastAPI(title="yin_home文档")
@app.get('/weather', tags=["获取天气数据"], summary="返回实时天气数据")
def weather():
return {
"code": 200,
"data": {
"city": "上海",
"weather": "多云",
"temperature": "25",
"wind": "南风",
"humidity": "60",
"pressure": "1010",
"update_time": "2021-09-01 12:00:00"
}
}
from fastapi import FastAPI
from src.routers import routers # 导入路由集合
app = FastAPI(title="FastAPI文档")
for router in routers:
app.include_router(router) # 自动注册所有路由
if __name__ == '__main__':
uvicorn.run(app='main:app', host='0.0.0.0', port=1314, reload=True)

107
src/common/Date_Time.py Normal file
View File

@ -0,0 +1,107 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import datetime
import time
def get_period(time_stamp):
time_array = time.localtime(int(time_stamp)/1000)
return time_array.tm_hour
def get_date_time(date_str):
date_ = datetime.datetime.strptime(date_str, '%Y-%m-%d')
return date_
def get_hour_diff(datetime1, datetime2):
td = datetime2 - datetime1
return td.days * 24 + td.seconds / 3600
def get_day_diff(datetime1, datetime2):
td = datetime2 - datetime1
return td.days + td.seconds / 3600 / 24
def get_current_day():
today = datetime.date.today()
return today
def get_now_datetime():
return datetime.datetime.now()
def get_current_yesterday():
today = get_current_day()
oneday = datetime.timedelta(days=1)
yesterday = today - oneday
return yesterday.strftime("%Y-%m-%d")
def get_yesterday(date_str):
date_ = get_date_time(date_str)
yesterday = date_ + datetime.timedelta(days=-1)
return yesterday
def get_lastyesterday(date_str):
date_ = get_date_time(date_str)
lastyesterday = date_ + datetime.timedelta(days=-2)
return lastyesterday
def get_lastweek_date(date_str):
date_ = get_date_time(date_str)
lastweek_date = date_ + datetime.timedelta(days=-7)
return lastweek_date
def get_lastlastweek_date(date_str):
date_ = get_date_time(date_str)
lastlastweek_date = date_ + datetime.timedelta(days=-14)
return lastlastweek_date
def get_lastweek_start_end_date(date_str):
date_ = get_date_time(date_str)
week = date_.strftime("%w")
week = int(week)
start_lastweek_date = date_ + datetime.timedelta(days=-(week + 6))
end_lastweek_date = date_ + datetime.timedelta(days=-week)
return start_lastweek_date, end_lastweek_date
def add_day(d_date, n):
return (d_date + datetime.timedelta(days=n)).strftime("%Y-%m-%d")
def get_lastmonth_start_end_date(date_str):
date_ = get_date_time(date_str)
start_lastmonth_date = datetime.date(date_.year, date_.month - 1, 1)
end_lastmonth_date = datetime.date(date_.year, date_.month, 1) - datetime.timedelta(1)
return start_lastmonth_date, end_lastmonth_date
def get_date_time_by_timestamp(time_stamp):
time_array = time.localtime(int(time_stamp)/1000)
otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", time_array)
return otherStyleTime
# 获取当前时间字符%Y-%m-%d %H:%M:%S
def new_date_str():
return datetime.date.today().strftime("%Y-%m-%d")
# 获取指定时间-day天的日期
def schedule_date(day):
# 获取当前日期
current_date = datetime.date.today()
# 计算前一天的日期
previous_date = current_date - datetime.timedelta(days=day)
# 格式化日期输出
return previous_date.strftime('%Y-%m-%d')
if __name__ == "__main__":
startDate = '2020-04-10'

View File

View File

@ -0,0 +1,5 @@
import socket
hostname = socket.gethostname()
print("本机的主机名是:", hostname)
print(hostname.split('-')[0])

4
src/routers/__init__.py Normal file
View File

@ -0,0 +1,4 @@
from .weather import router as weather_router
from .order import router as order_router
routers = [weather_router,order_router] # 统一存放所有路由

9
src/routers/order.py Normal file
View File

@ -0,0 +1,9 @@
from fastapi import APIRouter
from fastapi.responses import JSONResponse
router = APIRouter(tags=["订单"], prefix="/order") # prefix为统一前缀可选
@router.get('/list', summary="获取订单数据")
def weather():
return JSONResponse(content={"code": 200, "msg": "success", "data": "hello world"})

8
src/routers/weather.py Normal file
View File

@ -0,0 +1,8 @@
from fastapi import APIRouter
from fastapi.responses import JSONResponse
router = APIRouter(tags=["天气"], prefix="/weather") # prefix为统一前缀可选
@router.get('/details', summary="返回实时天气数据")
def weather():
return JSONResponse(content={"code": 200, "msg": "success", "data": "hello world"})