123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646 |
- <?php
- namespace app\home\controller;
- use think\facade\View;
- use think\Image;
- use think\facade\Lang;
- use think\facade\Db;
- /**
-
- *
-
- *
- * ----------------------------------------------------------------------------
- *
-
- * 控制器
- */
- class Sellersetting extends BaseSeller
- {
- const MAX_MB_SLIDERS = 5;
- public function initialize()
- {
- parent::initialize();
- Lang::load(base_path() . 'home/lang/' . config('lang.default_lang') . '/sellersetting.lang.php');
- }
- /*
- * 店铺设置
- */
- public function setting()
- {
- /**
- * 实例化模型
- */
- $store_model = model('store');
- $store_id = session('store_id'); //当前店铺ID
- /**
- * 获取店铺信息
- */
- $store_info = $store_model->getStoreInfoByID($store_id);
- $if_miniprocode = $this->getMiniProCode(1);
- View::assign('miniprogram_code', $if_miniprocode ? (UPLOAD_SITE_URL . DIRECTORY_SEPARATOR . ATTACH_STORE . DIRECTORY_SEPARATOR . session('store_id') . '/miniprogram_code.png') : '');
- /**
- * 保存店铺设置
- */
- if (request()->isPost()) {
- /**
- * 更新入库
- */
- $param = array(
- 'store_vrcode_prefix' => preg_match('/^[a-zA-Z0-9]{1,3}$/', input('post.store_vrcode_prefix')) ? input('post.store_vrcode_prefix') : null,
- 'store_qq' => input('post.store_qq'),
- 'store_ww' => input('post.store_ww'),
- 'store_phone' => input('post.store_phone'),
- 'store_mainbusiness' => input('post.store_mainbusiness'),
- 'store_keywords' => input('post.seo_keywords'),
- 'store_description' => input('post.seo_description')
- );
- if (!empty(input('post.store_name'))) {
- $store = $store_model->getStoreInfo(array('store_name' => input('param.store_name')));
- //店铺名存在,则提示错误
- if (!empty($store) && ($store_id != $store['store_id'])) {
- $this->error(lang('please_change_another_name'));
- }
- $param['store_name'] = input('post.store_name');
- }
- //店铺名称修改处理
- if (input('param.store_name') != $store_info['store_name'] && !empty(input('post.store_name'))) {
- $where = array();
- $where[] = array('store_id', '=', $store_id);
- $update = array();
- $update['store_name'] = input('param.store_name');
- Db::name('goodscommon')->where($where)->update($update);
- Db::name('goods')->where($where)->update($update);
- }
- $this->getMiniProCode(1);
- $store_model->editStore($param, array('store_id' => $store_id));
- $this->success(lang('ds_common_save_succ'), (string) url('Sellersetting/setting'));
- }
- /**
- * 实例化店铺等级模型
- */
- // 从基类中读取店铺等级信息
- $store_grade = $this->store_grade;
- /**
- * 输出店铺信息
- */
- /* 设置卖家当前菜单 */
- $this->setSellerCurMenu('seller_setting');
- /* 设置卖家当前栏目 */
- $this->setSellerCurItem('store_setting');
- View::assign('store_info', $store_info);
- View::assign('store_grade', $store_grade);
- /**
- * 页面输出
- */
- return View::fetch($this->template_dir . 'setting');
- }
- public function getMiniProCode($force = 0)
- {
- if ($force || !file_exists(BASE_UPLOAD_PATH . DIRECTORY_SEPARATOR . ATTACH_STORE . DIRECTORY_SEPARATOR . session('store_id') . '/miniprogram_code.png')) {
- $wechat_model = model('wechat');
- $wechat_model->getOneWxconfig();
- $a = $wechat_model->getMiniProCode(session('store_id'), 'pages/home/storedetail/Storedetail');
- if (@imagecreatefromstring($a) == false) {
- $a = json_decode($a);
- //View::assign('errmsg',$a->errmsg);
- } else {
- if (is_dir(BASE_UPLOAD_PATH . DIRECTORY_SEPARATOR . ATTACH_STORE . DIRECTORY_SEPARATOR . session('store_id')) || (!is_dir(BASE_UPLOAD_PATH . DIRECTORY_SEPARATOR . ATTACH_STORE . DIRECTORY_SEPARATOR . session('store_id')) && mkdir(BASE_UPLOAD_PATH . DIRECTORY_SEPARATOR . ATTACH_STORE . DIRECTORY_SEPARATOR . session('store_id'), 0755, true))) {
- file_put_contents(BASE_UPLOAD_PATH . DIRECTORY_SEPARATOR . ATTACH_STORE . DIRECTORY_SEPARATOR . session('store_id') . '/miniprogram_code.png', $a);
- return true;
- } else {
- //View::assign('errmsg','没有权限生成目录');
- }
- }
- } else {
- return true;
- }
- return false;
- }
- public function store_image_upload()
- {
- $store_id = session('store_id');
- $upload_file = BASE_UPLOAD_PATH . DIRECTORY_SEPARATOR . ATTACH_STORE . DIRECTORY_SEPARATOR . $store_id;
- $file_name = session('store_id') . '_' . date('YmdHis') . rand(10000, 99999) . '.png';
- $store_image_name = input('param.id');
- if (!in_array($store_image_name, array('store_logo', 'store_banner', 'store_avatar'))) {
- exit;
- }
- if (!empty($_FILES[$store_image_name]['name'])) {
- $res = ds_upload_pic(ATTACH_STORE . DIRECTORY_SEPARATOR . $store_id, $store_image_name, $file_name);
- if ($res['code']) {
- $file_name = $res['data']['file_name'];
- if (file_exists($upload_file . DIRECTORY_SEPARATOR . $file_name)) {
- /* 处理图片 */
- $image = Image::open($upload_file . DIRECTORY_SEPARATOR . $file_name);
- switch ($store_image_name) {
- case 'store_logo':
- $image->thumb(200, 60, \think\Image::THUMB_CENTER)->save($upload_file . DIRECTORY_SEPARATOR . $file_name);
- break;
- case 'store_banner':
- $image->thumb(1920, 150, \think\Image::THUMB_CENTER)->save($upload_file . DIRECTORY_SEPARATOR . $file_name);
- break;
- case 'store_avatar':
- $image->thumb(100, 100, \think\Image::THUMB_CENTER)->save($upload_file . DIRECTORY_SEPARATOR . $file_name);
- break;
- default:
- break;
- }
- }
- } else {
- json_encode(array('error' => $res['msg']));
- exit;
- }
- }
- $store_model = model('store');
- //删除原图
- $store_info = $store_model->getStoreInfoByID($store_id);
- @unlink($upload_file . DIRECTORY_SEPARATOR . $store_info[$store_image_name]);
- $result = $store_model->editStore(array($store_image_name => $file_name), array('store_id' => $store_id));
- if ($result) {
- $data = array();
- $data['file_name'] = $file_name;
- $data['file_path'] = ds_get_pic(ATTACH_STORE . '/' . $store_id, $file_name);
- /**
- * 整理为json格式
- */
- $output = json_encode($data);
- echo $output;
- exit;
- }
- }
- /**
- * 店铺幻灯片
- */
- public function store_slide()
- {
- /**
- * 模型实例化
- */
- $store_model = model('store');
- $upload_model = model('upload');
- /**
- * 保存店铺信息
- */
- if (request()->isPost()) {
- // 更新店铺信息
- $update = array();
- $update['store_slide'] = implode(',', input('post.image_path/a'));
- $update['store_slide_url'] = implode(',', input('post.image_url/a'));
- $store_model->editStore($update, array('store_id' => session('store_id')));
- // 删除upload表中数据
- $upload_model->delUpload(array('upload_type' => 3, 'item_id' => session('store_id')));
- ds_json_encode(10000, lang('ds_common_save_succ'));
- } else {
- // 删除upload中的无用数据
- $upload_info = $upload_model->getUploadList(array('upload_type' => 3, 'item_id' => session('store_id')), 'file_name');
- if (is_array($upload_info) && !empty($upload_info)) {
- foreach ($upload_info as $val) {
- @unlink(BASE_UPLOAD_PATH . DIRECTORY_SEPARATOR . ATTACH_SLIDE . DIRECTORY_SEPARATOR . $val['file_name']);
- }
- }
- $upload_model->delUpload(array('upload_type' => 3, 'item_id' => session('store_id')));
- $store_info = $store_model->getStoreInfoByID(session('store_id'));
- if ($store_info['store_slide'] != '' && $store_info['store_slide'] != ',,,,') {
- View::assign('store_slide', explode(',', $store_info['store_slide']));
- View::assign('store_slide_url', explode(',', $store_info['store_slide_url']));
- }
- $this->setSellerCurMenu('seller_setting');
- /* 设置卖家当前栏目 */
- $this->setSellerCurItem('store_slide');
- return View::fetch($this->template_dir . 'slide');
- }
- }
- /**
- * 店铺幻灯片ajax上传
- */
- public function silde_image_upload()
- {
- $file_id = intval(input('param.file_id'));
- $id = input('param.id');
- if ($file_id < 0 || empty($id)) {
- return;
- }
- $file_name = session('store_id') . '_' . $file_id . '.png';
- $res = ds_upload_pic(ATTACH_SLIDE, $id, $file_name);
- if ($res['code']) {
- $file_name = $res['data']['file_name'];
- $img_path = $file_name;
- $output['file_id'] = $file_id;
- $output['id'] = $id;
- $output['file_name'] = $img_path;
- $output['file_url'] = ds_get_pic(ATTACH_SLIDE, $img_path);
- echo json_encode($output);
- exit;
- } else {
- json_encode(array('error' => $res['msg']));
- exit;
- }
- }
- /**
- * ajax删除幻灯片图片
- */
- public function dorp_img()
- {
- $file_id = intval(input('param.file_id'));
- $img_src = input('param.img_src');
- if ($file_id < 0 || empty($img_src)) {
- return;
- }
- $ext = strrchr($img_src, '.');
- $file_name = session('store_id') . '_' . $file_id . $ext;
- @unlink(BASE_UPLOAD_PATH . DIRECTORY_SEPARATOR . ATTACH_SLIDE . DIRECTORY_SEPARATOR . $file_name);
- echo json_encode(array('succeed' => lang('ds_common_save_succ')));
- die;
- }
- /**
- * 卖家店铺主题设置
- *
- * @param string
- * @param string
- * @return
- */
- public function theme()
- {
- /**
- * 店铺信息
- */
- $store_class = model('store');
- $store_info = $store_class->getStoreInfoByID(session('store_id'));
- /**
- * 主题配置信息
- */
- $style_data = array();
- $style_configurl = PUBLIC_PATH . '/static/home/default/store/styles/' . "styleconfig.php";
- if (file_exists($style_configurl)) {
- include_once($style_configurl);
- }
- /**
- * 当前店铺主题
- */
- $curr_store_theme = !empty($store_info['store_theme']) ? $store_info['store_theme'] : 'default';
- /**
- * 当前店铺预览图片
- */
- $curr_image = BASE_SITE_ROOT . '/static/home/default/store/styles/' . $curr_store_theme . '/images/preview.jpg';
- $curr_theme = array(
- 'curr_name' => $curr_store_theme,
- 'curr_truename' => $style_data[$curr_store_theme]['truename'],
- 'curr_image' => $curr_image
- );
- // 自营店全部可用
- if (check_platform_store()) {
- $themes = array_keys($style_data);
- } else {
- /**
- * 店铺等级
- */
- $grade_class = model('storegrade');
- $grade = $grade_class->getOneStoregrade($store_info['grade_id']);
- /**
- * 可用主题
- */
- $themes = explode('|', $grade['storegrade_template']);
- }
- $theme_list = array();
- /**
- * 可用主题预览图片
- */
- foreach ($style_data as $key => $val) {
- if (in_array($key, $themes)) {
- $theme_list[$key] = array(
- 'name' => $key, 'truename' => $val['truename'],
- 'image' => BASE_SITE_ROOT . '/static/home/default/store/styles/' . $key . '/images/preview.jpg'
- );
- }
- }
- /**
- * 页面输出
- */
- $this->setSellerCurMenu('seller_setting');
- $this->setSellerCurItem('store_theme');
- View::assign('store_info', $store_info);
- View::assign('curr_theme', $curr_theme);
- View::assign('theme_list', $theme_list);
- return View::fetch($this->template_dir . 'theme');
- }
- /**
- * 卖家店铺主题设置
- *
- * @param string
- * @param string
- * @return
- */
- public function set_theme()
- {
- //读取语言包
- $style = input('param.style_name');
- $style = isset($style) ? trim($style) : null;
- if (!empty($style) && file_exists(PUBLIC_PATH . '/static/home/default/store/styles/theme/' . $style . '/images/preview.jpg')) {
- $store_class = model('store');
- $rs = $store_class->editStore(array('store_theme' => $style), array('store_id' => session('store_id')));
- ds_json_encode(10000, lang('store_theme_congfig_success'));
- } else {
- ds_json_encode(10001, lang('store_theme_congfig_fail'));
- }
- }
- protected function getStoreMbSliders()
- {
- $store_info = model('store')->getStoreInfoByID(session('store_id'));
- $mbSliders = @unserialize($store_info['mb_sliders']);
- if (!$mbSliders) {
- $mbSliders = array_fill(1, self::MAX_MB_SLIDERS, array(
- 'img' => '', 'type' => 1, 'link' => '',
- ));
- }
- return $mbSliders;
- }
- protected function setStoreMbSliders(array $mbSliders)
- {
- return model('store')->editStore(array(
- 'mb_sliders' => serialize($mbSliders),
- ), array(
- 'store_id' => session('store_id'),
- ));
- }
- public function store_mb_sliders()
- {
- //上传文件名称
- $fileName = input('param.id');
- //文件ID
- $file_id = intval(input('param.file_id'));
- if (!preg_match('/^file_(\d+)$/', $fileName, $fileIndex) || empty($_FILES[$fileName]['name'])) {
- echo json_encode(array('error' => lang('param_error')));
- exit;
- }
- $fileIndex = (int) $fileIndex[1];
- if ($fileIndex < 1 || $fileIndex > self::MAX_MB_SLIDERS) {
- echo json_encode(array('error' => lang('param_error')));
- exit;
- }
- $mbSliders = $this->getStoreMbSliders();
- $file_name = session('store_id') . '_' . $file_id . '.png';
- $res = ds_upload_pic(ATTACH_STORE . DIRECTORY_SEPARATOR . 'mobileslide', $fileName, $file_name);
- if ($res['code']) {
- $file_name = $res['data']['file_name'];
- $newImg = $file_name;
- $oldImg = $mbSliders[$fileIndex]['img'];
- $mbSliders[$fileIndex]['img'] = $newImg;
- //即时更新
- $this->setStoreMbSliders($mbSliders);
- if ($oldImg && file_exists($oldImg)) {
- unlink($oldImg);
- }
- echo json_encode(array(
- 'uploadedUrl' => ds_get_pic(ATTACH_STORE . DIRECTORY_SEPARATOR . 'mobileslide', $newImg),
- ));
- exit;
- } else {
- echo json_encode(array('error' => $res['msg']));
- exit;
- }
- }
- public function store_mb_sliders_drop()
- {
- try {
- $id = (int) $_REQUEST['id'];
- if ($id < 1 || $id > self::MAX_MB_SLIDERS) {
- throw new \think\Exception(lang('param_error'), 10006);
- }
- $mbSliders = $this->getStoreMbSliders();
- $mbSliders[$id]['img'] = '';
- if (!$this->setStoreMbSliders($mbSliders)) {
- throw new \think\Exception(lang('update_failed'), 10006);
- }
- echo json_encode(array(
- 'success' => true,
- ));
- } catch (\Exception $ex) {
- echo json_encode(array(
- 'success' => false, 'error' => $ex->getMessage(),
- ));
- }
- }
- public function store_mobile()
- {
- View::assign('max_mb_sliders', self::MAX_MB_SLIDERS);
- $store_info = model('store')->getStoreInfoByID(session('store_id'));
- // 页头背景图
- $mb_title_img = $store_info['mb_title_img'] ? ds_get_pic(ATTACH_STORE, $store_info['mb_title_img']) : '';
- // 轮播
- $mbSliders = $this->getStoreMbSliders();
- if (request()->isPost()) {
- $update_array = array();
- if ($mb_title_img_del = !empty(input('post.mb_title_img_del'))) {
- $update_array['mb_title_img'] = '';
- }
- if (!empty($_FILES['mb_title_img']['name'])) {
- $file_name = session('store_id') . '_' . date('YmdHis') . rand(10000, 99999) . '.png';
- $res = ds_upload_pic(ATTACH_STORE, 'mb_title_img');
- if ($res['code']) {
- $file_name = $res['data']['file_name'];
- $mb_title_img_del = true;
- $update_array['mb_title_img'] = $file_name;
- } else {
- $this->error($res['msg']);
- }
- }
- if ($mb_title_img_del && $mb_title_img && file_exists($mb_title_img)) {
- unlink($mb_title_img);
- }
- // mb_sliders
- $skuToValid = array();
- $mb_sliders_links_array = input('post.mb_sliders_links/a'); #获取数组
- $mb_sliders_type_array = input('post.mb_sliders_type/a'); #获取数组
- $mb_sliders_sort_array = input('post.mb_sliders_sort/a'); #获取数组
- foreach ($mb_sliders_links_array as $k => $v) {
- if ($k < 1 || $k > self::MAX_MB_SLIDERS) {
- $this->error(lang('param_error'));
- }
- $type = intval($mb_sliders_type_array[$k]);
- switch ($type) {
- case 1:
- // 链接URL
- $v = (string) $v;
- if (!preg_match('#^https?://#', $v)) {
- $v = '';
- }
- break;
- case 2:
- // 商品ID
- $v = (int) $v;
- if ($v < 1) {
- $v = '';
- } else {
- $skuToValid[$k] = $v;
- }
- break;
- default:
- $type = 1;
- $v = '';
- break;
- }
- $mbSliders[$k]['type'] = $type;
- $mbSliders[$k]['link'] = $v;
- }
- if ($skuToValid) {
- $condition = array();
- $condition[] = array('goods_id', 'in', $skuToValid);
- $condition[] = array('store_id', '=', session('store_id'));
- $validSkus = model('goods')->getGoodsList($condition);
- if (!empty($validSkus)) {
- $validSkus = ds_change_arraykey($validSkus, 'goods_id');
- }
- foreach ($skuToValid as $k => $v) {
- if (!isset($validSkus[$v])) {
- $mbSliders[$k]['link'] = '';
- }
- }
- }
- // sort
- for ($i = 0; $i < self::MAX_MB_SLIDERS; $i++) {
- $sortedMbSliders[$i + 1] = @$mbSliders[$mb_sliders_sort_array[$i]];
- }
- $update_array['mb_sliders'] = serialize($sortedMbSliders);
- model('store')->editStore($update_array, array(
- 'store_id' => session('store_id'),
- ));
- $this->success(lang('save_success'), (string) url('Sellersetting/store_mobile'));
- }
- $mbSliderUrls = array();
- foreach ($mbSliders as $v) {
- if ($v['img']) {
- $mbSliderUrls[] = ds_get_pic(ATTACH_STORE . DIRECTORY_SEPARATOR . 'mobileslide', $v['img']);
- }
- }
- View::assign('mb_title_img', $mb_title_img);
- View::assign('mbSliders', $mbSliders);
- View::assign('mbSliderUrls', $mbSliderUrls);
- $this->setSellerCurMenu('seller_setting');
- $this->setSellerCurItem('store_mobile');
- return View::fetch($this->template_dir . 'store_mobile');
- }
- public function map()
- {
- $this->setSellerCurMenu('seller_setting');
- $this->setSellerCurItem('store_map');
- /**
- * 实例化模型
- */
- $store_model = model('store');
- $store_id = session('store_id'); //当前店铺ID
- /**
- * 获取店铺信息
- */
- $store_info = $store_model->getStoreInfoByID($store_id);
- /**
- * 保存店铺设置
- */
- if (request()->isPost()) {
- model('store')->editStore(array(
- 'store_address' => input('post.company_address_detail'),
- 'region_id' => input('post.district_id') ? input('post.district_id') : (input('post.city_id') ? input('post.city_id') : (input('post.province_id') ? input('post.province_id') : 0)),
- 'area_info' => input('post.company_address'),
- 'store_longitude' => input('post.longitude'),
- 'store_latitude' => input('post.latitude')
- ), array(
- 'store_id' => session('store_id'),
- ));
- ds_json_encode(10000, lang('save_success'));
- }
- View::assign('store_info', $store_info);
- View::assign('baidu_ak', config('ds_config.baidu_ak'));
- return View::fetch($this->template_dir . 'map');
- }
- /**
- * 用户中心右边,小导航
- *
- * @param string $menu_type 导航类型
- * @param string $name 当前导航的name
- * @return
- */
- protected function getSellerItemList()
- {
- $menu_array = array(
- 1 => array(
- 'name' => 'store_setting', 'text' => lang('ds_member_path_store_config'),
- 'url' => (string) url('Sellersetting/setting')
- ),
- 2 => array(
- 'name' => 'store_map', 'text' => lang('ds_member_path_store_map'),
- 'url' => (string) url('Sellersetting/map')
- ),
- 4 => array(
- 'name' => 'store_slide', 'text' => lang('ds_member_path_store_slide'),
- 'url' => (string) url('Sellersetting/store_slide')
- ), 5 => array(
- 'name' => 'store_theme', 'text' => lang('store_theme'), 'url' => (string) url('Sellersetting/theme')
- ),
- 7 => array(
- 'name' => 'store_mobile', 'text' => lang('mobile_phone_store_settings'), 'url' => (string) url('Sellersetting/store_mobile'),
- ),
- );
- return $menu_array;
- }
- }
|