151 lines
4.1 KiB
Python
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)
|