예제 #1
0
 function keyword_account()
 {
     $word = IFilter::act(IReq::get('id'));
     $result = keywords::count($word);
     if ($result === false) {
         $this->redirect('keyword_list', false);
         Util::showMessage('请选择要同步的关键词');
     } else {
         $keywordObj = new IModel('keyword');
         foreach ($result as $word => $num) {
             $dataArray = array('goods_nums' => $num);
             $keywordObj->setData($dataArray);
             $keywordObj->update('word = "' . $word . '"');
         }
         $this->redirect('keyword_list');
     }
 }
예제 #2
0
 public function executeSaveImages(sfWebRequest $request)
 {
     $data = $request->getPostParameter("stuff");
     //Sent from AJAX.
     if (!empty($data)) {
         $data = json_decode($data);
         //Decode from JSON to PHP array
         $color = $data->color;
         //eg, "red"
         $keywords = $data->keywords;
         //eg, "unicorns"
         $images = $data->images;
         // Array of URLs
         $keyword = new keywords();
         //MySQL INSERT.
         $keyword->setKeyword($keywords);
         $keyword->save();
         //Query executed
         $keyword_identifier = $keyword->identifier();
         $keyword_id = $keyword_identifier["id"];
         //$keyword->identifier()["id"]; not possible :(
         foreach ($images as $image_url) {
             $image = new images();
             //MySQL INSERT
             $image->setColor($color);
             //All images have the same $color and $keywords.
             $image->setUrl($image_url);
             $image->save();
             //Query executed
             $image_identifier = $image->identifier();
             $image_id = $image_identifier["id"];
             $image_keyword_relationship = new image_keyword_map();
             $image_keyword_relationship->setKeywordId($keyword_id);
             $image_keyword_relationship->setImageId($image_id);
             $image_keyword_relationship->save();
             //Query executed
         }
     }
 }
예제 #3
0
 /**
  * @brief 保存修改商品信息
  */
 function goods_update()
 {
     //获得post的数据
     $goods_id = IFilter::act(IReq::get('goods_id'), 'int');
     $goods_name = IFilter::act(IReq::get('goods_name'));
     $goods_category = IReq::get('goods_category');
     $goods_model = IFilter::act(IReq::get('goods_model'), 'int');
     $goods_brand = IFilter::act(IReq::get('goods_brand'), 'int');
     $goods_status = IFilter::act(IReq::get('goods_status'), 'int');
     $goods_notes = IFilter::act(IReq::get('goods_notes'));
     $goods_from = IFilter::act(IReq::get('goods_from'));
     $goods_sellernick = IFilter::act(IReq::get('goods_sellernick'));
     $goods_commission = IFilter::act(IReq::get('goods_commission'), 'float');
     $goods_url = IFilter::act(IReq::get('goods_url'));
     $goods_img = IFilter::act(IReq::get('goods_img'));
     $list_img = IFilter::act(IReq::get('list_img'));
     $show_img = IFilter::act(IReq::get('small_img'));
     $sell_price = IFilter::act(IReq::get('sell_price'), 'float');
     $market_price = IFilter::act(IReq::get('market_price'), 'float');
     $discount = IFilter::act(IReq::get('discount'), 'float');
     $store_nums = IFilter::act(IReq::get('store_nums'), 'int');
     $weight = IFilter::act(IReq::get('weight'), 'float');
     $store_unit = IFilter::act(IReq::get('store_unit'));
     $content = IFilter::act(IReq::get('content'), 'text');
     $seo_keywords = IReq::get('seo_keywords');
     $seo_description = IReq::get('seo_description');
     $point = IFilter::act(IReq::get('point'), 'int');
     $exp = IFilter::act(IReq::get('exp'), 'int');
     $sort = IFilter::act(IReq::get('sort'));
     $focus_photo = IFilter::act(IReq::get('focus_photo'));
     $goods_no = IFilter::act(IReq::get('goods_no'));
     $keywords_for_search = IFilter::act(IReq::get('keywords_for_search'));
     $tb_goods = new IModel('goods');
     if (!$goods_no) {
         //如用户没有输入商品货号,则默认货号
         $goods_no = Block::goods_no($goods_id);
     } else {
         $goods_info = $tb_goods->query("goods_no='" . $goods_no . "'");
         $flag = 2;
         if (count($goods_info) > 0) {
             if (count($goods_info) == 1) {
                 if ($goods_info[0]['id'] != $goods_id) {
                     $flag = 1;
                 }
             } else {
                 $flag = 1;
             }
         }
         if ($flag == 1) {
             $type = array('gid' => $goods_id, 'admin_name' => $this->admin['admin_name'], 'admin_pwd' => $this->admin['admin_pwd']);
             $goods_in_fo = $tb_goods->getObj('id=' . $goods_id);
             $goods = new goods_class();
             $data = $goods->edit($type, $goods_in_fo);
             $this->setRenderData($data);
             $this->redirect('goods_edit', false);
             Util::showMessage("您输入的货号已存在!");
         }
     }
     //标签关键词
     $keywords_for_search = trim($keywords_for_search, ",");
     if ($keywords_for_search) {
         $keywords_for_search_array = array();
         foreach (explode(",", $keywords_for_search) as $value) {
             if (IString::getStrLen($value) <= 15) {
                 keywords::add($value, 0);
                 $keywords_for_search_array[] = $value;
             }
         }
         if ($keywords_for_search_array) {
             $data = array('goods_id' => $goods_id, 'keywords' => join(',', $keywords_for_search_array));
             $obj_goods_keywords = new IModel("goods_keywords");
             $obj_goods_keywords->setData($data);
             if ($obj_goods_keywords->getObj("goods_id={$goods_id}")) {
                 $obj_goods_keywords->update("goods_id={$goods_id}");
             } else {
                 $obj_goods_keywords->add();
             }
         }
     }
     //大图片
     $show_img = $focus_photo;
     $list_img = $focus_photo;
     if ($focus_photo) {
         $foot = substr($focus_photo, strpos($focus_photo, '.'));
         //图片扩展名
         $head = substr($focus_photo, 0, strpos($focus_photo, '.'));
         //获得配置文件中的数据
         $config = new Config("site_config");
         $config_info = $config->getInfo();
         $list_thumb_width = isset($config_info['list_thumb_width']) ? $config_info['list_thumb_width'] : 175;
         $list_thumb_height = isset($config_info['list_thumb_height']) ? $config_info['list_thumb_height'] : 175;
         $show_thumb_width = isset($config_info['show_thumb_width']) ? $config_info['show_thumb_width'] : 85;
         $show_thumb_height = isset($config_info['show_thumb_height']) ? $config_info['show_thumb_height'] : 85;
         //list
         $list_img = $head . '_' . $list_thumb_width . '_' . $list_thumb_height . $foot;
         //show
         $show_img = $head . '_' . $show_thumb_width . '_' . $show_thumb_height . $foot;
     } elseif ($goods_img) {
         $focus_photo = $goods_img;
     }
     //规格
     $spec_va = IReq::get('spec_va');
     $spec = array();
     $spec_array = array();
     if ($spec_va) {
         $arr = explode(';', $spec_va);
         $i = 0;
         foreach ($arr as $value) {
             if ($value) {
                 $brr = explode('|', $value);
                 $j = 0;
                 foreach ($brr as $va) {
                     $crr = explode(',', $va);
                     $spec[$i][$j]['id'] = $crr[1];
                     $spec[$i][$j]['name'] = $crr[2];
                     $spec[$i][$j]['type'] = $crr[3];
                     //商品规格类型
                     $spec_array[$j]['id'] = $crr[1];
                     if (!isset($spec_array[$j]['value'])) {
                         $spec_array[$j]['value'] = $crr[2] . ',';
                     } else {
                         if (!strpos(',,' . $spec_array[$j]['value'], ',' . $crr[2] . ',')) {
                             $spec_array[$j]['value'] .= $crr[2] . ',';
                         }
                     }
                     $spec_array[$j]['type'] = $crr[3];
                     $spec_array[$j]['name'] = $crr[4];
                     $j++;
                 }
                 $i++;
             }
         }
     }
     /*goods表操作*/
     $tb_goods->setData(array('name' => $goods_name, 'notes' => $goods_notes, 'goods_no' => $goods_no, 'sell_price' => $sell_price, 'market_price' => $market_price, 'discount' => $discount, 'store_nums' => $store_nums, 'brand_id' => $goods_brand, 'is_del' => $goods_status, 'from' => $goods_from, 'sellernick' => $goods_sellernick, 'commission' => $goods_commission, 'url' => $goods_url, 'content' => $content, 'keywords' => $seo_keywords, 'description' => $seo_description, 'weight' => $weight, 'unit' => $store_unit, 'point' => $point, 'exp' => $exp, 'sort' => $sort, 'small_img' => $show_img, 'img' => $focus_photo, 'list_img' => $list_img));
     $tb_goods->update('id=' . $goods_id);
     //商品扩展分类
     $tb_category = new IModel('category_extend');
     $tb_category->del('goods_id=' . $goods_id);
     if ($goods_category) {
         $tb_category->setData(array('goods_id' => $goods_id, 'category_id' => $goods_category));
         $tb_category->add();
     }
     /*commend_goods表操作*/
     $goods_commend = IReq::get('goods_commend');
     $tb_commend = new IModel('commend_goods');
     $tb_commend->del('goods_id=' . $goods_id);
     if (!empty($goods_commend)) {
         if (is_array($goods_commend)) {
             for ($i = 0; $i < count($goods_commend); $i++) {
                 $tb_commend->setData(array('commend_id' => $goods_commend[$i], 'goods_id' => $goods_id));
                 $tb_commend->add();
             }
         } else {
             $tb_commend->setData(array('commend_id' => $goods_commend, 'goods_id' => $goods_id));
             $tb_commend->add();
         }
     }
     /*goods_photo_relation表操作*/
     $photo_name = IReq::get('photo_name');
     $tb_goods_relation = new IModel('goods_photo_relation');
     $tb_goods_relation->del('goods_id=' . $goods_id);
     if ($photo_name) {
         $photo_name = substr($photo_name, 0, -1);
         $arr = explode(',', $photo_name);
         if (count($arr) > 0) {
             foreach ($arr as $value) {
                 //当图片存在的时候保存
                 if (file_exists($value)) {
                     $tb_goods_relation->setData(array('goods_id' => $goods_id, 'photo_id' => md5_file($value)));
                     $tb_goods_relation->add();
                 }
             }
         }
     }
     /*products表以及group_price的操作*/
     $member_ids = IFilter::act(IReq::get('member_ids'));
     $group_id = IFilter::act(IReq::get('group_id'));
     $products_id = IFilter::act(IReq::get('products_id'));
     //先对products表操作,先修改,再删除没有了的pro
     $tb_products = new Imodel('products');
     $tb_group_ob = new Imodel('group_price');
     if ($group_id) {
         $tb_group_ob->del('id in (' . $group_id . ')');
     }
     $store_nums = 0;
     //商品数量
     if ($spec_va) {
         $sell_price_array = array();
         //所有货品的销售价格
         $market_price_array = array();
         //所有货品的市场价格
         $discount_array = array();
         //所有货品的成本价格
         $weight_array = array();
         //所有货品的重量
         $arr = explode(';', $spec_va);
         $i = 0;
         foreach ($arr as $value) {
             if ($value) {
                 $brr = explode('|', $value);
                 $j = 0;
                 $ids = array();
                 $spec_md5 = '';
                 $pro_id = '';
                 $new_pro = '';
                 foreach ($brr as $va) {
                     $crr = explode(',', $va);
                     $pro_id = $crr[0];
                     $new_pro = $pro_id;
                     //判断商品是否为新添加的,如果是则pro_id以a开头
                     if (stristr($pro_id, 'a') != '') {
                         $pro_id = substr($pro_id, 1);
                     }
                     $ids[$j]['id'] = $crr[1];
                     $ids[$j]['value'] = $crr[2];
                     $spec_md5 .= md5($ids[$j]['value']) . ',';
                     $j++;
                 }
                 $specTemp = explode(',', trim($spec_md5, ','));
                 sort($specTemp);
                 $spec_md5 = md5(serialize($specTemp));
                 $store_nums += IReq::get('store_nums' . $pro_id);
                 $tb_products->setData(array('goods_id' => $goods_id, 'products_no' => IReq::get('goods_no' . $pro_id) ? IReq::get('goods_no' . $pro_id) : $goods_no . '-' . ($i + 1), 'spec_array' => serialize($ids), 'market_price' => IReq::get('market_price' . $pro_id) ? IReq::get('market_price' . $pro_id) : $market_price, 'sell_price' => IReq::get('sell_price' . $pro_id) ? IReq::get('sell_price' . $pro_id) : $sell_price, 'store_nums' => IReq::get('store_nums' . $pro_id) ? IReq::get('store_nums' . $pro_id) : $store_nums, 'discount' => IReq::get('discount' . $pro_id) ? IReq::get('discount' . $pro_id) : $discount, 'weight' => IReq::get('weight' . $pro_id) ? IReq::get('weight' . $pro_id) : $weight, 'spec_md5' => $spec_md5));
                 //获得所有的货品的销售价格、市场价格、成本价格、货品的重量
                 $sell_price_array[] = IReq::get('sell_price' . $pro_id) ? IReq::get('sell_price' . $pro_id) : $sell_price;
                 $market_price_array[] = IReq::get('market_price' . $pro_id) ? IReq::get('market_price' . $pro_id) : $market_price;
                 $discount_array[] = IReq::get('discount' . $pro_id) ? IReq::get('discount' . $pro_id) : $discount;
                 $weight_array[] = IReq::get('weight' . $pro_id) ? IReq::get('weight' . $pro_id) : $weight;
                 $mem_array = explode(',', $member_ids);
                 if (strpos('|' . $new_pro, 'a') > 0) {
                     $pr_id = $tb_products->add();
                     foreach ($mem_array as $cc) {
                         $gro_price = IFilter::act(IReq::get('mem_0_' . $new_pro . '_' . $cc), 'int');
                         if ($gro_price > 0 && $pr_id != 0) {
                             $tb_group_ob->setData(array('goods_id' => $goods_id, 'products_id' => $pr_id, 'group_id' => $cc, 'price' => $gro_price));
                             $tb_group_ob->add();
                         }
                     }
                 } else {
                     $tb_products->update('id=' . $pro_id);
                     $group_arr = explode(',', $group_id . ',0');
                     if ($group_arr) {
                         foreach ($group_arr as $va) {
                             foreach ($mem_array as $cc) {
                                 $gro_price = IFilter::act(IReq::get('mem_' . $va . '_' . $pro_id . '_' . $cc), 'int');
                                 if ($gro_price > 0) {
                                     $tb_group_ob->setData(array('goods_id' => $goods_id, 'products_id' => $pro_id, 'group_id' => $cc, 'price' => $gro_price));
                                     $tb_group_ob->add();
                                 }
                             }
                         }
                     } else {
                         foreach ($mem_array as $cc) {
                             $gro_price = IFilter::act(IReq::get('mem_0_' . $pro_id . '_' . $cc), 'int');
                             if ($gro_price > 0) {
                                 $tb_group_ob->setData(array('goods_id' => $goods_id, 'products_id' => $pro_id, 'group_id' => $cc, 'price' => $gro_price));
                                 $tb_group_ob->add();
                             }
                         }
                     }
                 }
             }
             $i++;
         }
         //如果商品的价格为空,则将货品的销售价格中最低的赋予
         $addition = array('store_nums' => $store_nums);
         if (!empty($sell_price_array)) {
             $addition['sell_price'] = min($sell_price_array);
         }
         if (!empty($market_price_array)) {
             $addition['market_price'] = min($market_price_array);
         }
         if (!empty($discount_array)) {
             $addition['discount'] = min($discount_array);
         }
         if (!empty($weight_array)) {
             $addition['weight'] = min($weight_array);
         }
         $tb_goods->setData($addition);
         //如果有products数据,则将products中的货品数量全部相加并送入goods表
         $tb_goods->update('id=' . $goods_id);
     }
     $mem_array = explode(',', $member_ids);
     $group_arr = explode(',', $group_id . ',0');
     if ($group_arr) {
         foreach ($group_arr as $va) {
             foreach ($mem_array as $cc) {
                 $gro_price = IFilter::act(IReq::get('mem_' . $va . '_0_' . $cc), 'int');
                 if ($gro_price > 0) {
                     $tb_group_ob->setData(array('goods_id' => $goods_id, 'products_id' => 0, 'group_id' => $cc, 'price' => $gro_price));
                     $tb_group_ob->add();
                 }
             }
         }
     }
     //获得删除的products_id
     $del_products_id = IFilter::act(IReq::get('del_products_id'));
     if ($del_products_id) {
         $del_products_id = substr($del_products_id, 0, -1);
         $info = explode(',', $del_products_id);
         foreach ($info as $value) {
             if (strpos('|' . $value, 'a') == false) {
                 $tb_products->del('id=' . $value);
             }
         }
     }
     $this->redirect("goods_list");
 }
예제 #4
0
 /**
  * @brief 修改商品数据
  * @param int $id 商品ID
  * @param array $paramData 商品所需数据
  */
 public function update($id, $paramData)
 {
     $postData = array();
     $nowDataTime = ITime::getDateTime();
     foreach ($paramData as $key => $val) {
         $postData[$key] = $val;
         //数据过滤分组
         if (strpos($key, 'attr_id_') !== false) {
             $goodsAttrData[ltrim($key, 'attr_id_')] = IFilter::act($val);
         } else {
             if ($key == 'content') {
                 $goodsUpdateData['content'] = IFilter::addSlash($val);
             } else {
                 if ($key[0] != '_') {
                     $goodsUpdateData[$key] = IFilter::act($val, 'text');
                 }
             }
         }
     }
     //商家发布商品默认设置
     if ($this->seller_id) {
         $goodsUpdateData['seller_id'] = $this->seller_id;
         $goodsUpdateData['is_del'] = $goodsUpdateData['is_del'] == 2 ? 2 : 3;
         //如果商户是VIP则无需审核商品
         if ($goodsUpdateData['is_del'] == 3) {
             $sellerDB = new IModel('seller');
             $sellerRow = $sellerDB->getObj('id = ' . $this->seller_id);
             if ($sellerRow['is_vip'] == 1) {
                 $goodsUpdateData['is_del'] = 0;
             }
         }
     }
     //上架或者下架处理
     if (isset($goodsUpdateData['is_del'])) {
         //上架
         if ($goodsUpdateData['is_del'] == 0) {
             $goodsUpdateData['up_time'] = $nowDataTime;
             $goodsUpdateData['down_time'] = null;
         } else {
             if ($goodsUpdateData['is_del'] == 2) {
                 $goodsUpdateData['up_time'] = null;
                 $goodsUpdateData['down_time'] = $nowDataTime;
             } else {
                 $goodsUpdateData['up_time'] = null;
                 $goodsUpdateData['down_time'] = null;
             }
         }
     }
     //是否存在货品
     $goodsUpdateData['spec_array'] = '';
     if (isset($postData['_spec_array'])) {
         //生成goods中的spec_array字段数据
         $goods_spec_array = array();
         foreach ($postData['_spec_array'] as $key => $val) {
             foreach ($val as $v) {
                 $tempSpec = JSON::decode($v);
                 if (!isset($goods_spec_array[$tempSpec['id']])) {
                     $goods_spec_array[$tempSpec['id']] = array('id' => $tempSpec['id'], 'name' => $tempSpec['name'], 'type' => $tempSpec['type'], 'value' => array());
                 }
                 $goods_spec_array[$tempSpec['id']]['value'][] = $tempSpec['value'];
             }
         }
         foreach ($goods_spec_array as $key => $val) {
             $val['value'] = array_unique($val['value']);
             $goods_spec_array[$key]['value'] = join(',', $val['value']);
         }
         $goodsUpdateData['spec_array'] = JSON::encode($goods_spec_array);
     }
     $goodsUpdateData['goods_no'] = isset($postData['_goods_no']) ? current($postData['_goods_no']) : '';
     $goodsUpdateData['store_nums'] = array_sum($postData['_store_nums']);
     $goodsUpdateData['market_price'] = isset($postData['_market_price']) ? current($postData['_market_price']) : 0;
     $goodsUpdateData['sell_price'] = isset($postData['_sell_price']) ? current($postData['_sell_price']) : 0;
     $goodsUpdateData['cost_price'] = isset($postData['_cost_price']) ? current($postData['_cost_price']) : 0;
     $goodsUpdateData['weight'] = isset($postData['_weight']) ? current($postData['_weight']) : 0;
     //处理商品
     $goodsDB = new IModel('goods');
     if ($id) {
         $goodsDB->setData($goodsUpdateData);
         $where = " id = {$id} ";
         if ($this->seller_id) {
             $where .= " and seller_id = " . $this->seller_id;
         }
         if ($goodsDB->update($where) === false) {
             die("更新商品错误");
         }
     } else {
         $goodsUpdateData['create_time'] = $nowDataTime;
         $goodsDB->setData($goodsUpdateData);
         $id = $goodsDB->add();
     }
     //处理商品属性
     $goodsAttrDB = new IModel('goods_attribute');
     $goodsAttrDB->del('goods_id = ' . $id);
     if (isset($goodsAttrData) && $goodsAttrData) {
         foreach ($goodsAttrData as $key => $val) {
             $attrData = array('goods_id' => $id, 'model_id' => $goodsUpdateData['model_id'], 'attribute_id' => $key, 'attribute_value' => is_array($val) ? join(',', $val) : $val);
             $goodsAttrDB->setData($attrData);
             $goodsAttrDB->add();
         }
     }
     //是否存在货品
     $productsDB = new IModel('products');
     $productsDB->del('goods_id = ' . $id);
     if (isset($postData['_spec_array'])) {
         $productIdArray = array();
         //创建货品信息
         foreach ($postData['_goods_no'] as $key => $rs) {
             $productsData = array('goods_id' => $id, 'products_no' => $postData['_goods_no'][$key], 'store_nums' => $postData['_store_nums'][$key], 'market_price' => $postData['_market_price'][$key], 'sell_price' => $postData['_sell_price'][$key], 'cost_price' => $postData['_cost_price'][$key], 'weight' => $postData['_weight'][$key], 'spec_array' => "[" . join(',', $postData['_spec_array'][$key]) . "]");
             $productsDB->setData($productsData);
             $productIdArray[$key] = $productsDB->add();
         }
     }
     //处理商品分类
     $categoryDB = new IModel('category_extend');
     $categoryDB->del('goods_id = ' . $id);
     if (isset($postData['_goods_category']) && $postData['_goods_category']) {
         foreach ($postData['_goods_category'] as $item) {
             $categoryDB->setData(array('goods_id' => $id, 'category_id' => $item));
             $categoryDB->add();
         }
     }
     //处理商品促销
     $commendDB = new IModel('commend_goods');
     $commendDB->del('goods_id = ' . $id);
     if (isset($postData['_goods_commend']) && $postData['_goods_commend']) {
         foreach ($postData['_goods_commend'] as $item) {
             $commendDB->setData(array('goods_id' => $id, 'commend_id' => $item));
             $commendDB->add();
         }
     }
     //处理商品关键词
     keywords::add($goodsUpdateData['search_words']);
     //处理商品图片
     $photoRelationDB = new IModel('goods_photo_relation');
     $photoRelationDB->del('goods_id = ' . $id);
     if (isset($postData['_imgList']) && $postData['_imgList']) {
         $postData['_imgList'] = str_replace(',', '","', trim($postData['_imgList'], ','));
         $photoDB = new IModel('goods_photo');
         $photoData = $photoDB->query('img in ("' . $postData['_imgList'] . '")', 'id');
         if ($photoData) {
             foreach ($photoData as $item) {
                 $photoRelationDB->setData(array('goods_id' => $id, 'photo_id' => $item['id']));
                 $photoRelationDB->add();
             }
         }
     }
     //处理会员组的价格
     $groupPriceDB = new IModel('group_price');
     $groupPriceDB->del('goods_id = ' . $id);
     if (isset($productIdArray) && $productIdArray) {
         foreach ($productIdArray as $index => $value) {
             if (isset($postData['_groupPrice'][$index]) && $postData['_groupPrice'][$index]) {
                 $temp = JSON::decode($postData['_groupPrice'][$index]);
                 foreach ($temp as $k => $v) {
                     $groupPriceDB->setData(array('goods_id' => $id, 'product_id' => $value, 'group_id' => $k, 'price' => $v));
                     $groupPriceDB->add();
                 }
             }
         }
     } else {
         if (isset($postData['_groupPrice'][0]) && $postData['_groupPrice'][0]) {
             $temp = JSON::decode($postData['_groupPrice'][0]);
             foreach ($temp as $k => $v) {
                 $groupPriceDB->setData(array('goods_id' => $id, 'group_id' => $k, 'price' => $v));
                 $groupPriceDB->add();
             }
         }
     }
     return true;
 }
예제 #5
0
 /**
  * @brief 保存修改商品信息
  */
 function goods_update()
 {
     $id = IFilter::act(IReq::get('id'), 'int');
     $callback = IFilter::act(IReq::get('callback'), 'url');
     $callback = strpos($callback, 'goods/goods_list') === false ? '' : $callback;
     $postData = array();
     $nowDataTime = date('Y-m-d H:i:s');
     //检查表单提交状态
     if (!$_POST) {
         die('请确认表单提交正确');
     }
     //初始化商品数据
     unset($_POST['id']);
     unset($_POST['callback']);
     foreach ($_POST as $key => $val) {
         $postData[$key] = $val;
         //数据过滤分组
         if (strpos($key, 'attr_id_') !== false) {
             $goodsAttrData[ltrim($key, 'attr_id_')] = IFilter::act($val);
         } else {
             if ($key[0] != '_') {
                 $goodsUpdateData[$key] = IFilter::act($val, 'text');
             }
         }
     }
     if (isset($goodsUpdateData['is_del'])) {
         $goodsUpdateData['is_del'] == 2 ? $goodsUpdateData['down_time'] = $nowDataTime : ($goodsUpdateData['up_time'] = $nowDataTime);
     }
     //是否存在货品
     $goodsUpdateData['spec_array'] = '';
     if (isset($postData['_spec_array'])) {
         //生成goods中的spec_array字段数据
         $goods_spec_array = array();
         foreach ($postData['_spec_array'] as $key => $val) {
             foreach ($val as $v) {
                 $tempSpec = JSON::decode($v);
                 if (!isset($goods_spec_array[$tempSpec['id']])) {
                     $goods_spec_array[$tempSpec['id']] = array('id' => $tempSpec['id'], 'name' => $tempSpec['name'], 'type' => $tempSpec['type'], 'value' => array());
                 }
                 $goods_spec_array[$tempSpec['id']]['value'][] = $tempSpec['value'];
             }
         }
         foreach ($goods_spec_array as $key => $val) {
             $val['value'] = array_unique($val['value']);
             $goods_spec_array[$key]['value'] = join(',', $val['value']);
         }
         $goodsUpdateData['spec_array'] = JSON::encode($goods_spec_array);
     }
     $goodsUpdateData['goods_no'] = preg_replace("/(?:\\-\\d*)\$/", "", current($postData['_goods_no']));
     $goodsUpdateData['store_nums'] = array_sum($postData['_store_nums']);
     $goodsUpdateData['market_price'] = isset($postData['_market_price']) ? current($postData['_market_price']) : 0;
     $goodsUpdateData['sell_price'] = isset($postData['_sell_price']) ? current($postData['_sell_price']) : 0;
     $goodsUpdateData['cost_price'] = isset($postData['_cost_price']) ? current($postData['_cost_price']) : 0;
     $goodsUpdateData['weight'] = isset($postData['_weight']) ? current($postData['_weight']) : 0;
     //处理商品
     $goodsDB = new IModel('goods');
     if ($id) {
         $goodsDB->setData($goodsUpdateData);
         $goodsDB->update('id = ' . $id);
     } else {
         $goodsUpdateData['create_time'] = $nowDataTime;
         $goodsDB->setData($goodsUpdateData);
         $id = $goodsDB->add();
     }
     //处理商品属性和规格
     $goodsAttrDB = new IModel('goods_attribute');
     $goodsAttrDB->del('goods_id = ' . $id);
     if (isset($goodsAttrData) && $goodsAttrData) {
         foreach ($goodsAttrData as $key => $val) {
             $attrData = array('goods_id' => $id, 'model_id' => $goodsUpdateData['model_id'], 'attribute_id' => $key, 'attribute_value' => is_array($val) ? join(',', $val) : $val);
             $goodsAttrDB->setData($attrData);
             $goodsAttrDB->add();
         }
     }
     if (isset($goods_spec_array) && $goods_spec_array) {
         foreach ($goods_spec_array as $key => $val) {
             $temp = explode(',', $val['value']);
             foreach ($temp as $v) {
                 $attrData = array('goods_id' => $id, 'model_id' => $goodsUpdateData['model_id'], 'spec_id' => $val['id'], 'spec_value' => $v);
                 $goodsAttrDB->setData($attrData);
                 $goodsAttrDB->add();
             }
         }
     }
     //是否存在货品
     $productsDB = new IModel('products');
     $productsDB->del('goods_id = ' . $id);
     if (isset($postData['_spec_array'])) {
         $productIdArray = array();
         //创建货品信息
         foreach ($postData['_goods_no'] as $key => $rs) {
             $productsData = array('goods_id' => $id, 'products_no' => $postData['_goods_no'][$key], 'store_nums' => $postData['_store_nums'][$key], 'market_price' => $postData['_market_price'][$key], 'sell_price' => $postData['_sell_price'][$key], 'cost_price' => $postData['_cost_price'][$key], 'weight' => $postData['_weight'][$key], 'spec_array' => "[" . join(',', $postData['_spec_array'][$key]) . "]");
             $productsDB->setData($productsData);
             $productIdArray[$key] = $productsDB->add();
         }
     }
     //处理商品分类
     $categoryDB = new IModel('category_extend');
     $categoryDB->del('goods_id = ' . $id);
     if (isset($postData['_goods_category']) && $postData['_goods_category']) {
         foreach ($postData['_goods_category'] as $item) {
             $categoryDB->setData(array('goods_id' => $id, 'category_id' => $item));
             $categoryDB->add();
         }
     }
     //处理商品促销
     $commendDB = new IModel('commend_goods');
     $commendDB->del('goods_id = ' . $id);
     if (isset($postData['_goods_commend']) && $postData['_goods_commend']) {
         foreach ($postData['_goods_commend'] as $item) {
             $commendDB->setData(array('goods_id' => $id, 'commend_id' => $item));
             $commendDB->add();
         }
     }
     //处理商品关键词
     keywords::add($goodsUpdateData['search_words']);
     //处理商品图片
     $photoRelationDB = new IModel('goods_photo_relation');
     $photoRelationDB->del('goods_id = ' . $id);
     if (isset($postData['_imgList']) && $postData['_imgList']) {
         $postData['_imgList'] = str_replace(',', '","', trim($postData['_imgList'], ','));
         $photoDB = new IModel('goods_photo');
         $photoData = $photoDB->query('img in ("' . $postData['_imgList'] . '")', 'id');
         if ($photoData) {
             foreach ($photoData as $item) {
                 $photoRelationDB->setData(array('goods_id' => $id, 'photo_id' => $item['id']));
                 $photoRelationDB->add();
             }
         }
     }
     //处理会员组的价格
     $groupPriceDB = new IModel('group_price');
     $groupPriceDB->del('goods_id = ' . $id);
     if (isset($productIdArray) && $productIdArray) {
         foreach ($productIdArray as $index => $value) {
             if (isset($postData['_groupPrice'][$index]) && $postData['_groupPrice'][$index]) {
                 $temp = JSON::decode($postData['_groupPrice'][$index]);
                 foreach ($temp as $k => $v) {
                     $groupPriceDB->setData(array('goods_id' => $id, 'product_id' => $value, 'group_id' => $k, 'price' => $v));
                     $groupPriceDB->add();
                 }
             }
         }
     } else {
         if (isset($postData['_groupPrice'][0]) && $postData['_groupPrice'][0]) {
             $temp = JSON::decode($postData['_groupPrice'][0]);
             foreach ($temp as $k => $v) {
                 $groupPriceDB->setData(array('goods_id' => $id, 'group_id' => $k, 'price' => $v));
                 $groupPriceDB->add();
             }
         }
     }
     $callback ? $this->redirect($callback) : $this->redirect("goods_list");
 }
예제 #6
0
 /**
  * 计算关键词所关联的商品数量
  * $result = array( 关键词 => 管理商品的数量 );
  * 这个类方法已经抽到了class/keywords.php里,请不要在以后的代码中调用这个方法
  */
 function keyword_count($word)
 {
     return keywords::count($word);
 }
예제 #7
0
 public function render()
 {
     $input = request::input();
     $settings = array();
     $settings['limit'] = @$input['limit'] ? @intval($input['limit']) : 20;
     $settings['offset'] = @intval(@$input['offset']);
     // show starting from this row
     $settings['orderby'] = isset($input['orderby']) ? $input['orderby'] : $this->list_orderby;
     // order by column
     $settings['orderdesc'] = isset($input['orderdesc']) ? $input['orderdesc'] : $this->list_orderdesc;
     // order direction
     $settings['took'] = microtime(true);
     // building sql for select
     $from = ' FROM ' . $this->list_table . @$this->left_join . ' WHERE 1=1';
     // full text search
     $full_text_search = array();
     $gist_columns = array();
     if (!empty($input['full_text_search']) && !empty($this->full_text_search_column)) {
         $full_text_search = db::tsquery($this->full_text_search_column, $input['full_text_search'], '|', true, array(), $this->link);
         $from .= $full_text_search['where'];
     }
     // other where
     if (!empty($this->where)) {
         $from .= $this->where;
     }
     // getting number of records
     if (@$this->list_count_rows) {
         $sql = 'SELECT COUNT(*) as rows_count ' . $from;
         $result = db::query($sql, '', array(), $this->link);
         if (@$result['error']) {
             layout::add_message($result['error'], 'error');
         }
         // use this variable to get number of rows, isset for verification
         $settings['count_rows'] = @$result['rows'][0]['rows_count'] ? $result['rows'][0]['rows_count'] : 0;
     } else {
         // EXPERIMENTAL: increase number of rows fetched by 1 to check whether next row exists
         $settings['limit']++;
     }
     // quering
     $sql = 'SELECT ' . $this->select . (!empty($full_text_search['rank']) ? ', ' . $full_text_search['rank'] . ' ts_rank2' : '') . $from;
     $sql .= ' ORDER BY ' . (@$full_text_search['orderby'] ? @$full_text_search['orderby'] . ", " : "") . $settings['orderby'] . ($settings['orderdesc'] ? ' DESC' : '');
     $sql .= $settings['limit'] ? ' LIMIT ' . $settings['limit'] : '';
     $sql .= $settings['offset'] ? ' OFFSET ' . $settings['offset'] : '';
     $result = db::query($sql, '', array(), $this->link);
     $settings['took'] = round(microtime(true) - $settings['took'], 2);
     // processing count
     if (!@$this->list_count_rows) {
         if (isset($result['rows'][$settings['limit'] - 1])) {
             $settings['flag_next_row_exists'] = true;
         }
         unset($result['rows'][$settings['limit'] - 1]);
         $settings['limit']--;
     }
     $settings['num_rows'] = count($result['rows']);
     // rendering list
     $ms = '';
     // Hidden elements
     $ms .= h::hidden(array('name' => 'orderby', 'id' => 'orderby', 'value' => $settings['orderby']));
     $ms .= h::hidden(array('name' => 'orderdesc', 'id' => 'orderdesc', 'value' => $settings['orderdesc']));
     $ms .= h::hidden(array('name' => 'offset', 'id' => 'offset', 'value' => $settings['offset']));
     $ms .= h::hidden(array('name' => 'limit', 'id' => 'limit', 'value' => $settings['limit']));
     // if we have no rows
     if (empty($result['rows'])) {
         $ms .= 'No records found!';
     } else {
         // main container
         $header = $this->header($settings);
         $ms .= $header;
         $ms .= '<br/>';
         $ms .= '<table cellpadding="0" cellspacing="0" class="editor table" width="100%">';
         // types
         $types = model_presets::get('he_post_type');
         // rows
         $row_counter = 1;
         foreach ($result['rows'] as $k => $v) {
             $ms .= '<tr>';
             $ms .= '<td class="editor cell numeration" valign="top">' . $row_counter . '.&nbsp;</td>';
             $ms .= '<td class="editor cell regular" align="left">';
             // generating urls
             $url_post = call_user_func_array($this->url_posts, array($v['type'], $v['post_id'], $v['uri']));
             $url_type = call_user_func_array($this->url_type, array($v['type']));
             // title with icon goes first
             $value = $v['title'];
             if ($v['type'] == 20) {
                 $v['icon'] = 'help16.png';
             } else {
                 if ($v['type'] == 10) {
                     $v['icon'] = 'faq16.png';
                 }
             }
             if (!empty($v['icon'])) {
                 $value = icon::render($v['icon']) . ' ' . $value;
             }
             $ms .= h::a(array('href' => $url_post, 'value' => $value));
             if (isset($v['ts_rank2'])) {
                 $ms .= ' [' . $v['ts_rank2'] . ']';
             }
             // entry type
             $ms .= ' ' . h::a(array('href' => $url_type, 'value' => $types[$v['type']]['name'], 'style' => 'color:black;'));
             $ms .= '<br/>';
             $ms .= h::a(array('href' => $url_post, 'value' => $url_post, 'style' => 'color: green;'));
             if (!empty($input['full_text_search'])) {
                 $ms .= '<br/>';
                 $temp = keywords::highlight($v['body'], $input['full_text_search'], array('<b style="color:red;">', '</b>'));
             } else {
                 $ms .= '<br/>';
                 $temp = $v['body'];
             }
             $ms .= $temp;
             $ms .= '<br/>';
             $ms .= '<br/>';
             $ms .= '</td>';
             $ms .= '</tr>';
             $row_counter++;
         }
         $ms .= '</table>';
         $ms .= $header;
         $ms .= '<br class="clearfloat">';
     }
     return $ms;
 }