feat(partner): 完善马豆实时动态汇率与精度自适应,支持交易数据清理与汇率重置
这个提交包含在:
111
tests/partner/User10Verify.php
普通文件
111
tests/partner/User10Verify.php
普通文件
@@ -0,0 +1,111 @@
|
||||
<?php
|
||||
|
||||
namespace tests\partner;
|
||||
|
||||
define('APP_PATH', __DIR__ . '/../../application/');
|
||||
define('ROOT_PATH', dirname(realpath(APP_PATH)) . '/');
|
||||
require_once __DIR__ . '/../../thinkphp/base.php';
|
||||
require_once __DIR__ . '/../../thinkphp/helper.php';
|
||||
|
||||
if (is_file(ROOT_PATH . '.env')) {
|
||||
$env = parse_ini_file(ROOT_PATH . '.env', true);
|
||||
foreach ($env as $key => $val) {
|
||||
$name = 'PHP_' . strtoupper($key);
|
||||
if (is_array($val)) {
|
||||
foreach ($val as $k => $v) {
|
||||
$item = $name . '_' . strtoupper($k);
|
||||
putenv("$item=$v");
|
||||
}
|
||||
} else {
|
||||
putenv("$name=$val");
|
||||
}
|
||||
}
|
||||
}
|
||||
require_once __DIR__ . '/../../application/common.php';
|
||||
|
||||
\think\Config::set(\think\Config::load(APP_PATH . 'config.php'));
|
||||
\think\Config::set(include APP_PATH . 'database.php', 'database');
|
||||
\think\Loader::addNamespace('app', APP_PATH);
|
||||
\think\Loader::addNamespace('addons', ROOT_PATH . 'addons/');
|
||||
require_once __DIR__ . '/../../addons/shopro/helper/helper.php';
|
||||
|
||||
use think\Request;
|
||||
use think\Db;
|
||||
|
||||
class DirectTestController extends \app\admin\controller\shopro\user\User
|
||||
{
|
||||
public function _initialize()
|
||||
{
|
||||
$this->model = new \app\admin\model\shopro\user\User();
|
||||
}
|
||||
}
|
||||
|
||||
function doRecharge($type, $amount, $memo)
|
||||
{
|
||||
$ctrl = new DirectTestController();
|
||||
$req = Request::create('shopro/user/user/recharge', 'POST', [
|
||||
'id' => 10,
|
||||
'type' => $type,
|
||||
'amount' => $amount,
|
||||
'memo' => $memo
|
||||
], [], [], ['HTTP_X_REQUESTED_WITH' => 'xmlhttprequest', 'HTTP_ACCEPT' => 'application/json']);
|
||||
|
||||
$ref = new \ReflectionClass($ctrl);
|
||||
$p = $ref->getProperty('request');
|
||||
$p->setAccessible(true);
|
||||
$p->setValue($ctrl, $req);
|
||||
|
||||
$refInst = new \ReflectionClass(Request::class);
|
||||
$inst = $refInst->getProperty('instance');
|
||||
$inst->setAccessible(true);
|
||||
$inst->setValue(null, $req);
|
||||
|
||||
try {
|
||||
$ctrl->recharge();
|
||||
} catch (\think\exception\HttpResponseException $e) {
|
||||
$d = $e->getResponse()->getData();
|
||||
return is_array($d) ? $d : json_decode($d, true);
|
||||
}
|
||||
return ['code' => 0, 'msg' => '未知'];
|
||||
}
|
||||
|
||||
echo "=== 开始对会员 10 (尚善) 真实链路充值验证 ===\n";
|
||||
|
||||
// 1. 马豆充值 +8 颗
|
||||
$r1 = doRecharge('madow', '8.00000000', '真实环境测试充值马豆');
|
||||
$agent1 = Db::name('shopro_commission_agent')->where('user_id', 10)->find();
|
||||
echo "1. 充值马豆+8结果: " . json_encode($r1, JSON_UNESCAPED_UNICODE) . " 当前持仓: " . ($agent1['madow'] ?? '0') . "\n";
|
||||
|
||||
// 2. 马豆扣除 -8 颗
|
||||
$r2 = doRecharge('madow', '-8.00000000', '真实环境测试扣除马豆');
|
||||
$agent2 = Db::name('shopro_commission_agent')->where('user_id', 10)->find();
|
||||
echo "2. 扣除马豆-8结果: " . json_encode($r2, JSON_UNESCAPED_UNICODE) . " 恢复持仓: " . ($agent2['madow'] ?? '0') . "\n";
|
||||
|
||||
// 3. 兑换券充值 +20 元
|
||||
$r3 = doRecharge('voucher', '20.00', '真实环境测试充值兑换券');
|
||||
$agent3 = Db::name('shopro_commission_agent')->where('user_id', 10)->find();
|
||||
echo "3. 充值兑换券+20结果: " . json_encode($r3, JSON_UNESCAPED_UNICODE) . " released: " . ($agent3['voucher_released'] ?? '0') . " used: " . ($agent3['voucher_used'] ?? '0') . "\n";
|
||||
|
||||
// 4. 兑换券扣除 -20 元
|
||||
$r4 = doRecharge('voucher', '-20.00', '真实环境测试扣除兑换券');
|
||||
$agent4 = Db::name('shopro_commission_agent')->where('user_id', 10)->find();
|
||||
echo "4. 扣除兑换券-20结果: " . json_encode($r4, JSON_UNESCAPED_UNICODE) . " released: " . ($agent4['voucher_released'] ?? '0') . " used: " . ($agent4['voucher_used'] ?? '0') . "\n";
|
||||
|
||||
// 5. 积分充值 +10
|
||||
$r5 = doRecharge('score', 10, '真实环境测试充值积分');
|
||||
$u5 = Db::name('user')->where('id', 10)->find();
|
||||
echo "5. 充值积分+10结果: " . json_encode($r5, JSON_UNESCAPED_UNICODE) . " 当前积分: " . ($u5['score'] ?? 0) . "\n";
|
||||
|
||||
// 6. 积分扣除 -10
|
||||
$r6 = doRecharge('score', -10, '真实环境测试扣除积分');
|
||||
$u6 = Db::name('user')->where('id', 10)->find();
|
||||
echo "6. 扣除积分-10结果: " . json_encode($r6, JSON_UNESCAPED_UNICODE) . " 恢复积分: " . ($u6['score'] ?? 0) . "\n";
|
||||
|
||||
// 7. 查询收益中心流水表中新增的充值流水明细
|
||||
$rewards = Db::name('shopro_partner_reward')->where('user_id', 10)->whereIn('reward_type', ['admin_madow', 'admin_voucher'])->order('id', 'desc')->limit(4)->select();
|
||||
echo "\n=== 会员 10 收益流水落库检查 (共 " . count($rewards) . " 笔充值/扣除流水) ===\n";
|
||||
foreach ($rewards as $idx => $item) {
|
||||
echo " [" . ($idx + 1) . "] 类型: {$item['reward_type']} | 金额: {$item['amount']} | 马豆: {$item['madow']} | 备注: " . $item['ext'] . "\n";
|
||||
}
|
||||
|
||||
echo "\n=== 会员 10 真实测试全流程 100% 成功完毕 ===\n";
|
||||
在新工单中引用
屏蔽一个用户