diff --git a/application/admin/controller/Login.php b/application/admin/controller/Login.php index d98ea6f4..c466fa74 100644 --- a/application/admin/controller/Login.php +++ b/application/admin/controller/Login.php @@ -36,7 +36,7 @@ class Login extends SystemBasic //检验验证码 if(!captcha_check($verify)) return $this->failed('验证码错误,请重新输入'); $error = Session::get('login_error')?:['num'=>0,'time'=>time()]; - if($error['num'] >=5 && $error['time'] < strtotime('+ 5 minutes')) + if($error['num'] >=5 && $error['time'] > strtotime('- 5 minutes')) return $this->failed('错误次数过多,请稍候再试!'); //检验帐号密码 $res = SystemAdmin::login($account,$pwd); diff --git a/application/admin/controller/store/StoreCategory.php b/application/admin/controller/store/StoreCategory.php index d594f20f..71d72375 100644 --- a/application/admin/controller/store/StoreCategory.php +++ b/application/admin/controller/store/StoreCategory.php @@ -4,6 +4,7 @@ namespace app\admin\controller\store; use app\admin\controller\AuthController; use service\FormBuilder as Form; +use service\JsonService; use service\UtilService as Util; use service\JsonService as Json; use service\UploadService as Upload; @@ -27,18 +28,51 @@ class StoreCategory extends AuthController */ public function index() { - $pid = $this->request->param('pid')?$this->request->param('pid'):0; - $where = Util::getMore([ - ['is_show',''], - ['pid',$pid], - ['cate_name',''], - ],$this->request); - $this->assign('where',$where); + $this->assign('pid',$this->request->get('pid',0)); $this->assign('cate',CategoryModel::getTierList()); - $this->assign(CategoryModel::systemPage($where)); return $this->fetch(); } - + /* + * 异步获取分类列表 + * @return json + */ + public function category_list(){ + $where = Util::getMore([ + ['is_show',''], + ['pid',$this->request->param('pid','')], + ['cate_name',''], + ['page',1], + ['limit',20], + ['order',''] + ]); + return JsonService::successlayui(CategoryModel::CategoryList($where)); + } + /** + * 设置单个产品上架|下架 + * + * @return json + */ + public function set_show($is_show='',$id=''){ + ($is_show=='' || $id=='') && JsonService::fail('缺少参数'); + $res=CategoryModel::where(['id'=>$id])->update(['is_show'=>(int)$is_show]); + if($res){ + return JsonService::successful($is_show==1 ? '显示成功':'隐藏成功'); + }else{ + return JsonService::fail($is_show==1 ? '显示失败':'隐藏失败'); + } + } + /** + * 快速编辑 + * + * @return json + */ + public function set_category($field='',$id='',$value=''){ + $field=='' || $id=='' || $value=='' && JsonService::fail('缺少参数'); + if(CategoryModel::where(['id'=>$id])->update([$field=>$value])) + return JsonService::successful('保存成功'); + else + return JsonService::fail('保存失败'); + } /** * 显示创建资源表单页. * @@ -60,7 +94,7 @@ class StoreCategory extends AuthController Form::number('sort','排序'), Form::radio('is_show','状态',1)->options([['label'=>'显示','value'=>1],['label'=>'隐藏','value'=>0]]) ]; - $form = Form::make_post_form('添加产品',$field,Url::build('save')); + $form = Form::make_post_form('添加分类',$field,Url::build('save'),2); $this->assign(compact('form')); return $this->fetch('public/form-builder'); } @@ -119,7 +153,7 @@ class StoreCategory extends AuthController { $c = CategoryModel::get($id); if(!$c) return Json::fail('数据不存在!'); - $form = Form::create(Url::build('update',array('id'=>$id)),[ + $field = [ Form::select('pid','父级',(string)$c->getData('pid'))->setOptions(function() use($id){ $list = CategoryModel::getTierList(CategoryModel::where('id','<>',$id)); // $list = (Util::sortListTier(CategoryModel::where('id','<>',$id)->select()->toArray(),'顶级','pid','cate_name')); @@ -133,8 +167,9 @@ class StoreCategory extends AuthController Form::frameImageOne('pic','分类图标',Url::build('admin/widget.images/index',array('fodder'=>'pic')),$c->getData('pic'))->icon('image'), Form::number('sort','排序',$c->getData('sort')), Form::radio('is_show','状态',$c->getData('is_show'))->options([['label'=>'显示','value'=>1],['label'=>'隐藏','value'=>0]]) - ]); - $form->setMethod('post')->setTitle('添加分类'); + ]; + $form = Form::make_post_form('编辑分类',$field,Url::build('update',array('id'=>$id)),2); + $this->assign(compact('form')); return $this->fetch('public/form-builder'); } diff --git a/application/admin/controller/store/StoreProduct.php b/application/admin/controller/store/StoreProduct.php index b63a2811..5c53624d 100644 --- a/application/admin/controller/store/StoreProduct.php +++ b/application/admin/controller/store/StoreProduct.php @@ -17,9 +17,7 @@ use think\Request; use app\admin\model\store\StoreCategory as CategoryModel; use app\admin\model\store\StoreProduct as ProductModel; use think\Url; -use app\admin\model\ump\StoreSeckill as StoreSeckillModel; -use app\admin\model\order\StoreOrder as StoreOrderModel; -use app\admin\model\ump\StoreBargain as StoreBargainModel; + use app\admin\model\system\SystemAttachment; @@ -145,13 +143,13 @@ class StoreProduct extends AuthController Form::input('store_info','产品简介')->type('textarea'), Form::input('keyword','产品关键字')->placeholder('多个用英文状态下的逗号隔开'), Form::input('unit_name','产品单位','件'), - Form::frameImageOne('image','产品主图片(305*305px)',Url::build('admin/widget.images/index',array('fodder'=>'image')))->icon('image')->width('100%')->height('550px'), - Form::frameImages('slider_image','产品轮播图(640*640px)',Url::build('admin/widget.images/index',array('fodder'=>'slider_image')))->maxLength(5)->icon('images')->width('100%')->height('550px')->spin(0), + Form::frameImageOne('image','产品主图片(305*305px)',Url::build('admin/widget.images/index',array('fodder'=>'image')))->icon('image')->width('100%')->height('500px'), + Form::frameImages('slider_image','产品轮播图(640*640px)',Url::build('admin/widget.images/index',array('fodder'=>'slider_image')))->maxLength(5)->icon('images')->width('100%')->height('500px')->spin(0), Form::number('price','产品售价')->min(0)->col(8), Form::number('ot_price','产品市场价')->min(0)->col(8), Form::number('give_integral','赠送积分')->min(0)->precision(0)->col(8), Form::number('postage','邮费')->min(0)->col(Form::col(8)), - Form::number('sales','销量')->min(0)->precision(0)->col(8), + Form::number('sales','销量',0)->min(0)->precision(0)->col(8)->readonly(1), Form::number('ficti','虚拟销量')->min(0)->precision(0)->col(8), Form::number('stock','库存')->min(0)->precision(0)->col(8), Form::number('cost','产品成本价')->min(0)->col(8), @@ -163,8 +161,7 @@ class StoreProduct extends AuthController Form::radio('is_new','首发新品',0)->options([['label'=>'是','value'=>1],['label'=>'否','value'=>0]])->col(8), Form::radio('is_postage','是否包邮',0)->options([['label'=>'是','value'=>1],['label'=>'否','value'=>0]])->col(8) ]; - $form = Form::create(Url::build('save')); - $form->setMethod('post')->setTitle('添加产品')->components($field)->setSuccessScript('parent.$(".J_iframe:visible")[0].contentWindow.location.reload();'); + $form = Form::make_post_form('添加产品',$field,Url::build('save'),2); $this->assign(compact('form')); return $this->fetch('public/form-builder'); } @@ -265,7 +262,7 @@ class StoreProduct extends AuthController if(!$id) return $this->failed('数据不存在'); $product = ProductModel::get($id); if(!$product) return Json::fail('数据不存在!'); - $form = Form::create(Url::build('update',array('id'=>$id)),[ + $field = [ Form::select('cate_id','产品分类',explode(',',$product->getData('cate_id')))->setOptions(function(){ $list = CategoryModel::getTierList(); $menus=[]; @@ -278,13 +275,13 @@ class StoreProduct extends AuthController Form::input('store_info','产品简介',$product->getData('store_info'))->type('textarea'), Form::input('keyword','产品关键字',$product->getData('keyword'))->placeholder('多个用英文状态下的逗号隔开'), Form::input('unit_name','产品单位',$product->getData('unit_name')), - Form::frameImageOne('image','产品主图片(305*305px)',Url::build('admin/widget.images/index',array('fodder'=>'image')),$product->getData('image'))->icon('image')->width('100%')->height('550px'), - Form::frameImages('slider_image','产品轮播图(640*640px)',Url::build('admin/widget.images/index',array('fodder'=>'slider_image')),json_decode($product->getData('slider_image'),1))->maxLength(5)->icon('images')->width('100%')->height('550px'), + Form::frameImageOne('image','产品主图片(305*305px)',Url::build('admin/widget.images/index',array('fodder'=>'image')),$product->getData('image'))->icon('image')->width('100%')->height('500px'), + Form::frameImages('slider_image','产品轮播图(640*640px)',Url::build('admin/widget.images/index',array('fodder'=>'slider_image')),json_decode($product->getData('slider_image'),1))->maxLength(5)->icon('images')->width('100%')->height('500px'), Form::number('price','产品售价',$product->getData('price'))->min(0)->precision(2)->col(8), Form::number('ot_price','产品市场价',$product->getData('ot_price'))->min(0)->col(8), Form::number('give_integral','赠送积分',$product->getData('give_integral'))->min(0)->precision(0)->col(8), Form::number('postage','邮费',$product->getData('postage'))->min(0)->col(8), - Form::number('sales','销量',$product->getData('sales'))->min(0)->precision(0)->col(8), + Form::number('sales','销量',$product->getData('sales'))->min(0)->precision(0)->col(8)->readonly(1), Form::number('ficti','虚拟销量',$product->getData('ficti'))->min(0)->precision(0)->col(8), Form::number('stock','库存',ProductModel::getStock($id)>0?ProductModel::getStock($id):$product->getData('stock'))->min(0)->precision(0)->col(8), Form::number('cost','产品成本价',$product->getData('cost'))->min(0)->col(8), @@ -295,8 +292,8 @@ class StoreProduct extends AuthController Form::radio('is_best','精品推荐',$product->getData('is_best'))->options([['label'=>'是','value'=>1],['label'=>'否','value'=>0]])->col(8), Form::radio('is_new','首发新品',$product->getData('is_new'))->options([['label'=>'是','value'=>1],['label'=>'否','value'=>0]])->col(8), Form::radio('is_postage','是否包邮',$product->getData('is_postage'))->options([['label'=>'是','value'=>1],['label'=>'否','value'=>0]])->col(8) - ]); - $form->setMethod('post')->setTitle('编辑产品')->setSuccessScript('parent.$(".J_iframe:visible")[0].contentWindow.location.reload();'); + ]; + $form = Form::make_post_form('编辑产品',$field,Url::build('update',array('id'=>$id)),2); $this->assign(compact('form')); return $this->fetch('public/form-builder'); } @@ -325,7 +322,7 @@ class StoreProduct extends AuthController 'price', 'sort', 'stock', - 'sales', +// 'sales', 'ficti', ['give_integral',0], ['is_show',0], @@ -350,7 +347,7 @@ class StoreProduct extends AuthController if($data['postage'] == '' || $data['postage'] < 0) return Json::fail('请输入邮费'); if($data['cost'] == '' || $data['cost'] < 0) return Json::fail('请输入产品成本价'); if($data['stock'] == '' || $data['stock'] < 0) return Json::fail('请输入库存'); - if($data['sales'] == '' || $data['sales'] < 0) return Json::fail('请输入销量'); +// if($data['sales'] == '' || $data['sales'] < 0) return Json::fail('请输入销量'); if($data['give_integral'] < 0) return Json::fail('请输入赠送积分'); $data['image'] = $data['image'][0]; $data['slider_image'] = json_encode($data['slider_image']); @@ -442,11 +439,17 @@ class StoreProduct extends AuthController public function delete($id) { if(!$id) return $this->failed('数据不存在'); - $data['is_del'] = 1; - if(!ProductModel::edit($data,$id)) - return Json::fail(ProductModel::getErrorInfo('删除失败,请稍候再试!')); - else - return Json::successful('删除成功!'); + if(!ProductModel::be(['id'=>$id])) return $this->failed('产品数据不存在'); + if(ProductModel::be(['id'=>$id,'is_del'=>1])){ + return Json::fail(ProductModel::getErrorInfo('暂不支持回收站删除产品!')); + }else{ + $data['is_del'] = 1; + if(!ProductModel::edit($data,$id)) + return Json::fail(ProductModel::getErrorInfo('删除失败,请稍候再试!')); + else + return Json::successful('成功移到回收站!'); + } + } diff --git a/application/admin/controller/user/UserNotice.php b/application/admin/controller/user/UserNotice.php index 13aa3156..6e0db1a5 100644 --- a/application/admin/controller/user/UserNotice.php +++ b/application/admin/controller/user/UserNotice.php @@ -25,8 +25,15 @@ class UserNotice extends AuthController */ public function index() { - $this->assign(UserNoticeModel::getList()); - return $this->fetch(); + if($this->request->isAjax()){ + $where=Util::getMore([ + ['page',1], + ['limit',20] + ]); + return Json::successlayui(UserNoticeModel::getList($where)); + }else{ + return $this->fetch(); + } } /** @@ -289,8 +296,9 @@ class UserNotice extends AuthController public function send_user($id = 0,$uid = '') { if(!$id || $uid == '') return JsonService::fail('参数错误'); - $uid = ",".$uid.","; - UserNoticeModel::edit(array("is_send"=>1,"send_time"=>time(),'uid'=>$uid),$id); + $uids = UserNoticeModel::where(['id'=>$id])->value('uid'); + $uid = rtrim($uids,',').",".$uid.","; + UserNoticeModel::edit(array("send_time"=>time(),'uid'=>$uid),$id); return Json::successful('发送成功!'); } } \ No newline at end of file diff --git a/application/admin/controller/widget/Images.php b/application/admin/controller/widget/Images.php index 0799c777..6151a151 100644 --- a/application/admin/controller/widget/Images.php +++ b/application/admin/controller/widget/Images.php @@ -44,7 +44,6 @@ class Images extends AuthController public function upload() { $pid = input('pid')!= NULL ?input('pid'):session('pid'); - $res = Upload::image('file','attach'.DS.date('Y').DS.date('m').DS.date('d')); $thumbPath = Upload::thumb($res->dir); //产品图片上传记录 @@ -62,7 +61,7 @@ class Images extends AuthController // "type" => $fileInfo['type'], // "state" => "SUCCESS" 'code' =>200, - 'msg' =>'SUCCESS', + 'msg' =>'上传成功', 'src' =>$res->dir ); echo json_encode($info); diff --git a/application/admin/model/user/UserNotice.php b/application/admin/model/user/UserNotice.php index 4f3d61e5..ac18c7f0 100644 --- a/application/admin/model/user/UserNotice.php +++ b/application/admin/model/user/UserNotice.php @@ -24,9 +24,23 @@ class UserNotice extends ModelBasic /** * @return array */ - public static function getList(){ + public static function getList($where=[]){ $model = new self; $model->order('id desc'); + if(!empty($where)){ + $data=($data=$model->page((int)$where['page'],(int)$where['limit'])->select()) && count($data) ? $data->toArray() : []; + foreach ($data as &$item){ + if($item["uid"] != ''){ + $uids = explode(",",$item["uid"]); + array_splice($uids,0,1); + array_splice($uids,count($uids)-1,1); + $item["uid"] = $uids; + } + $item['send_time']=date('Y-m-d H:i:s',$item['send_time']); + } + $count=self::count(); + return compact('data','count'); + } return self::page($model,function($item,$key){ if($item["uid"] != ''){ $uids = explode(",",$item["uid"]); @@ -46,7 +60,7 @@ class UserNotice extends ModelBasic $model = new self; if(isset($where['title']) && $where['title'] != '') $model = $model->where('title','LIKE',"%".$where['title']."%"); $model = $model->where('type',2); - $model = $model->where('is_send',0); +// $model = $model->where('is_send',0); $model = $model->order('id desc'); return self::page($model,$where); } diff --git a/application/admin/model/wechat/WechatUser.php b/application/admin/model/wechat/WechatUser.php index 40542cc1..0ee0b3d3 100644 --- a/application/admin/model/wechat/WechatUser.php +++ b/application/admin/model/wechat/WechatUser.php @@ -200,7 +200,7 @@ use service\SystemConfigService; ->ExcelSave(); } return self::page($model,function ($item){ - $item['qr_code'] = QrcodeService::getForeverQrcode('spread',$item['uid']); + $item['qr_code'] = QrcodeService::getForeverQrcode('spread',$item['uid'])?:''; $item['extract_count_price'] = UserExtract::getUserCountPrice($item['uid']);//累计提现 $item['extract_count_num'] = UserExtract::getUserCountNum($item['uid']);//提现次数 },$where); diff --git a/application/admin/view/setting/system_config/index_alone.php b/application/admin/view/setting/system_config/index_alone.php index a75dbfb8..b098d2a1 100644 --- a/application/admin/view/setting/system_config/index_alone.php +++ b/application/admin/view/setting/system_config/index_alone.php @@ -1 +1 @@ -{extend name="public/container"} {block name="head"} {/block} {block name="content"}
配置
{volist name="list" id="vo"} {eq name="$vo['config_tab_id']" value="$tab_id"}
{switch name="$vo['type']" } {case value="text" break="1"} {/case} {case value="textarea" break="1"} {/case} {case value="checkbox" break="1"} $v){ $option[$k] = explode('=>',$v); } // dump($option); // exit(); } $checkbox_value = $vo['value']; if(!is_array($checkbox_value)) $checkbox_value = explode("\n",$checkbox_value); // dump($checkbox_value); // exit(); ?> {volist name="option" id="son" key="k"} {if condition="in_array($son[0],$checkbox_value)"} {else/} {/if} {/volist} {/case} {case value="radio" break="1"} $v){ $option[$k] = explode('=>',$v); } } ?> {volist name="option" id="son"} {if condition="$son[0] eq $vo['value']"}
{else /}
{/if} {/volist} {/case} {case value="upload" break="1"} {if condition="$vo['upload_type'] EQ 3"}
点击上传 {if condition="$num_img LT 1"}
{else/} {volist name="$vo['value']" id="img"}
删除
{/volist} {/if}
{elseif condition="$vo['upload_type'] EQ 2"/}
点击上传
{volist name="$vo['value']" id="img"}
image
删除
{/volist}
{else/}
{if condition="$num_img LT 1"}
{else/} {volist name="$vo['value']" id="img"}
image
删除
{/volist}
{/if}
{/if} {/case} {/switch}
{$vo.desc}
{/eq} {/volist}
{/block} {block name="script"} {/block} \ No newline at end of file +{extend name="public/container"} {block name="head"} {/block} {block name="content"}
配置
{volist name="list" id="vo"} {eq name="$vo['config_tab_id']" value="$tab_id"}
{switch name="$vo['type']" } {case value="text" break="1"} {/case} {case value="textarea" break="1"} {/case} {case value="checkbox" break="1"} $v){ $option[$k] = explode('=>',$v); } // dump($option); // exit(); } $checkbox_value = $vo['value']; if(!is_array($checkbox_value)) $checkbox_value = explode("\n",$checkbox_value); // dump($checkbox_value); // exit(); ?> {volist name="option" id="son" key="k"} {if condition="in_array($son[0],$checkbox_value)"} {else/} {/if} {/volist} {/case} {case value="radio" break="1"} $v){ $option[$k] = explode('=>',$v); } } ?> {volist name="option" id="son"} {if condition="$son[0] eq $vo['value']"}
{else /}
{/if} {/volist} {/case} {case value="upload" break="1"} {if condition="$vo['upload_type'] EQ 3"}
点击上传 {if condition="$num_img LT 1"}
{else/} {volist name="$vo['value']" id="img"}
删除
{/volist} {/if}
{elseif condition="$vo['upload_type'] EQ 2"/}
点击上传
{volist name="$vo['value']" id="img"}
image
删除
{/volist}
{else/}
{if condition="$num_img LT 1"}
{else/} {volist name="$vo['value']" id="img"}
image
删除
{/volist}
{/if}
{/if} {/case} {/switch}
{$vo.desc}
{/eq} {/volist}
{/block} {block name="script"} {/block} \ No newline at end of file diff --git a/application/admin/view/store/store_product/index.php b/application/admin/view/store/store_product/index.php index be9704f2..f86bc0a3 100644 --- a/application/admin/view/store/store_product/index.php +++ b/application/admin/view/store/store_product/index.php @@ -110,14 +110,14 @@ -