first commit
This commit is contained in:
134
app/common/command/TronOrder.php
Normal file
134
app/common/command/TronOrder.php
Normal file
@@ -0,0 +1,134 @@
|
||||
<?php
|
||||
|
||||
namespace app\common\command;
|
||||
|
||||
use app\common\service\{ConfigService,UtilsService};
|
||||
use app\common\model\user\{User,UserTron};
|
||||
use app\common\model\finance\RechargeRecord;
|
||||
use app\common\model\setting\RechargeMethod;
|
||||
|
||||
use think\console\{Command,Output,Input};
|
||||
use think\facade\{Db,Log};
|
||||
|
||||
class TronOrder extends Command
|
||||
{
|
||||
protected function configure()
|
||||
{
|
||||
$this->setName('tron_order')
|
||||
->setDescription('同步波场钱包余额');
|
||||
}
|
||||
|
||||
|
||||
protected function execute(Input $input, Output $output)
|
||||
{
|
||||
Db::startTrans();
|
||||
try {
|
||||
//为了性能,只获取最后操作时间5分钟内的钱包
|
||||
$now_5 = time() - 5 * 60;//5分钟前
|
||||
|
||||
$userTrons = UserTron::where("last_time > $now_5")
|
||||
->order(['create_time' => 'desc'])
|
||||
->select()
|
||||
->toArray();
|
||||
//查询余额
|
||||
$data = [
|
||||
'action' => 'infos',
|
||||
];
|
||||
$addrs = array();
|
||||
foreach ($userTrons as $key=>$userTron) {
|
||||
$addrs[$key] = $userTron['address'];
|
||||
}
|
||||
if(count($addrs) > 0){
|
||||
$data['addrs'] = json_encode($addrs);
|
||||
|
||||
$response = UtilsService::usdt_request($data, 'POST');
|
||||
$response = json_decode($response, true);
|
||||
|
||||
if($response['code'] == 200){
|
||||
foreach ($response['data']['data'] as $res) {
|
||||
|
||||
UserTron::where(['address' => $res['addr']])
|
||||
->update([
|
||||
'money_trx' => $res['trx'],
|
||||
'money_usdt' => $res['usdt'],
|
||||
]);
|
||||
|
||||
//充值逻辑
|
||||
foreach ($userTrons as $userTron) {
|
||||
if($userTron['address'] == $res['addr']){
|
||||
//金额相差超过0.01才生效
|
||||
if(floatval($res['usdt']) - floatval($userTron['money_usdt']) >= 0.01){
|
||||
|
||||
$method = RechargeMethod::where(['id' => $userTron['method_id']])->findOrEmpty();
|
||||
if(!$method->isEmpty()){
|
||||
$money = $res['usdt'] - $userTron['money_usdt'];
|
||||
|
||||
$order_amount_act = round($money * $method['rate'] , 2);
|
||||
//判断充值金额
|
||||
$config = ConfigService::get('website', 'trade');
|
||||
|
||||
if ($order_amount_act >= $config['recharge_min']) {
|
||||
$data = [
|
||||
'sn' => generate_sn(RechargeRecord::class, 'sn'),
|
||||
'user_id' => $userTron['user_id'],
|
||||
'method_id' => $userTron['method_id'],
|
||||
'amount' => $order_amount_act,
|
||||
'amount_act' => round($money , $method['precision']),
|
||||
'rate' => $method['rate'],
|
||||
'symbol' => $method['symbol'],
|
||||
'status' => 1,
|
||||
];
|
||||
|
||||
$record = RechargeRecord::create($data);
|
||||
|
||||
//记录日志
|
||||
UtilsService::user_finance_add(
|
||||
$userTron['user_id'],
|
||||
1,
|
||||
1,
|
||||
$data['amount'],
|
||||
'',
|
||||
'',
|
||||
1//冻结
|
||||
);
|
||||
|
||||
//用户资金修改
|
||||
UtilsService::user_money_change($userTron['user_id'], 1, $data['amount'],'user_money');
|
||||
|
||||
//充值金额增加
|
||||
UtilsService::user_money_change($userTron['user_id'], 1, $data['amount'],'total_recharge');
|
||||
|
||||
//充值活动奖励
|
||||
UtilsService::activity_reward_add($userTron['user_id'],$data['amount']);
|
||||
|
||||
//更新充值记录用户余额
|
||||
$user = User::where(['id' => $record['user_id']])->findOrEmpty();
|
||||
if (!$user->isEmpty()) {
|
||||
RechargeRecord::update([
|
||||
'id' => $record['id'],
|
||||
'user_money' => $user['user_money']
|
||||
]);
|
||||
|
||||
//充值次数+1
|
||||
User::update([
|
||||
'id' => $user['id'],
|
||||
'recharge_num' => $user['recharge_num'] + 1
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Db::commit();
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::write('失败原因:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user