| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- <?php
- namespace App\Http\Controllers\Api;
- use App\Modes\Order;
- use App\Modes\Proxy;
- use App\Modes\UserCoin;
- use App\Service\PayDispatchService;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- use Mockery\Exception;
- class UserCoinController extends Controller
- {
- /**
- * 返回汇率比
- * @author lyh
- * @date 2019/3/28
- * @description
- */
- public function getCoin()
- {
- $coin = Proxy::getConfig(\Auth::id());
- return showJsonSucc('当前用户的点币汇率', [
- 'coin' => $coin->coin
- ]);
- }
- /**
- * 点币购买
- * @author lyh
- * @date 2019/3/28
- * @description
- */
- public function buy(Request $request)
- {
- $validator = \Validator::make($param = $request->all(), [
- // 'coin' => 'required|numeric',
- 'number' => 'required|integer|min:1',
- // 'total_price' => 'required|numeric',
- 'pay_type' => 'required|integer|between:1,2'
- ]);
- if ($validator->fails()) {
- return showJsonErr($validator->errors()->first());
- }
- // 1/100=人民币/点币
- // 人民币 = 点币数量
- $coin = Proxy::getConfig(\Auth::id())->coin;
- // 价格 = 数量/点币汇率
- $param['total_price'] = round($param['number'] / $coin, 2);
- // 获取支付信息
- $orderNo = Order::makeOrderNo();
- $pay = PayDispatchService::dispatch($param['pay_type']);
- // 获取支付信息
- // $payData = $pay->getPayInfo($orderNo, $param['total_price'], \Auth::user()->mobile . '点币购买');
- $payData = $pay->getPayInfo($orderNo, 0.01, \Auth::user()->mobile . '点币购买');//测试
- try {
- // todo 生成支付订单、并返回参数
- $orderData = [
- 'uid' => \Auth::id(),
- 'type' => 3,
- 'order_no' => $orderNo,
- 'pay_no' => $pay_no = $orderNo,
- 'price' => $param['total_price'],
- 'is_pay' => 0,
- 'pay_type' => $param['pay_type'],
- 'status' => 2,
- ];
- if (empty($order_id = Order::insertGetId($orderData))) {
- \DB::rollBack();
- return showJsonErr('生成订单失败');
- }
- UserCoin::insertGetId([
- 'uid' => \Auth::id(),
- 'order_id' => $order_id,
- 'price' => round(1 / $coin, 2), // 单价
- 'num' => $param['number'], // 数量
- 'total_price' => $param['total_price'], // 总价
- 'coin_parities' => $coin, // 汇率
- 'pay_type' => $param['pay_type']
- ]);
- \DB::commit();
- if ($param['pay_type'] == 2) {
- return $payData;
- }
- return showJsonSucc('提交购买点币成功', [
- 'payData' => $payData
- ]);
- } catch (Exception $exception) {
- \DB::rollBack();
- return showJsonErr('购买点币失败', [
- 'message' => $exception->getMessage()
- ]);
- }
- }
- }
|