hrjy 2 éve
szülő
commit
e69f35eec0

+ 171 - 0
app/admin/controller/user/PullNew.php

@@ -0,0 +1,171 @@
+<?php
+/**
+ *
+ * @author: xaboy<365615158@qq.com>
+ * @day: 2017/11/11
+ */
+
+namespace app\admin\controller\user;
+
+use app\admin\controller\AuthController;
+use crmeb\repositories\OrderRepository;
+use crmeb\repositories\ShortLetterRepositories;
+use crmeb\services\{ExpressService,
+    JsonService,
+    JsonService as Json,
+    MiniProgramService,
+    WechatService,
+    FormBuilder as Form,
+    CacheService,
+    UtilService as Util};
+use app\admin\model\ump\StorePink;
+use crmeb\basic\BaseModel;
+use think\cache\driver\Redis;
+use think\facade\Route as Url;
+use crmeb\services\YLYService;
+use think\facade\Log;
+use think\facade\Validate;
+
+/**
+ * 订单管理控制器 同一个订单表放在一个控制器
+ * Class StoreOrder
+ * @package app\admin\controller\store
+ */
+class PullNew extends AuthController
+{
+    /**
+     * @return mixed
+     */
+    public function index()
+    {
+
+        return $this->fetch();
+    }
+
+
+    public function list()
+    {
+
+        $where = Util::getMore([
+            ['page', 1],
+            ['limit', 20],
+        ]);
+        return Json::successlayui(\app\admin\model\user\PullNew::list($where));
+    }
+
+    /**
+     * 显示创建资源表单页.
+     *
+     * @return \think\Response
+     */
+    public function create($id = 0)
+    {
+        $f = [];
+        $f[] = Form::input('title', '标题')->col(12);
+        $f[] = Form::dateTime('add_time' ,'开始时间');
+        $f[] = Form::dateTime('end_time', '结束时间');
+        if ($id) $f[] = Form::hidden('id', $id);
+        $form = Form::make_post_form('添加', $f, Url::buildUrl('save'));
+        $this->assign(compact('form'));
+        return $this->fetch('public/form-builder');
+
+
+    }
+
+    public function save()
+    {
+        $model = new \app\admin\model\user\PullNew();
+        $data = Util::postMore([
+            'title',
+            'add_time',
+            'end_time',
+        ]);
+        $validate = Validate::rule([
+            'title' => 'require',
+            'add_time' => 'require',
+            'end_time' => 'require',
+        ]);
+        $validate->message([
+            'title.require' => '标题不能为空',
+            'add_time.require' => '请选择进场时间',
+            'end_time.require' => '请选择结束时间',
+        ]);
+        if (!$validate->check($data)) {
+            return Json::fail($validate->getError());
+        }
+        $data['add_time'] = strtotime($data['add_time']);
+        $data['end_time'] = strtotime($data['end_time']);
+        $res = $model->save($data);
+        if ($res) return Json::successful('添加成功');
+        return Json::fail('添加失败');
+    }
+
+
+    public function ranking($id)
+    {
+        $this->assign('new_id', $id);
+        return $this->fetch();
+    }
+
+    /**
+     * 拉新排行
+     * @param $new_id
+     * @return void
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public function ranking_list($new_id)
+    {
+        $where = Util::getMore([
+            ['page', 1],
+            ['limit', 20],
+        ]);
+        $redis = new Redis();
+        $redis->connect('127.0.0.1','6379', 3600);
+        if (!$redis->get('Ranking_'.$new_id)){
+            $new = \app\admin\model\user\PullNew::where('id', $new_id)->find();
+            $user = \app\admin\model\user\User::select();
+            $user_count = [];
+            foreach ($user as $item){
+                $uids = get_downline_dow_time($user, $item['uid'], $new['add_time'], $new['end_time']);
+                if (count($uids) > 0){
+                    $user_count[] = ['uid' => $item['uid'],'nickname' => $item['nickname'], 'count' => count($uids), 'push' => \app\admin\model\user\User::where('spread_uid', $item['uid'])->whereBetweenTime('add_time', $new['add_time'], $new['end_time'])->count()];
+                }
+            }
+        }else{
+            $user_count = $redis->get('Ranking');
+        }
+
+        $count = array_column($user_count, 'count');
+        array_multisort($count, SORT_DESC, $user_count);
+        $redis->set('Ranking_'.$new_id, $user_count);
+        $data['count'] = count($user_count);
+        $start=($where['page']-1)*$where['limit'];//偏移量,当前页-1乘以每页显示条数
+        $data['data'] = array_slice($user_count,$start,$where['limit']);
+        return Json::successlayui($data);
+    }
+
+
+
+    /**
+     * 删除
+     * @param $id
+     * @return void
+     * @throws \Exception
+     */
+    public function delete($id)
+    {
+        if (!$id) Json::fail('删除失败');
+        $model = new \app\admin\model\user\PullNew();
+
+        $res = \app\admin\model\user\PullNew::destroy($id);
+        if ($res){
+            return Json::success('删除成功!');
+        }else{
+            return Json::fail($model->getErrorInfo());
+        }
+
+    }
+
+}

+ 57 - 0
app/admin/model/user/PullNew.php

@@ -0,0 +1,57 @@
+<?php
+/**
+ * @author: xaboy<365615158@qq.com>
+ * @day: 2017/11/11
+ */
+
+namespace app\admin\model\user;
+
+use crmeb\traits\ModelTrait;
+use crmeb\basic\BaseModel;
+use think\model\concern\SoftDelete;
+
+/**
+ * Class StoreCategory
+ * @package app\admin\model\store
+ */
+class PullNew extends BaseModel
+{
+
+    /**
+     * 数据表主键
+     * @var string
+     */
+    protected $pk = 'id';
+
+    /**
+     * 模型名称
+     * @var string
+     */
+    protected $name = 'pull_new';
+
+    use ModelTrait;
+    protected $autoWriteTimestamp = true;
+
+
+
+    public static function list($where)
+    {
+        $model = self::field('*')->order('id DESC');
+        $data['count'] = $model->count();
+        if ($where['page'] && $where['limit']){
+            $model->page($where['page'], $where['limit']);
+        }else{
+            $model->page(20, 1);
+        }
+        $list = $model->select()->toArray();
+        foreach ($list as &$item){
+            $item['add_time'] = date('Y-m-d H:i:s',$item['add_time']);
+            $item['end_time'] = date('Y-m-d H:i:s',$item['end_time']);
+        }
+        $data['data'] = $list;
+        return $data;
+
+    }
+
+
+}

+ 1 - 1
app/admin/model/user/User.php

@@ -743,7 +743,7 @@ class User extends BaseModel
             $thisAddress :
             UserAddress::where('uid', $uid)->field($key_field)->find();
         $UserInfo = self::get($uid);
-        $uids = get_downline(self::select() , $UserInfo['spread_uid']);
+        $uids = get_downline(self::select() , $UserInfo['uid']);
         return [
             ['col' => 12, 'name' => '默认收货地址', 'value' => $thisAddress ? '收货人:' . $thisAddress['real_name'] . '邮编:' . $thisAddress['post_code'] . ' 收货人电话:' . $thisAddress['phone'] . ' 地址:' . $thisAddress['province'] . ' ' . $thisAddress['city'] . ' ' . $thisAddress['district'] . ' ' . $thisAddress['detail'] : ''],
 //            ['name'=>'微信OpenID','value'=>WechatUser::where('uid', $uid)->value('openid'),'col'=>8],

+ 188 - 0
app/admin/view/user/pull_new/index.php

@@ -0,0 +1,188 @@
+{extend name="public/container"}
+{block name="head_top"}
+
+{/block}
+{block name="content"}
+<style>
+    .btn-outline{
+        border:none;
+    }
+    .btn-outline:hover{
+        background-color: #0e9aef;
+        color: #fff;
+    }
+    .layui-form-item .layui-btn {
+        margin-top: 5px;
+        margin-right: 10px;
+    }
+    .layui-btn-primary{
+        margin-right: 10px;
+        margin-left: 0!important;
+    }
+    label{
+        margin-bottom: 0!important;
+        margin-top: 4px;
+    }
+</style>
+<div class="layui-fluid">
+    <div class="layui-row layui-col-space15" id="app">
+        <!--搜索条件-->
+        <div class="layui-col-md12">
+            <div class="layui-card">
+                <div class="layui-card-header">搜索条件</div>
+                <div class="layui-card-body">
+                    <div class="layui-carousel layadmin-carousel layadmin-shortcut" lay-anim="" lay-indicator="inside" lay-arrow="none" style="background:none">
+                        <form class="layui-form layui-form-pane" action="">
+                            <div class="layui-form-item">
+
+<!--                                <div class="layui-col-lg12">-->
+<!--                                    <label class="layui-form-label" style="top: -5.5px;">搜索条件</label>-->
+<!--                                    <div class="layui-input-inline">-->
+<!--                                        <input type="text" id="name" name="name" class="layui-input" placeholder="请输入用户名称Id">-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--                                <div class="layui-inline">-->
+<!--                                    <div class="layui-input-inline">-->
+<!--                                        <button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit="search" lay-filter="search">-->
+<!--                                            <i class="layui-icon layui-icon-search"></i>搜索</button>-->
+<!--                                    </div>-->
+                                </div>
+                            </div>
+                        </form>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <!-- 中间详细信息-->
+        <div :class="item.col!=undefined ? 'layui-col-sm'+item.col+' '+'layui-col-md'+item.col:'layui-col-sm6 layui-col-md3'"
+             v-for="item in badge" v-cloak="" v-if="item.count > 0">
+        </div>
+        <!--enb-->
+    </div>
+    <!--列表-->
+    <div class="layui-row layui-col-space15">
+        <div class="layui-col-md12">
+            <div class="layui-card">
+                <div class="layui-card-header">场次列表</div>
+                <div class="layui-card-body">
+
+                    <div class="layui-btn-container" id="container-action">
+                        <a class="layui-btn layui-btn-sm" onclick="$eb.createModalFrame(this.innerText,'{:Url('create')}',{h:700,w:1100})">添加拉新</a>
+<!--                        <button class="layui-btn layui-btn-sm" data-type="del_auction">批量删除</button>-->
+                    </div>
+                    <table class="layui-hide" id="List" lay-filter="List"></table>
+
+
+                    <script type="text/html" id="image">
+                        <img style="cursor: pointer" lay-event="open_image" src="{{d.image}}">
+                    </script>
+                    <script type="text/html" id="status">
+                        {{#  if(d.status == 0){ }}
+                        <button type="button" name="suc" class="layui-btn-disabled layui-btn-xs" id="">
+                            失败
+                        </button>
+                        {{#  } else if(d.status == 1) { }}
+                        <button type="button" name="suc" class="layui-btn-xs layui-btn" id="">
+                            成功
+                        </button>
+                        {{#  } }}
+                    </script>
+                    <script type="text/html" id="state">
+                        {{#  if(d.status == 0){ }}
+                        <button type="button" name="suc" class="layui-btn-disabled layui-btn-xs" id="">
+                            退回
+                        </button>
+                        {{#  } else if(d.status == 1) { }}
+                        <button type="button" name="suc" class="layui-btn-xs layui-btn" id="">
+                            正常
+                        </button>
+                        {{#  } }}
+                    </script>
+                    <script type="text/html" id="act">
+                        <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" onclick="$eb.createModalFrame('编辑','{:Url('ranking')}?id={{d.id}}',{h:700,w:1100})">
+                            查看排行
+                        </button>
+<!--                        <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" onclick="$eb.createModalFrame('编辑','{:Url('edit')}?id={{d.id}}',{h:700,w:1100})">-->
+<!--                            编辑-->
+<!--                        </button>-->
+                        <button type="button" class="layui-btn layui-btn-xs layui-btn-danger" lay-event='delete' id="">
+                            删除
+                        </button>
+
+                    </script>
+                </div>
+            </div>
+        </div>
+    </div>
+    <!--end-->
+</div>
+<script src="{__ADMIN_PATH}js/layuiList.js"></script>
+{/block}
+{block name="script"}
+<script>
+    layList.tableList('List', "{:Url('list')}", function () {
+        return [
+            {type: 'checkbox'},
+            {field: 'id', title: 'ID', sort: true, event: 'id', width: '5%', templet: '#id'},
+            {field: 'title', title: '标题',  align: 'center'},
+            // {field: 'image', title: '封面', templet: '#image', align: 'center', width: '5%'},
+            {field: 'add_time', title: '开始时间', align: 'center'},
+            {field: 'end_time', title: '结束时间',align: 'center'},
+            {field: 'create_time', title: '时间', align: 'center'},
+            {field: 'right', title: '操作', align: 'center', toolbar: '#act',width: '15%'},
+        ];
+    });
+
+    //查询
+    layList.search('search',function(where){
+        layList.reload(where,true);
+    });
+
+    //点击事件绑定
+    layList.tool(function (event,data,obj) {
+        switch (event) {
+            case 'delete':
+                var url=layList.U({c:'user.pull_new',a:'delete',q:{id:data.id}});
+                var code = {title:"操作提示",text:"确定将该商品移入回收站吗?",type:'info',confirm:'是的,移入回收站'};
+                $eb.$swal('delete',function(){
+                    $eb.axios.get(url).then(function(res){
+                        if(res.status == 200 && res.data.code == 200) {
+                            $eb.$swal('success',res.data.msg);
+                            obj.del();
+                            location.reload();
+                        }else
+                            return Promise.reject(res.data.msg || '删除失败')
+                    }).catch(function(err){
+                        $eb.$swal('error',err);
+                    });
+                },code)
+                break;
+            case 'open_image':
+                $eb.openImage(data.image);
+                break;
+            case 'edit':
+                location.href = layList.U({a:'edit',q:{id:data.id}});
+                break;
+        }
+    })
+
+
+    //改状态
+    layList.switch('status',function (odj,value) {
+        if(odj.elem.checked==true){
+            layList.baseGet(layList.Url({c:'auction.auction',a:'set_status',p:{status:1,id:value}}),function (res) {
+                layList.msg(res.msg, function () {
+                    layList.reload();
+                });
+            });
+        }else{
+            layList.baseGet(layList.Url({c:'auction.auction',a:'set_status',p:{status:0,id:value}}),function (res) {
+                layList.msg(res.msg, function () {
+                    layList.reload();
+                });
+            });
+        }
+    });
+</script>
+{/block}

+ 188 - 0
app/admin/view/user/pull_new/ranking.php

@@ -0,0 +1,188 @@
+{extend name="public/container"}
+{block name="head_top"}
+
+{/block}
+{block name="content"}
+<style>
+    .btn-outline{
+        border:none;
+    }
+    .btn-outline:hover{
+        background-color: #0e9aef;
+        color: #fff;
+    }
+    .layui-form-item .layui-btn {
+        margin-top: 5px;
+        margin-right: 10px;
+    }
+    .layui-btn-primary{
+        margin-right: 10px;
+        margin-left: 0!important;
+    }
+    label{
+        margin-bottom: 0!important;
+        margin-top: 4px;
+    }
+</style>
+<div class="layui-fluid">
+    <div class="layui-row layui-col-space15" id="app">
+        <!--搜索条件-->
+        <div class="layui-col-md12">
+            <div class="layui-card">
+                <div class="layui-card-header">搜索条件</div>
+                <div class="layui-card-body">
+                    <div class="layui-carousel layadmin-carousel layadmin-shortcut" lay-anim="" lay-indicator="inside" lay-arrow="none" style="background:none">
+                        <form class="layui-form layui-form-pane" action="">
+                            <div class="layui-form-item">
+
+<!--                                <div class="layui-col-lg12">-->
+<!--                                    <label class="layui-form-label" style="top: -5.5px;">搜索条件</label>-->
+<!--                                    <div class="layui-input-inline">-->
+<!--                                        <input type="text" id="name" name="name" class="layui-input" placeholder="请输入用户名称Id">-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--                                <div class="layui-inline">-->
+<!--                                    <div class="layui-input-inline">-->
+<!--                                        <button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit="search" lay-filter="search">-->
+<!--                                            <i class="layui-icon layui-icon-search"></i>搜索</button>-->
+<!--                                    </div>-->
+                                </div>
+                            </div>
+                        </form>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <!-- 中间详细信息-->
+        <div :class="item.col!=undefined ? 'layui-col-sm'+item.col+' '+'layui-col-md'+item.col:'layui-col-sm6 layui-col-md3'"
+             v-for="item in badge" v-cloak="" v-if="item.count > 0">
+        </div>
+        <!--enb-->
+    </div>
+    <!--列表-->
+    <div class="layui-row layui-col-space15">
+        <div class="layui-col-md12">
+            <div class="layui-card">
+                <div class="layui-card-header">排行列表</div>
+                <div class="layui-card-body">
+
+                    <div class="layui-btn-container" id="container-action">
+<!--                        <a class="layui-btn layui-btn-sm" onclick="$eb.createModalFrame(this.innerText,'{:Url('create')}',{h:700,w:1100})">添加拉新</a>-->
+<!--                        <button class="layui-btn layui-btn-sm" data-type="del_auction">批量删除</button>-->
+                    </div>
+                    <table class="layui-hide" id="List" lay-filter="List"></table>
+
+
+                    <script type="text/html" id="image">
+                        <img style="cursor: pointer" lay-event="open_image" src="{{d.image}}">
+                    </script>
+                    <script type="text/html" id="status">
+                        {{#  if(d.status == 0){ }}
+                        <button type="button" name="suc" class="layui-btn-disabled layui-btn-xs" id="">
+                            失败
+                        </button>
+                        {{#  } else if(d.status == 1) { }}
+                        <button type="button" name="suc" class="layui-btn-xs layui-btn" id="">
+                            成功
+                        </button>
+                        {{#  } }}
+                    </script>
+                    <script type="text/html" id="state">
+                        {{#  if(d.status == 0){ }}
+                        <button type="button" name="suc" class="layui-btn-disabled layui-btn-xs" id="">
+                            退回
+                        </button>
+                        {{#  } else if(d.status == 1) { }}
+                        <button type="button" name="suc" class="layui-btn-xs layui-btn" id="">
+                            正常
+                        </button>
+                        {{#  } }}
+                    </script>
+                    <script type="text/html" id="act">
+                        <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" onclick="$eb.createModalFrame('编辑','{:Url('ranking')}?id={{d.id}}',{h:700,w:1100})">
+                            查看排行
+                        </button>
+<!--                        <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" onclick="$eb.createModalFrame('编辑','{:Url('edit')}?id={{d.id}}',{h:700,w:1100})">-->
+<!--                            编辑-->
+<!--                        </button>-->
+                        <button type="button" class="layui-btn layui-btn-xs layui-btn-danger" lay-event='delete' id="">
+                            删除
+                        </button>
+
+                    </script>
+                </div>
+            </div>
+        </div>
+    </div>
+    <!--end-->
+</div>
+<script src="{__ADMIN_PATH}js/layuiList.js"></script>
+{/block}
+{block name="script"}
+<script>
+
+    var new_id = {$new_id};
+    layList.tableList('List', "{:Url('ranking_list')}?new_id="+new_id, function () {
+        return [
+            {type: 'checkbox'},
+            {field: 'uid', title: 'UID', sort: true, event: 'id', templet: '#id'},
+            {field: 'nickname', title: '昵称',  align: 'center'},
+            // {field: 'image', title: '封面', templet: '#image', align: 'center', width: '5%'},
+            {field: 'count', title: '团队业绩', align: 'center'},
+            {field: 'push', title: '直推业绩',align: 'center'},
+        ];
+    });
+
+    //查询
+    layList.search('search',function(where){
+        layList.reload(where,true);
+    });
+
+    //点击事件绑定
+    layList.tool(function (event,data,obj) {
+        switch (event) {
+            case 'delete':
+                var url=layList.U({c:'user.pull_new',a:'delete',q:{id:data.id}});
+                var code = {title:"操作提示",text:"确定将该商品移入回收站吗?",type:'info',confirm:'是的,移入回收站'};
+                $eb.$swal('delete',function(){
+                    $eb.axios.get(url).then(function(res){
+                        if(res.status == 200 && res.data.code == 200) {
+                            $eb.$swal('success',res.data.msg);
+                            obj.del();
+                            location.reload();
+                        }else
+                            return Promise.reject(res.data.msg || '删除失败')
+                    }).catch(function(err){
+                        $eb.$swal('error',err);
+                    });
+                },code)
+                break;
+            case 'open_image':
+                $eb.openImage(data.image);
+                break;
+            case 'edit':
+                location.href = layList.U({a:'edit',q:{id:data.id}});
+                break;
+        }
+    })
+
+
+    //改状态
+    layList.switch('status',function (odj,value) {
+        if(odj.elem.checked==true){
+            layList.baseGet(layList.Url({c:'auction.auction',a:'set_status',p:{status:1,id:value}}),function (res) {
+                layList.msg(res.msg, function () {
+                    layList.reload();
+                });
+            });
+        }else{
+            layList.baseGet(layList.Url({c:'auction.auction',a:'set_status',p:{status:0,id:value}}),function (res) {
+                layList.msg(res.msg, function () {
+                    layList.reload();
+                });
+            });
+        }
+    });
+</script>
+{/block}

+ 15 - 0
app/common.php

@@ -662,6 +662,21 @@ if (!function_exists('do_request')) {
         }
     }
 
+    if (!function_exists('get_downline_dow_time')){
+        //所有下级
+        function get_downline_dow_time($members,$id, $add_time, $end_time){
+            $arr=array();
+            foreach ($members as $key => $v) {
+                if($v['spread_uid']==$id && $v['add_time'] >= $add_time && $v['add_time'] <= $end_time){  //pid为0的是顶级分类
+                    $arr[]=$v['uid'];
+                    $arr = array_merge($arr,get_downline_dow_time($members,$v['uid'], $add_time, $end_time));
+                }
+            }
+            return $arr;
+
+        }
+    }
+
 //    if (!function_exists('getParent')){
 //        //查找所有上级
 //        function getParent($uid){