|
@@ -49,6 +49,7 @@ class OrderService {
|
|
|
'order_sn' => $orderSn,
|
|
|
'order_money' => $orderMoney,
|
|
|
'product_id' => $input['productId'],
|
|
|
+ 'num' => (int)abs($input['num']),
|
|
|
'store_id' => $input['storeId'],
|
|
|
'appointment_time' => $input['appointmentTime'],
|
|
|
'end_time' => $input['endTime'],
|
|
@@ -78,9 +79,9 @@ class OrderService {
|
|
|
if (!Until::$isAdmin) {
|
|
|
$otherData = [
|
|
|
'openId' => $userInfo['open_id'],
|
|
|
- 'attach' => 'storeId:'.$input['storeId'],
|
|
|
+ 'attach' => 'storeId:' . $input['storeId'],
|
|
|
'money' => $orderMoney * 100,
|
|
|
- 'mark' => '购买了'.$productInfo['product_name'],
|
|
|
+ 'mark' => '购买了' . $productInfo['product_name'],
|
|
|
'orderId' => $orderSn,
|
|
|
'username' => $userInfo['name'],
|
|
|
'payCode' => strtoupper($this->userName),
|
|
@@ -93,8 +94,85 @@ class OrderService {
|
|
|
'paySign' => $wxOrderInfo['paySign'],
|
|
|
'timeStamp' => $wxOrderInfo['timeStamp'],
|
|
|
'signType' => $wxOrderInfo['signType'],
|
|
|
- 'orderSn' => $orderSn,
|
|
|
- 'orderId' => $orderId
|
|
|
+ 'orderSn' => $orderSn,
|
|
|
+ 'orderId' => $orderId
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ $this->time[] = 'leo-end' . time();
|
|
|
+ $order['time'] = $this->time;
|
|
|
+ return $order;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function payFoodOrder($input) {
|
|
|
+ $orderSn = Until::createSn();
|
|
|
+ $productIdArr = array_column($input['productIdAndNum'], 'productId');
|
|
|
+ $productList = (new ProductModel())::where([['id', 'in', $productIdArr]])->field('id,current_price')->select();
|
|
|
+ $productIdPrice = [];
|
|
|
+ foreach ($productList as $pInfo) {
|
|
|
+ $productIdPrice[$pInfo['id']] = $pInfo['current_price'];
|
|
|
+ }
|
|
|
+ unset($pInfo);
|
|
|
+ $userInfo = (new UserModel())::where(['id' => Until::$userId])->find();
|
|
|
+ $userInfo = Until::modelToArray($userInfo);
|
|
|
+ if (empty($userInfo)) {
|
|
|
+ throw new ApiException('无此用户');
|
|
|
+ }
|
|
|
+ $model = new OrderModel();
|
|
|
+ try {
|
|
|
+ $userId = Until::$userId;
|
|
|
+ $orderType = 3;
|
|
|
+ $model->startTrans();
|
|
|
+ $orderMoney = 0;
|
|
|
+ foreach ($input['productIdAndNum'] as $pInfo) {
|
|
|
+ $orderMoney += $productIdPrice[$pInfo['productId']] * (int)abs($input['num']);
|
|
|
+ }
|
|
|
+ $orderId = $model->insertGetId([
|
|
|
+ 'order_sn' => $orderSn,
|
|
|
+ 'order_money' => $orderMoney,
|
|
|
+ 'product_id' => 0,
|
|
|
+ 'num' => 0,
|
|
|
+ 'store_id' => $input['storeId'],
|
|
|
+ 'appointment_time' => '',
|
|
|
+ 'end_time' => '',
|
|
|
+ 'mobile' => $input['mobile'],
|
|
|
+ 'status' => 1,
|
|
|
+ 'order_type' => $orderType,
|
|
|
+ 'user_id' => $userId,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $model->commit();
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ $model->rollback();
|
|
|
+ throw new ApiException($e->getMessage());
|
|
|
+ }
|
|
|
+ //{attach string支付主体的标识
|
|
|
+ //mark string商品信息
|
|
|
+ //money integer($int32)金额,分为单位
|
|
|
+ //openId string小程序的openid
|
|
|
+ //orderId string订单号
|
|
|
+ //payCode string支付标识
|
|
|
+ //username string用户名
|
|
|
+ //}
|
|
|
+ if (!Until::$isAdmin) {
|
|
|
+ $otherData = [
|
|
|
+ 'openId' => $userInfo['open_id'],
|
|
|
+ 'attach' => 'storeId:' . $input['storeId'],
|
|
|
+ 'money' => $orderMoney * 100,
|
|
|
+ 'mark' => '购买了小食',
|
|
|
+ 'orderId' => $orderSn,
|
|
|
+ 'username' => $userInfo['name'],
|
|
|
+ 'payCode' => strtoupper($this->userName),
|
|
|
+ ];
|
|
|
+ $this->time[] = 'leo-start' . time();
|
|
|
+ $wxOrderInfo = $this->createOrderForOther($otherData);
|
|
|
+ $order = [
|
|
|
+ 'nonceStr' => $wxOrderInfo['nonceStr'],
|
|
|
+ 'package' => $wxOrderInfo['pack'],
|
|
|
+ 'paySign' => $wxOrderInfo['paySign'],
|
|
|
+ 'timeStamp' => $wxOrderInfo['timeStamp'],
|
|
|
+ 'signType' => $wxOrderInfo['signType'],
|
|
|
+ 'orderSn' => $orderSn,
|
|
|
+ 'orderId' => $orderId
|
|
|
];
|
|
|
}
|
|
|
$this->time[] = 'leo-end' . time();
|
|
@@ -117,9 +195,9 @@ class OrderService {
|
|
|
$model::where(['id' => $orderId])->update(['pay_sn' => $paySn]);
|
|
|
$otherData = [
|
|
|
'openId' => $userInfo['open_id'],
|
|
|
- 'attach' => 'storeId:'.$info['store_id'],
|
|
|
+ 'attach' => 'storeId:' . $info['store_id'],
|
|
|
'money' => $info['order_money'] * $info['num'] * 100,
|
|
|
- 'mark' => '购买了'.$productInfo['product_name'] ?? '',
|
|
|
+ 'mark' => '购买了' . $productInfo['product_name'] ?? '',
|
|
|
'orderId' => $paySn,
|
|
|
'username' => $userInfo['name'],
|
|
|
'payCode' => strtoupper($this->userName),
|
|
@@ -131,26 +209,26 @@ class OrderService {
|
|
|
'paySign' => $wxOrderInfo['paySign'],
|
|
|
'timeStamp' => $wxOrderInfo['timeStamp'],
|
|
|
'signType' => $wxOrderInfo['signType'],
|
|
|
- 'orderSn' => $info['order_sn'],
|
|
|
- 'orderId' => $orderId
|
|
|
+ 'orderSn' => $info['order_sn'],
|
|
|
+ 'orderId' => $orderId
|
|
|
];
|
|
|
return $order;
|
|
|
}
|
|
|
|
|
|
|
|
|
public function getPayToken() {
|
|
|
-// var_dump('获取token'.time());
|
|
|
+ // var_dump('获取token'.time());
|
|
|
$this->time[] = 'payToken-start-' . time();
|
|
|
$key = 'payToken' . $this->userName;
|
|
|
$token = Cache::get($key);
|
|
|
if (empty($token)) {
|
|
|
$token = $this->getAuthPay();
|
|
|
- Cache::set($key, $token,'7100');
|
|
|
-// var_dump('接口获取token结束'.time());
|
|
|
+ Cache::set($key, $token, '7100');
|
|
|
+ // var_dump('接口获取token结束'.time());
|
|
|
return $token;
|
|
|
}
|
|
|
$this->time[] = 'payToken-end-' . time();
|
|
|
-// var_dump('缓存获取token结束'.time());
|
|
|
+ // var_dump('缓存获取token结束'.time());
|
|
|
return $token;
|
|
|
}
|
|
|
|
|
@@ -158,7 +236,7 @@ class OrderService {
|
|
|
$client = new Client();
|
|
|
$time = Until::msectime();
|
|
|
$res = $client->request('Post',
|
|
|
- Config::get('domain')."api/auth/create", [
|
|
|
+ Config::get('domain') . "api/auth/create", [
|
|
|
'json' => [
|
|
|
'username' => $this->userName,
|
|
|
"password" => $this->passwd,
|
|
@@ -174,11 +252,11 @@ class OrderService {
|
|
|
}
|
|
|
|
|
|
public function createOrderForOther(array $data) {
|
|
|
-// var_dump('start'.time());
|
|
|
+ // var_dump('start'.time());
|
|
|
$this->time[] = 'createOrder-start-' . time();
|
|
|
$client = new Client();
|
|
|
$res = $client->request('Post',
|
|
|
- Config::get('domain')."api/supers/wx-pay/gateway-no-order", [
|
|
|
+ Config::get('domain') . "api/supers/wx-pay/gateway-no-order", [
|
|
|
'json' => $data,
|
|
|
'headers' => [
|
|
|
'API-TOKEN-V1' => $this->getPayToken()
|
|
@@ -189,7 +267,7 @@ class OrderService {
|
|
|
throw new ApiException($info['msg']);
|
|
|
}
|
|
|
$this->time[] = 'createOrder-end-' . time();
|
|
|
-// var_dump('end'.time());
|
|
|
+ // var_dump('end'.time());
|
|
|
return $info['data'];
|
|
|
}
|
|
|
|
|
@@ -200,14 +278,14 @@ class OrderService {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
-// var_dump($rs);
|
|
|
- $model::where(['order_sn' => $orderSn])->update(['status' => 2,'pay_time' => date('Y-m-d H:i:s')]);
|
|
|
- $model::where(['pay_sn' => $orderSn])->update(['status' => 2,'pay_time' => date('Y-m-d H:i:s')]);
|
|
|
+ // var_dump($rs);
|
|
|
+ $model::where(['order_sn' => $orderSn])->update(['status' => 2, 'pay_time' => date('Y-m-d H:i:s')]);
|
|
|
+ $model::where(['pay_sn' => $orderSn])->update(['status' => 2, 'pay_time' => date('Y-m-d H:i:s')]);
|
|
|
$wModel = new WriteOffModel();
|
|
|
- $code = $this->changeCode();
|
|
|
+ $code = $this->changeCode();
|
|
|
$wModel::where(['order_id' => $rs['id']])->update([
|
|
|
'write_off_code' => $code,
|
|
|
- 'over_time' => date('Y-m-d H:i:s', time() + 2 * 60),
|
|
|
+ 'over_time' => date('Y-m-d H:i:s', time() + 2 * 60),
|
|
|
]);
|
|
|
}
|
|
|
|
|
@@ -215,10 +293,10 @@ class OrderService {
|
|
|
public function changeCode() {
|
|
|
$wModel = new WriteOffModel();
|
|
|
$codeList = $wModel::where(['write_off_status' => WriteOffModel::NO_WRITE_OFF])->field('write_off_code')->select();
|
|
|
- $codeList = Until::modelToArray($codeList);
|
|
|
+ $codeList = Until::modelToArray($codeList);
|
|
|
|
|
|
$codeArr = [];
|
|
|
- foreach ($codeList as $v) {
|
|
|
+ foreach ($codeList as $v) {
|
|
|
$codeArr[] = $v['write_off_code'];
|
|
|
}
|
|
|
$code = $this->makeUniqCode($codeArr);
|