提交 4da6d7bb 编写于 作者: D devil

下单限制,加入购物车限制 bug 修复

上级 b4714459
......@@ -103,6 +103,15 @@ class BuyService
}
}
// 数量
$stock = ($goods['buy_max_number'] > 0 && $params['stock'] > $goods['buy_max_number']) ? $goods['buy_max_number'] : $params['stock'];
// 库存
if($stock > $goods['inventory'])
{
return DataReturn('库存不足', -1);
}
// 添加购物车
$data = [
'user_id' => $params['user']['id'],
......@@ -111,7 +120,7 @@ class BuyService
'images' => $goods['images'],
'original_price'=> $goods_base['data']['spec_base']['original_price'],
'price' => $goods_base['data']['spec_base']['price'],
'stock' => intval($params['stock']),
'stock' => $stock,
'spec' => empty($spec) ? '' : json_encode($spec),
];
......@@ -132,6 +141,10 @@ class BuyService
{
$data['stock'] = $goods['inventory'];
}
if($goods['buy_max_number'] > 0 && $data['stock'] > $goods['buy_max_number'])
{
$data['stock'] = $goods['buy_max_number'];
}
if(Db::name('Cart')->where($where)->update($data))
{
return DataReturn('加入成功', 0, self::UserCartTotal($params));
......@@ -358,14 +371,34 @@ class BuyService
return $ret;
}
// 更新
// 条件
$where = [
'id' => intval($params['id']),
'goods_id' => intval($params['goods_id']),
'user_id' => intval($params['user']['id']),
];
// 数量
$stock = intval($params['stock']);
// 获取购物车数据
$cart = Db::name('Cart')->where($where)->select();
if(empty($cart))
{
return DataReturn('请先加入购物车', -1);
}
$cart[0]['stock'] = $stock;
// 商品校验
$check = self::BuyGoodsCheck(['goods'=>$cart]);
if($check['code'] != 0)
{
return $check;
}
// 更新数据
$data = [
'stock' => intval($params['stock']),
'stock' => $stock,
'upd_time' => time(),
];
if(Db::name('Cart')->where($where)->update($data))
......@@ -766,7 +799,11 @@ class BuyService
foreach($params['goods'] as $v)
{
// 获取商品信息
$goods = Db::name('Goods')->find($v['goods_id']);
$goods = Db::name('Goods')->field('id,title,price,is_shelves,inventory,buy_min_number,buy_max_number')->find($v['goods_id']);
if(empty($goods))
{
return DataReturn('['.$v['goods_id'].']商品不存在', -1);
}
// 规格
$goods_base = GoodsService::GoodsSpecDetail(['id'=>$v['goods_id'], 'spec'=>isset($v['spec']) ? $v['spec'] : []]);
......@@ -779,25 +816,21 @@ class BuyService
}
// 基础判断
if(empty($goods))
{
return DataReturn('['.$v['goods_id'].']商品不存在', -1);
}
if($goods['is_shelves'] != 1)
{
return DataReturn('['.$v['goods_id'].']商品已下架', -1);
return DataReturn('商品已下架['.$goods['title'].']', -1);
}
if($v['stock'] > $goods['inventory'])
{
return DataReturn('['.$v['goods_id'].']购买数量超过商品库存数量['.$v['stock'].'>'.$goods['inventory'].']', -1);
return DataReturn('购买数量超过商品库存数量['.$goods['title'].']['.$v['stock'].'>'.$goods['inventory'].']', -1);
}
if($goods['buy_min_number'] > 1 && $v['stock'] < $goods['buy_min_number'])
{
return DataReturn('['.$v['goods_id'].']低于商品起购数量['.$v['stock'].'<'.$goods['buy_min_number'].']', -1);
return DataReturn('低于商品起购数量['.$goods['title'].']['.$v['stock'].'<'.$goods['buy_min_number'].']', -1);
}
if($goods['buy_max_number'] > 1 && $v['stock'] > $goods['buy_max_number'])
if($goods['buy_max_number'] > 0 && $v['stock'] > $goods['buy_max_number'])
{
return DataReturn('['.$v['goods_id'].']超过商品限购数量['.$v['stock'].'>'.$goods['buy_max_number'].']', -1);
return DataReturn('超过商品限购数量['.$goods['title'].']['.$v['stock'].'>'.$goods['buy_max_number'].']', -1);
}
}
......@@ -874,7 +907,7 @@ class BuyService
return $buy;
}
$check = self::BuyGoodsCheck(['goods'=>$buy['data']['goods']]);
if(!isset($check['code']) || $check['code'] != 0)
if($check['code'] != 0)
{
return $check;
}
......
......@@ -220,7 +220,7 @@ class GoodsService
$data = array_merge($data, $temp);
}
}
$data = empty($data) ? $ids : array_merge($ids, $data);
$data = empty($data) ? $ids : array_unique(array_merge($ids, $data));
return $data;
}
......
......@@ -219,8 +219,40 @@ class OrderAftersaleService
'add_time' => time(),
'apply_time' => time(),
];
if(Db::name('OrderAftersale')->insertGetId($data) > 0)
// 订单售后添加前钩子
$hook_name = 'plugins_service_order_aftersale_insert_begin';
$ret = HookReturnHandle(Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'data' => &$data,
'params' => $params,
]));
if(isset($ret['code']) && $ret['code'] != 0)
{
return $ret;
}
// 数据添加
$data_id = Db::name('OrderAftersale')->insertGetId($data);
if($data_id > 0)
{
// 订单售后添加成功钩子
$hook_name = 'plugins_service_order_aftersale_insert_end';
$ret = HookReturnHandle(Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'data_id' => $data_id,
'data' => $data,
'params' => $params,
]));
if(isset($ret['code']) && $ret['code'] != 0)
{
return $ret;
}
// 返回成功
return DataReturn('申请成功', 0);
}
return DataReturn('申请失败', -100);
......@@ -298,8 +330,40 @@ class OrderAftersaleService
'delivery_time' => time(),
'upd_time' => time(),
];
// 订单售后单退货前钩子
$hook_name = 'plugins_service_order_aftersale_delivery_begin';
$ret = HookReturnHandle(Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'data_id' => $params['id'],
'data' => &$data,
'params' => $params,
]));
if(isset($ret['code']) && $ret['code'] != 0)
{
return $ret;
}
// 数据更新
if(Db::name('OrderAftersale')->where($where)->update($data))
{
// 订单售后退货成功钩子
$hook_name = 'plugins_service_order_aftersale_delivery_end';
$ret = HookReturnHandle(Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'data_id' => $params['id'],
'data' => $data,
'params' => $params,
]));
if(isset($ret['code']) && $ret['code'] != 0)
{
return $ret;
}
// 返回成功
return DataReturn('操作成功', 0);
}
return DataReturn('操作失败', -100);
......@@ -552,9 +616,46 @@ class OrderAftersaleService
return DataReturn('状态不可操作['.$status_list[$aftersale['status']]['name'].']', -1);
}
// 数据更新
if(Db::name('OrderAftersale')->where($where)->update(['status'=>5, 'cancel_time'=>time(), 'upd_time'=>time()]))
// 数据
$data = [
'status' => 5,
'cancel_time' => time(),
'upd_time' => time()
];
// 订单售后单取消前钩子
$hook_name = 'plugins_service_order_aftersale_cacnel_begin';
$ret = HookReturnHandle(Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'data_id' => $params['id'],
'data' => &$data,
'params' => $params,
]));
if(isset($ret['code']) && $ret['code'] != 0)
{
return $ret;
}
// 更新数据
if(Db::name('OrderAftersale')->where($where)->update($data))
{
// 订单售后取消成功钩子
$hook_name = 'plugins_service_order_aftersale_cacnel_end';
$ret = HookReturnHandle(Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'data_id' => $params['id'],
'data' => $data,
'params' => $params,
]));
if(isset($ret['code']) && $ret['code'] != 0)
{
return $ret;
}
// 返回成功
return DataReturn('取消成功');
}
return DataReturn('取消失败', -100);
......@@ -611,9 +712,46 @@ class OrderAftersaleService
return DataReturn('类型不可操作['.$aftersale_type_list[$aftersale['type']]['name'].']', -1);
}
// 数据更新
if(Db::name('OrderAftersale')->where($where)->update(['status'=>1, 'confirm_time'=>time(), 'upd_time'=>time()]))
// 数据
$data = [
'status' => 1,
'confirm_time' => time(),
'upd_time' => time()
];
// 订单售后单确认前钩子
$hook_name = 'plugins_service_order_aftersale_confirm_begin';
$ret = HookReturnHandle(Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'data_id' => $params['id'],
'data' => &$data,
'params' => $params,
]));
if(isset($ret['code']) && $ret['code'] != 0)
{
return $ret;
}
// 更新数据
if(Db::name('OrderAftersale')->where($where)->update())
{
// 订单售后单确认成功钩子
$hook_name = 'plugins_service_order_aftersale_confirm_end';
$ret = HookReturnHandle(Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'data_id' => $params['id'],
'data' => $data,
'params' => $params,
]));
if(isset($ret['code']) && $ret['code'] != 0)
{
return $ret;
}
// 返回成功
return DataReturn('确认成功');
}
return DataReturn('确认失败', -100);
......@@ -845,7 +983,7 @@ class OrderAftersaleService
}
// 更新退款状态
$aftersale_upd_data = [
$data = [
'status' => 3,
'refundment' => $params['refundment'],
'audit_time' => time(),
......@@ -855,9 +993,27 @@ class OrderAftersaleService
// 仅退款是否退了数量
if($is_refund_only_number == true)
{
$aftersale_upd_data['number'] = $aftersale['number'];
$data['number'] = $aftersale['number'];
}
if(!Db::name('OrderAftersale')->where(['id'=>$aftersale['id']])->update($aftersale_upd_data))
// 订单售后单审核前钩子
$hook_name = 'plugins_service_order_aftersale_audit_handle_begin';
$ret = HookReturnHandle(Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'data_id' => $aftersale['id'],
'data' => &$data,
'order_id' => $order['data']['id'],
'params' => $params,
]));
if(isset($ret['code']) && $ret['code'] != 0)
{
return $ret;
}
// 数据更新
if(!Db::name('OrderAftersale')->where(['id'=>$aftersale['id']])->update($data))
{
Db::rollback();
return DataReturn('售后订单更新失败', -60);
......@@ -1066,15 +1222,47 @@ class OrderAftersaleService
return DataReturn('状态不可操作['.$status_list[$aftersale['status']]['name'].']', -1);
}
// 更新操作
// 数据
$data = [
'status' => 4,
'refuse_reason' => $params['refuse_reason'],
'audit_time' => time(),
'upd_time' => time(),
];
// 订单售后单拒绝前钩子
$hook_name = 'plugins_service_order_aftersale_refuse_begin';
$ret = HookReturnHandle(Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'data_id' => $params['id'],
'data' => &$data,
'params' => $params,
]));
if(isset($ret['code']) && $ret['code'] != 0)
{
return $ret;
}
// 更新数据
if(Db::name('OrderAftersale')->where(['id' => intval($params['id'])])->update($data))
{
// 订单售后单拒绝成功钩子
$hook_name = 'plugins_service_order_aftersale_refuse_end';
$ret = HookReturnHandle(Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'data_id' => $params['id'],
'data' => $data,
'params' => $params,
]));
if(isset($ret['code']) && $ret['code'] != 0)
{
return $ret;
}
// 返回成功
return DataReturn('拒绝成功', 0);
}
return DataReturn('拒绝失败', -100);
......@@ -1122,6 +1310,20 @@ class OrderAftersaleService
// 删除操作
if(Db::name('OrderAftersale')->where(['id' => intval($params['id'])])->delete())
{
// 订单售后单删除成功钩子
$hook_name = 'plugins_service_order_aftersale_delete_success';
$ret = HookReturnHandle(Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'data_id' => $params['id'],
'params' => $params,
]));
if(isset($ret['code']) && $ret['code'] != 0)
{
return $ret;
}
// 返回成功
return DataReturn('删除成功', 0);
}
return DataReturn('删除失败', -100);
......
......@@ -35,18 +35,147 @@ return array (
'plugins_service_users_center_left_menu_handle' =>
array (
0 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
1 => 'app\\plugins\\coupon\\Hook',
2 => 'app\\plugins\\distribution\\Hook',
3 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_header_navigation_top_right_handle' =>
array (
0 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
1 => 'app\\plugins\\coupon\\Hook',
2 => 'app\\plugins\\distribution\\Hook',
3 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_buy_order_insert_end' =>
array (
0 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
1 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_order_status_change_history_success_handle' =>
array (
0 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
1 => 'app\\plugins\\coupon\\Hook',
2 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_buy_order_insert_begin' =>
array (
0 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
),
'plugins_service_order_aftersale_audit_handle_end' =>
array (
0 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
1 => 'app\\plugins\\distribution\\Hook',
),
'plugins_css' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
1 => 'app\\plugins\\distribution\\Hook',
2 => 'app\\plugins\\commononlineservice\\Hook',
3 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_js' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
1 => 'app\\plugins\\commononlineservice\\Hook',
),
'plugins_service_navigation_header_handle' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
1 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_view_goods_detail_panel_bottom' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_view_buy_goods_bottom' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_buy_handle' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
1 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_view_buy_form_inside' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_buy_order_insert_success' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_user_register_end' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_site_extraction_address_list' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_service_goods_spec_extends_handle' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
1 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_view_admin_user_save' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
1 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_user_save_handle' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
1 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_view_goods_detail_base_buy_nav_min_inside' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_view_goods_detail_photo_within' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_view_goods_detail_base_bottom' =>
array (
0 => 'app\\plugins\\distribution\\Hook',
),
'plugins_view_common_bottom' =>
array (
0 => 'app\\plugins\\commononlineservice\\Hook',
),
'plugins_service_goods_handle_end' =>
array (
0 => 'app\\plugins\\usernotloginhidegoodsprice\\Hook',
1 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_goods_spec_base' =>
array (
0 => 'app\\plugins\\usernotloginhidegoodsprice\\Hook',
1 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_user_login_success_record' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_goods_save_handle' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_view_goods_detail_panel_price_top' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_view_home_goods_inside_bottom' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_view_search_goods_inside_bottom' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_goods_spec_type' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
);
?>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册