Example #1
0
 /**
  * 通过商品类型ID获取商品类型所关联的商品品牌
  *
  * @param integer $classify_id
  * @return array
  */
 public static function get_clsbrdrs($classify_id = 0)
 {
     $brands = $query_struct = array();
     if ($classify_id > 0) {
         $query_struct_relation = array('where' => array('classify_id' => $classify_id));
         $brand_ids = array();
         $records = Classify_brand_relationService::get_instance()->index($query_struct_relation);
         foreach ($records as $record) {
             if (!in_array($record['brand_id'], $brand_ids)) {
                 $brand_ids[] = $record['brand_id'];
             }
         }
         if (!empty($brand_ids)) {
             $query_struct = array('where' => array('id' => $brand_ids), 'orderby' => array('name' => 'ASC'));
         }
     }
     $brands = BrandService_Core::get_instance()->index($query_struct);
     return $brands;
 }
Example #2
0
 /**
  * 通过brand_id 判断该 brand当前是否正在被关联
  * @param $brand_id  int
  * @return bool
  */
 public function is_relation_by_brand_id($brand_id)
 {
     $query_struct = array('where' => array('brand_id' => $brand_id));
     if (ProductService::get_instance()->count($query_struct)) {
         return true;
     }
     if (Classify_brand_relationService::get_instance()->count($query_struct)) {
         return true;
     }
     return false;
 }
Example #3
0
 /** 
  * 根据 类型ID数组批量删除类型 
  * @param $categorys  array 
  * @return void 
  * @throws MyRuntimeException 
  */
 public function delete_classifies($classifies)
 {
     try {
         $del_all = TRUE;
         if (!empty($classifies)) {
             foreach ($classifies as $val) {
                 $query_struct = array('where' => array('classify_id' => $val));
                 if (CategoryService::get_instance()->count($query_struct)) {
                     $del_all = FALSE;
                 }
                 if ($del_all === TRUE and ProductService::get_instance()->count($query_struct) > 0) {
                     $del_all = FALSE;
                 }
                 if ($del_all === TRUE) {
                     $where = array('classify_id' => $val);
                     Classify_brand_relationService::get_instance()->delete_relations($where);
                     Classify_attribute_relationService::get_instance()->delete_relations($where);
                     //Classify_feature_relationService::get_instance()->delete_relations($where);
                     $this->remove($val);
                 }
             }
             if (!$del_all) {
                 throw new MyRuntimeException('无法删除部分被关联的类型', 500);
             }
         }
     } catch (MyRuntimeException $ex) {
         throw $ex;
     }
 }
Example #4
0
 public function put()
 {
     role::check('product_classify_add');
     $return_struct = array('status' => 0, 'code' => 501, 'msg' => 'Not Implemented', 'content' => array());
     try {
         //* 初始化返回数据 */
         $return_data = array();
         //* 收集请求数据 ==根据业务逻辑定制== */
         $request_data = $this->input->post();
         $request_data = trims::run($request_data);
         //标签过滤
         tool::filter_strip_tags($request_data);
         //数据验证
         $validResult = Validation::factory($request_data)->pre_filter('trim')->add_rules('name', 'required', 'length[1,100]');
         if ($validResult->validate() == FALSE) {
             //* 输出错误的具体信息 ==根据业务逻辑定制== */
             $return_struct['content']['errors'] = $validResult->errors();
             throw new MyRuntimeException(Kohana::lang('o_global.input_error'), 400);
         }
         //执行添加
         $set_data = array();
         $set_data['name'] = $request_data['name'];
         $set_data['alias'] = $request_data['alias'];
         $set_data['create_timestamp'] = time();
         $set_data['update_timestamp'] = time();
         // 调用底层服务
         $classify_service = ClassifyService::get_instance();
         //判断name是否存在
         if ($classify_service->check_exist_name($set_data['name'])) {
             throw new MyRuntimeException(Kohana::lang('o_product.product_classify_exist'), 409);
         }
         //类型的参数处理
         $this->get_arguments($request_data, $set_data);
         $return_data['classify_id'] = $classify_service->add($set_data);
         if (!$return_data['classify_id']) {
             throw new MyRuntimeException(Kohana::lang('o_global.bad_request'), 500);
         }
         //相关品牌添加
         if (isset($request_data['brand_id']) && is_array($request_data['brand_id'])) {
             foreach ($request_data['brand_id'] as $key => $val) {
                 $set_data = array();
                 $set_data['classify_id'] = $return_data['classify_id'];
                 $set_data['brand_id'] = $val;
                 if (isset($request_data['brand_show'][$val])) {
                     $set_data['is_show'] = $request_data['brand_show'][$val];
                 }
                 $result = Classify_brand_relationService::get_instance()->add($set_data);
                 if (!$result) {
                     throw new MyRuntimeException(Kohana::lang('o_global.bad_request'), 500);
                 }
             }
         }
         //相关规格添加
         if (isset($request_data['attribute_id']) && is_array($request_data['attribute_id'])) {
             foreach ($request_data['attribute_id'] as $val) {
                 $set_data = array();
                 $set_data['type'] = AttributeService::ATTRIBUTE_SPEC;
                 $set_data['classify_id'] = $return_data['classify_id'];
                 $set_data['attribute_id'] = $val;
                 if (isset($request_data['attribute_show'][$val])) {
                     $set_data['is_show'] = $request_data['attribute_show'][$val];
                 }
                 $result = Classify_attribute_relationService::get_instance()->add($set_data);
                 if (!$result) {
                     throw new MyRuntimeException(Kohana::lang('o_global.bad_request'), 500);
                 }
             }
         }
         //相关特性添加
         if (isset($request_data['feature_id']) && is_array($request_data['feature_id'])) {
             foreach ($request_data['feature_id'] as $val) {
                 $set_data = array();
                 $set_data['type'] = AttributeService::ATTRIBUTE_FEATURE;
                 $set_data['classify_id'] = $return_data['classify_id'];
                 $set_data['attribute_id'] = $val;
                 if (isset($request_data['feature_show'][$val])) {
                     $set_data['is_show'] = $request_data['feature_show'][$val];
                 }
                 $result = Classify_attribute_relationService::get_instance()->add($set_data);
                 if (!$result) {
                     throw new MyRuntimeException(Kohana::lang('o_global.bad_request'), 500);
                 }
             }
         }
         //* 补充&修改返回结构体 */
         $return_struct['status'] = 1;
         $return_struct['code'] = 200;
         $return_struct['msg'] = '添加成功';
         $return_struct['content'] = $return_data;
         $return_struct['action'] = array('type' => 'location', 'url' => url::base() . 'product/' . $this->class_name . '/' . 'index');
         //* 请求类型 */
         if ($this->is_ajax_request()) {
             // ajax 请求
             // json 输出
             $this->template->content = $return_struct;
         } else {
             // html 输出
             $this->template->return_struct = $return_struct;
             $content = new View('info');
             $this->template->content = $content;
             //* 请求结构数据绑定 */
             $this->template->content->request_data = $request_data;
             //* 返回结构体绑定 */
             $this->template->content->return_struct = $return_struct;
         }
         // end of request type determine
     } catch (MyRuntimeException $ex) {
         $this->_ex($ex, $return_struct, $request_data);
     }
 }