12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- import datetime
- from typing import Tuple
- from dateutil.parser import parse
- from apps.web.user.models import RechargeRecord
- def dt_range(date_string):
- # type:(str)->Tuple[datetime.datetime, datetime.datetime]
- start = parse(date_string)
- return start, datetime.datetime.combine(start, datetime.time.max)
- def cn(unicode_):
- assert isinstance(unicode_, unicode)
- return unicode_.encode('gb18030')
- def mask(df, key, value): return df[df[key] == value]
- def df_in(df, key, items): return df[df[key].isin(items)]
- def withdraw_succeeded_mask(df):
- return mask(df, key = "付款状态", value = "付款成功")
- def download_alipay_statement():
- #: TODO
- pass
- def read_alipay_statement(file_name):
- """
- :param file_name:
- :return:
- """
- #: 跳过支付宝的csv表头注释
- #: TODO change file encoding
- import pandas as pd
- return pd.read_csv(file_name, skiprows = 2)
- def reconcile_alipay(file_name, date_str):
- # type:(str, str)->list
- """
- :param file_name:
- :param date_str:
- :return:
- """
- df = mask(df = read_alipay_statement(file_name), key = cn(u'交易状态'), value = cn(u'成功'))
- start, end = dt_range(date_str)
- records = RechargeRecord.objects(gateway = 'alipay', result = 'unPay', dateTimeAdded__gte = start,
- dateTimeAdded__lte = end)
- df = df[df[cn(u'商户订单号')].isin([str(_.orderNo) for _ in records])]
- return list(df[cn(u'商户订单号')])
- def reset_today_income():
- pass
|