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

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

上级 b4714459
...@@ -103,6 +103,15 @@ class BuyService ...@@ -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 = [ $data = [
'user_id' => $params['user']['id'], 'user_id' => $params['user']['id'],
...@@ -111,7 +120,7 @@ class BuyService ...@@ -111,7 +120,7 @@ class BuyService
'images' => $goods['images'], 'images' => $goods['images'],
'original_price'=> $goods_base['data']['spec_base']['original_price'], 'original_price'=> $goods_base['data']['spec_base']['original_price'],
'price' => $goods_base['data']['spec_base']['price'], 'price' => $goods_base['data']['spec_base']['price'],
'stock' => intval($params['stock']), 'stock' => $stock,
'spec' => empty($spec) ? '' : json_encode($spec), 'spec' => empty($spec) ? '' : json_encode($spec),
]; ];
...@@ -132,6 +141,10 @@ class BuyService ...@@ -132,6 +141,10 @@ class BuyService
{ {
$data['stock'] = $goods['inventory']; $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)) if(Db::name('Cart')->where($where)->update($data))
{ {
return DataReturn('加入成功', 0, self::UserCartTotal($params)); return DataReturn('加入成功', 0, self::UserCartTotal($params));
...@@ -358,14 +371,34 @@ class BuyService ...@@ -358,14 +371,34 @@ class BuyService
return $ret; return $ret;
} }
// 更新 // 条件
$where = [ $where = [
'id' => intval($params['id']), 'id' => intval($params['id']),
'goods_id' => intval($params['goods_id']), 'goods_id' => intval($params['goods_id']),
'user_id' => intval($params['user']['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 = [ $data = [
'stock' => intval($params['stock']), 'stock' => $stock,
'upd_time' => time(), 'upd_time' => time(),
]; ];
if(Db::name('Cart')->where($where)->update($data)) if(Db::name('Cart')->where($where)->update($data))
...@@ -766,7 +799,11 @@ class BuyService ...@@ -766,7 +799,11 @@ class BuyService
foreach($params['goods'] as $v) 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'] : []]); $goods_base = GoodsService::GoodsSpecDetail(['id'=>$v['goods_id'], 'spec'=>isset($v['spec']) ? $v['spec'] : []]);
...@@ -779,25 +816,21 @@ class BuyService ...@@ -779,25 +816,21 @@ class BuyService
} }
// 基础判断 // 基础判断
if(empty($goods))
{
return DataReturn('['.$v['goods_id'].']商品不存在', -1);
}
if($goods['is_shelves'] != 1) if($goods['is_shelves'] != 1)
{ {
return DataReturn('['.$v['goods_id'].']商品已下架', -1); return DataReturn('商品已下架['.$goods['title'].']', -1);
} }
if($v['stock'] > $goods['inventory']) 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']) 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 ...@@ -874,7 +907,7 @@ class BuyService
return $buy; return $buy;
} }
$check = self::BuyGoodsCheck(['goods'=>$buy['data']['goods']]); $check = self::BuyGoodsCheck(['goods'=>$buy['data']['goods']]);
if(!isset($check['code']) || $check['code'] != 0) if($check['code'] != 0)
{ {
return $check; return $check;
} }
......
...@@ -220,7 +220,7 @@ class GoodsService ...@@ -220,7 +220,7 @@ class GoodsService
$data = array_merge($data, $temp); $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; return $data;
} }
......
...@@ -219,8 +219,40 @@ class OrderAftersaleService ...@@ -219,8 +219,40 @@ class OrderAftersaleService
'add_time' => time(), 'add_time' => time(),
'apply_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('申请成功', 0);
} }
return DataReturn('申请失败', -100); return DataReturn('申请失败', -100);
...@@ -298,8 +330,40 @@ class OrderAftersaleService ...@@ -298,8 +330,40 @@ class OrderAftersaleService
'delivery_time' => time(), 'delivery_time' => time(),
'upd_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)) 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('操作成功', 0);
} }
return DataReturn('操作失败', -100); return DataReturn('操作失败', -100);
...@@ -552,9 +616,46 @@ class OrderAftersaleService ...@@ -552,9 +616,46 @@ class OrderAftersaleService
return DataReturn('状态不可操作['.$status_list[$aftersale['status']]['name'].']', -1); 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('取消成功');
} }
return DataReturn('取消失败', -100); return DataReturn('取消失败', -100);
...@@ -611,9 +712,46 @@ class OrderAftersaleService ...@@ -611,9 +712,46 @@ class OrderAftersaleService
return DataReturn('类型不可操作['.$aftersale_type_list[$aftersale['type']]['name'].']', -1); 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('确认成功');
} }
return DataReturn('确认失败', -100); return DataReturn('确认失败', -100);
...@@ -845,7 +983,7 @@ class OrderAftersaleService ...@@ -845,7 +983,7 @@ class OrderAftersaleService
} }
// 更新退款状态 // 更新退款状态
$aftersale_upd_data = [ $data = [
'status' => 3, 'status' => 3,
'refundment' => $params['refundment'], 'refundment' => $params['refundment'],
'audit_time' => time(), 'audit_time' => time(),
...@@ -855,9 +993,27 @@ class OrderAftersaleService ...@@ -855,9 +993,27 @@ class OrderAftersaleService
// 仅退款是否退了数量 // 仅退款是否退了数量
if($is_refund_only_number == true) 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(); Db::rollback();
return DataReturn('售后订单更新失败', -60); return DataReturn('售后订单更新失败', -60);
...@@ -1066,15 +1222,47 @@ class OrderAftersaleService ...@@ -1066,15 +1222,47 @@ class OrderAftersaleService
return DataReturn('状态不可操作['.$status_list[$aftersale['status']]['name'].']', -1); return DataReturn('状态不可操作['.$status_list[$aftersale['status']]['name'].']', -1);
} }
// 更新操作 // 数据
$data = [ $data = [
'status' => 4, 'status' => 4,
'refuse_reason' => $params['refuse_reason'], 'refuse_reason' => $params['refuse_reason'],
'audit_time' => time(), 'audit_time' => time(),
'upd_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)) 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('拒绝成功', 0);
} }
return DataReturn('拒绝失败', -100); return DataReturn('拒绝失败', -100);
...@@ -1122,6 +1310,20 @@ class OrderAftersaleService ...@@ -1122,6 +1310,20 @@ class OrderAftersaleService
// 删除操作 // 删除操作
if(Db::name('OrderAftersale')->where(['id' => intval($params['id'])])->delete()) 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('删除成功', 0);
} }
return DataReturn('删除失败', -100); return DataReturn('删除失败', -100);
......
...@@ -35,18 +35,147 @@ return array ( ...@@ -35,18 +35,147 @@ return array (
'plugins_service_users_center_left_menu_handle' => 'plugins_service_users_center_left_menu_handle' =>
array ( array (
0 => 'app\\plugins\\excellentbuyreturntocash\\Hook', 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' => 'plugins_service_header_navigation_top_right_handle' =>
array ( array (
0 => 'app\\plugins\\excellentbuyreturntocash\\Hook', 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' => 'plugins_service_buy_order_insert_end' =>
array ( array (
0 => 'app\\plugins\\excellentbuyreturntocash\\Hook', 0 => 'app\\plugins\\excellentbuyreturntocash\\Hook',
1 => 'app\\plugins\\distribution\\Hook',
), ),
'plugins_service_order_status_change_history_success_handle' => 'plugins_service_order_status_change_history_success_handle' =>
array ( array (
0 => 'app\\plugins\\excellentbuyreturntocash\\Hook', 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.
先完成此消息的编辑!
想要评论请 注册