This commit is contained in:
尹舟 2025-07-21 11:50:05 +08:00
parent 8ec97becbc
commit e0d5a5c6d6
8 changed files with 143 additions and 28 deletions

View File

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

28
main.py
View File

@ -1,29 +1,11 @@
from fastapi import FastAPI
import uvicorn import uvicorn
from src.utils.Log import Log from fastapi import FastAPI
from src.routers import routers # 导入路由集合
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"
}
}
app = FastAPI(title="FastAPI文档")
for router in routers:
app.include_router(router) # 自动注册所有路由
if __name__ == '__main__': if __name__ == '__main__':
uvicorn.run(app='main:app', host='0.0.0.0', port=1314, reload=True) 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"})