hrjy 2 anos atrás
pai
commit
9b9cd8635b

+ 1 - 0
app/admin/controller/user/User.php

@@ -311,6 +311,7 @@ class User extends AuthController
             ['sex', ''],
             ['level', ''],
             ['group_id', ''],
+            ['excel', ''],
         ]);
         return Json::successlayui(UserModel::getUserList($where));
     }

+ 2 - 1
app/admin/controller/water/WaterQuery.php

@@ -33,8 +33,9 @@ class WaterQuery extends AuthController
     /**
      * @return mixed
      */
-    public function index()
+    public function index($uid = 0)
     {
+        $this->assign('uid', $uid);
         return $this->fetch();
     }
 

+ 60 - 0
app/admin/model/user/User.php

@@ -8,6 +8,7 @@ namespace app\admin\model\user;
 
 use app\admin\model\order\StoreOrder;
 use app\admin\model\system\SystemUserLevel;
+use app\admin\model\water\WaterQuery;
 use crmeb\traits\ModelTrait;
 use crmeb\basic\BaseModel;
 use app\admin\model\wechat\WechatUser;
@@ -190,10 +191,69 @@ class User extends BaseModel
                     else if (time() > $levelinfo['valid_time']) $item['vip_name'] = SystemUserLevel::where('id', $levelinfo['level_id'])->value('name');
                 }
             });//->toArray();
+        if (count($list) > 0){
+            foreach ($list as &$item){
+                if (!$where['user_time']){
+                    $item['query_count'] = WaterQuery::where('uid', $item['uid'])->whereBetweenTime('create_time', time()-(30*86400), time())->count();
+                }else{
+                    $time = explode(' - ', $where['user_time']);
+                    $item['query_count'] = WaterQuery::where('uid', $item['uid'])->whereBetweenTime('create_time', strtotime($time[0]), strtotime($time[1]))->count();
+
+                }
+            }
+        }
+
+        if (isset($where['excel']) && $where['excel'] == 1) {
+            $list = self::setWherePage(self::setWhere($where), $where, ['w.sex', 'w.province', 'w.city', 'u.status', 'u.is_promoter'], ['u.nickname', 'u.uid'])->alias('u')->join('WechatUser w', 'u.uid=w.uid')->select();
+            if (count($list) > 0){
+                foreach ($list as &$item){
+                    if (!$where['user_time']){
+                        $item['query_count'] = WaterQuery::where('uid', $item['uid'])->whereBetweenTime('create_time', time()-(30*86400), time())->count();
+                    }else{
+                        $time = explode(' - ', $where['user_time']);
+                        $item['query_count'] = WaterQuery::where('uid', $item['uid'])->whereBetweenTime('create_time', strtotime($time[0]), strtotime($time[1]))->count();
+
+                    }
+                }
+            }
+            self::SaveExcel($list);
+        }
+
         $count = self::setWherePage(self::setWhere($where), $where, ['w.sex', 'w.province', 'w.city', 'u.status', 'u.is_promoter'], ['u.nickname', 'u.uid'])->alias('u')->join('WechatUser w', 'u.uid=w.uid')->count();
         return ['count' => $count, 'data' => $list];
     }
 
+    /**
+     * excel
+     * @param $list
+     * @return void
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public static function SaveExcel($list)
+    {
+        $export = [];
+        $user = User::select();
+        foreach ($list as $index => $item) {
+            $nickname = \app\models\user\User::where('uid', $item['spread_uid'])->value('nickname');
+            $add_time = \app\models\user\User::where('uid', $item['uid'])->value('add_time');
+            $export[] = [
+                $item['uid'],
+                $item['account'],
+                empty($item['nickname']) ? self::where('uid', $item['uid'])->value('nickname') : $item['nickname'],
+                !empty($item['phone'])? $item['phone'] : '未绑定手机号',
+                $item['member'] == 0 ? '普通用户' : '会员',
+                $item['query_count'],
+                date('Y-m-d H:i:s', $add_time),
+            ];
+        }
+        PHPExcelService::setExcelHeader(['ID', '账号', '昵称', '手机号','会员', '累计计算次数','首次登录时间'])
+            ->setExcelTile('用户导出' . date('YmdHis', time()), '订单信息' . time(), ' 生成时间:' . date('Y-m-d H:i:s', time()))
+            ->setExcelContent($export)
+            ->ExcelSave();
+    }
+
     /**
      *  修改用户状态
      * @param $uids 用户uid

+ 101 - 2
app/admin/view/user/user/index.php

@@ -186,6 +186,12 @@
                             </div>
                         </div>
                     </div>
+                    <div class="layui-col-lg12" id="app1">
+                        <button @click="excel" type="button"
+                                class="layui-btn layui-btn-warm layui-btn-sm export" type="button">
+                            <i class="fa fa-floppy-o" style="margin-right: 3px;"></i>导出
+                        </button>
+                    </div>
                     <div class="layui-form-item">
                         <label class="layui-form-label">
                             <button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit="" lay-filter="search" >
@@ -214,7 +220,7 @@
                     </div>
                     <table class="layui-hide" id="userList" lay-filter="userList"></table>
                     <script type="text/html" id="nickname">
-                        {{d.nickname}}
+                        <a href="{:Url('water.water_query/index')}?uid={{d.uid}}" class="opFrames" data-name="计算列表" data-href="{:Url('water.water_query/index')}?name={{d.uid}}">{{d.nickname}}</a>
                         {{# if(d.vip_name){ }}
                         <p style="color:#dab176">{{d.vip_name}}</p>
                         {{# } }}
@@ -322,6 +328,7 @@
             {field: 'data_time', title: '访问日期',align:'center',width:'12%',templet:'#data_time'},
             // {field: 'status', title: '状态',templet:"#checkboxstatus",width:'6%',align:'center'},
             {field: 'user_type', title: '用户类型',width:'6%',align:'center'},
+            {field: 'query_count', title: '计算次数',width:'6%',align:'center'},
             {field: 'operate', title: '操作', width: '10%', align: 'center', toolbar: '#barDemo'}
         ];
     });
@@ -428,7 +435,7 @@
     });
     layList.search('search',function(where){
         if(where['user_time_type'] != '' && where['user_time'] == '') return layList.msg('请选择选择时间');
-        if(where['user_time_type'] == '' && where['user_time'] != '') return layList.msg('请选择访问情况');
+        // if(where['user_time_type'] == '' && where['user_time'] != '') return layList.msg('请选择访问情况');
         layList.reload(where,true);
     });
 
@@ -547,5 +554,97 @@
         }
     }
 
+    require(['vue'], function (Vue) {
+        new Vue({
+            el: "#app1",
+            data: {
+                badge: [],
+                where: {
+                    nickname: '',
+                    group: '',
+                    excel: 0,
+                },
+                showtime: false,
+            },
+            watch: {
+                'where.status': function () {
+                    this.where.excel = 0;
+                    this.getBadge();
+                    layList.reload(this.where, true);
+                },
+                'where.data': function () {
+                    this.where.excel = 0;
+                    this.getBadge();
+                    layList.reload(this.where, true);
+                },
+                'where.type': function () {
+                    this.where.excel = 0;
+                    this.getBadge();
+                    layList.reload(this.where, true);
+                },
+                'where.pay_type': function () {
+                    this.where.excel = 0;
+                    this.getBadge();
+                    layList.reload(this.where, true);
+                }
+            },
+            methods: {
+                setData: function (item) {
+                    var that = this;
+                    if (item.is_zd == true) {
+                        that.showtime = true;
+                        this.where.data = this.$refs.date_time.innerText;
+                    } else {
+                        this.showtime = false;
+                        this.where.data = item.value;
+                    }
+                },
+                getBadge: function () {
+                    var that = this;
+                    layList.basePost(layList.Url({c: 'order.store_order', a: 'getBadge'}), this.where, function (rem) {
+                        that.badge = rem.data;
+                    });
+                },
+                search: function () {
+                    this.where.excel = 0;
+                    this.getBadge();
+                    layList.reload(this.where, true);
+                },
+                refresh: function () {
+                    layList.reload();
+                    this.getBadge();
+                },
+                excel: function () {
+
+                    var nickname = $('#nickname').val();
+                    var group = $('#group').val();
+                    var user_time = $('#user_time').val();
+
+                    this.where['nickname'] = nickname;
+                    this.where['group'] = group;
+                    this.where['user_time'] = user_time;
+                    this.where.excel = 1;
+                    location.href = layList.U({c: 'user.user', a: 'get_user_list', q: this.where});
+                    this.where.excel = 0;
+                }
+            },
+            mounted: function () {
+                var that = this;
+                that.getBadge();
+                window.formReload = this.search;
+                layList.laydate.render({
+                    elem: this.$refs.date_time,
+                    trigger: 'click',
+                    eventElem: this.$refs.time,
+                    range: true,
+                    change: function (value) {
+                        that.where.data = value;
+                    }
+                });
+            }
+        })
+    });
+
+
 </script>
 {/block}

+ 2 - 1
app/admin/view/water/water_query/index.php

@@ -138,7 +138,8 @@
 {/block}
 {block name="script"}
 <script>
-    layList.tableList('List', "{:Url('list')}", function () {
+    var uid = {$uid};
+    layList.tableList('List', "{:Url('list')}?name="+uid, function () {
         return [
             {type: 'checkbox'},
             {field: 'id', title: 'ID', sort: true, event: 'id', width: '5%', templet: '#id'},

+ 7 - 1
app/api/controller/water/WaterQueryController.php

@@ -72,6 +72,12 @@ class WaterQueryController
                 $item['query_id'] = $res['id'];
                 WaterMaterial::create($item);
             }
+            $amount['remind'] = '';
+            $count = WaterQuery::where('uid', $request->uid())->whereBetweenTime('create_time', strtotime('today'), strtotime('tomorrow'))->count();
+            if ($count > sys_config('remind')){
+                //今天计算超过设置次数提醒
+                $amount['remind'] = '你今日计算次数已超过'.sys_config('remind').'次';
+            }
 //            if ($user['member'] == 0){
 //                if ($user['free'] > 0){
 //                    User::where('uid', $request->uid())->dec('free', 1)->update();
@@ -212,7 +218,6 @@ class WaterQueryController
             }
         }
 
-
         $table = array_merge($table, Array_reverse($tables));
 
         $tables1 = [];
@@ -291,6 +296,7 @@ class WaterQueryController
             $zj += 105;
         }
         $zzl = $zzl * (sys_config('weight')/100);
+
         if ($discount > 0){
             foreach ($table as &$item)
             {

+ 5 - 3
app/http/middleware/AuthTokenMiddleware.php

@@ -33,9 +33,11 @@ class AuthTokenMiddleware implements MiddlewareInterface
             if ($force)
                 return app('json')->make($e->getCode(), $e->getMessage());
         }
-//        if ($authInfo['user']['status'] == 0){
-//            return app('json')->fail('用户已被禁用');
-//        }
+        if (isset($authInfo['user']['status'])){
+            if ($authInfo['user']['status'] == 0){
+                return app('json')->fail('用户已被禁用');
+            }
+        }
 
         if (!is_null($authInfo)) {
             Request::macro('user', function () use (&$authInfo) {

+ 1 - 0
app/models/user/User.php

@@ -110,6 +110,7 @@ class User extends BaseModel
     public static function updateWechatUser($wechatUser, $uid)
     {
         $userInfo = self::where('uid', $uid)->find();
+        if ($userInfo['status'] == 0) exception('用户已被禁用!');
         if (!$userInfo) return;
         //增加成为分销权限
         if (!$userInfo->is_promoter) {