|
@@ -194,12 +194,13 @@ class Shoppingcar extends Base
|
|
function checkGoods($goods_id,$goods_no){
|
|
function checkGoods($goods_id,$goods_no){
|
|
$ret_data = ['error_code'=>0,'num'=>0,'goods_info'=>[]];
|
|
$ret_data = ['error_code'=>0,'num'=>0,'goods_info'=>[]];
|
|
$goods_info = Db::table('store_goods')
|
|
$goods_info = Db::table('store_goods')
|
|
- ->field('id,spec,stock,is_integral')
|
|
|
|
- ->where(['id'=>$goods_id,'status'=>1,'is_deleted'=>0])
|
|
|
|
|
|
+ ->field('id,spec,stock,is_integral,status,is_deleted')
|
|
|
|
+ ->where(['id'=>$goods_id])
|
|
->find();
|
|
->find();
|
|
if(empty($goods_info)){
|
|
if(empty($goods_info)){
|
|
$ret_data['error_code'] = 1;
|
|
$ret_data['error_code'] = 1;
|
|
}else{
|
|
}else{
|
|
|
|
+ if($goods_info['status'] == 0 || $goods_info['is_deleted'] == 1 ) $ret_data['error_code'] = 1;
|
|
$key= array_search($goods_no,array_column(json_decode($goods_info['spec'],true),'goods_no'));
|
|
$key= array_search($goods_no,array_column(json_decode($goods_info['spec'],true),'goods_no'));
|
|
if($key === false) $ret_data['error_code'] = 2;
|
|
if($key === false) $ret_data['error_code'] = 2;
|
|
foreach (json_decode($goods_info['spec'],true) as $c){
|
|
foreach (json_decode($goods_info['spec'],true) as $c){
|
|
@@ -219,7 +220,7 @@ class Shoppingcar extends Base
|
|
* @desc 更改购物车商品数量
|
|
* @desc 更改购物车商品数量
|
|
* @author qc
|
|
* @author qc
|
|
* @url /api/Shoppingcar/changeNum
|
|
* @url /api/Shoppingcar/changeNum
|
|
- * @method GET
|
|
|
|
|
|
+ * @method POST
|
|
* @header name:Authorization require:1 desc:Token
|
|
* @header name:Authorization require:1 desc:Token
|
|
* @param name:id type:int : default:-- desc:购物车记录id
|
|
* @param name:id type:int : default:-- desc:购物车记录id
|
|
* @param name:num type:int : default:20 desc:变更数量(减少数量是负数)
|
|
* @param name:num type:int : default:20 desc:变更数量(减少数量是负数)
|
|
@@ -234,12 +235,13 @@ class Shoppingcar extends Base
|
|
if($ck_ret['error_code'] == 2) $this->error('该规格已经下架');
|
|
if($ck_ret['error_code'] == 2) $this->error('该规格已经下架');
|
|
if( $num > 0 && ($ck_ret['num'] < $num || $ck_ret['goods_info']['stock'] < $num ) ) $this->error('库存不足');
|
|
if( $num > 0 && ($ck_ret['num'] < $num || $ck_ret['goods_info']['stock'] < $num ) ) $this->error('库存不足');
|
|
Db::startTrans();
|
|
Db::startTrans();
|
|
- if( $num + $car_info['num'] == 0){
|
|
|
|
|
|
+ if( $num + $car_info['num'] <= 0){
|
|
|
|
+ if($num + $car_info['num'] < 0) $num = $car_info['num'] * -1;
|
|
$up1 = Db::table('shopping_trolley')->where(['id'=>$id])->delete();
|
|
$up1 = Db::table('shopping_trolley')->where(['id'=>$id])->delete();
|
|
}else{
|
|
}else{
|
|
$up1 = Db::table('shopping_trolley')->where(['id'=>$id])->update(['num'=>$num + $car_info['num']]);
|
|
$up1 = Db::table('shopping_trolley')->where(['id'=>$id])->update(['num'=>$num + $car_info['num']]);
|
|
}
|
|
}
|
|
- // 商品规格详情
|
|
|
|
|
|
+ // 更新商品库存
|
|
$up2 = update_goods_stock($car_info['goods_id'],$car_info['goods_no'],$num);
|
|
$up2 = update_goods_stock($car_info['goods_id'],$car_info['goods_no'],$num);
|
|
if(!$up1 || !$up2) {
|
|
if(!$up1 || !$up2) {
|
|
Db::rollback();
|
|
Db::rollback();
|
|
@@ -268,17 +270,8 @@ class Shoppingcar extends Base
|
|
Db::startTrans();
|
|
Db::startTrans();
|
|
$car_info =Db::table('shopping_trolley')->where(['user_id'=>$this->uid,'id'=>$id])->find();
|
|
$car_info =Db::table('shopping_trolley')->where(['user_id'=>$this->uid,'id'=>$id])->find();
|
|
$ck_ret = $this->checkGoods($car_info['goods_id'],$car_info['goods_no']);
|
|
$ck_ret = $this->checkGoods($car_info['goods_id'],$car_info['goods_no']);
|
|
- if($ck_ret['error_code'] == 0) {
|
|
|
|
- // 商品规格详情
|
|
|
|
- $spec = json_decode($ck_ret['goods_info']['spec'],true);
|
|
|
|
- foreach ($spec as &$pv) {
|
|
|
|
- if($pv['goods_no'] == $car_info['goods_no']) {
|
|
|
|
- $pv['store_num']+=$car_info['num'];// 追加库存
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- // 更新商品库存
|
|
|
|
- $up2 = Db::table('store_goods')->where(['id'=>$car_info['goods_id']])
|
|
|
|
- ->update(['stock'=>$ck_ret['goods_info']['stock']+$car_info['num'],'spec'=>json_encode($spec)]);
|
|
|
|
|
|
+ if(!$ck_ret['error_code'] != 2) {
|
|
|
|
+ $up2 = update_goods_stock($car_info['goods_id'],$car_info['goods_no'],$car_info['num']*-1);
|
|
}else{
|
|
}else{
|
|
$up2 = true;
|
|
$up2 = true;
|
|
}
|
|
}
|