update
This commit is contained in:
parent
a89ebecec3
commit
7019d0a62a
@ -15,6 +15,8 @@ from app.models.community_set import CommunitySet
|
|||||||
from app.models.order import ShippingOrderDB, OrderStatus
|
from app.models.order import ShippingOrderDB, OrderStatus
|
||||||
from app.models.community import CommunityDB
|
from app.models.community import CommunityDB
|
||||||
from app.models.address import AddressDB
|
from app.models.address import AddressDB
|
||||||
|
from app.models.user import UserRole
|
||||||
|
from app.core.response import error_response
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
@router.get("/summary", response_model=ResponseModel)
|
@router.get("/summary", response_model=ResponseModel)
|
||||||
@ -176,4 +178,154 @@ async def partner_community_list(
|
|||||||
return success_response(data={"items": results, "total": total_count})
|
return success_response(data={"items": results, "total": total_count})
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/community/{community_id}", response_model=ResponseModel)
|
||||||
|
async def partner_community_detail(
|
||||||
|
community_id: int,
|
||||||
|
db: Session = Depends(get_db),
|
||||||
|
current_user: UserDB = Depends(get_current_user)
|
||||||
|
):
|
||||||
|
"""获取合伙人小区详情"""
|
||||||
|
community = db.query(CommunityDB).filter(CommunityDB.id == community_id).first()
|
||||||
|
if not community:
|
||||||
|
return error_response(message="小区不存在")
|
||||||
|
|
||||||
|
community_sets = db.query(CommunitySet).filter(
|
||||||
|
CommunitySet.community_set_mappings.any(
|
||||||
|
CommunitySetMapping.community_id == community_id
|
||||||
|
)
|
||||||
|
).all()
|
||||||
|
|
||||||
|
partner_ids = [sets.user_id for sets in community_sets]
|
||||||
|
# 获取Partner列表
|
||||||
|
partner_list = db.query(UserDB).filter(UserDB.userid.in_(partner_ids)).all()
|
||||||
|
|
||||||
|
partner_names = ",".join([partner.nickname for partner in partner_list])
|
||||||
|
|
||||||
|
# 小区用户数
|
||||||
|
user_count = db.query(AddressDB).filter(
|
||||||
|
AddressDB.community_id == community_id,
|
||||||
|
AddressDB.is_default == True
|
||||||
|
).count()
|
||||||
|
|
||||||
|
# 小区订单总量
|
||||||
|
total_order_count = db.query(ShippingOrderDB).filter(
|
||||||
|
ShippingOrderDB.address_community_id == community_id,
|
||||||
|
ShippingOrderDB.status == OrderStatus.COMPLETED
|
||||||
|
).count()
|
||||||
|
|
||||||
|
|
||||||
|
# 小区今日、昨日订单总量
|
||||||
|
today_start = datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
|
||||||
|
today_end = datetime.now().replace(hour=23, minute=59, second=59, microsecond=999999)
|
||||||
|
yesterday_start = today_start - timedelta(days=1)
|
||||||
|
yesterday_end = today_end - timedelta(days=1)
|
||||||
|
|
||||||
|
today_order_count = db.query(ShippingOrderDB).filter(
|
||||||
|
ShippingOrderDB.address_community_id == community_id,
|
||||||
|
ShippingOrderDB.create_time >= today_start,
|
||||||
|
ShippingOrderDB.create_time <= today_end,
|
||||||
|
ShippingOrderDB.status == OrderStatus.COMPLETED
|
||||||
|
).count()
|
||||||
|
|
||||||
|
yesterday_order_count = db.query(ShippingOrderDB).filter(
|
||||||
|
ShippingOrderDB.address_community_id == community_id,
|
||||||
|
ShippingOrderDB.create_time >= yesterday_start,
|
||||||
|
ShippingOrderDB.create_time <= yesterday_end,
|
||||||
|
ShippingOrderDB.status == OrderStatus.COMPLETED
|
||||||
|
).count()
|
||||||
|
|
||||||
|
# 小区总营收
|
||||||
|
total_income = db.query(func.sum(ShippingOrderDB.original_amount + ShippingOrderDB.additional_fee_amount)).filter(
|
||||||
|
ShippingOrderDB.address_community_id == community_id,
|
||||||
|
ShippingOrderDB.status == OrderStatus.COMPLETED
|
||||||
|
).scalar()
|
||||||
|
|
||||||
|
# 小区今日、昨日收益
|
||||||
|
today_income = db.query(func.sum(ShippingOrderDB.original_amount + ShippingOrderDB.additional_fee_amount)).filter(
|
||||||
|
ShippingOrderDB.address_community_id == community_id,
|
||||||
|
ShippingOrderDB.create_time >= today_start,
|
||||||
|
ShippingOrderDB.create_time <= today_end,
|
||||||
|
ShippingOrderDB.status == OrderStatus.COMPLETED
|
||||||
|
).scalar()
|
||||||
|
|
||||||
|
yesterday_income = db.query(func.sum(ShippingOrderDB.original_amount + ShippingOrderDB.additional_fee_amount)).filter(
|
||||||
|
ShippingOrderDB.address_community_id == community_id,
|
||||||
|
ShippingOrderDB.create_time >= yesterday_start,
|
||||||
|
ShippingOrderDB.create_time <= yesterday_end,
|
||||||
|
ShippingOrderDB.status == OrderStatus.COMPLETED
|
||||||
|
).scalar()
|
||||||
|
|
||||||
|
# 配送员列表, 只查询有配送员的小区
|
||||||
|
delivery_list = db.query(UserDB).filter(UserDB.community_id == community_id, UserDB.roles.contains(UserRole.DELIVERYMAN)).all()
|
||||||
|
|
||||||
|
delivery_data = []
|
||||||
|
for delivery in delivery_list:
|
||||||
|
# 累计订单数,累计收益
|
||||||
|
total_order_count = db.query(ShippingOrderDB).filter(
|
||||||
|
ShippingOrderDB.address_community_id == community_id,
|
||||||
|
ShippingOrderDB.status == OrderStatus.COMPLETED,
|
||||||
|
ShippingOrderDB.deliveryman_user_id == delivery.userid
|
||||||
|
).count()
|
||||||
|
|
||||||
|
total_income = db.query(func.sum(ShippingOrderDB.original_amount + ShippingOrderDB.additional_fee_amount)).filter(
|
||||||
|
ShippingOrderDB.address_community_id == community_id,
|
||||||
|
ShippingOrderDB.status == OrderStatus.COMPLETED,
|
||||||
|
ShippingOrderDB.deliveryman_user_id == delivery.userid
|
||||||
|
).scalar()
|
||||||
|
|
||||||
|
# 今日订单数,昨日订单数
|
||||||
|
today_order_count = db.query(ShippingOrderDB).filter(
|
||||||
|
ShippingOrderDB.address_community_id == community_id,
|
||||||
|
ShippingOrderDB.create_time >= today_start,
|
||||||
|
ShippingOrderDB.create_time <= today_end,
|
||||||
|
ShippingOrderDB.status == OrderStatus.COMPLETED,
|
||||||
|
ShippingOrderDB.deliveryman_user_id == delivery.userid
|
||||||
|
).count()
|
||||||
|
|
||||||
|
yesterday_order_count = db.query(ShippingOrderDB).filter(
|
||||||
|
ShippingOrderDB.address_community_id == community_id,
|
||||||
|
ShippingOrderDB.create_time >= yesterday_start,
|
||||||
|
ShippingOrderDB.create_time <= yesterday_end,
|
||||||
|
ShippingOrderDB.status == OrderStatus.COMPLETED,
|
||||||
|
ShippingOrderDB.deliveryman_user_id == delivery.userid
|
||||||
|
).count()
|
||||||
|
|
||||||
|
# 今日收益,昨日收益
|
||||||
|
today_income = db.query(func.sum(ShippingOrderDB.original_amount + ShippingOrderDB.additional_fee_amount)).filter(
|
||||||
|
ShippingOrderDB.address_community_id == community_id,
|
||||||
|
ShippingOrderDB.create_time >= today_start,
|
||||||
|
ShippingOrderDB.create_time <= today_end,
|
||||||
|
ShippingOrderDB.status == OrderStatus.COMPLETED,
|
||||||
|
ShippingOrderDB.deliveryman_user_id == delivery.userid
|
||||||
|
).scalar()
|
||||||
|
|
||||||
|
yesterday_income = db.query(func.sum(ShippingOrderDB.original_amount + ShippingOrderDB.additional_fee_amount)).filter(
|
||||||
|
ShippingOrderDB.address_community_id == community_id,
|
||||||
|
ShippingOrderDB.create_time >= yesterday_start,
|
||||||
|
ShippingOrderDB.create_time <= yesterday_end,
|
||||||
|
ShippingOrderDB.status == OrderStatus.COMPLETED,
|
||||||
|
ShippingOrderDB.deliveryman_user_id == delivery.userid
|
||||||
|
).scalar()
|
||||||
|
|
||||||
|
delivery_data.append({
|
||||||
|
"delivery_id": delivery.userid,
|
||||||
|
"delivery_name": delivery.nickname,
|
||||||
|
"total_order_count": total_order_count,
|
||||||
|
"total_income": 0 if total_income is None else total_income,
|
||||||
|
"today_order_count": today_order_count,
|
||||||
|
"yesterday_order_count": yesterday_order_count,
|
||||||
|
"today_income": 0 if today_income is None else today_income,
|
||||||
|
"yesterday_income": 0 if yesterday_income is None else yesterday_income
|
||||||
|
})
|
||||||
|
|
||||||
|
return success_response(data={
|
||||||
|
"community_name": community.name,
|
||||||
|
"partner_names": partner_names,
|
||||||
|
"user_count": user_count,
|
||||||
|
"total_order_count": total_order_count,
|
||||||
|
"yesterday_order_count": yesterday_order_count,
|
||||||
|
"total_income": 0 if total_income is None else total_income,
|
||||||
|
"today_income": 0 if today_income is None else today_income,
|
||||||
|
"yesterday_income": 0 if yesterday_income is None else yesterday_income,
|
||||||
|
"delivery_list": delivery_data
|
||||||
|
})
|
||||||
|
|||||||
@ -225,6 +225,7 @@ async def daily_partner_settlement():
|
|||||||
try:
|
try:
|
||||||
# 获取昨日订单统计数据
|
# 获取昨日订单统计数据
|
||||||
yesterday = (datetime.now() - timedelta(days=1)).date()
|
yesterday = (datetime.now() - timedelta(days=1)).date()
|
||||||
|
print(yesterday)
|
||||||
yesterday_stats = db.query(DailyCommunityOrderStats).filter(
|
yesterday_stats = db.query(DailyCommunityOrderStats).filter(
|
||||||
DailyCommunityOrderStats.stats_date == yesterday
|
DailyCommunityOrderStats.stats_date == yesterday
|
||||||
).all()
|
).all()
|
||||||
@ -244,7 +245,7 @@ async def daily_partner_settlement():
|
|||||||
total_final_amount = 0
|
total_final_amount = 0
|
||||||
|
|
||||||
for stat in yesterday_stats:
|
for stat in yesterday_stats:
|
||||||
print(stat.community_name)
|
print(f"日期:{stat.stats_date} 小区: {stat.community_name} 订单数: {stat.order_count} 订单金额: {stat.total_original_amount} 支付金额: {stat.total_final_amount}")
|
||||||
total_order_count += stat.order_count
|
total_order_count += stat.order_count
|
||||||
total_original_amount += stat.total_original_amount
|
total_original_amount += stat.total_original_amount
|
||||||
total_final_amount += stat.total_final_amount
|
total_final_amount += stat.total_final_amount
|
||||||
@ -334,7 +335,6 @@ async def daily_partner_settlement():
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
# 发送企业微信消息
|
# 发送企业微信消息
|
||||||
if total_partner_profit + total_admin_profit + total_delivery_profit + total_platform_profit > 0 and settings.URL_WECOMBOT_DAILY_REPORT:
|
|
||||||
try:
|
try:
|
||||||
wecom_bot = WecomBot(settings.URL_WECOMBOT_DAILY_REPORT)
|
wecom_bot = WecomBot(settings.URL_WECOMBOT_DAILY_REPORT)
|
||||||
await wecom_bot.send_markdown(message)
|
await wecom_bot.send_markdown(message)
|
||||||
|
|||||||
BIN
jobs.sqlite
BIN
jobs.sqlite
Binary file not shown.
Loading…
Reference in New Issue
Block a user