1,'num'=>2],['goods_id'=>2,'num'=>5]] * @return bool */ public function compute($type, $user_id,$goods_arr) { $where = ['goods_id' => array_column($goods_arr,'goods_id'), 'mall_id' => $this->mall_id, 'is_buhuo' => 1, 'status' => StatusEnum::ENABLED]; if($type == 1){ $where['is_peihuo'] = 1; } $cloud_stock_goods_list = CloudStockGoods::find()->where($where)->asArray()->all(); if (empty($cloud_stock_goods_list)) { return true; } $coupon_goods = []; $goods_arr = array_column($goods_arr,null,'goods_id'); foreach ($cloud_stock_goods_list as $item){ $coupon_goods[] = [ 'goods_id'=>$item['goods_id'], 'num'=>$goods_arr[$item['goods_id']]['num'], ]; } $cloud_stock_agent = CloudStockAgent::getOne([ ['user_id' => $user_id], ['mall_id' => $this->mall_id], ['status' => StatusEnum::ENABLED], ]); $coupon_data = CouponSetting::getGiveCoupon($this->mall_id,$coupon_goods,$cloud_stock_agent['level']); if(empty($coupon_data)) return true; $give_arr = []; foreach ($coupon_data as $item){ if($item['give_num'] <= 0) continue; foreach ($item['coupon_arr'] as $coupon){ if(isset($give_arr[$coupon['coupon_id']])){ $give_arr[$coupon['coupon_id']] += $coupon['num'] * $item['give_num']; }else{ $give_arr[$coupon['coupon_id']] = $coupon['num'] * $item['give_num']; } } } if(empty($give_arr)) return true; $res = AddonsCouponUserRelate::giveCoupon($this->mall_id, $user_id, $give_arr, AddonsCouponEnum::SEND_FROM20); if($res === false) Yii::error(AddonsCouponUserRelate::getStaticError()); return true; } }