tools-pyqt/src/entity/member.py
2024-01-18 21:16:42 +08:00

151 lines
4.1 KiB
Python

from dataclasses import dataclass
from datetime import datetime
from typing import List
from src.core import api_request
from src.core.constant import MEMBER_DETAIL_URL, MEMBER_LIST_URL
from src.core.util import get_curr_day, get_first_day_month
from src.entity.account import Account
@dataclass
class BaseMember:
id: int
name: str
realName: str
registerDate: str
deposit: str
draw: str
profit: str
lastLoginTime: str
active: int
promo: str
rebate: str
riskAdjust: str
netAmount: str
betAmount: str
changeLog: str
venueProfitList: list
isChange: int
vipGrade: int
vipGradeStr: str
firstPayAt: str
remark: str
@dataclass
class MemberList(BaseMember):
venueNetAmountList: str
tagsIds: str
tagsInfo: str
@dataclass
class MemberDetail(BaseMember):
venueNetAmountList: list
tags: str
def get_first_pay_datetime(self) -> datetime:
return datetime.strptime(self.firstPayAt, "%Y-%m-%d %H:%M:%S")
def get_member_list(account: Account, params: dict) -> List[MemberList]:
api_response = api_request.account_post(MEMBER_LIST_URL, account=account, params=params)
data_list = api_response.data.get('list', [])
return [MemberList(**item) for item in data_list] if data_list else []
def get_today_new_member_list(account: Account, count: int) -> List[MemberList]:
date = get_curr_day()
params = {
"pageNum": 1,
"pageSize": count,
"registerSort": 1,
"drawSort": -1,
"depositSort": -1,
"lastLoginTimeSort": -1,
"name": "",
"minPay": None,
"maxPay": None,
"startDate": date,
"registerStartDate": date,
"endDate": date,
"registerEndDate": date,
"firstPayStartTime": "",
"firstPayEndTime": "",
"isBet": "",
"tagsFlag": "1"
}
members = get_member_list(account=account, params=params)
return members
async def async_get_member_list(account: Account, params: dict) -> List[MemberList]:
api_res = await api_request.async_account_post(MEMBER_LIST_URL, account=account, params=params)
data_list = api_res.data.get('list', [])
return [MemberList(**item) for item in data_list] if data_list else []
# 根据用户名查询用户详情
def get_member_by_name(account: Account, name: str) -> MemberDetail:
params = {
"pageNum": 1,
"pageSize": 1,
"registerSort": 1,
"drawSort": -1,
"depositSort": -1,
"lastLoginTimeSort": -1,
"name": name,
"minPay": None,
"maxPay": None,
"startDate": get_first_day_month(),
"registerStartDate": '',
"endDate": get_curr_day(),
"registerEndDate": '',
"firstPayStartTime": "",
"firstPayEndTime": "",
"isBet": "",
"tagsFlag": "1"
}
member = get_member_list(account, params)[0]
params = {
'startDate': get_first_day_month(),
'endDate': get_curr_day(),
'id': member.id
}
api_response = api_request.account_post(url=MEMBER_DETAIL_URL, account=account, params=params)
return MemberDetail(**api_response.data)
async def async_get_member_detail_by_name(account: Account, name: str) -> MemberDetail:
params = {
"pageNum": 1,
"pageSize": 1,
"registerSort": 1,
"drawSort": -1,
"depositSort": -1,
"lastLoginTimeSort": -1,
"name": name,
"minPay": None,
"maxPay": None,
"startDate": get_first_day_month(),
"registerStartDate": '',
"endDate": get_curr_day(),
"registerEndDate": '',
"firstPayStartTime": "",
"firstPayEndTime": "",
"isBet": "",
"tagsFlag": "1"
}
member_list = await async_get_member_list(account, params)
member = member_list[0]
params = {
'startDate': get_first_day_month(),
'endDate': get_curr_day(),
'id': member.id
}
api_response = await api_request.async_account_post(url=MEMBER_DETAIL_URL, account=account,
params=params)
return MemberDetail(**api_response.data)