wupengfei 3 年之前
父節點
當前提交
2a3a903f92

+ 8 - 75
application/api/controller/Timedtask.php

@@ -15,86 +15,19 @@ use think\Db;
 class Timedtask
 {
     /**
-     * @title 定时取消订单
-     * @desc  定时取消订单
+     * @title 会员优惠券过期
+     * @desc  会员优惠券过期
      * @author  qc
-     * @url /api/Timedtask/cancelOrder
+     * @url /api/Timedtask/userCouponOver
      * @method GET
      */
-    public function cancelOrder()
+    public function userCouponOver()
     {
-        $sel_time = time() - 900;// 十五分钟内未支付的自动取消
-        $order_list = Db::table('ticket_order')
-            ->field('id,s_id,total_num')
-            ->where(['pay_state'=>0,'cancel_state'=>0])
-            ->where('create_tamp','<',$sel_time)
-            ->select();
-        foreach ($order_list as $order_info)
-        {
-            Db::startTrans();
-            try {
-                Db::table('ticket_order')
-                    ->where(['id'=>$order_info['id']])
-                    ->update(['cancel_state'=>1,'cancel_at'=>date('Y-m-d H:i:s'),'cancel_desc'=>'支付超时!自动取消']);
-                Db::table('film_info')->where('id', $order_info['s_id'])
-                    ->setInc('surplus_num', $order_info['total_num']);//增加场次余票
-                Db::commit();
-            }catch (\Exception $e){
-                Db::rollback();
-            }
-        }
+        Db::table('user_coupon_list')
+            ->where('past_at','> time',date('Y-m-d H:i:s'))
+            ->where('status','=',1)
+            ->update(['status'=>3]);
     }
 
-    /**
-     * @title 电影开场前(30分钟)定时发送消息提醒
-     * @desc  电影开场前(30分钟)定时发送消息提醒
-     * @author  qc
-     * @url /api/Timedtask/sendMessage
-     * @method GET
-     */
-    public function sendMessage()
-    {
-        $order_list = Db::table('ticket_order')
-            ->alias('o')
-            ->field('o.id,o.s_id,o.tel,l.name,f.show_time')
-            ->join('film_info f','o.s_id = f.id','LEFT')
-            ->join('film_list l','o.f_id = l.id','LEFT')
-            ->where(['o.pay_state'=>1,'o.is_remind'=>1,'o.has_remind'=>0,])
-            ->where('show_time','< time',date("Y-m-d H:i:s",time() + 1800))
-            ->select();
-        AlibabaCloud::accessKeyClient('LTAI5tKATi9QpdtaBpEHeCP4', 'F8B77fPPitlfRScTuPmQxfphLRpt6a')
-            ->regionId('cn-hangzhou')->asDefaultClient();
-        foreach ($order_list as $order_info)
-        {
-            if(!$order_info['tel'] || strlen($order_info['tel']) != 11) continue;
-            $result = AlibabaCloud::rpc()->product('Dysmsapi')->version('2017-05-25')
-                ->action('SendSms')->method('POST')->host('dysmsapi.aliyuncs.com')
-                ->options([
-                    'query' => [
-                        'RegionId' => "cn-hangzhou",
-                        'PhoneNumbers' => $order_info['tel'],
-                        'SignName' => "火星帝界",
-                        'TemplateCode' => "SMS_223197414",
-                        'TemplateParam' => json_encode(['film_name'=>$order_info['name'],'show_time'=>$order_info['show_time']]),
-                    ],
-                ])->request();
-            $result = $result->toArray();
-            if($result['Code'] == "OK") {
-                Db::table('ticket_order')->where(['id'=>$order_info['id']])->update(['has_remind'=>1]);
-            }
-        }
-
-    }
-
-    /**
-     *
-     */
-    public function changeLiveStatus()
-    {
-
-    }
-
-
-
 
 }

+ 235 - 0
application/store/controller/IntegralGoods.php

@@ -0,0 +1,235 @@
+<?php
+namespace app\store\controller;
+use library\Controller;
+use think\Db;
+
+/**
+ * 积分商品
+ * Class Goods
+ * @package app\store\controller
+ */
+class IntegralGoods extends Controller
+{
+
+    /**
+     * 绑定数据表
+     * @var string
+     */
+    protected $table = 'StoreGoods';
+
+    /**
+     * 商品列表
+     * @auth true
+     * @menu true
+     * @throws \think\Exception
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @throws \think\exception\DbException
+     * @throws \think\exception\PDOException
+     */
+    public function index()
+    {
+        $this->title = '商品管理';
+        $query = $this->_query($this->table)->where('is_deleted',0)->where([''])->like('name');
+        $query->dateBetween('create_at')->order('sort desc , id desc')->page();
+    }
+
+    /**
+     * 数据列表处理
+     * @auth true
+     * @menu true
+     * @param array $data
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @throws \think\exception\DbException
+     */
+    protected function _index_page_filter(&$data)
+    {
+        foreach ($data as $k=>&$v){
+
+        }
+    }
+
+
+
+    /**
+     * 添加商品
+     * @auth true
+     * @menu true
+     * @throws \think\Exception
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @throws \think\exception\DbException
+     * @throws \think\exception\PDOException
+     */
+    public function add()
+    {
+        $this->title = '添加商品';
+        // 分类
+        $goods_cate = Db::table('store_goods_cate')
+            ->field('id,title')
+            ->where(['is_deleted'=>0,'status'=>1,'pid'=>0])
+            ->order('sort desc ,id desc')
+            ->select();
+        array_walk($goods_cate,function (&$v){
+            $v['children'] =Db::table('store_goods_cate')
+                ->where(['is_deleted'=>0,'status'=>1,'pid'=>$v['id']])
+                ->order('sort desc ,id desc')
+                ->select();
+        });
+        $this->goods_cate =  $goods_cate;
+        // 规格
+        $goods_spec = Db::table('store_goods_specifica')
+                ->field('id,title,detail')
+                ->where(['is_deleted'=>0])
+                ->order('sort desc ,id desc')
+                ->select();
+        array_walk($goods_spec,function (&$val){
+           // $val['detail'] = json_decode($val['detail']);
+        });
+        $this->goods_spec = $goods_spec;
+        $this->_form($this->table, 'goods_no');
+    }
+
+
+    /**
+     * 编辑商品
+     * @auth true
+     * @menu true
+     * @throws \think\Exception
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @throws \think\exception\DbException
+     * @throws \think\exception\PDOException
+     */
+    function edit()
+    {
+        $this->title = '编辑商品';
+        // 分类
+        $goods_cate = Db::table('store_goods_cate')
+            ->field('id,title')
+            ->where(['is_deleted'=>0,'status'=>1,'pid'=>0])
+            ->order('sort desc ,id desc')
+            ->select();
+        array_walk($goods_cate,function (&$v){
+            $v['children'] =Db::table('store_goods_cate')
+                ->where(['is_deleted'=>0,'status'=>1,'pid'=>$v['id']])
+                ->order('sort desc ,id desc')
+                ->select();
+        });
+        $this->goods_cate =  $goods_cate;
+        // 规格
+        $goods_spec = Db::table('store_goods_specifica')
+            ->field('id,title,detail')
+            ->where(['is_deleted'=>0])
+            ->order('sort desc ,id desc')
+            ->select();
+        array_walk($goods_spec,function (&$val){
+            // $val['detail'] = json_decode($val['detail']);
+        });
+        $goods_spec = array_column($goods_spec,null,'id');
+        $this->goods_spec = $goods_spec;
+        $this->_form($this->table, 'form');
+    }
+
+
+
+
+
+    /**
+     * 表单数据处理
+     * @auth true
+     * @menu true
+     * @param array $data
+     */
+    protected function _form_filter(&$data)
+    {
+        if($this->request->isGet()){
+           if($this->request->action() == 'edit') {
+              if($data['spec']) $data['spec'] = json_decode($data['spec'],true);
+           }
+        }
+
+        // 添加或编辑商品
+        if ($this->request->isPost()) {
+            $spec_count = count($data['goods_no']);
+            $goods_spec = [];
+            $detail_list = [];
+            if(isset($data['spec_id']) && $data['spec_id'] > 0) {
+                $spec_info = Db::table('store_goods_specifica')->find($data['spec_id'] );
+                $detail_list = $spec_info['detail'] ?  json_decode($spec_info['detail']) : [];
+            }
+            $total_num = 0;
+            for ($i= 0;$i < $spec_count;$i++) {
+                $goods_spec[$i]['goods_no']     = $data['goods_no'][$i];
+                $goods_spec[$i]['spec_img']     = $data['spec_img'][$i]  ? $data['spec_img'][$i] :'' ;
+                $goods_spec[$i]['store_num']    = $data['store_num'][$i] > 0 ?$data['store_num'][$i] :0 ;
+                $goods_spec[$i]['price']        = $data['price'][$i]  >0  ? $data['price'][$i] :0 ;
+                $goods_spec[$i]['sell_money']   = $data['sell_money'][$i] >0  ? $data['sell_money'][$i] : 0;
+                $goods_spec[$i]['spec_exp']     = $data['spec_exp'][$i]  ? $data['spec_exp'][$i] : '';
+                $goods_spec[$i]['spec_key']     = !empty($detail_list) ?  array_search(trim($data['spec_exp'][$i]),$detail_list) : '';
+                $total_num +=$goods_spec[$i]['store_num'] ;
+            }
+            $data['spec']  =json_encode($goods_spec);
+            $data['stock'] =$total_num; // 总库存
+            $data['floor_price'] = min( array_column($goods_spec,'sell_money') );// 最低价
+        }
+    }
+
+
+
+
+
+    /**
+     * @auth true
+     * @menu true
+     * 商品上架
+     */
+    public function up()
+    {
+        $this->_save($this->table, ['status' => '1']);
+    }
+
+     /**
+     * @auth true
+     * @menu true
+     * 商品下架
+     */
+    public function down()
+    {
+        $this->_save($this->table, ['status' => '0']);
+    }
+
+
+    /**
+     * @auth true
+     * @menu true
+     * 商品下架
+     */
+    public function del()
+    {
+        $this->_save($this->table, ['is_deleted' => '1']);
+    }
+
+
+
+
+    public function upload(){
+        if(!in_array($_FILES["file"]["type"],['image/png','image/jpeg','image/jpeg'])) echo '图片类型不支持';
+        if($_FILES["file"]["size"] > 50000000) echo '图片大小最大50M';
+        if ($_FILES["file"]["error"] > 0)   echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
+       // $dir = env('root_path') . 'public/static/pic';
+        $dir =  $_SERVER['DOCUMENT_ROOT']. '/static/pic';
+       /* var_dump($dir);
+        if(!is_dir($dir)) {
+           var_dump(mkdir($dir));
+        }*/
+        move_uploaded_file($_FILES["file"]["tmp_name"], $dir."/" . $_FILES["file"]["name"]);
+        echo $dir."/" . $_FILES["file"]["name"];
+    }
+
+
+
+
+
+}

+ 419 - 0
application/store/view/integral_goods/form.html

@@ -0,0 +1,419 @@
+
+<link rel="stylesheet" href="/static/plugs/layui/css/layui.css"  media="all">
+
+<style>
+    .layui-form-item {
+        width: 80%;
+        height: 90%;
+    }
+
+</style>
+
+<div class="think-box-shadow" style="height: 100%">
+    <form class="layui-form layui-card" id="subForm" action="{:request()->url()}"  data-auto="true" method="post" autocomplete="off">
+        <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
+            <legend>商品编辑</legend>
+        </fieldset>
+        <div class="layui-tab">
+            <ul class="layui-tab-title">
+                <li class="layui-this">基础设置</li>
+                <li>规格</li>
+                <li>其他</li>
+            </ul>
+            <div class="layui-tab-content">
+                <!-- 基础设置-->
+                <div class="layui-tab-item layui-show">
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label label-required">商品名称</label>
+                        <div class="layui-input-block">
+                            <input name="name" lay-verify="required" maxlength="50"  value='{$vo.name|default=""}' placeholder="请输入商品名称" class="layui-input">
+                        </div>
+                    </div>
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label label-required">商品简介</label>
+                        <div class="layui-input-block">
+                            <input name="desc" maxlength="50"  value='{$vo.desc|default=""}' placeholder="请输入商品简介" class="layui-input">
+                        </div>
+                    </div>
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label label-required">商品分类</label>
+                        <div class="layui-input-inline">
+                            <select name="first_classify" lay-filter ="first_classify">
+                                <option value="0">请选择</option>
+                                {if !empty($goods_cate)}
+                                    {foreach $goods_cate as $ck=>$cv}
+                                        {if $vo.first_classify == $cv['id'] }
+                                            <option selected data-cl_key="{$ck}" value="{$cv['id']}">{$cv['title']}</option>
+                                        {else}
+                                            <option data-cl_key="{$ck}" value="{$cv['id']}">{$cv['title']}</option>
+                                        {/if}
+                                    {/foreach}
+                                {/if}
+                            </select>
+                        </div>
+                        <div class="layui-input-inline">
+                            <select name="second_classify" lay-filter ="second_classify">
+                                <option value="0">请选择</option>
+                                {if !empty($goods_cate)}
+                                    {foreach $goods_cate as $ck=>$cv}
+                                            {if $vo.first_classify == $cv['id'] }
+                                                {foreach $cv['children'] as $cln}
+                                                    {if $vo.second_classify == $cln['id'] }
+                                                        <option selected  value="{$cln['id']}">{$cln['title']}</option>
+                                                    {else}
+                                                        <option  value="{$cln['id']}">{$cln['title']}</option>
+                                                    {/if}
+                                                {/foreach}
+                                            {/if}
+                                    {/foreach}
+                                {/if}
+                            </select>
+                        </div>
+                    </div>
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label label-required">商品封面</label>
+                        <div class="layui-input-block">
+                            <input name="cover" type="hidden" value="{$vo.cover|default=''}">
+                        </div>
+                    </div>
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label label-required">视频</label>
+                        <div class="layui-input-block">
+                            <input name="video" type="hidden" value="{$vo.video|default=''}">
+                        </div>
+                    </div>
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label label-required">视频封面</label>
+                        <div class="layui-input-block">
+                            <input name="poster" type="hidden" value="{$vo.poster|default=''}">
+                        </div>
+                    </div>
+
+                </div>
+                <!--规格-->
+                <div class="layui-tab-item">
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label label-required">选择规格</label>
+                        <div class="layui-input-block">
+                            <input name="spec_id" type="hidden" value="{$vo.spec_id|default=''}">
+                            <input  class="layui-input"  readonly style="background-color:#e6e6e6 " name="" id="spec_id"  value="{$goods_spec[$vo.spec_id]['title']|default=''}" />
+                        </div>
+                    </div>
+
+                    <table class="layui-table margin-top-10" lay-skin="line">
+                        <thead>
+                        <tr>
+                            <th class='text-left nowrap'>货号</th>
+                            <th class='text-left nowrap'>图片</th>
+                            <th class='text-left nowrap'>库存</th>
+                            <th class='text-left nowrap'>原价</th>
+                            <th class='text-left nowrap'>售价</th>
+                            <th class='text-left nowrap'>规格</th>
+                            <th class='text-left nowrap'>操作</th>
+                        </tr>
+                        </thead>
+
+                        <tbody class="no_html">
+                            {foreach $vo.spec as $sk=>$sv}
+                            <tr class="no_detail">
+                                <td class='text-left nowrap'>
+                                    <input class='layui-input' name='goods_no[]' value="{$sv['goods_no']}"/>
+                                </td>
+                                <td class='text-left nowrap'>
+                                    <input class="spec_img" name="spec_img[]" type="hidden" value="{$sv.spec_img|default=''}">
+                                </td>
+
+                                <td class='text-left nowrap'>
+                                    <input class='layui-input' name='store_num[]' value="{$sv['store_num']}"/>
+                                </td>
+                                <td class='text-left nowrap'>
+                                    <input class='layui-input' name='price[]' value="{$sv['price']}"/>
+                                </td>
+                                <td class='text-left nowrap'>
+                                    <input class='layui-input' name='sell_money[]' value="{$sv['sell_money']}"/>
+                                </td>
+                                <td class='text-left nowrap'>
+                                    <input readonly style="background-color: #e6e6e6" class='layui-input' name='spec_exp[]' value="{$sv['spec_exp']}"/>
+                                </td>
+                                <td class='text-left nowrap'>
+                                    <a class="layui-btn layui-btn-sm layui-btn-danger del_no">删 除</a>
+                                </td>
+                            {/foreach}
+                        </tbody>
+                    </table>
+                </div>
+                <!--其他设置-->
+                <div class="layui-tab-item">
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">运费金额</label>
+                        <div class="layui-input-inline">
+                            <input type="number" step="1" min="0" name="postage"   value="{$vo.postage|default=''}" class="layui-input">
+                        </div>
+                        <div class="layui-form-mid layui-word-aux">不填(或0)表示包邮</div>
+                    </div>
+
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">是否预售</label>
+                        <div class="layui-input-block">
+                            <input type="hidden" name="is_presell"  value="{$vo.is_presell|default='0'}" />
+                            {if $vo.is_presell}
+                            <input type="checkbox"  lay-filter="is_presell" checked="checked"  lay-skin="switch" lay-text="ON|OFF">
+                            {else}
+                            <input type="checkbox"  lay-filter="is_presell"  lay-skin="switch" lay-text="ON|OFF">
+                            {/if}
+                        </div>
+                    </div>
+
+
+                    <div class="layui-form-item presell_box" {if !$vo.is_presell}style="display:none"{/if} >
+                        <label class="layui-form-label">预售时间</label>
+                        <div class="layui-input-block">
+                            <input type="text" class="layui-input" name="presell_time" id="presell_time" value='{$vo.presell_time|default=""}'  placeholder="请输选择时间">
+                        </div>
+                    </div>
+
+                    <div class="layui-form-item" >
+                        <label class="layui-form-label">详情</label>
+                        <div class="layui-input-block">
+                            <textarea name="detail">{$vo.detail|default=""}</textarea>
+                        </div>
+                    </div>
+
+                    {notempty name='vo.id'}<input type='hidden' value='{$vo.id}' name='id'>{/notempty}
+                    <div class="layui-form-item text-center">
+                        <span class="layui-btn" type='submit' id ="submit">保 存</span>
+                        <button class="layui-btn layui-btn-danger" type='button' data-confirm="确定取消编辑吗?" data-close>取消编辑</button>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </form>
+</div>
+<script src="/static/plugs/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    window.form.render();
+
+    require(['ckeditor', 'angular'], function () {
+        window.createEditor('[name="detail"]', {height: 500,width:1000});
+    })
+
+    $('[name="poster"]').uploadOneImage();
+    $.each($('.spec_img'),function (ik,iv) {
+        $('.spec_img').eq(ik).uploadOneImage();
+    })
+    //$('[name="spec_img[]"]').uploadOneImage();
+    $('[name="cover"]').uploadOneImage();
+    $('[name="video"]').uploadOneVideo()
+
+
+    layui.use('laydate', function(){
+        var laydate = layui.laydate;
+        laydate.render({
+            elem: '#presell_time'
+            ,type: 'datetime'
+        });
+    })
+
+
+    layui.use('element', function(){
+        var $ = layui.jquery
+            ,element = layui.element;
+        var active = {
+            tabAdd: function(){
+                element.tabAdd('demo', {
+                    title: '新选项'+ (Math.random()*1000|0)
+                    ,content: '内容'+ (Math.random()*1000|0)
+                    ,id: new Date().getTime()
+                })
+            }
+            ,tabDelete: function(othis){
+                element.tabDelete('demo', '44');
+                othis.addClass('layui-btn-disabled');
+            }
+            ,tabChange: function(){
+                element.tabChange('demo', '22');
+            }
+        };
+
+        $('.site-demo-active').on('click', function(){
+            var othis = $(this), type = othis.data('type');
+            active[type] ? active[type].call(this, othis) : '';
+        });
+
+        //Hash地址的定位
+        var layid = location.hash.replace(/^#test=/, '');
+        element.tabChange('test', layid);
+
+        element.on('tab(test)', function(elem){
+            location.hash = 'test='+ $(this).attr('lay-id');
+        });
+
+    });
+    $(document).on('click',".add_goods_no",function () {
+        var no_html = '';
+        no_html  += ' <tr  class="no_detail">';
+        no_html  +=     "<td class='text-left nowrap'> " +
+            "<input class='layui-input' name='goods_no[]' value='1'/>" +
+            "</td>";
+        no_html  +=     "<td class='text-left nowrap'>" +
+            "<input class='layui-input' name='store_num[]' value='10'/>" +
+            "</td>";
+        no_html  +=     "<td class='text-left nowrap'> " +
+            "<input class='layui-input' name='price[]' value='100'/>" +
+            "</td>";
+        no_html  +=     "<td class='text-left nowrap'> " +
+            "<input class='layui-input' name='sell_money[]' value='100'/>" +
+            "</td>";
+        no_html  +=     "<td class='text-left nowrap'> " +
+            "<select name='spec_exp[]'>" +
+            "<option value='1'>66</option>"+
+            "<option value='2'>66</option>"+
+            "</select>"+
+            "</td>";
+        no_html  +=     "<td class='text-left nowrap'>" +
+            "<a class=\"layui-btn layui-btn-sm layui-btn-danger del_no\">删 除</a>" +
+            /*  "<a class=\"layui-btn layui-btn-sm layui-btn-sm add_goods_no\">添 加</a>"+*/
+            "</td>"
+        no_html  += "</tr>";
+        $(".no_html").append(no_html);
+        window.form.render();
+    })
+    $(document).on('click',".del_no",function (){
+        var index= $(".del_no").index(this);
+        console.log(index);
+        $(".no_detail").eq(index).remove();
+    })
+
+
+    /**
+     * 规格监听
+     */
+
+    form.on('select(spec_id)', function(data){
+        if(data.value == 0) {
+            $(".no_html").html(get_ht(0,'','未选择'));
+        }else{
+            $(".no_html").html('')
+            var js_spec =  $(data.elem).find("option:selected").attr("data-spec");
+            var spec_arr = $.parseJSON(js_spec);
+            $.each(spec_arr,function (sk,sv) {
+                $(".no_html").append(get_ht(sk,sv,''));
+            })
+        }
+    })
+    // 分类选择监听
+    form.on('select(first_classify)', function(data){
+        var cl_html = '<option value="0">请选择</option>';
+        if(data.value == 0) {
+            $("select[name='second_classify']").html(cl_html);
+        }else{
+            var cl_key =  data.elem[data.elem.selectedIndex].dataset.cl_key;
+            var goods_spec = {:json_encode($goods_cate)};
+            $.each(goods_spec[cl_key]['children'],function (ck,cv) {
+                cl_html +='<option value="'+cv.id+'">'+cv.title+'</option>';
+            })
+            $("select[name='second_classify']").html(cl_html);
+        }
+        window.form.render();
+    })
+
+
+   //$(".no_html").html(get_ht(0,'','未选择'));
+
+    function  get_ht(k,v,ms) {
+        var  no = getCode();
+        var no_html = '';
+        no_html  += ' <tr  class="no_detail change_del" data-dh ="'+k+'">';
+        no_html  +=     "<td class='text-left nowrap'> " +
+            "<input class='layui-input' name='goods_no[]' value='"+no+"'/>" +
+            "</td>";
+        no_html  +=     "<td class='text-left nowrap'>" +
+            "<input type='number' step='1' min='1' class='layui-input' name='store_num[]' value=''/>" +
+            "</td>";
+        no_html  +=     "<td class='text-left nowrap'> " +
+            "<input type='number' step='0.01' min='0' class='layui-input' name='price[]' value=''/>" +
+            "</td>";
+        no_html  +=     "<td class='text-left nowrap'> " +
+            "<input type='number' step='0.01' min='0' class='layui-input' name='sell_money[]' value=''/>" +
+            "</td>";
+        no_html  +=     "<td class='text-left nowrap'> " +
+            "<input readonly style='background-color: #e6e6e6' class='layui-input' name='spec_exp[]' placeholder='"+ms+"'  value='"+v+"'/>" +
+            "</td>";
+        no_html  +=     "<td class='text-left nowrap'>" +
+            "<a class=\"layui-btn layui-btn-sm layui-btn-danger del_no\">删 除</a>" +
+            /*  "<a class=\"layui-btn layui-btn-sm layui-btn-sm add_goods_no\">添 加</a>"+*/
+            "</td>"
+        no_html  += "</tr>";
+        return   no_html;
+    }
+
+    function getCode() {
+        var t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678",
+            n = "";
+        for (i = 0; i < 5; i++) n += t.charAt(Math.floor(Math.random() * t.length));
+        return "SY_" + n + Math.floor(Math.random() * 1000000000);
+    };
+
+
+    layui.use('form', function(){
+        var form = layui.form,layer = layui.layer;
+        //监听指定开关
+        form.on('switch(is_presell)', function(data){
+            console.log(this.checked);
+            if(this.checked){
+                $("input[name='is_presell']").val(1);
+                $(".presell_box").show();
+            }else{
+                $("input[name='is_presell']").val(0);
+                $(".presell_box").hide();
+            }
+        });
+    })
+    /**
+     * 表单验证
+     */
+    var is_click = 0;
+    $(document).on('click','#submit',function () {
+        if(is_click == 1) return;
+        is_click = 1;
+        var name                    = $("input[name='name']").val();
+        var desc                    = $("input[name='desc']").val();
+        var cover                   = $("input[name='cover']").val();
+        var poster                  = $("input[name='poster']").val();
+        var video                   = $("input[name='video']").val();
+        var first_classify          = $("select[name='first_classify']").val();
+        var spec_id                 = $("select[name='spec_id']").val();
+        var error_detail = 0;
+        $.each($(".no_detail"),function (k,v) {
+            if( !$(".no_detail").eq(k).find("input[name='goods_no[]']").val() ){
+                error_detail = 1;
+                return false;
+            }
+            if( !$(".no_detail").eq(k).find("input[name='store_num[]']").val() ){
+                error_detail = 2;
+                return false;
+            }
+            if( !$(".no_detail").eq(k).find("input[name='price[]']").val() ){
+                error_detail = 3;
+                return false;
+            }
+            if( !$(".no_detail").eq(k).find("input[name='sell_money[]']").val() ){
+                error_detail = 4;
+                return false;
+            }
+        })
+        if(error_detail !==0 )layer.msg('请完善规格信息');
+        is_click = 0;
+        $("#subForm").submit();
+    })
+
+
+
+</script>

+ 87 - 0
application/store/view/integral_goods/index.html

@@ -0,0 +1,87 @@
+{extend name='admin@main'}
+
+{block name="button"}
+    <a data-open='{:url("add")}'   data-title="添加商品" class='layui-btn layui-btn-sm layui-btn-primary'>添加商品</a>
+{/block}
+
+{block name="content"}
+<div class="think-box-shadow">
+    {include file='goods/index_search'}
+    <table class="layui-table margin-top-10" lay-skin="line">
+        {notempty name='list'}
+        <thead>
+        <tr>
+            <th class='list-table-check-td think-checkbox'>
+                <input data-auto-none data-check-target='.list-check-box' type='checkbox'>
+            </th>
+            <th class='list-table-sort-td'>
+                <button type="button" data-reload class="layui-btn layui-btn-xs">刷 新</button>
+            </th>
+            <th class='text-left nowrap'>商品名称</th>
+            <th class='text-left nowrap'>封面</th>
+            <th class='text-left nowrap'>视频</th>
+            <th class='text-left nowrap'>售价(元)</th>
+            <th class="text-center">添加时间</th>
+            <th class="text-center">操作</th>
+        </tr>
+        </thead>
+        {/notempty}
+        <tbody>
+        {foreach $list as $key=>$vo}
+        <tr>
+            <td class='list-table-check-td think-checkbox'>
+                <input class="list-check-box" value='{$vo.id}' type='checkbox'>
+            </td>
+            <td class='list-table-sort-td'>
+                <input data-action-blur="{:request()->url()}" data-value="id#{$vo.id};action#sort;sort#{value}" data-loading="false" value="{$vo.sort}" class="list-sort-input">
+            </td>
+            <td class='text-left nowrap'>
+                {$vo.name|default=''}
+            </td>
+
+            <td class='text-left nowrap'>
+                <img data-tips-image="{$vo.cover|default=''}"  src="{$vo.cover|default=''}" width="50px">
+            </td>
+            <td class='text-left nowrap'>
+                <img  class="video_player"  alert="点击播放" src="{$vo.poster|default=''}" data-src="{$vo.video|default=''}" style="max-height: 100px;max-width: 150px" ></img>
+            </td>
+
+            <td class='text-left nowrap'>
+                {$vo.floor_price|default=''}
+            </td>
+
+            <td class='text-center nowrap'>{$vo.create_at|format_datetime}</td>
+            <td class='text-center nowrap'>
+                <a data-title="编辑商品" class="layui-btn layui-btn-sm" data-open='{:url("edit")}?id={$vo.id}'>编 辑</a>
+                {if $vo.status eq 1}
+                <a class="layui-btn layui-btn-sm layui-btn-warm" data-action="{:url('down')}" data-value="id#{$vo.id};status#2">下 架</a>
+                {else}
+                <a class="layui-btn layui-btn-sm layui-btn-warm" data-action="{:url('up')}" data-value="id#{$vo.id};status#1">上 架</a>
+                {/if}
+                <a data-title="编辑商品" class="layui-btn layui-btn-sm layui-btn-danger"  onclick="return confirm('确定删除商品吗');"  data-action="{:url('del')}"  data-value='id#{$vo.id}'>删 除</a>
+            </td>
+        </tr>
+        {/foreach}
+        </tbody>
+    </table>
+    {empty name='list'}<span class="notdata">没有记录哦</span>{else}{$pagehtml|raw|default=''}{/empty}
+</div>
+<script>
+    $('.video_player').click(function () {
+        vUrl = $(this).data('src');  //获取到播放的url
+        var loadstr = '<video width="100%" height="100%"  controls="controls" autobuffer="autobuffer"  autoplay="autoplay" loop="loop">' +
+            '<source src='+vUrl+' type="video/mp4"></source></video>';
+        layer.open({
+            type: 1,
+            title: false,
+            area: ['730px', '500px'],
+            shade: [0.8, 'rgb(14, 16, 22)'],
+            skin: 'demo-class',
+            content: loadstr
+        });
+    });
+</script>
+{/block}
+
+
+

+ 16 - 0
application/store/view/integral_goods/index_search.html

@@ -0,0 +1,16 @@
+<fieldset>
+    <legend>条件搜索</legend>
+    <form class="layui-form layui-form-pane form-search" action="{:request()->url()}" onsubmit="return false" method="get" autocomplete="off">
+        <div class="layui-form-item layui-inline">
+            <label class="layui-form-label">商品名称</label>
+            <div class="layui-input-inline">
+                <input name="name" value="{$Think.get.name|default=''}" placeholder="请输入商品名称" class="layui-input">
+            </div>
+        </div>
+
+        <div class="layui-form-item layui-inline">
+            <button class="layui-btn layui-btn-primary"><i class="layui-icon">&#xe615;</i> 搜 索</button>
+        </div>
+    </form>
+    <script>form.render()</script>
+</fieldset>