示例#1
0
 /**
  * 根据规格ID获取商品规格
  *
  * @param integer $attribute_id
  * @return array
  */
 public static function get($attribute_id)
 {
     $attribute = AttributeService::get_instance()->get($attribute_id);
     $attribute = coding::decode_attribute($attribute);
     $options = Attribute_valueService::get_instance()->index(array('where' => array('attribute_id' => $attribute['id']), 'orderby' => 'order'));
     $attribute['options'] = array();
     foreach ($options as $option) {
         unset($option['attribute_id']);
         unset($option['order']);
         $attribute['options'][$option['id']] = $option;
     }
     return $attribute;
 }
示例#2
0
 /**
  * 根据 WHERE 条件获取商品特性列表
  *
  * @param array $where
  * @return array
  */
 public static function index($where)
 {
     $features = array();
     $feature_arr = AttributeService::get_instance()->index(array('where' => $where, 'orderby' => 'order'));
     foreach ($feature_arr as $feature) {
         $feature = coding::decode_feature($feature);
         $feature['options'] = array();
         $features[$feature['id']] = $feature;
     }
     if (!empty($features)) {
         $options = Attribute_valueService::get_instance()->index(array('where' => array('attribute_id' => array_keys($features)), 'orderby' => 'order'));
         foreach ($options as $option) {
             //$option = coding::decode_featureoption($option);
             $featid = $option['attribute_id'];
             unset($option['attribute_id']);
             unset($option['order']);
             $features[$featid]['options'][$option['id']] = $option;
         }
     }
     return $features;
 }
示例#3
0
 /** 
  * 根据 classify_id 获取关联的规格及规格项 
  * 
  * @param  int $classify_id 
  * @return array 
  * @throws MyRuntimeException 
  */
 public function get_attribute_options_by_classify_id($classify_id, $apply = NULL)
 {
     $return_array = array();
     try {
         /* 判断 classify 是否存在 
            $classify = $this->get($classify_id);
            if(!$classify){
                throw new MyRuntimeException('Object not found.', 500);
            }*/
         // 获取关联表数据
         $attribute_ids = $this->get_attribute_ids_by_classify_id($classify_id, $apply);
         if ($attribute_ids) {
             // 获取所有关联的attribute
             $query_struct = array('where' => array('id' => $attribute_ids), 'orderby' => array('id' => 'ASC'));
             $attributes = AttributeService::get_instance()->query_assoc($query_struct);
             // 每个ID必须都是有效的
             if (count($attributes) != count($attribute_ids)) {
                 throw new MyRuntimeException('Internal error.', 500);
             }
             // 组装返回数组
             foreach ($attributes as $attribute) {
                 //$attribute = coding::decode_attribute($attribute);
                 $attribute['options'] = array();
                 $return_array[$attribute['id']] = $attribute;
             }
             // 获取关联项
             $query_struct = array('where' => array('attribute_id' => $attribute_ids));
             $attributeoptions = Attribute_valueService::get_instance()->query_assoc($query_struct);
             foreach ($attributeoptions as $attributeoption) {
                 //$attributeoption = coding::decode_attributeoption($attributeoption);
                 $attribute_id = $attributeoption['attribute_id'];
                 $return_array[$attribute_id]['options'][$attributeoption['id']] = $attributeoption;
             }
         }
         return $return_array;
     } catch (MyRuntimeException $ex) {
         throw $ex;
     }
 }
示例#4
0
 /**
  * 通过 attribute_id获取该 attribute之下所有的 attributeoption
  * @param  int $attribute_id 规格ID
  * @return array
  * @throws MyRuntimeException
  */
 public function get_attributeoptions_by_attribute_id($attribute_id)
 {
     $return_array = array();
     $request_struct = array('where' => array('attribute_id' => $attribute_id), 'orderby' => array('order' => 'ASC', 'id' => 'ASC'));
     $result = Attribute_valueService::get_instance()->query_assoc($request_struct);
     if (!empty($result)) {
         foreach ($result as $key => $val) {
             $val = coding::decode_attributeoption($val);
             $return_array[$val['id']] = $val;
         }
     }
     return $return_array;
 }
示例#5
0
 public function option_relation_data()
 {
     role::check('product_attribute_delete');
     $return_struct = array('status' => 0, 'code' => 501, 'msg' => 'Not Implemented', 'content' => array());
     try {
         //* 初始化返回数据 */
         $return_data = array();
         //* 收集请求数据 ==根据业务逻辑定制== */
         $request_data = $this->input->get();
         //必须为ajax请求
         if (!$this->is_ajax_request()) {
             throw new MyRuntimeException(Kohana::lang('o_global.bad_request'), 404);
         }
         //数据验证
         if (!isset($request_data['option_id']) || !is_numeric($request_data['option_id'])) {
             throw new MyRuntimeException(Kohana::lang('o_global.input_error'), 404);
         }
         // 调用服务
         $attributeoption_service = Attribute_valueService::get_instance();
         if ($attributeoption_service->is_relation_by_attributeoption_id($request_data['option_id'])) {
             throw new MyRuntimeException('该规格已被关联,请取消关联之后重试!', 500);
         }
         $attributeoption_service->delete_by_attribute_value_id($request_data['option_id']);
         //* 补充&修改返回结构体 */
         $return_struct['status'] = 1;
         $return_struct['code'] = 200;
         $return_struct['msg'] = Kohana::lang('o_global.delete_success');
         $return_struct['content'] = $return_data;
         //* 请求类型 */
         if ($this->is_ajax_request()) {
             // ajax 请求
             // json 输出
             $this->template->content = $return_struct;
         } else {
             throw new MyRuntimeException(Kohana::lang('o_global.bad_request'), 404);
         }
         // end of request type determine
     } catch (MyRuntimeException $ex) {
         $this->_ex($ex, $request_data, $return_struct);
     }
 }