hrjy 3 年之前
父节点
当前提交
12662a14ac

+ 75 - 0
app/admin/controller/user/Close.php

@@ -0,0 +1,75 @@
+<?php
+/**
+ *
+ * @author: xaboy<365615158@qq.com>
+ * @day: 2017/11/11
+ */
+
+namespace app\admin\controller\user;
+
+use app\admin\controller\AuthController;
+use crmeb\services\{ExpressService,
+    JsonService,
+    JsonService as Json,
+    MiniProgramService,
+    WechatService,
+    FormBuilder as Form,
+    CacheService,
+    UtilService as Util};
+use think\facade\Route as Url;
+use think\facade\Validate;
+Use app\admin\model\user\Close as model;
+
+/**
+ * 订单管理控制器 同一个订单表放在一个控制器
+ * Class StoreOrder
+ * @package app\admin\controller\store
+ */
+class Close extends AuthController
+{
+    /**
+     * @return mixed
+     */
+    public function index()
+    {
+        $this->assign([
+            'year' => get_month(),
+
+        ]);
+        return $this->fetch();
+    }
+
+
+    public function list()
+    {
+        $where = Util::getMore([
+            ['page', 1],
+            ['limit', 20],
+            ['name', ''],
+            ['data', ''],
+        ]);
+
+        return Json::successlayui(model::list($where));
+    }
+
+    /**
+     * 删除
+     * @param $id
+     * @return void
+     * @throws \Exception
+     */
+    public function delete($id)
+    {
+        if (!$id) Json::fail('删除失败');
+        $model = new model;
+
+        $res = model::destroy($id);
+        if ($res){
+            return Json::success('删除成功!');
+        }else{
+            return Json::fail($model->getErrorInfo());
+        }
+
+    }
+
+}

+ 19 - 0
app/admin/model/system/SystemUserTask.php

@@ -97,6 +97,16 @@ class SystemUserTask extends BaseModel
             'min_number' => 1,
             'unit' => '人'
         ],
+
+        [
+            'type' => 'UserCount',
+            'name' => '伞下{$num}会员',
+            'real_name' => '伞下{$num}会员',
+            'max_number' => 1000,
+            'min_number' => 1,
+            'unit' => '人'
+        ],
+
         [
             'type' => 'InviteAgent',
             'name' => '推荐{$num}会员成为代理商',
@@ -105,6 +115,15 @@ class SystemUserTask extends BaseModel
             'min_number' => 1,
             'unit' => '人'
         ],
+
+        [
+            'type' => 'InviteCause',
+            'name' => '推荐{$num}会员成为事业部',
+            'real_name' => '直推会员成为事业部',
+            'max_number' => 1000,
+            'min_number' => 1,
+            'unit' => '人'
+        ],
     ];
 
     public function profile()

+ 56 - 0
app/admin/model/user/Close.php

@@ -0,0 +1,56 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: liying
+ * Date: 2018/7/20
+ * Time: 18:08
+ */
+
+namespace app\admin\model\user;
+
+use crmeb\traits\ModelTrait;
+use crmeb\basic\BaseModel;
+use crmeb\services\PHPExcelService;
+
+class Close extends BaseModel
+{
+
+    /**
+     * 数据表主键
+     * @var string
+     */
+    protected $pk = 'id';
+
+    /**
+     * 模型名称
+     * @var string
+     */
+    protected $name = 'close';
+
+    use ModelTrait;
+    protected $autoWriteTimestamp = true;
+
+
+
+
+    public static function list($where)
+    {
+        $model = self::alias('a')->field('a.*,b.nickname,b.phone')
+            ->leftJoin('user b', 'b.uid = a.uid')
+            ->order('a.id DESC');
+
+        if ($where['name'])$model->where('b.nickname|b.uid|b.phone' , 'like', '%'.$where['name'].'%');
+        if (trim($where['data']) != '') $model = self::getModelTime($where, $model,  'a.create_time');
+        $data['count'] = $model->count();
+        if ($where['page'] && $where['limit']){
+            $model->page($where['page'], $where['limit']);
+        }else{
+            $model->page(20, 1);
+        }
+        $list = $model->select()->toArray();
+
+        $data['data'] = $list;
+        return $data;
+
+    }
+}

+ 276 - 0
app/admin/view/user/close/index.php

@@ -0,0 +1,276 @@
+{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="请输入名称">
+                                    </div>
+                                </div>
+                                <div class="layui-col-lg12" id="app1">
+
+                                    <div class="layui-col-lg12">
+                                        <label class="layui-form-label">创建时间:</label>
+                                        <div class="layui-input-block" data-type="data" v-cloak="">
+                                            <button class="layui-btn layui-btn-sm" type="button" v-for="item in dataList"
+                                                    @click="setData(item)"
+                                                    :class="{'layui-btn-primary':where.data!=item.value}">{{item.name}}
+                                            </button>
+                                            <button class="layui-btn layui-btn-sm" type="button" ref="time"
+                                                    @click="setData({value:'zd',is_zd:true})"
+                                                    :class="{'layui-btn-primary':where.data!='zd'}">自定义
+                                            </button>
+                                            <button type="button" class="layui-btn layui-btn-sm layui-btn-primary"
+                                                    v-show="showtime==true" ref="date_time">{$year.0} - {$year.1}
+                                            </button>
+                                        </div>
+                                    </div>
+<!--                                    <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 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>
+                            </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:500,w:500})">添加厚度分类</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="nickname">
+                        {{d.nickname}}/{{d.phone}}
+                    </script>
+                    <script type="text/html" id="act">
+<!--                        <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" onclick="$eb.createModalFrame('编辑','{:Url('edit')}?id={{d.id}}',{h:500,w:500})">-->
+<!--                            编辑-->
+<!--                        </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: 'uid', title: 'UID',  align: 'center'},
+            {field: 'nickname', title: '用户昵称', templet: '#nickname',  align: 'center'},
+            {field: 'count', title: '订单数',  align: 'center'},
+            {field: 'count_price', title: '总金额',  align: 'center'},
+            {field: 'close_price', title: '结算金额',  align: 'center'},
+            {field: 'create_time', title: '时间', align: 'center', width: '8%'},
+            {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.close',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();
+                });
+            });
+        }
+    });
+
+    require(['vue'], function (Vue) {
+        new Vue({
+            el: "#app1",
+            data: {
+                badge: [],
+                dataList: [
+                    {name: '全部', value: ''},
+                    {name: '今天', value: 'today'},
+                    {name: '昨天', value: 'yesterday'},
+                    {name: '最近7天', value: 'lately7'},
+                    {name: '最近30天', value: 'lately30'},
+                    {name: '本月', value: 'month'},
+                    {name: '本年', value: 'year'},
+                ],
+                statusList:[
+                    {name: '全部', value: ''},
+                    {name: '正常', value: '1'},
+                    {name: '成功返还', value: '2'},
+                    {name: '失败返还', value: '3'}
+                ],
+                where: {
+                    data: '',
+                    status: status,
+                    type: '',
+                    pay_type: '',
+                    excel: 0,
+                },
+                showtime: false,
+            },
+            watch: {
+                'where.status': function () {
+                    this.where.excel = 0;
+                    layList.reload(this.where, true);
+                },
+                'where.data': function () {
+                    this.where.excel = 0;
+                    layList.reload(this.where, true);
+                },
+                'where.type': function () {
+                    this.where.excel = 0;
+                    layList.reload(this.where, true);
+                },
+                'where.pay_type': function () {
+                    this.where.excel = 0;
+                    layList.reload(this.where, true);
+                }
+            },
+            methods: {
+                setData: function (item) {
+                    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;
+                    }
+                },
+                search: function () {
+                    this.where.excel = 0;
+                    layList.reload(this.where, true);
+                },
+                refresh: function () {
+                    layList.reload();
+                },
+                excel: function () {
+                    var name = $('#name').val();
+                    this.where['name'] = name;
+                    this.where.excel = 1;
+                    location.href = layList.U({c: 'user.close', a: 'list', q: this.where});
+                    this.where.excel = 0;
+                }
+            },
+            mounted: function () {
+                var that = this;
+                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}

+ 1 - 1
app/api/controller/user/UserController.php

@@ -622,7 +622,7 @@ class UserController
     {
         try {
             Db::startTrans();
-            User::bonus();
+            User::close();
             Db::commit();
         } catch (\Exception $e) {
             Db::rollback();

+ 0 - 5
app/models/store/StoreCart.php

@@ -236,11 +236,6 @@ class StoreCart extends BaseModel
                     if (!$attrInfo || !$attrInfo['stock'])
                         $invalid[] = $cart;
                     else {
-                        if ($user['level'] == 1){
-                            $attrInfo['price'] = StoreProduct::where('id', $attrInfo['product_id'])->value('vip_repurchase')?? $attrInfo['price'];
-                        }elseif ($user['level'] == 2){
-                            $attrInfo['price'] = StoreProduct::where('id', $attrInfo['product_id'])->value('agent_repurchase') ?? $attrInfo['price'];
-                        }
                         $cart['productInfo']['attrInfo'] = $attrInfo;
 
                         if ($cart['combination_id'] || $cart['seckill_id'] || $cart['bargain_id']) {

+ 35 - 2
app/models/system/SystemUserTask.php

@@ -281,7 +281,7 @@ class SystemUserTask extends BaseModel
     }
 
     /**
-     * 直推用户
+     * 直推代理
      * @param int $task_id 任务id
      * @param int $uid 用户id
      * @param int $start_time 查询开始时间
@@ -292,7 +292,40 @@ class SystemUserTask extends BaseModel
     {
         $isComplete = false;
         $uids = get_downline(User::select(), $uid);
-        $user_count = User::where('uid', 'in', $uids)->where('level', 1)->count();
+        $user_count = User::where('spread_uid', $uid)->where('level', 1)->count();
+        if ($user_count >= $number)$isComplete = UserTaskFinish::setFinish($uid, $task_id) ? true : false;
+        return ['还需签到{$num}天', 1, $isComplete];
+    }
+
+
+    /**
+     * 伞下会员
+     * @param int $task_id 任务id
+     * @param int $uid 用户id
+     * @param int $start_time 查询开始时间
+     * @param int $number 限定数量
+     * @return Boolean
+     * */
+    public static function UserCount($task_id, $uid = 0, $start_time = 0, $number = 0)
+    {
+        $isComplete = false;
+        $uids = get_downline(User::select(), $uid);
+        if (count($uids) >= $number)$isComplete = UserTaskFinish::setFinish($uid, $task_id) ? true : false;
+        return ['还需签到{$num}天', 1, $isComplete];
+    }
+
+    /**
+     * 直推事业部
+     * @param int $task_id 任务id
+     * @param int $uid 用户id
+     * @param int $start_time 查询开始时间
+     * @param int $number 限定数量
+     * @return Boolean
+     * */
+    public static function InviteCause($task_id, $uid = 0, $start_time = 0, $number = 0)
+    {
+        $isComplete = false;
+        $user_count = User::where('spread_uid', $uid)->where('level', 2)->count();
         if ($user_count >= $number)$isComplete = UserTaskFinish::setFinish($uid, $task_id) ? true : false;
         return ['还需签到{$num}天', 1, $isComplete];
     }

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

@@ -3,6 +3,7 @@
 
 namespace app\models\user;
 
+use app\admin\model\user\Close;
 use app\models\store\StoreOrder;
 use app\models\store\StoreProduct;
 use crmeb\services\SystemConfigService;
@@ -838,4 +839,69 @@ class User extends BaseModel
             }
         }
     }
+
+    /**
+     * 月度结算
+     * @return void
+     * @throws DataNotFoundException
+     * @throws DbException
+     * @throws ModelNotFoundException
+     */
+    public static function close()
+    {
+        $user = User::select();
+        $start_time = date('Y-m-01 00:00:00', strtotime('-1 month'));
+        $end_time = date('Y-m-d 23:59:59', strtotime(-date('d').'day'));
+        foreach ($user as $item)
+        {
+            $count = StoreOrder::whereBetweenTime('add_time', $start_time, $end_time)->where('paid', 1)->where('uid', $item['uid'])->sum('total_num');// 月结
+            $price = StoreOrder::whereBetweenTime('add_time', $start_time, $end_time)->where('paid', 1)->where('uid', $item['uid'])->sum('pay_price');// 月结
+            if ($item['spread_uid'] > 0 and $price > 0){
+                $spread = getParent($item['spread_uid'], $user->toArray());// 找到所有上级
+                $v1 = 0;
+                $v2 = 0;
+                $v3 = 0;
+                foreach ($spread as $value) {
+                    $details = User::where('uid', $value)->find();
+                    if ($details['level'] > 0){
+                        if ($details['level'] == 1){
+                            // 没有发放市代和合伙人的奖励
+                            if ($v1 == 0) { // 没有发放v1的奖励
+                                $jl = 19 * $count;
+                                $v1++;
+                            }
+                        }elseif ($details['level'] == 2){
+                            if ($v2 == 0) { // 没有发放v1的奖励
+                                $jl = 19 * $count;
+                                $v2++;
+                            }
+
+                        }elseif ($details['level'] == 3){
+                            if ($v3 == 0) { // 没有发放v1的奖励
+                                $jl = 10 * $count;
+                                $v3++;
+                            }
+                        }
+                        if ($jl > 0){
+                            $close = Close::where('uid', $value)->whereBetweenTime('create_time', strtotime('today'), strtotime('tomorrow'))->find();
+                            if ($close){
+                                $close['count'] += $count;
+                                $close['count_price'] += $price;
+                                $close['close_price'] += $jl;
+                                $close->save();
+                            }else{
+                                Close::create([
+                                    'uid' => $value,
+                                    'count' => $count,
+                                    'count_price' => $price,
+                                    'close_price' => $jl
+                                ]);
+                            }
+                        }
+                    }
+
+                }
+            }
+        }
+    }
 }