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'); } }
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 } } }
/** * @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"); }
/** * @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; }
/** * @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"); }
/** * 计算关键词所关联的商品数量 * $result = array( 关键词 => 管理商品的数量 ); * 这个类方法已经抽到了class/keywords.php里,请不要在以后的代码中调用这个方法 */ function keyword_count($word) { return keywords::count($word); }
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 . '. </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; }