|
@@ -10,6 +10,8 @@ use app\model\api\StoreCart;
|
|
|
use app\model\api\PayTrade;
|
|
use app\model\api\PayTrade;
|
|
|
use app\model\api\UserAddress;
|
|
use app\model\api\UserAddress;
|
|
|
use app\model\api\StoreProductAttrValue;
|
|
use app\model\api\StoreProductAttrValue;
|
|
|
|
|
+use app\model\api\UserScoreDetail;
|
|
|
|
|
+use app\model\api\User as UserModel;
|
|
|
use app\Request;
|
|
use app\Request;
|
|
|
use library\services\UtilService;
|
|
use library\services\UtilService;
|
|
|
use think\facade\Db;
|
|
use think\facade\Db;
|
|
@@ -184,6 +186,9 @@ class Shop extends BaseController
|
|
|
['status', ''],
|
|
['status', ''],
|
|
|
], $request);
|
|
], $request);
|
|
|
|
|
|
|
|
|
|
+ $post['page'] = (int)$post['page'];
|
|
|
|
|
+ $post['pageSize'] = (int)$post['pageSize'];
|
|
|
|
|
+
|
|
|
$where = [
|
|
$where = [
|
|
|
['uid', '=', $request->user['uid']]
|
|
['uid', '=', $request->user['uid']]
|
|
|
];
|
|
];
|
|
@@ -279,4 +284,104 @@ class Shop extends BaseController
|
|
|
|
|
|
|
|
return app('json')->success('确认收货成功');
|
|
return app('json')->success('确认收货成功');
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 积分支付
|
|
|
|
|
+ * @param Request $request
|
|
|
|
|
+ */
|
|
|
|
|
+ public function scorePay(Request $request)
|
|
|
|
|
+ {
|
|
|
|
|
+ $post = UtilService::getMore([
|
|
|
|
|
+ ['order_id', '', 'empty', '参数错误'],
|
|
|
|
|
+ ], $request);
|
|
|
|
|
+
|
|
|
|
|
+ // 查询订单
|
|
|
|
|
+ $orderData = Db::name('store_order')
|
|
|
|
|
+ ->where('order_id', $post['order_id'])
|
|
|
|
|
+ ->where('uid', $request->user['uid'])
|
|
|
|
|
+ ->find();
|
|
|
|
|
+
|
|
|
|
|
+ if (empty($orderData)) {
|
|
|
|
|
+ return app('json')->fail('订单不存在');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ($orderData['status'] != 0) {
|
|
|
|
|
+ return app('json')->fail('订单状态错误');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ($orderData['paid'] == 1) {
|
|
|
|
|
+ return app('json')->fail('订单已支付');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 查询支付流水
|
|
|
|
|
+ $payTradeData = Db::name('pay_trade')
|
|
|
|
|
+ ->where('o_id', $orderData['id'])
|
|
|
|
|
+ ->where('code', 'shop_order')
|
|
|
|
|
+ ->find();
|
|
|
|
|
+
|
|
|
|
|
+ if (empty($payTradeData)) {
|
|
|
|
|
+ return app('json')->fail('支付流水不存在');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ($payTradeData['status'] == 1) {
|
|
|
|
|
+ return app('json')->fail('订单已支付');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 检查用户积分
|
|
|
|
|
+ $userData = (new UserModel)->where('uid', $request->user['uid'])->find();
|
|
|
|
|
+ if (empty($userData)) {
|
|
|
|
|
+ return app('json')->fail('用户不存在');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ($userData['score'] < $orderData['pay_price']) {
|
|
|
|
|
+ return app('json')->fail('积分不足,当前积分:' . $userData['score'] . ',需要:' . $orderData['pay_price']);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 开启事务
|
|
|
|
|
+ Db::startTrans();
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 扣除积分
|
|
|
|
|
+ $scoreResult = (new UserScoreDetail)->payScore(
|
|
|
|
|
+ $request->user['uid'],
|
|
|
|
|
+ floatval($orderData['pay_price']),
|
|
|
|
|
+ 'outcome_score',
|
|
|
|
|
+ '订单支付:' . $orderData['order_id'],
|
|
|
|
|
+ ['o_id' => $orderData['id']],
|
|
|
|
|
+ '',
|
|
|
|
|
+ '商城订单积分支付,支出' . $orderData['pay_price'] . '积分'
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ if (!$scoreResult) {
|
|
|
|
|
+ Db::rollback();
|
|
|
|
|
+ return app('json')->fail('积分扣除失败');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 更新支付流水
|
|
|
|
|
+ $pay_json = json_encode([
|
|
|
|
|
+ 'pay_type' => 'score',
|
|
|
|
|
+ 'score' => $orderData['pay_price'],
|
|
|
|
|
+ 'pay_time' => time()
|
|
|
|
|
+ ], JSON_UNESCAPED_UNICODE);
|
|
|
|
|
+
|
|
|
|
|
+ Db::name('pay_trade')->where('id', $payTradeData['id'])->update([
|
|
|
|
|
+ 'status' => 1,
|
|
|
|
|
+ 'pay_time' => time(),
|
|
|
|
|
+ 'pay_json' => $pay_json
|
|
|
|
|
+ ]);
|
|
|
|
|
+
|
|
|
|
|
+ // 更新订单状态
|
|
|
|
|
+ Db::name('store_order')->where('id', $orderData['id'])->update([
|
|
|
|
|
+ 'paid' => 1,
|
|
|
|
|
+ 'pay_time' => time()
|
|
|
|
|
+ ]);
|
|
|
|
|
+
|
|
|
|
|
+ Db::commit();
|
|
|
|
|
+ return app('json')->success('积分支付成功');
|
|
|
|
|
+ } catch (DbException $e) {
|
|
|
|
|
+ @file_put_contents('quanju.txt', date('Y-m-d H:i:s') . ' [scorePay Error] ' . $e->getMessage() . ' File: ' . $e->getFile() . ' Line: ' . $e->getLine() . "\r\n", 8);
|
|
|
|
|
+
|
|
|
|
|
+ Db::rollback();
|
|
|
|
|
+ return app('json')->fail('支付失败');
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|