|
|
@@ -1037,22 +1037,20 @@ class MemberService extends BaseService
|
|
|
*/
|
|
|
public function recharge($userId, $params)
|
|
|
{
|
|
|
- $money = isset($params['money'])? $params['money'] : 0;
|
|
|
- $payType = isset($params['pay_type']) && $params['pay_type']? intval($params['pay_type']) : 10;
|
|
|
- if($money<=0){
|
|
|
+ $usdt = isset($params['usdt'])? moneyFormat($params['usdt'], 2) : 0;
|
|
|
+ $coinType = isset($params['coin_type']) && $params['coin_type']? intval($params['coin_type']) : 2;
|
|
|
+ $payType = 10;
|
|
|
+ if($usdt<=0){
|
|
|
$this->error = 2031;
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- if(!in_array($payType, [10,20])){
|
|
|
- $this->error = 2032;
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
$userInfo = $this->model->where(['id'=> $userId,'mark'=>1])
|
|
|
->select(['id','nickname','balance','status'])
|
|
|
->first();
|
|
|
$status = isset($userInfo['status'])? $userInfo['status'] : 0;
|
|
|
+ $balance = isset($userInfo['balance'])? $userInfo['balance'] : 0;
|
|
|
+ $userUsdt = isset($userInfo['usdt'])? $userInfo['usdt'] : 0;
|
|
|
if(empty($userInfo) || $status != 1){
|
|
|
$this->error = 2024;
|
|
|
return false;
|
|
|
@@ -1060,14 +1058,39 @@ class MemberService extends BaseService
|
|
|
|
|
|
// 充值订单
|
|
|
$orderNo = get_order_num('DR');
|
|
|
+ $money = $usdt;
|
|
|
+ // 星豆
|
|
|
+ DB::beginTransaction();
|
|
|
+ if($coinType == 2){
|
|
|
+ $xdPrice = ConfigService::make()->getConfigByCode('xd_price',100);
|
|
|
+ $xdPrice = $xdPrice>0 && $xdPrice <=10000? $xdPrice : 100;
|
|
|
+ $money = moneyFormat($xdPrice * $usdt, 2);
|
|
|
+
|
|
|
+ if($usdt > $userUsdt){
|
|
|
+ $this->error = 2035;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 扣除usdt余额
|
|
|
+ $updateData = ['usdt'=>DB::raw("usdt - {$usdt}"),'balance'=>DB::raw("balance + {$money}"),'update_time'=>time()];
|
|
|
+ if(!$this->model->where(['id'=> $userId])->update($updateData)){
|
|
|
+ $this->error = 2036;
|
|
|
+ DB::rollBack();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
$data = [
|
|
|
'order_no'=> $orderNo,
|
|
|
'user_id'=> $userId,
|
|
|
'type'=> 1,
|
|
|
'user_type'=> 1,
|
|
|
- 'money'=> $money,
|
|
|
- 'gift_money'=> 0,
|
|
|
+ 'coin_type'=> 2,
|
|
|
+ 'money'=> $usdt,
|
|
|
+ 'actual_money'=> $money,
|
|
|
'pay_type'=> $payType,
|
|
|
+ 'pay_status'=> 20,
|
|
|
+ 'pay_at'=> date('Y-m-d H:i:s'),
|
|
|
'create_time'=> time(),
|
|
|
'update_time'=> time(),
|
|
|
'status'=> 1,
|
|
|
@@ -1076,48 +1099,39 @@ class MemberService extends BaseService
|
|
|
|
|
|
if(!$orderId = BalanceLogModel::insertGetId($data)){
|
|
|
$this->error = 2033;
|
|
|
+ DB::rollBack();
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- // 支付方式
|
|
|
- $order = [
|
|
|
- 'order_no'=> $orderNo,
|
|
|
- 'type'=> 0,
|
|
|
- 'pay_type'=> $payType,
|
|
|
- 'pay_money'=> $money,
|
|
|
- 'body'=> '充值订单支付',
|
|
|
+ // 用户明细
|
|
|
+ $log = [
|
|
|
+ 'user_id'=> $userId,
|
|
|
+ 'source_order_no'=> $data['order_no'],
|
|
|
+ 'user_type'=> 1,
|
|
|
+ 'type'=> 5,
|
|
|
+ 'coin_type'=> 2,
|
|
|
+ 'money'=> $usdt,
|
|
|
+ 'actual_money'=> $money,
|
|
|
+ 'balance'=> $balance,
|
|
|
+ 'date'=> date('Y-m-d'),
|
|
|
+ 'create_time'=> time(),
|
|
|
+ 'remark'=> '星豆余额充值',
|
|
|
+ 'status'=>1,
|
|
|
+ 'mark'=>1
|
|
|
];
|
|
|
|
|
|
- switch($payType){
|
|
|
- case 20: // 支付宝
|
|
|
- $payment = PaymentService::make()->aliPay($userInfo, $order,'recharge');
|
|
|
- if(empty($payment)){
|
|
|
- DB::rollBack();
|
|
|
- $this->error = PaymentService::make()->getError();
|
|
|
- return false;
|
|
|
- }
|
|
|
- break;
|
|
|
- case 10: // 微信支付
|
|
|
- $payment = PaymentService::make()->wechatPay($userInfo, $order,'recharge');
|
|
|
- if(empty($payment)){
|
|
|
- DB::rollBack();
|
|
|
- $this->error = PaymentService::make()->getError();
|
|
|
- return false;
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- $this->error = 1030;
|
|
|
- return false;
|
|
|
+ if(!AccountLogModel::insertGetId($log)){
|
|
|
+ $this->error = 2029;
|
|
|
+ DB::rollBack();
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
- $this->error = 2034;
|
|
|
- return [
|
|
|
- 'id'=> $orderId,
|
|
|
- 'payment'=> $payment,
|
|
|
- 'total'=> $money,
|
|
|
- 'order_no'=> $orderNo,
|
|
|
- 'pay_type'=> $payType,
|
|
|
- ];
|
|
|
+ // 消息
|
|
|
+ $dateTime = date('Y-m-d H:i:s');
|
|
|
+ MessageService::make()->pushMessage($userId,'星豆余额充值成功',"您在{$dateTime}(UTC+8)成功支付{$usdt}USDT充值{$money}星豆");
|
|
|
+
|
|
|
+ DB::commit();
|
|
|
+ return ['order_id'=> $orderId,'balance'=> moneyFormat($balance + $money,2),'usdt'=> moneyFormat($userUsdt-$usdt, 2)];
|
|
|
}
|
|
|
|
|
|
/**
|