Example #1
0
 /**
  * [updateItem 商品编辑]
  * @return [type] [description]
  */
 public function updateItem($data)
 {
     $data['goods_promote_start'] = strtotime($data['goods_promote_start']);
     $data['goods_promote_end'] = strtotime($data['goods_promote_end']);
     $data['goods_start'] = strtotime($data['goods_start']);
     $data['goods_end'] = strtotime($data['goods_end']);
     //统计所有组合的商品数量及可卖数(未修改不更新)
     if (!empty($data['attr_ids'])) {
         $len = count($data['attr_ids']);
         $data['goods_nums'] = $data['goods_virtual_sales'] = 0;
         for ($i = 0; $i < $len; $i++) {
             $data['goods_nums'] += $data['g_attr_stocks'][$i];
             if ($data['g_attr_nums'][$i]) {
                 $data['goods_virtual_sales'] += $data['g_attr_nums'][$i];
             } else {
                 $data['goods_virtual_sales'] += $data['g_attr_stocks'][$i];
             }
         }
         //商品(父)属性组合ID
         foreach ($data['goods-attrs'] as $key => $val) {
             if ($key == 0) {
                 $data['goods_attrs'] = $val;
             } else {
                 $data['goods_attrs'] .= ',' . $val;
             }
         }
         //操作是属性表的数据
         $dataAttrs['gac_attr'] = $data['gac_attr'];
         $dataAttrs['attr_ids'] = $data['attr_ids'];
         $dataAttrs['g_attr_barcode'] = $data['g_attr_barcode'];
         $dataAttrs['g_attr_stocks'] = $data['g_attr_stocks'];
         $dataAttrs['g_attr_enable'] = $data['g_attr_enable'];
         $dataAttrs['g_attr_nums'] = $data['g_attr_nums'];
         unset($data['goods-attrs']);
         unset($data['gac_attr']);
         unset($data['attr_ids']);
         unset($data['g_attr_barcode']);
         unset($data['g_attr_stocks']);
         unset($data['g_attr_enable']);
         unset($data['g_attr_nums']);
         if (isset($data['upfile'])) {
             unset($data['upfile']);
         }
     } else {
         //不更改商品组合属性,此字段不更新
         unset($data['goods-attrs']);
         unset($data['gac_attr']);
         unset($data['g_attr_enable']);
     }
     //获取商品部分信息
     $goodsInfo = $this->item->getGoodsInfo($data['goods_id']);
     //商品列表图片处理
     $config = $this->di->get('sysconfig');
     $upload = new ImgUpload($this->di);
     if (!empty($_FILES['goods_img']['tmp_name'])) {
         $pic = $upload->upload_file($_FILES['goods_img'], $config['goodsImg'], 'item-list-original-' . $data['goods_id'], 'item-list-thumb-' . $data['goods_id'], 200, 200, 100, 100);
         //抛出报错情况
         if ($upload->errmsg) {
             echo $upload->errmsg;
             return self::ERROR;
         }
         $data['goods_img'] = $config['staticServer'] . $config['goodsImgAccess'] . '/' . $pic;
     }
     //商品缩略图片处理
     if (!empty($_FILES['goods_pics']['tmp_name'][0])) {
         $imgNum = count($_FILES['goods_pics']['tmp_name']);
         $thumbImg = array();
         for ($i = 0; $i < $imgNum; $i++) {
             if ($_FILES['goods_pics']['tmp_name'][$i]) {
                 $tmpPicArr['name'] = $_FILES['goods_pics']['name'][$i];
                 $tmpPicArr['type'] = $_FILES['goods_pics']['type'][$i];
                 $tmpPicArr['tmp_name'] = $_FILES['goods_pics']['tmp_name'][$i];
                 $tmpPicArr['error'] = $_FILES['goods_pics']['error'][$i];
                 $tmpPicArr['size'] = $_FILES['goods_pics']['size'][$i];
                 $tmpPicThumb = $upload->upload_file($tmpPicArr, $config['goodsThumb'], 'item-original-' . $data['goods_id'] . '-' . $i, 'item-thumb-' . $data['goods_id'] . '-' . $i, 596, 359, 64, 64);
                 //抛出报错情况
                 if ($upload->errmsg) {
                     echo $upload->errmsg;
                     return self::ERROR;
                 }
                 array_push($thumbImg, $config['staticServer'] . $config['goodsThumbAccess'] . '/' . $tmpPicThumb);
             }
         }
         //拼接原有的数据
         if ($goodsInfo['goods_pics']) {
             $data['goods_pics'] = $goodsInfo['goods_pics'] . ',' . implode(',', $thumbImg);
         } else {
             $data['goods_pics'] = implode(',', $thumbImg);
         }
     }
     if (empty($data['goods_img'])) {
         unset($data['goods_img']);
     }
     if (empty($data['goods_pics'][0])) {
         unset($data['goods_pics']);
     }
     //处理商品属性表
     $this->di['db']->begin();
     //处理商品标签表
     if (!empty($data['goods_tags'])) {
         $tags = explode(',', $data['goods_tags']);
     } else {
         $tags = [];
     }
     //扣除之前商品对应标签字段包含的标签id -1
     //若是已删除的商品不需要扣除
     if ($goodsInfo['goods_status'] && rtrim($goodsInfo['goods_tags'])) {
         if (!$this->tags->subTagsNums(rtrim($goodsInfo['goods_tags'], ','))) {
             $this->di['db']->rollback();
             return self::ERROR;
         }
     }
     //插入标签表不存在的标签,并返回所有的商品标签id
     $len = count($tags);
     $googsTags = array();
     if ($len) {
         for ($i = 0; $i < $len; $i++) {
             if ($i == 5) {
                 break;
             } else {
                 //判断标签是否存在
                 $ex = $this->tags->getTagsIdByName($tags[$i]);
                 if ($ex) {
                     //数量加1
                     if ($this->tags->addTagsNums($ex['tags_id'])) {
                         array_push($googsTags, $ex['tags_id']);
                     } else {
                         $this->di['db']->rollback();
                         return self::ERROR;
                     }
                 } else {
                     if ($tmpTagsId = $this->tags->addTags($tags[$i])) {
                         array_push($googsTags, $tmpTagsId);
                     } else {
                         $this->di['db']->rollback();
                         return self::ERROR;
                     }
                 }
             }
         }
         $data['goods_tags'] = implode(',', $googsTags) . ',';
     } else {
         $data['goods_tags'] = '';
     }
     if ($this->item->updateGoods($data)) {
         if (!empty($dataAttrs)) {
             //删除good_attrs good_ga_cate 对应的商品id数据
             if (!$this->item->delAttrCateByGoodsId($data['goods_id'])) {
                 $this->di['db']->rollback();
                 return self::ERROR;
             }
             //添加组合商品各属性
             if ($this->item->addGoodsAttrs($data['goods_id'], $dataAttrs['attr_ids'], $dataAttrs['g_attr_barcode'], $dataAttrs['g_attr_stocks'], $dataAttrs['g_attr_enable'], $dataAttrs['g_attr_nums'])) {
                 if (!$this->item->addGaCate($data['goods_id'], $dataAttrs['gac_attr'])) {
                     $this->di['db']->rollback();
                     return self::ERROR;
                 }
             } else {
                 $this->di['db']->rollback();
                 return self::ERROR;
             }
         }
         $this->redis->del('attr:' . $data['goods_id']);
         //清除商品信息缓存
         $arr = $this->redis->keys("item:{$data['goods_id']}*");
         foreach ($arr as $val) {
             $this->redis->del($val);
         }
         $this->di['db']->commit();
         return self::SUCCESS;
     } else {
         $this->di['db']->rollback();
         return self::ERROR;
     }
 }
 /**
  * [ajax 上传图片]
  */
 public function uploadImgAction()
 {
     if (!$this->validFlag) {
         echo json_encode(array('ret' => 0, 'msg' => $this->warnMsg));
     } else {
         if ($this->_sanReq['fileInput'] == 1) {
             $inputName = 'img-evi';
         } else {
             $inputName = 'add-img-evi';
         }
         $upload = new ImgUpload($this->di);
         $pic = '';
         if (isset($_FILES[$inputName]) && $_FILES[$inputName]['tmp_name']) {
             $imgInfo = getimagesize($_FILES[$inputName]['tmp_name']);
             $pic = $upload->upload_file($_FILES[$inputName], $this->sysconfig['supportImgDir'], 'original_' . $this->uid, 'thumb_' . $this->uid, $imgInfo[0], $imgInfo[1], 90, 90);
             if ($upload->errmsg) {
                 echo json_encode(array('ret' => 0, 'msg' => $this->sysconfig['flagMsg'][self::MSG_UPLOAD_INVALID]));
                 $this->view->disable();
                 return;
             }
         }
         if ($pic) {
             $dir = pathinfo($pic)['dirname'];
             if (!empty($this->_sanReq['picPath'])) {
                 $pDir = explode('/', $this->_sanReq['picPath'])[0];
                 $this->delDir($this->sysconfig['supportImgPath'] . '/' . $pDir);
             }
             echo json_encode(array('ret' => 1, 'imgUrl' => $this->sysconfig['staticServer'] . $this->sysconfig['supportImgAccess'] . '/' . $pic, 'path' => $dir));
         } else {
             echo json_encode(array('ret' => 0, 'msg' => '图片上传失败'));
         }
     }
     $this->view->disable();
     return;
 }