作者 SHW\戥岁。。

后台优化

@@ -96,6 +96,8 @@ class Litestoregoods extends Backend @@ -96,6 +96,8 @@ class Litestoregoods extends Backend
96 96
97 return json($result); 97 return json($result);
98 } 98 }
  99 + $this->assign('template', $this->request->domain() . '/static/template/商品导入模板.xlsx');
  100 +
99 return $this->view->fetch(); 101 return $this->view->fetch();
100 } 102 }
101 103
@@ -436,23 +438,22 @@ class Litestoregoods extends Backend @@ -436,23 +438,22 @@ class Litestoregoods extends Backend
436 if (!$PHPExcel = $reader->load($filePath)) { 438 if (!$PHPExcel = $reader->load($filePath)) {
437 $this->error(__('Unknown data format')); 439 $this->error(__('Unknown data format'));
438 } 440 }
439 - $currentSheet = $PHPExcel->getSheet(0); //读取文件中的第一个工作表  
440 - $allColumn = $currentSheet->getHighestDataColumn(); //取得最大的列号  
441 - $allRow = $currentSheet->getHighestRow(); //取得一共有多少行 441 + $currentSheet = $PHPExcel->getSheet(0); //读取文件中的第一个工作表
  442 + $allColumn = $currentSheet->getHighestDataColumn(); //取得最大的列号
  443 + $allRow = $currentSheet->getHighestRow(); //取得一共有多少行
442 $maxColumnNumber = Coordinate::columnIndexFromString($allColumn); // 一共多少列 444 $maxColumnNumber = Coordinate::columnIndexFromString($allColumn); // 一共多少列
443 for ($i = 2; $i <= $allRow; $i++) { 445 for ($i = 2; $i <= $allRow; $i++) {
444 if (!empty($PHPExcel->getActiveSheet()->getCell("A" . $i)->getValue())) { 446 if (!empty($PHPExcel->getActiveSheet()->getCell("A" . $i)->getValue())) {
445 - $insert[$i]['goods_name'] = $PHPExcel->getActiveSheet()->getCell("B" . $i)->getValue();//商品名称  
446 - $insert[$i]['keywords'] = $PHPExcel->getActiveSheet()->getCell("C" . $i)->getValue();//关键词  
447 - $category = $PHPExcel->getActiveSheet()->getCell("D" . $i)->getValue() ?? '';//类别 447 + $insert[$i]['goods_name'] = $PHPExcel->getActiveSheet()->getCell("A" . $i)->getValue();//商品名称
  448 + $insert[$i]['keywords'] = $PHPExcel->getActiveSheet()->getCell("B" . $i)->getValue();//关键词
  449 + $category = $PHPExcel->getActiveSheet()->getCell("C" . $i)->getValue() ?? '';//类别
448 $insert[$i]['category_id'] = Db::name('litestore_category')->where('name', $category)->value('id') ?? ''; 450 $insert[$i]['category_id'] = Db::name('litestore_category')->where('name', $category)->value('id') ?? '';
449 - $insert[$i]['activity_id'] = $PHPExcel->getActiveSheet()->getCell("E" . $i)->getValue() ?? '';//活动类型  
450 - $insert[$i]['spec_type'] = $PHPExcel->getActiveSheet()->getCell("F" . $i)->getValue() ?? '';//规格类型  
451 - $insert[$i]['is_index'] = $PHPExcel->getActiveSheet()->getCell("N" . $i)->getValue() ?? '';//是否首页  
452 - $insert[$i]['goods_status'] = $PHPExcel->getActiveSheet()->getCell("M" . $i)->getValue() ?? '';//商品状态  
453 - $spec_insert[$i]['stock_num'] = $PHPExcel->getActiveSheet()->getCell("G" . $i)->getValue() ?? '';//库存  
454 - $spec_insert[$i]['goods_price'] = $PHPExcel->getActiveSheet()->getCell("K" . $i)->getValue() ?? '';//现价  
455 - $spec_insert[$i]['line_price'] = $PHPExcel->getActiveSheet()->getCell("I" . $i)->getValue() ?? '';//原价 451 + $insert[$i]['activity_id'] = $PHPExcel->getActiveSheet()->getCell("D" . $i)->getValue() ?? '';//活动类型
  452 + $insert[$i]['is_index'] = $PHPExcel->getActiveSheet()->getCell("I" . $i)->getValue() ?? '';//是否首页
  453 + $insert[$i]['goods_status'] = $PHPExcel->getActiveSheet()->getCell("H" . $i)->getValue() ?? '';//商品状态
  454 + $spec_insert[$i]['stock_num'] = $PHPExcel->getActiveSheet()->getCell("E" . $i)->getValue() ?? '';//库存
  455 + $spec_insert[$i]['goods_price'] = $PHPExcel->getActiveSheet()->getCell("G" . $i)->getValue() ?? '';//现价
  456 + $spec_insert[$i]['line_price'] = $PHPExcel->getActiveSheet()->getCell("F" . $i)->getValue() ?? '';//原价
456 } 457 }
457 } 458 }
458 } catch (\Exception $exception) { 459 } catch (\Exception $exception) {
@@ -464,9 +465,8 @@ class Litestoregoods extends Backend @@ -464,9 +465,8 @@ class Litestoregoods extends Backend
464 try { 465 try {
465 466
466 $res_goods = $this->model->saveAll($insert); 467 $res_goods = $this->model->saveAll($insert);
467 - halt($res_goods);  
468 foreach ($spec_insert as $key => &$v) { 468 foreach ($spec_insert as $key => &$v) {
469 - $v['goods_id'] = $res_goods[$key]['id']; 469 + $v['goods_id'] = $res_goods[$key]['goods_id'];
470 } 470 }
471 unset($v); 471 unset($v);
472 $this->spec_model->saveAll($spec_insert); 472 $this->spec_model->saveAll($spec_insert);
@@ -29,6 +29,7 @@ @@ -29,6 +29,7 @@
29 <a href="javascript:;" 29 <a href="javascript:;"
30 class="btn btn-info btn-export {:$auth->check('litestore/litestoregoods/export')?'':'hide'}" 30 class="btn btn-info btn-export {:$auth->check('litestore/litestoregoods/export')?'':'hide'}"
31 title="{:__('Export')}" id="btn-export-file"><i class="fa fa-download"></i> 批量导出</a> 31 title="{:__('Export')}" id="btn-export-file"><i class="fa fa-download"></i> 批量导出</a>
  32 + <a href="{$template}" class="btn btn-info"><i class="fa fa-folder-open"></i> {:__('导入模板下载')}</a>
32 33
33 <!-- <div class="dropdown btn-group {:$auth->check('litestore/litestoregoods/multi')?'':'hide'}">--> 34 <!-- <div class="dropdown btn-group {:$auth->check('litestore/litestoregoods/multi')?'':'hide'}">-->
34 <!-- <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>--> 35 <!-- <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>-->
@@ -18,7 +18,7 @@ return [ @@ -18,7 +18,7 @@ return [
18 // 应用命名空间 18 // 应用命名空间
19 'app_namespace' => 'app', 19 'app_namespace' => 'app',
20 // 应用调试模式 20 // 应用调试模式
21 - 'app_debug' => Env::get('app.debug', true), 21 + 'app_debug' => Env::get('app.debug', false),
22 // 应用Trace 22 // 应用Trace
23 'app_trace' => Env::get('app.trace', false), 23 'app_trace' => Env::get('app.trace', false),
24 // 应用模式状态 24 // 应用模式状态
1 <?php 1 <?php
2 2
3 return array ( 3 return array (
4 - 'name' => '临期食品', 4 + 'name' => '橙子优选',
5 'beian' => '', 5 'beian' => '',
6 'cdnurl' => '', 6 'cdnurl' => '',
7 - 'version' => '1.0.1', 7 + 'version' => '1.0.2',
8 'timezone' => 'Asia/Shanghai', 8 'timezone' => 'Asia/Shanghai',
9 'forbiddenip' => '', 9 'forbiddenip' => '',
10 'languages' => 10 'languages' =>
@@ -41,16 +41,22 @@ return array ( @@ -41,16 +41,22 @@ return array (
41 'category2' => '分类二', 41 'category2' => '分类二',
42 'custom' => '自定义', 42 'custom' => '自定义',
43 ), 43 ),
44 - 'user_agreement' => '<p>64645646564公开警告</p><p>;回来了框架</p>',  
45 - 'privacy_agreement' => '<p>45315448</p><p>他房间后</p>',  
46 - 'notice' => '阿达萨达萨达撒旦撒旦asdasdasdasdsadasdasdasdassssssssddddddddddddsadsad啊实打实大苏打撒大苏打实打实',  
47 - 'advert' => '/uploads/20220114/95d210316c68dcc4d4c13f5b605ca463.jpg',  
48 - 'invite_rule' => '啊实打实大苏打', 44 + 'user_agreement' => '<p><div><p><strong>一、序言</strong> <br /> 1、您使用简书软件和/或服务,即视为您签署了本协议,表明您自愿接受本协议全部条款的约束,本协议将构成您与上海佰集科技有限公司(以下称我公司)就“简书”软件及服务(以下统称“简书”)之间具有约束力的法律文件。无论您是进入简书浏览网页,还是在简书上发布任何内容,或者是直接或通过各类方式(如站外API引用等)间接使用简书的行为,都将被视作已无条件接受本声明所涉全部内容。</p>
  45 +<p>2、我公司有权利对本协议进行修改,我公司将在简书相关页面公告或发送通知等方式公布修改的内容,修改后的协议一经公布即有效的代替原协议。如果您不同意本协议的修改,请立即停止访问或使用简书或取消已经获得的服务;如果您选择继续访问或使用简书,则视为您已接受本协议的修改。</p>
  46 +<p>3、本协议所列明的条款,并不能完全涵盖您与我公司之间所有的权利和义务。因此,我公司不定期公布的其他声明、规则、子协议等均视为本协议之补充协议,为本协议不可分割的组成部分,与本协议具有同等法律效力。</p>
  47 +<p>4、如本协议与简书的补充协议不一致,以补充协议内容为准。</p></div></p><p><br /></p>',
  48 + 'privacy_agreement' => '<p><br /></p><div><p>1、帐号的取得 (1)您确认,在您开始使用简书时,已经具备中华人民共和国法律规定的与您行为相适应的民事行为能力。若您不具备前述与您行为相适应的民事行为能力,则您及您的监护人应依照法律规定承担因此而导致的一切后果。</p>
  49 +<p>(2)您注册成功后,即成为简书注册用户,用户须对在简书的注册信息的真实性、合法性、有效性承担全部责任。您可自行创建、修改昵称,但用户名和昵称的命名及使用应遵守相关法律法规并符合网络道德,不得冒充他人或恶意注册使人误认;不得利用他人的名义发布任何信息;不得恶意使用注册帐号导致其他用户误认;用户名和昵称中不能含有任何侮辱、诽谤、淫秽或暴力等侵害他人合法权益或违反公序良俗的词语。如您违反前述规定,简书有权随时限制或拒绝您使用该账号,甚至注销该账号。 (3)用户名的管理 1)请勿以党和国家领导人或其他名人的真实姓名、字、号、艺名、笔名、头衔等注册和使用昵称(如确为本人,需要提交相关证据并通过审核方可允许使用); 2)请勿以国家组织机构或其他组织机构的名称等注册和使用昵称(如确为该机构,需要提交相关证据并通过审核方可允许使用); 3)请勿注册和使用与其他网友相同、相仿的用户名或昵称; 4)请勿注册和使用不文明、不健康的用户名和昵称; 5)请勿注册和使用易产生歧义、引起他人误解或带有各种奇形怪状符号的用户名和昵称。 6)用户以虚假信息骗取账号名称注册,或账号头像、简介等注册信息存在违法和不良信息的,简书将暂停或注销。</p>
  50 +<p>2、请您妥善保管您注册时填写的用户帐号和密码,不要将帐号密码告知他人,因您原因导致帐号或密码泄露而造成的法律后果由用户负责。同时,您还应当对以此帐号登录进行的所有活动和事件承担全部后果与法律责任。</p>
  51 +<p>3、若您的帐号或密码遗失,可以通过注册信息按照相关步骤找回密码,若您发现账号遭到未授权的使用或存在其他安全漏洞的情况,应立即告知我公司。</p></div><p><br /></p><p><br /></p>',
  52 + 'notice' => '于10月6日 全场半价全场半价 于10月6日 全场半价全场半价 于10月6日 全场半价全场半价',
  53 + 'advert' => '/uploads/20220126/fc7a7c9c0c0ea799bafe33a82c67d71b.png',
  54 + 'invite_rule' => '这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容',
49 'secret' => '2d87e8e4f8e39ec44d4b0715107cf45b', 55 'secret' => '2d87e8e4f8e39ec44d4b0715107cf45b',
50 'appid' => 'wx3fb93805fc3f459d', 56 'appid' => 'wx3fb93805fc3f459d',
51 - 'activity_image' => '/uploads/20220114/95d210316c68dcc4d4c13f5b605ca463.jpg', 57 + 'activity_image' => '/uploads/20220126/dce5bbd92d14e56a278d7bfffc5090ba.png',
52 'work_time' => '早9:00-晚9:00', 58 'work_time' => '早9:00-晚9:00',
53 - 'work_qrcode' => '/uploads/20220114/95d210316c68dcc4d4c13f5b605ca463.jpg',  
54 - 'work_mobile' => '17695794151',  
55 - 'withdraw_content' => '提现说明', 59 + 'work_qrcode' => '/uploads/20220126/71edd8f43981eb5957b5475dd266b27d.png',
  60 + 'work_mobile' => '15837058911',
  61 + 'withdraw_content' => '<p style="white-space:normal;">1、帐号的取得 (1)您确认,在您开始使用简书时,已经具备中华人民共和国法律规定的与您行为相适应的民事行为能力。若您不具备前述与您行为相适应的民事行为能力,则您及您的监护人应依照法律规定承担因此而导致的一切后果。</p><p style="white-space:normal;">(2)您注册成功后,即成为简书注册用户,用户须对在简书的注册信息的真实性、合法性、有效性承担全部责任。您可自行创建、修改昵称,但用户名和昵称的命名及使用应遵守相关法律法规并符合网络道德,不得冒充他人或恶意注册使人误认;不得利用他人的名义发布任何信息;不得恶意使用注册帐号导致其他用户误认;用户名和昵称中不能含有任何侮辱、诽谤、淫秽或暴力等侵害他人合法权益或违反公序良俗的词语。如您违反前述规定,简书有权随时限制或拒绝您使用该账号,甚至注销该账号。 (3)用户名的管理 1)请勿以党和国家领导人或其他名人的真实姓名、字、号、艺名、笔名、头衔等注册和使用昵称(如确为本人,需要提交相关证据并通过审核方可允许使用); 2)请勿以国家组织机构或其他组织机构的名称等注册和使用昵称(如确为该机构,需要提交相关证据并通过审核方可允许使用); 3)请勿注册和使用与其他网友相同、相仿的用户名或昵称; 4)请勿注册和使用不文明、不健康的用户名和昵称; 5)请勿注册和使用易产生歧义、引起他人误解或带有各种奇形怪状符号的用户名和昵称。</p>',
56 ); 62 );
@@ -11,6 +11,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template', 'litestor @@ -11,6 +11,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template', 'litestor
11 edit_url: 'litestore/litestoregoods/edit', 11 edit_url: 'litestore/litestoregoods/edit',
12 del_url: 'litestore/litestoregoods/del', 12 del_url: 'litestore/litestoregoods/del',
13 multi_url: 'litestore/litestoregoods/multi', 13 multi_url: 'litestore/litestoregoods/multi',
  14 + import_url: 'litestore/litestoregoods/import',
14 table: 'litestore_goods', 15 table: 'litestore_goods',
15 } 16 }
16 }); 17 });