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)