Exemplo n.º 1
0
 /**
  * 添加特权商品
  */
 public function addSpecial($data)
 {
     $data['star'] = isset($data['star']) ? $data['star'] : 50;
     $data = $this->formatProduct($data);
     $data = $this->formatSpecial($data);
     $cate2 = 0;
     //给最下面的队列使用
     $comname = '';
     $is_op = 1;
     $comInfo = ComService::getInstance()->getComBySupid($data['supid']);
     if ($comInfo['code'] == 200 and is_array($comInfo['data'])) {
         $cate2 = $comInfo['data']['cate2'];
         $comname = $comInfo['data']['comname'];
         $is_op = $comInfo['data']['is_op'];
         if ($data['is_op'] == 1) {
             if ($is_op == 0) {
                 $data['is_op'] = 0;
             }
         }
     }
     //特权商品需要把品牌存到临时品牌商品关系表里,同时主表brand置0
     if ($is_op == 0) {
         $brand = $data['brand'];
         $data['brand'] = 0;
     }
     $this->di['gcproinfo']->begin();
     $obj = new Pdspecialpro();
     $obj->protype = $data['protype'];
     $obj->cid = $data['cid'];
     $obj->supid = $data['supid'];
     $obj->proname = $data['proname'];
     $obj->brand = $data['brand'];
     $obj->prokey = $data['prokey'];
     $obj->pricetype = $data['pricetype'];
     $obj->minprice = $data['minprice'];
     $obj->maxprice = $data['maxprice'];
     $obj->siteprice = $data['siteprice'];
     $obj->addtime = time();
     $obj->uptime = time();
     $obj->star = $data['star'];
     $obj->cate1 = $data['cate1'];
     $obj->cate2 = $data['cate2'];
     $obj->cate3 = $data['cate3'];
     $obj->cate4 = $data['cate4'];
     $obj->cate5 = $data['cate5'];
     $obj->property = isset($data['property']) ? json_encode($data['property'], JSON_UNESCAPED_UNICODE) : '';
     $obj->userproperty = isset($data['userproperty']) ? json_encode($data['userproperty'], JSON_UNESCAPED_UNICODE) : '';
     $obj->unit = $data['unit'];
     $obj->is_att = isset($data['pic']) ? 1 : 0;
     $obj->picurl = json_encode($data['pic']);
     $obj->state = $data['state'];
     $obj->relapid = $data['relapid'];
     $obj->ratio = $data['ratio'];
     $obj->is_op = $data['is_op'];
     $obj->is_scheme = $data['is_scheme'];
     $re1 = $obj->save();
     if ($re1 == false) {
         $this->di['gcproinfo']->rollback('产品基本信息插入失败');
         return $this->outputData(false, '600', '产品基本信息插入失败');
     }
     if (empty($obj->pid)) {
         $this->di['gcproinfo']->rollback('产品基本信息插入失败');
         return $this->outputData(false, '600', '产品基本信息插入失败');
     }
     $data['pid'] = $obj->pid;
     if (!empty($data['id']) and $data['state'] == 1) {
         $this->di['gcsupplier']->begin();
         $temp = Mspecialpro::findFirst(array("conditions" => 'id=:id: and cid=:cid:', "bind" => array('id' => $data['id'], 'cid' => $data['cid'])));
         if ($temp != false) {
             $name = isset($data['name']) ? $data['name'] : 'sys';
             $temp->checktime = time();
             $temp->name = $name;
             $temp->state = -7;
             $re5 = $temp->save();
             if ($re5 == false) {
                 $this->di['gcsupplier']->rollback('M表产品删除失败');
                 return $this->outputData(false, '600', 'M表产品删除失败');
             } else {
                 //删除索引
                 UserSearchService::getInstance()->deleteMSpecial((int) $data['id'], (int) $data['cid']);
                 $this->di['gcsupplier']->commit();
             }
         }
     }
     $this->di['gcproinfo']->commit();
     //特权商品需要把品牌存到临时品牌商品关系表里
     if ($is_op == 0) {
         SupTmpBrandService::getInstance()->addProToBrand($data['pid'], $brand);
     }
     if ($data['is_op'] == 1) {
         //统计4.0的商品添加  马杰超
         OpSupService::getInstance()->addStatic($data['cate3'], $data['supid'], 1);
     }
     //保存商品详情
     $rabbit = new RabbitMQ($this->di['config']->rabbitmq_write->toArray());
     $rabbit->setBroadcast('v3prodesc', 'prodesc', json_encode(array('pid' => $data['pid'], 'cid' => $data['cid'], 'cname' => $comname, 'prodesc' => $data['prodesc'], 'cateid' => array($data['cate1'], $data['cate2'], $data['cate3'], $data['cate4'], $data['cate5']), 'table' => 'product', 'op' => 'insert')));
     if ($data['state'] == 1) {
         $data['type'] = 'add';
         $data['com_cate2'] = $cate2;
         $rabbit->set('v3work', 'specialattached', json_encode($data), 'mysql');
     }
     $this->sphinxNotice($data['pid'], 1);
     return $this->outputData($data['pid']);
 }