bugfix
This commit is contained in:
parent
a27ad55227
commit
950faaab03
@ -1,9 +1,11 @@
|
|||||||
from time import time
|
from time import time
|
||||||
|
from ahserver.serverenv import get_serverenv
|
||||||
from sqlor.dbpools import DBPools
|
from sqlor.dbpools import DBPools
|
||||||
from platformbiz.businessdate import get_business_date
|
|
||||||
from appPublic.dictObject import DictObject
|
from appPublic.dictObject import DictObject
|
||||||
|
from appPublic.log import debug
|
||||||
from appPublic.uniqueID import getID
|
from appPublic.uniqueID import getID
|
||||||
from platformbiz.const import ORDER_INITIAL, RECHARGE_INITIAL
|
from platformbiz.const import ORDER_INITIAL, RECHARGE_INITIAL
|
||||||
|
|
||||||
async def add_recharge_order(sor, customerid, userid, action, recharge_amt):
|
async def add_recharge_order(sor, customerid, userid, action, recharge_amt):
|
||||||
"""
|
"""
|
||||||
arguments:
|
arguments:
|
||||||
@ -18,6 +20,7 @@ async def add_recharge_order(sor, customerid, userid, action, recharge_amt):
|
|||||||
rec.id = getID()
|
rec.id = getID()
|
||||||
rec.customerid = customerid
|
rec.customerid = customerid
|
||||||
rec.userid = userid
|
rec.userid = userid
|
||||||
|
get_business_date = get_serverenv('get_business_date')
|
||||||
rec.order_date = await get_business_date()
|
rec.order_date = await get_business_date()
|
||||||
rec.business_op = action
|
rec.business_op = action
|
||||||
rec.amount = recharge_amt
|
rec.amount = recharge_amt
|
||||||
@ -25,11 +28,12 @@ async def add_recharge_order(sor, customerid, userid, action, recharge_amt):
|
|||||||
await sor.C('biz_order', rec.copy())
|
await sor.C('biz_order', rec.copy())
|
||||||
return rec
|
return rec
|
||||||
|
|
||||||
async def get_paychanneli_by_name(sor, name):
|
async def get_paychannel_by_name(sor, name):
|
||||||
sql = "select * from paychannel where name=${pcid}$"
|
sql = "select * from paychannel where name=${name}$"
|
||||||
recs = await sor.sqlExe(sql, {'name':name})
|
recs = await sor.sqlExe(sql, {'name':name})
|
||||||
if len(recs) > 0:
|
if len(recs) > 0:
|
||||||
return recs[0]
|
return recs[0]
|
||||||
|
debug(f'get paychannel error({name})')
|
||||||
return None
|
return None
|
||||||
|
|
||||||
async def add_recharge_log(sor, customerid, userid, action, orderid, transdate, recharge_amt, name):
|
async def add_recharge_log(sor, customerid, userid, action, orderid, transdate, recharge_amt, name):
|
||||||
@ -39,13 +43,17 @@ async def add_recharge_log(sor, customerid, userid, action, orderid, transdate,
|
|||||||
rec.userid = userid
|
rec.userid = userid
|
||||||
rec.action = action
|
rec.action = action
|
||||||
rec.recharge_amt = recharge_amt
|
rec.recharge_amt = recharge_amt
|
||||||
pc = await get_paychanneli_by_name(sor, name)
|
pc = await get_paychannel_by_name(sor, name)
|
||||||
rec.fee_amt = recharge_amt * pc.feerate
|
debug(f'{pc=}, {recharge_amt=}')
|
||||||
|
if pc is None:
|
||||||
|
raise Exception(f'paychannel({name}) pay channel not found')
|
||||||
|
rec.fee_amt = recharge_amt * pc.fee_rate
|
||||||
|
rec.fee_rate = pc.fee_rate
|
||||||
rec.pcid = pc.id
|
rec.pcid = pc.id
|
||||||
rec.biz_orderid = orderid
|
rec.biz_orderid = orderid
|
||||||
rec.recharge_status = RECHARGE_INITIAL
|
rec.recharge_status = RECHARGE_INITIAL
|
||||||
rec.transdate = transdate
|
rec.transdate = transdate
|
||||||
await sor.C('recharge_log', rec.copy()
|
await sor.C('recharge_log', rec.copy())
|
||||||
return rec
|
return rec
|
||||||
|
|
||||||
async def change_recharge_status(sor, rlid, status, tid):
|
async def change_recharge_status(sor, rlid, status, tid):
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
from sqlor.dbpools import DBPools
|
|
||||||
from appPublic.timeUtils import strdate_add
|
|
||||||
from .excep import BusinessDateParamsError
|
|
||||||
from .const import *
|
|
||||||
async def get_business_date(sor=None):
|
|
||||||
async def _f(sor):
|
|
||||||
sql = "select * from params where params_name = 'business_date'"
|
|
||||||
recs = await sor.sqlExe(sql, {})
|
|
||||||
if len(recs) > 0:
|
|
||||||
return recs[0]['params_value']
|
|
||||||
raise BusinessDateParamsError
|
|
||||||
|
|
||||||
if sor:
|
|
||||||
return await _f(sor)
|
|
||||||
db = DBPools()
|
|
||||||
async with db.sqlorContext(DBNAME()) as sor:
|
|
||||||
return await _f(sor)
|
|
||||||
|
|
||||||
async def new_business_date(sor=None):
|
|
||||||
async def _f(sor):
|
|
||||||
dat = await get_business_date(sor)
|
|
||||||
new_dat = strdate_add(dat, days=1)
|
|
||||||
sql = "update params set params_value=${new_dat}$ where params_name='business_date'"
|
|
||||||
await sor.sqlExe(sql, {'new_dat':new_dat})
|
|
||||||
|
|
||||||
if sor:
|
|
||||||
return await _f(sor)
|
|
||||||
db = DBPools()
|
|
||||||
async with db.sqlorContext(DBNAME()) as sor:
|
|
||||||
return await _f(sor)
|
|
||||||
|
|
||||||
async def previous_business_date(sor=None):
|
|
||||||
dat = await get_business_date(sor=sor)
|
|
||||||
return strdate_add(dat, days=-1)
|
|
||||||
|
|
||||||
async def next_business_date(sor=None):
|
|
||||||
dat = await get_business_date(sor=sor)
|
|
||||||
return strdate_add(dat, days=1)
|
|
||||||
|
|
2
platformbiz/const.py
Normal file
2
platformbiz/const.py
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
ORDER_INITIAL = '0'
|
||||||
|
RECHARGE_INITIAL = '0'
|
@ -1,6 +1,9 @@
|
|||||||
from acccounting.accounting_config import Accounting
|
from accounting.accounting_config import Accounting
|
||||||
from platformbiz.biz_order import add_recharge_log, add_recharge_order
|
from appPublic.registerfunction import rfexe
|
||||||
|
from appPublic.log import exception, debug
|
||||||
|
from sqlor.dbpools import DBPools
|
||||||
from pf_pay.ali_pay import Zhifubao_Pay
|
from pf_pay.ali_pay import Zhifubao_Pay
|
||||||
|
from platformbiz.biz_order import add_recharge_log, add_recharge_order
|
||||||
|
|
||||||
class Recharge:
|
class Recharge:
|
||||||
def __init__(self, customerid, userid, recharge_amt, pc_name):
|
def __init__(self, customerid, userid, recharge_amt, pc_name):
|
||||||
@ -20,15 +23,15 @@ class Recharge:
|
|||||||
|
|
||||||
async def start_recharge_action(self, action):
|
async def start_recharge_action(self, action):
|
||||||
db = DBPools()
|
db = DBPools()
|
||||||
dbname = rfexe('get_module_dbname', 'platformbiz')
|
dbname = await rfexe('get_module_dbname', 'platformbiz')
|
||||||
async db.sqlorContext(dbname) as sor:
|
async with db.sqlorContext(dbname) as sor:
|
||||||
order = await add_recharge_order(sor, self.customerid,
|
order = await add_recharge_order(sor, self.customerid,
|
||||||
self.userid,
|
self.userid,
|
||||||
action,
|
action,
|
||||||
self.recharge_amt)
|
self.recharge_amt)
|
||||||
if order is None:
|
if order is None:
|
||||||
return None
|
return None
|
||||||
rl = await add_rechagre_log(sor, self.customerid,
|
rl = await add_recharge_log(sor, self.customerid,
|
||||||
self.userid,
|
self.userid,
|
||||||
action,
|
action,
|
||||||
order.id,
|
order.id,
|
||||||
@ -40,6 +43,8 @@ class Recharge:
|
|||||||
url = await z.alipay_payment(rl.id, rl.recharge_amt, action)
|
url = await z.alipay_payment(rl.id, rl.recharge_amt, action)
|
||||||
return url
|
return url
|
||||||
|
|
||||||
|
exception(f'exception ...........{self.pc_name}')
|
||||||
raise Exception(f'{self.pc_name} pay channel not implemented')
|
raise Exception(f'{self.pc_name} pay channel not implemented')
|
||||||
|
exception('Exception happend ....')
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
git+https://git.kaiyuancloud.cn/yumoqing/rbac
|
# git+https://git.kaiyuancloud.cn/yumoqing/rbac
|
||||||
git+https://git.kaiyuancloud.cn/yumoqing/accounting
|
# git+https://git.kaiyuancloud.cn/yumoqing/accounting
|
||||||
git+https://git.kaiyuancloud.cn/yumoqing/pay
|
# git+https://git.kaiyuancloud.cn/yumoqing/pf_pay
|
||||||
|
17
www/recharge.dspy
Normal file
17
www/recharge.dspy
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
debug(f'{params_kw=}')
|
||||||
|
try:
|
||||||
|
userid = await get_user()
|
||||||
|
userorgid = await get_userorgid()
|
||||||
|
r = Recharge(userorgid, userid, float(params_kw.recharge_amt), params_kw.channel)
|
||||||
|
url = await r.start_recharge()
|
||||||
|
return {
|
||||||
|
"widgettype":"NewWindow",
|
||||||
|
"options":{
|
||||||
|
"url":url
|
||||||
|
}
|
||||||
|
}
|
||||||
|
except Exception as e:
|
||||||
|
es = format_exc()
|
||||||
|
exception(f'{e=}, {es}')
|
||||||
|
return UiError(title='Error', message=f'Error:{e},trackback={es}')
|
||||||
|
|
38
www/recharge.ui
Normal file
38
www/recharge.ui
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"widgettype":"Form",
|
||||||
|
"options":{
|
||||||
|
"fields":[
|
||||||
|
{
|
||||||
|
"name":"recharge_amt",
|
||||||
|
"uitype":"float",
|
||||||
|
"required":true,
|
||||||
|
"label":"充值金额"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name":"channel",
|
||||||
|
"label":"选择充值方式",
|
||||||
|
"uitype":"checkbox",
|
||||||
|
"multicheck":false,
|
||||||
|
"required":true,
|
||||||
|
"value":"alipay",
|
||||||
|
"data":[
|
||||||
|
{
|
||||||
|
"value":"alipay",
|
||||||
|
"text":"支付宝"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"binds":[
|
||||||
|
{
|
||||||
|
"wid":"self",
|
||||||
|
"event":"submit",
|
||||||
|
"actiontype":"urlwidget",
|
||||||
|
"target":"self",
|
||||||
|
"options":{
|
||||||
|
"url":"{{entire_url('recharge.dspy')}}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user