'ID', 'mall_id' => 'Mall ID', 'goods_id' => 'Goods ID', 'level' => 'Level', 'coupon_setting' => 'Coupon Setting', 'num' => 'Num', 'status' => 'Status', 'created_at' => 'Created At', 'updated_at' => 'Updated At', ]; } public static function setData($params, $data) { try{ $level_arr = array_column($data,'level'); self::updateAll(['status'=>StatusEnum::DELETE],[ 'and', ['goods_id'=>$params['goods_id']], ['mall_id'=>$params['mall_id']], ['not in','level',$level_arr], ]); foreach ($data as $item) { if(empty($item['multiple_selection']) == false){ foreach ($item['multiple_selection'] as $key=>$select){ $item['multiple_selection'][$key] = [ 'coupon_id'=>$select['relevant_id'], 'num'=>$select['num'], ]; } }else{ $item['coupon_setting'] = ''; } $item['coupon_setting'] = empty($item['multiple_selection'])?'':json_encode($item['multiple_selection']); unset($item['multiple_selection']); $model = self::findOne([ 'mall_id' => $params['mall_id'], 'level' => $item['level'], 'goods_id' => $params['goods_id'], 'status' => [StatusEnum::ENABLED] ]); if (empty($model)) { $model = new self(); $model->mall_id = $params['mall_id']; $model->goods_id = $params['goods_id']; $model->loadDefaultValues(); } if(!$model->load($item,'') || !$model->save()){ throw new \Exception($model->getErrorMessage()); } } return true; }catch(\Exception $e){ self::$static_error = $e->getMessage(); return false; } } /** * 获取能赠送的优惠券 * @param $mall_id * @param array $goods_arr [['goods_id'=>1,'num'=>2],['goods_id'=>2,'num'=>5]] * @param $level * @return array */ public static function getGiveCoupon($mall_id,$goods_arr = [],$level){ if(empty($goods_arr)) return []; $return = []; $setting_data = self::getSettingData($mall_id,array_column($goods_arr,'goods_id'),$level); foreach ($goods_arr as $item){ $setting = $setting_data[$item['goods_id']]; $coupon_arr = []; if(empty($setting['rule']) == false){ foreach ($setting['rule'] as $rule){ $coupon_arr[] = [ 'name'=>$rule['name'], 'coupon_id'=>$rule['coupon_id'], 'num'=>$rule['num'], ]; } $return[$item['goods_id']]['coupon_arr'] = $coupon_arr; $return[$item['goods_id']]['rule_num'] = $setting['num']; $return[$item['goods_id']]['give_num'] = floor($item['num']/$setting['num']); $return[$item['goods_id']]['bug_num'] = $item['num']; } } return $return; } /** * 获取能赠送的优惠券 * @param $mall_id * @param array $goods_id_arr * @param $level * @return array */ public static function getSettingData($mall_id,$goods_id_arr = [],$level){ // 获取配置 $result = self::find()->where([ 'mall_id' => $mall_id,'goods_id' => $goods_id_arr,'level' => $level,'status' => StatusEnum::ENABLED])->asArray()->all(); $return = []; if(empty($result) == false){ foreach ($result as $item) { $return[$item['goods_id']]['num'] = $item['num']; $item['coupon_setting'] = $item['coupon_setting']?json_decode($item['coupon_setting'],true):[]; if(empty($item['coupon_setting']) == false){ $coupon_list = array_column($item['coupon_setting'],null,'coupon_id'); $params = []; $params['where'][] = ['mall_id' => $mall_id]; $params['where'][] = ['status' => [StatusEnum::ENABLED]]; $params['where'][] = ['coupon_status' => [AddonsCouponEnum::STATUS_RECEIVING]]; $params['where'][] = ['in','id',array_keys($coupon_list)]; $params['where'][] = ['or', ['=', 'total_count', -1], ['>', 'total_count', 'receive'], ]; $params['order'] = 'sort asc,id desc'; $params['select'] = 'id,name,type,discount,min_price,sub_price,expire_type,expire_day,begin_at,end_at,status,total_count'; $list = AddonsCoupon::lists($params); if(empty($list) == false){ foreach ($list as $coupon){ $return[$item['goods_id']]['rule'][] = [ 'discount_method' => $coupon['type'] == 1 ? $coupon['discount'] . '折' : $coupon['sub_price'] . '元', 'name' => $coupon['name'], 'num' => $coupon_list[$coupon['id']]['num'], 'coupon_id' => $coupon['id'], ]; } } } } } return $return; } }