123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662 |
- <?php
- /**
- * 店铺装修
- *
- *
- *
- ***/
- defined('InShopNC') or exit('Access Invalid!');
- class store_decorationControl extends BaseSellerControl {
- public function __construct() {
- parent::__construct();
- }
- /**
- * 店铺装修设置
- */
- public function decoration_settingOp() {
- $model_store_decoration = Model('store_decoration');
- $store_decoration_info = $model_store_decoration->getStoreDecorationInfo(array('store_id' => $_SESSION['store_id']));
- if(empty($store_decoration_info)) {
- //创建默认装修
- $param = array();
- $param['decoration_name'] = '默认装修';
- $param['store_id'] = $_SESSION['store_id'];
- $decoration_id = $model_store_decoration->addStoreDecoration($param);
- } else {
- $decoration_id = $store_decoration_info['decoration_id'];
- }
- Tpl::output('store_decoration_switch', $this->store_info['store_decoration_switch']);
- Tpl::output('store_decoration_only', $this->store_info['store_decoration_only']);
- Tpl::output('decoration_id', $decoration_id);
- $this->profile_menu('decoration_setting');
- Tpl::showpage('store_decoration.setting');
- }
- /**
- * 店铺装修设置保存
- */
- public function decoration_setting_saveOp() {
- $model_store_decoration = Model('store_decoration');
- $model_store = Model('store');
- $store_decoration_info = $model_store_decoration->getStoreDecorationInfo(array('store_id' => $_SESSION['store_id']));
- if(empty($store_decoration_info)) {
- showDialog('参数错误');
- }
- $update = array();
- if(empty($_POST['store_decoration_switch'])) {
- $update['store_decoration_switch'] = 0;
- } else {
- $update['store_decoration_switch'] = $store_decoration_info['decoration_id'];
- }
- $update['store_decoration_only'] = intval($_POST['store_decoration_only']);
- $result = $model_store->editStore($update, array('store_id' => $_SESSION['store_id']));
- if($result) {
- showDialog(L('nc_common_save_succ'), '', 'succ');
- } else {
- showDialog(L('nc_common_save_fail'));
- }
- }
- /**
- * 装修图库列表
- */
- public function decoration_albumOp() {
- $model_store_decoration_album = Model('store_decoration_album');
- $condition = array();
- $condition['store_id'] = $_SESSION['store_id'];
- $image_list = $model_store_decoration_album->getStoreDecorationAlbumList($condition, 24, 'upload_time desc');
- Tpl::output('image_list', $image_list);
- Tpl::output('show_page',$model_store_decoration_album->showpage());
- $this->profile_menu('decoration_album');
- Tpl::showpage('store_decoration.album');
- }
- /**
- * 图片上传
- */
- public function decoration_album_uploadOp() {
- $store_id = $_SESSION ['store_id'];
- $data = array();
- //判断装修相册数量限制,预设100
- if($this->store_info['store_decoration_image_count'] > 100) {
- $data['error'] = '相册已满,请首先删除无用图片';
- echo json_encode($data);die;
- }
- //上传图片
- $upload = new UploadFile();
- $upload->set('default_dir', ATTACH_STORE_DECORATION . DS . $store_id);
- $upload->set('max_size', C('image_max_filesize'));
- $upload->set('fprefix', $store_id);
- $result_file = $upload->upfile('file');
- if($result_file) {
- $image = $upload->file_name;
- } else {
- $error = $upload->error;
- $data['error'] = $error;
- echo json_encode($data);die;
- }
- //图片尺寸
- list($width, $height) = getimagesize(BASE_UPLOAD_PATH . DS . ATTACH_STORE_DECORATION . DS . $store_id . DS . $image);
- //图片原始名称
- $image_origin_name_array = explode('.', $_FILES["file"]["name"]);
- //插入相册表
- $param = array();
- $param['image_name'] = $image;
- $param['image_origin_name'] = $image_origin_name_array['0'];
- $param['image_width'] = $width;
- $param['image_height'] = $height;
- $param['image_size'] = intval($_FILES['file']['size']);
- $param['store_id'] = $store_id;
- $param['upload_time'] = TIMESTAMP;
- $result = Model('store_decoration_album')->addStoreDecorationAlbum($param);
- if($result) {
- //装修相册计数加1
- Model('store')->editStore(
- array('store_decoration_image_count' => array('exp', 'store_decoration_image_count+1')),
- array('store_id' => $_SESSION['store_id'])
- );
- $data['image_name'] = $image;
- $data['image_url'] = getStoreDecorationImageUrl($image, $store_id);
- } else {
- $data['error'] = '上传失败';
- }
- echo json_encode($data);die;
- }
- /**
- * 图片删除
- */
- public function decoration_album_delOp() {
- $image_id = intval($_POST['image_id']);
- $data = array();
- $model_store_decoration_album = Model('store_decoration_album');
- //验证图片权限
- $condition = array();
- $condition['image_id'] = $image_id;
- $condition['store_id'] = $_SESSION['store_id'];
- $result = $model_store_decoration_album->delStoreDecorationAlbum($condition);
- if($result) {
- //装修相册计数减1
- if($this->store_info['store_decoration_image_count'] > 0) {
- Model('store')->editStore(
- array('store_decoration_image_count' => array('exp', 'store_decoration_image_count-1')),
- array('store_id' => $_SESSION['store_id'])
- );
- }
- $data['message'] = '删除成功';
- } else {
- $data['error'] = '删除失败';
- }
- echo json_encode($data);die;
- }
- /**
- * 店铺装修
- */
- public function decoration_editOp() {
- $decoration_id = intval($_GET['decoration_id']);
- $model_store_decoration = Model('store_decoration');
- $decoration_info = $model_store_decoration->getStoreDecorationInfoDetail($decoration_id, $_SESSION['store_id']);
- if($decoration_info) {
- $this->_output_decoration_info($decoration_info);
- } else {
- showMessage(L('param_error'), '', 'error');
- }
- //设定模板为完成宽度
- Tpl::output('seller_layout_no_menu', true);
- Tpl::showpage('store_decoration.edit');
- }
- /**
- * 输出装修设置
- */
- private function _output_decoration_info($decoration_info) {
- $model_store_decoration = Model('store_decoration');
- $decoration_background_style = $model_store_decoration->getDecorationBackgroundStyle($decoration_info['decoration_setting']);
- Tpl::output('decoration_background_style', $decoration_background_style);
- Tpl::output('decoration_nav', $decoration_info['decoration_nav']);
- Tpl::output('decoration_banner', $decoration_info['decoration_banner']);
- Tpl::output('decoration_setting', $decoration_info['decoration_setting']);
- Tpl::output('block_list', $decoration_info['block_list']);
- }
- /**
- * 保存店铺装修背景设置
- */
- public function decoration_background_setting_saveOp() {
- $decoration_id = intval($_POST['decoration_id']);
- //验证参数
- if($decoration_id <= 0) {
- $data['error'] = L('param_error');
- echo json_encode($data);die;
- }
- $setting = array();
- $setting['background_color'] = $_POST['background_color'];
- $setting['background_image'] = $_POST['background_image'];
- $setting['background_image_repeat'] = $_POST['background_image_repeat'];
- $setting['background_position_x'] = $_POST['background_position_x'];
- $setting['background_position_y'] = $_POST['background_position_y'];
- $setting['background_attachment'] = $_POST['background_attachment'];
- //背景设置保存验证
- $validate_setting = $this->_validate_background_setting_input($decoration_id, $setting);
- if(isset($validate_setting['error'])) {
- $data['error'] = $validate_setting['error'];
- echo json_encode($data);die;
- }
- $data = array();
- $model_store_decoration = Model('store_decoration');
- $condition = array();
- $condition['decoration_id'] = $decoration_id;
- $condition['store_id'] = $_SESSION['store_id'];
- $update = array();
- $update['decoration_setting'] = serialize($setting);
- $result = $model_store_decoration->editStoreDecoration($update, $condition);
- if($result) {
- $data['decoration_background_style'] = $model_store_decoration->getDecorationBackgroundStyle($validate_setting);
- } else {
- $data['error'] = '保存失败';
- }
- echo json_encode($data);die;
- }
- /**
- * 背景设置保存验证
- */
- private function _validate_background_setting_input($decoration_id, $setting) {
- //验证输入
- if($decoration_id <= 0) {
- return array('error', L('param_error'));
- }
- if(!empty($setting['background_color'])) {
- if(strlen($setting['background_color']) > 7) {
- return array('error', '请输入正确的背景颜色');
- }
- } else {
- $setting['background_color'] = '';
- }
- if(!empty($setting['background_image'])) {
- $setting['background_image_url'] = getStoreDecorationImageUrl($setting['background_image'], $_SESSION['store_id']);
- if($setting['background_image_url'] == '') {
- return array('error', '请选择正确的背景图片');
- }
- } else {
- $setting['background_image'] = '';
- }
- if(!in_array($setting['background_image_repeat'], array('no-repeat', 'repeat', 'repeat-x', 'repeat-y'))) {
- $setting['background_image_repeat'] = '';
- }
- if(strlen($setting['background_position_x']) > 8) {
- $setting['background_position_x'] = '';
- }
- if(strlen($setting['background_position_y']) > 8) {
- $setting['background_position_y'] = '';
- }
- if(strlen($setting['background_attachment']) > 8) {
- $setting['background_attachment'] = '';
- }
- return $setting;
- }
- /**
- * 装修导航保存
- */
- public function decoration_nav_saveOp() {
- $decoration_id = intval($_POST['decoration_id']);
- $nav = array();
- $nav['display'] = $_POST['nav_display'];
- $nav['style'] = $_POST['content'];
- $data = array();
- //验证参数
- if($decoration_id <= 0) {
- $data['error'] = L('param_error');
- echo json_encode($data);die;
- }
- $model_store_decoration = Model('store_decoration');
- $condition = array();
- $condition['decoration_id'] = $decoration_id;
- $condition['store_id'] = $_SESSION['store_id'];
- $update = array();
- $update['decoration_nav'] = serialize($nav);
- $result = $model_store_decoration->editStoreDecoration($update, $condition);
- if($result) {
- $data['message'] = '保存成功';
- } else {
- $data['error'] = '保存失败';
- }
- echo json_encode($data);die;
- }
- /**
- * 装修banner保存
- */
- public function decoration_banner_saveOp() {
- $decoration_id = intval($_POST['decoration_id']);
- $banner = array();
- $banner['display'] = $_POST['banner_display'];
- $banner['image'] = $_POST['content'];
- $data = array();
- //验证参数
- if($decoration_id <= 0) {
- $data['error'] = L('param_error');
- echo json_encode($data);die;
- }
- $model_store_decoration = Model('store_decoration');
- $condition = array();
- $condition['decoration_id'] = $decoration_id;
- $condition['store_id'] = $_SESSION['store_id'];
- $update = array();
- $update['decoration_banner'] = serialize($banner);
- $result = $model_store_decoration->editStoreDecoration($update, $condition);
- if($result) {
- $data['message'] = '保存成功';
- $data['image_url'] = getStoreDecorationImageUrl($banner['image'], $_SESSION['store_id']);
- } else {
- $data['error'] = '保存失败';
- }
- echo json_encode($data);die;
- }
- /**
- * 装修添加块
- */
- public function decoration_block_addOp() {
- $decoration_id = intval($_POST['decoration_id']);
- $block_layout = $_POST['block_layout'];
- $data = array();
- $model_store_decoration = Model('store_decoration');
- //验证装修编号
- $condition = array();
- $condition['decoration_id'] = $decoration_id;
- $decoration_info = $model_store_decoration->getStoreDecorationInfo($condition, $_SESSION['store_id']);
- if(!$decoration_info) {
- $data['error'] = L('param_error');
- echo json_encode($data);
- }
- //验证装修块布局
- $block_layout_array = $model_store_decoration->getStoreDecorationBlockLayoutArray();
- if(!in_array($block_layout, $block_layout_array)) {
- $data['error'] = L('param_error');
- echo json_encode($data);
- }
- $param = array();
- $param['decoration_id'] = $decoration_id;
- $param['store_id'] = $_SESSION['store_id'];
- $param['block_layout'] = $block_layout;
- $block_id = $model_store_decoration->addStoreDecorationBlock($param);
- if($block_id) {
- ob_start();
- Tpl::output('block', array('block_id' => $block_id));
- Tpl::showpage('store_decoration_block', 'null_layout');
- $temp = ob_get_contents();
- ob_end_clean();
- $data['html'] = $temp;
- } else {
- $data['error'] = '添加失败';
- }
- echo json_encode($data);die;
- }
- /**
- * 装修块删除
- */
- public function decoration_block_delOp() {
- $block_id = intval($_POST['block_id']);
- $data = array();
- $model_store_decoration = Model('store_decoration');
- $condition = array();
- $condition['block_id'] = $block_id;
- $condition['store_id'] = $_SESSION['store_id'];
- $result = $model_store_decoration->delStoreDecorationBlock($condition);
- if($result) {
- $data['message'] = '删除成功';
- } else {
- $data['error'] = '删除失败';
- }
- echo json_encode($data);die;
- }
- /**
- * 装修块保存
- */
- public function decoration_block_saveOp() {
- $block_id = intval($_POST['block_id']);
- $module_type = $_POST['module_type'];
- $data = array();
- $model_store_decoration = Model('store_decoration');
- //验证模块类型
- $block_type_array = $model_store_decoration->getStoreDecorationBlockTypeArray();
- if(!in_array($module_type, $block_type_array)) {
- $data['error'] = L('param_error');
- echo json_encode($data);
- }
- switch ($module_type) {
- case 'html':
- $content = htmlspecialchars($_POST['content']);
- break;
- default:
- $content = serialize($_POST['content']);
- }
- $condition = array();
- $condition['block_id'] = $block_id;
- $condition['store_id'] = $_SESSION['store_id'];
- $param = array();
- $param['block_content'] = $content;
- $param['block_full_width'] = intval($_POST['full_width']);
- $param['block_module_type'] = $module_type;
- $result = $model_store_decoration->editStoreDecorationBlock($param, $condition);
- if($result) {
- $data['message'] = '保存成功';
- $data['html'] = $this->_get_block_html($content, $module_type);
- } else {
- $data['error'] = '保存失败';
- }
- echo json_encode($data);die;
- }
- /**
- * 装修块排序
- */
- public function decoration_block_sortOp() {
- $sort_array = explode(',', rtrim($_POST['sort_string'], ','));
- $model_store_decoration = Model('store_decoration');
- $condition = array();
- $condition['store_id'] = $_SESSION['store_id'];
- $sort = 1;
- foreach ($sort_array as $value) {
- $condition['block_id'] = $value;
- $model_store_decoration->editStoreDecorationBlock(array('block_sort' => $sort), $condition);
- $sort = $sort + 1;
- }
- $data = array();
- $data['message'] = '保存成功';
- echo json_encode($data);die;
- }
- /**
- * 获取页面
- */
- private function _get_block_html($content, $module_type) {
- ob_start();
- Tpl::output('block_content', $content);
- Tpl::showpage('store_decoration_module.' . $module_type, 'null_layout');
- $temp = ob_get_contents();
- ob_end_clean();
- return $temp;
- }
- /**
- * 商品搜索
- */
- public function goods_searchOp() {
- $model_goods = Model('goods');
- $condition = array();
- $condition['store_id'] = $_SESSION['store_id'];
- $condition['goods_name'] = array('like', '%'.$_GET['keyword'].'%');
- $goods_list = $model_goods->getGoodsOnlineList($condition, '*', 10);
- Tpl::output('goods_list', $goods_list);
- Tpl::output('show_page', $model_goods->showpage());
- Tpl::showpage('store_decoration_module.goods', 'null_layout');
- }
- /**
- * 更新商品模块的商品价格
- */
- private function _update_module_goods_info($decoration_id, $store_id) {
- $model_store_decoration = Model('store_decoration');
- $condition = array();
- $condition['decoration_id'] = $decoration_id;
- $condition['block_module_type'] = 'goods';
- $condition['store_id'] = $store_id;
- $block_list_goods = $model_store_decoration->getStoreDecorationBlockList($condition);
- if(!empty($block_list_goods) && is_array($block_list_goods)) {
- foreach ($block_list_goods as $block) {
- $goods_array = unserialize($block['block_content']);
- foreach ($goods_array as $goods_key => $goods_value) {
- //商品信息
- $goods_info = Model('goods')->getGoodsOnlineInfoByID($goods_value['goods_id']);
- $new_goods_price = $goods_info['goods_price'];
- //抢购
- if (C('groupbuy_allow')) {
- $groupbuy_info = Model('groupbuy')->getGroupbuyInfoByGoodsCommonID($goods_info['goods_commonid']);
- if (!empty($groupbuy_info)) {
- $new_goods_price = $groupbuy_info['groupbuy_price'];
- }
- }
- //限时折扣
- if (C('promotion_allow') && empty($groupbuy_info)) {
- $xianshi_info = Model('p_xianshi_goods')->getXianshiGoodsInfoByGoodsID($goods_value['goods_id']);
- if (!empty($xianshi_info)) {
- $new_goods_price = $xianshi_info['xianshi_price'];
- }
- }
- $goods_array[$goods_key]['goods_price'] = $new_goods_price;
- }
- //更新块数据
- $update = array();
- $update['block_content'] = serialize($goods_array);
- $model_store_decoration->editStoreDecorationBlock($update, array('block_id' => $block['block_id']));
- }
- }
- }
- /**
- * 装修预览
- */
- public function decoration_previewOp() {
- $decoration_id = intval($_GET['decoration_id']);
- $model_store_decoration = Model('store_decoration');
- $decoration_info = $model_store_decoration->getStoreDecorationInfoDetail($decoration_id, $_SESSION['store_id']);
- if($decoration_info) {
- $this->_output_decoration_info($decoration_info);
- } else {
- showMessage(L('param_error'), '', 'error');
- }
- //店铺信息
- $model_store = Model('store');
- $store_info = $model_store->getStoreOnlineInfoByID($_SESSION['store_id']);
- Tpl::output('store_info', $store_info);
- Tpl::output('store_theme', 'default');
- Tpl::setLayout('store_layout');
- Tpl::showpage('store_decoration.preview');
- }
- /**
- * 装修静态文件生成
- */
- public function decoration_buildOp() {
- //静态文件路径
- $html_path = BASE_UPLOAD_PATH.DS.ATTACH_STORE.DS.'decoration'.DS.'html'.DS;
- if(!is_dir($html_path)){
- if (!@mkdir($html_path, 0755)){
- $data = array();
- $data['error'] = '页面生成失败';
- echo json_encode($data);die;
- }
- }
- $decoration_id = intval($_GET['decoration_id']);
- //更新商品数据
- $this->_update_module_goods_info($decoration_id, $_SESSION['store_id']);
- $model_store_decoration = Model('store_decoration');
- $decoration_info = $model_store_decoration->getStoreDecorationInfoDetail($decoration_id, $_SESSION['store_id']);
- if($decoration_info) {
- $this->_output_decoration_info($decoration_info);
- } else {
- showMessage(L('param_error'), '', 'error');
- }
- $file_name = md5($_SESSION['store_id']);
- ob_start();
- Tpl::showpage('store_decoration.preview', 'null_layout');
- $result = file_put_contents($html_path . $file_name . '.html', ob_get_clean());
- if($result) {
- $data['message'] = '页面生成成功';
- } else {
- $data['error'] = '页面生成失败';
- }
- echo json_encode($data);die;
- }
- /**
- * 用户中心右边,小导航
- *
- * @param string $menu_type 导航类型
- * @param string $menu_key 当前导航的menu_key
- * @return
- */
- private function profile_menu($menu_key='') {
- $menu_array = array(
- 1=>array('menu_key'=>'decoration_setting','menu_name'=>'店铺装修','menu_url'=>urlShop('store_decoration', 'decoration_setting')),
- 2=>array('menu_key'=>'decoration_album','menu_name'=>'装修图库','menu_url'=>urlShop('store_decoration', 'decoration_album')),
- );
- Tpl::output('member_menu',$menu_array);
- Tpl::output('menu_key',$menu_key);
- }
- }
|