下单支付优化

feat/task1-c-wallet
gongfuxiang 2022-03-04 17:28:58 +08:00
parent 120cbd9ba9
commit eaa0231f24
2 changed files with 80 additions and 25 deletions

View File

@ -104,7 +104,11 @@ class BuyService
$spec = self::GoodsSpecificationsHandle($params); $spec = self::GoodsSpecificationsHandle($params);
// 获取商品基础信息 // 获取商品基础信息
$goods_base = GoodsService::GoodsSpecDetail(['id'=>$goods_id, 'spec'=>$spec]); $spec_params = array_merge($params, [
'id' => $goods_id,
'spec' => $spec,
]);
$goods_base = GoodsService::GoodsSpecDetail($spec_params);
if($goods_base['code'] != 0) if($goods_base['code'] != 0)
{ {
return $goods_base; return $goods_base;
@ -121,18 +125,10 @@ class BuyService
$goods['images_old'] = ResourcesService::AttachmentPathViewHandle($images); $goods['images_old'] = ResourcesService::AttachmentPathViewHandle($images);
} }
// 从规格获取库存 // 规格库存赋值
$base = GoodsService::GoodsSpecDetail(['id'=>$goods_id, 'spec'=>$spec]); $goods['inventory'] = $goods_base['data']['spec_base']['inventory'];
if($base['code'] == 0)
{
// 规格库存赋值
$goods['inventory'] = $base['data']['spec_base']['inventory'];
} else {
return $base;
}
} }
// 数量 // 数量
$stock = ($goods['buy_max_number'] > 0 && $params['stock'] > $goods['buy_max_number']) ? $goods['buy_max_number'] : $params['stock']; $stock = ($goods['buy_max_number'] > 0 && $params['stock'] > $goods['buy_max_number']) ? $goods['buy_max_number'] : $params['stock'];
@ -248,7 +244,12 @@ class BuyService
$v['spec'] = empty($v['spec']) ? null : json_decode($v['spec'], true); $v['spec'] = empty($v['spec']) ? null : json_decode($v['spec'], true);
// 获取商品基础信息 // 获取商品基础信息
$goods_base = GoodsService::GoodsSpecDetail(['id'=>$v['goods_id'], 'spec'=>$v['spec'], 'stock'=>$v['stock']]); $spec_params = array_merge($params, [
'id' => $v['goods_id'],
'spec' => $v['spec'],
'stock' => $v['stock'],
]);
$goods_base = GoodsService::GoodsSpecDetail($spec_params);
$v['is_invalid'] = 0; $v['is_invalid'] = 0;
if($goods_base['code'] == 0) if($goods_base['code'] == 0)
{ {
@ -455,7 +456,12 @@ class BuyService
if(Db::name('Cart')->where($where)->update($upd_data)) if(Db::name('Cart')->where($where)->update($upd_data))
{ {
// 获取商品基础信息、更新商品价格信息 // 获取商品基础信息、更新商品价格信息
$goods_base = GoodsService::GoodsSpecDetail(['id'=>$data['goods_id'], 'spec'=>$data['spec'], 'stock'=>$data['stock']]); $spec_params = array_merge($params, [
'id' => $data['goods_id'],
'spec' => $data['spec'],
'stock' => $data['stock'],
]);
$goods_base = GoodsService::GoodsSpecDetail($spec_params);
if($goods_base['code'] == 0) if($goods_base['code'] == 0)
{ {
$data['price'] = $goods_base['data']['spec_base']['price']; $data['price'] = $goods_base['data']['spec_base']['price'];
@ -526,15 +532,15 @@ class BuyService
} }
// 获取商品 // 获取商品
$p = [ $goods_params = array_merge($params, [
'where' => [ 'where' => [
'id' => intval($params['goods_id']), 'id' => intval($params['goods_id']),
'is_delete_time' => 0, 'is_delete_time' => 0,
'is_shelves' => 1, 'is_shelves' => 1,
], ],
'field' => 'id, id AS goods_id, title, images, inventory_unit, buy_min_number, buy_max_number, model', 'field' => 'id, id AS goods_id, title, images, inventory_unit, buy_min_number, buy_max_number, model',
]; ]);
$ret = GoodsService::GoodsList($p); $ret = GoodsService::GoodsList($goods_params);
if(empty($ret['data'][0])) if(empty($ret['data'][0]))
{ {
return DataReturn('资源不存在或已被删除', -10); return DataReturn('资源不存在或已被删除', -10);
@ -545,7 +551,12 @@ class BuyService
$goods['spec'] = self::GoodsSpecificationsHandle($params); $goods['spec'] = self::GoodsSpecificationsHandle($params);
// 获取商品基础信息 // 获取商品基础信息
$goods_base = GoodsService::GoodsSpecDetail(['id'=>$goods['goods_id'], 'spec'=>$goods['spec'], 'stock'=>$params['stock']]); $spec_params = array_merge($params, [
'id' => $goods['goods_id'],
'spec' => $goods['spec'],
'stock' => $params['stock']
]);
$goods_base = GoodsService::GoodsSpecDetail($spec_params);
if($goods_base['code'] == 0) if($goods_base['code'] == 0)
{ {
$goods['inventory'] = $goods_base['data']['spec_base']['inventory']; $goods['inventory'] = $goods_base['data']['spec_base']['inventory'];
@ -967,7 +978,11 @@ class BuyService
} }
// 规格 // 规格
$goods_base = GoodsService::GoodsSpecDetail(['id'=>$v['goods_id'], 'spec'=>isset($v['spec']) ? $v['spec'] : []]); $spec_params = array_merge($params, [
'id' => $v['goods_id'],
'spec' => isset($v['spec']) ? $v['spec'] : [],
]);
$goods_base = GoodsService::GoodsSpecDetail($spec_params);
if($goods_base['code'] == 0) if($goods_base['code'] == 0)
{ {
$goods['price'] = $goods_base['data']['spec_base']['price']; $goods['price'] = $goods_base['data']['spec_base']['price'];
@ -1695,7 +1710,7 @@ class BuyService
// 数据校验 // 数据校验
foreach($order_detail as $v) foreach($order_detail as $v)
{ {
$ret = self::BuyOrderPayBeginGoodsCheck($v); $ret = self::BuyOrderPayBeginGoodsCheck($v, $params);
if($ret['code'] != 0) if($ret['code'] != 0)
{ {
return $ret; return $ret;
@ -1782,7 +1797,7 @@ class BuyService
{ {
foreach($g as $v) foreach($g as $v)
{ {
$ret = self::BuyOrderPayBeginGoodsCheck($v); $ret = self::BuyOrderPayBeginGoodsCheck($v, $params);
if($ret['code'] != 0) if($ret['code'] != 0)
{ {
return $ret; return $ret;
@ -1803,8 +1818,9 @@ class BuyService
* @date 2020-08-05 * @date 2020-08-05
* @desc description * @desc description
* @param [array] $detail [订单详情] * @param [array] $detail [订单详情]
* @param [array] $params [输入参数]
*/ */
public static function BuyOrderPayBeginGoodsCheck($detail) public static function BuyOrderPayBeginGoodsCheck($detail, $params)
{ {
// 获取商品 // 获取商品
$goods = Db::name('Goods')->field('is_shelves,is_deduction_inventory,inventory,title')->find($detail['goods_id']); $goods = Db::name('Goods')->field('is_shelves,is_deduction_inventory,inventory,title')->find($detail['goods_id']);
@ -1830,7 +1846,11 @@ class BuyService
// 规格库存 // 规格库存
$spec = empty($detail['spec']) ? '' : json_decode($detail['spec'], true); $spec = empty($detail['spec']) ? '' : json_decode($detail['spec'], true);
$base = GoodsService::GoodsSpecDetail(['id'=>$detail['goods_id'], 'spec'=>$spec]); $spec_params = array_merge($params, [
'id' => $detail['goods_id'],
'spec' => $spec,
]);
$base = GoodsService::GoodsSpecDetail($spec_params);
if($base['code'] == 0) if($base['code'] == 0)
{ {
// 先判断商品规格库存是否不足 // 先判断商品规格库存是否不足
@ -1939,7 +1959,11 @@ class BuyService
// 扣除规格库存 // 扣除规格库存
$spec = empty($v['spec']) ? '' : json_decode($v['spec'], true); $spec = empty($v['spec']) ? '' : json_decode($v['spec'], true);
$base = GoodsService::GoodsSpecDetail(['id'=>$v['goods_id'], 'spec'=>$spec]); $spec_params = array_merge($params, [
'id' => $v['goods_id'],
'spec' => $spec,
]);
$base = GoodsService::GoodsSpecDetail($spec_params);
if($base['code'] == 0) if($base['code'] == 0)
{ {
// 先判断商品规格库存是否不足 // 先判断商品规格库存是否不足
@ -2064,7 +2088,11 @@ class BuyService
// 回滚规格库存 // 回滚规格库存
$spec = empty($v['spec']) ? '' : json_decode($v['spec'], true); $spec = empty($v['spec']) ? '' : json_decode($v['spec'], true);
$base = GoodsService::GoodsSpecDetail(['id'=>$v['goods_id'], 'spec'=>$spec]); $spec_params = array_merge($params, [
'id' => $v['goods_id'],
'spec' => $spec,
]);
$base = GoodsService::GoodsSpecDetail($spec_params);
if($base['code'] == 0) if($base['code'] == 0)
{ {
// 回滚规格操作 // 回滚规格操作

View File

@ -94,6 +94,10 @@ class OrderService
// 订单用户 // 订单用户
$order['user'] = UserService::UserHandle(UserService::UserInfo('id', $order['user_id'])); $order['user'] = UserService::UserHandle(UserService::UserInfo('id', $order['user_id']));
if(empty($order['user']))
{
return DataReturn('订单用户无效['.$order_id.']', -1);
}
// 订单数据集合 // 订单数据集合
$order_data[] = $order; $order_data[] = $order;
@ -453,11 +457,18 @@ class OrderService
} }
$payment = $res[0]; $payment = $res[0];
// 订单用户信息
$user = UserService::GetUserViewInfo($order['user_id']);
if(empty($user))
{
return DataReturn('订单用户无效', -1);
}
// 线下支付处理 // 线下支付处理
return self::OrderPaymentUnderLineSuccess([ return self::OrderPaymentUnderLineSuccess([
'order' => $order, 'order' => $order,
'payment' => $payment, 'payment' => $payment,
'user' => UserService::GetUserViewInfo($order['user_id']), 'user' => $user,
'params' => $params, 'params' => $params,
]); ]);
} }
@ -1170,6 +1181,22 @@ class OrderService
return (int) Db::name('Order')->where($where)->count(); return (int) Db::name('Order')->where($where)->count();
} }
/**
* 提示信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-29
* @desc description
* @param [array] $where [条件]
*/
public static function OrderTipsMsg($where = [])
{
$total_price = Db::name('Order')->where($where)->sum('total_price');
$pay_price = Db::name('Order')->where($where)->sum('pay_price');
return '订单总额 '.$total_price.' 元   支付总额 '.$pay_price.' 元';
}
/** /**
* 订单列表 * 订单列表
* @author Devil * @author Devil