diff --git a/Application/Admin/Controller/PromoteLimitRuleController.class.php b/Application/Admin/Controller/PromoteLimitRuleController.class.php
new file mode 100644
index 000000000..2dcddbcc8
--- /dev/null
+++ b/Application/Admin/Controller/PromoteLimitRuleController.class.php
@@ -0,0 +1,194 @@
+<?php
+
+namespace Admin\Controller;
+
+use User\Api\UserApi as UserApi;
+use Base\Service\PresidentDepositService;
+
+/**
+ * 推广限制
+ */
+class PromoteLimitRuleController extends ThinkController
+{
+    public function records()
+    {
+        $page = I('p', 1);
+        $row = I('row', 10);
+        $companyId = I('company_id', 0);
+        $promoteId = I('promote_id', 0);
+
+        $query = M('promote_limit_rules', 'tab_')->where('1=1');
+        if ($promoteId !== 0) {
+            $query->where(['promote_id' => $promoteId]);
+        }
+        if ($companyId !== 0) {
+            $promoteIds = M('promote', 'tab_')->field(['id'])->where(['company_id' => $companyId, 'level' => 1])->getField('id', true);
+            $query->where(['promote_id' => ['in', $promoteIds]]);
+        }
+
+        $countQuery = clone $query;
+        $rules = $query->page($page, $row)->select();
+        $count = $countQuery->count();
+
+        $recordPromotes = [];
+        $recordCompanys = [];
+        if (count($rules) > 0) {
+            $recordPromotes = M('promote', 'tab_')->field(['id', 'account', 'company_id'])->where(['id' => ['in', array_column($rules, 'promote_id')]])->select();
+            $recordCompanyIds = array_column($recordPromotes, 'company_id');
+            if (count($recordCompanyIds) > 0) {
+                $recordCompanys = M('promote_company', 'tab_')->field(['id', 'company_name', 'company_belong'])->where(['id' => ['in', $recordCompanyIds]])->select();
+            }
+            $recordPromotes = index_by_column('id', $recordPromotes);
+            $recordCompanys = index_by_column('id', $recordCompanys);
+        }
+
+        $companyTypes = [
+            0 => '内团',
+            1 => '外团',
+            2 => '外团-分发联盟',
+        ];
+
+        $records = [];
+        foreach ($rules as $rule) {
+            $records[] = [
+                'id' => $rule['id'],
+                'promote_account' => $recordPromotes[$rule['promote_id']]['account'],
+                'company_name' => $recordCompanys[$recordPromotes[$rule['promote_id']]['company_id']]['company_name'],
+                'company_belong' => $companyTypes[$recordCompanys[$recordPromotes[$rule['promote_id']]['company_id']]['company_belong']],
+                'limit_rule' => $this->getDisplayRule($rule),
+            ];
+        }
+        $companys = M('promote_company', 'tab_')->field(['id', 'company_name'])->select();
+
+        $page = set_pagination($count, $row);
+        if($page) {
+            $this->assign('_page', $page);
+        }
+        $this->assign('records', $records);
+        $this->assign('companys', $companys);
+        $this->display();
+    }
+
+    private function getDisplayRule($rule)
+    {
+        if ($rule['started_at'] === null && $rule['ended_at'] === null) {
+            return '永久';
+        } elseif ($rule['started_at'] === null && $rule['ended_at'] !== null) {
+            return  '从前 至 '.$rule['ended_at'];
+        } elseif ($rule['started_at'] !== null && $rule['ended_at'] === null) {
+            return $rule['started_at'] . ' 至 永久';
+        } else {
+            return  $rule['started_at'] . ' ~ ' . $rule['ended_at'];
+        }
+    }
+
+    public function edit()
+    {
+        $this->meta_title = '编辑推广限制';
+        $id = I('id', 0);
+        $companys = M('promote_company', 'tab_')->field(['id', 'company_name'])->select();
+        $record = M('promote_limit_rules', 'tab_')->where(['id' => $id])->find();
+        $promote = null;
+        $company = null;
+        if ($record) {
+            $promote = M('promote', 'tab_')->where(['id' => $record['promote_id']])->field(['id', 'company_id', 'account'])->find();
+            $company = M('promote_company', 'tab_')->where(['id' => $promote['company_id']])->field(['id', 'company_name'])->find();
+        }
+        $this->assign('promote', $promote);
+        $this->assign('company', $company);
+        $this->assign('companys', $companys);
+        $this->assign('record', $record);
+        $this->display('form');
+    }
+
+    public function save()
+    {
+        $id = I('id', 0);
+        $promoteId = I('promote_id', 0);
+        $startedAt = I('started_at', '');
+        $endedAt = I('ended_at', '');
+
+        $startedAt = $startedAt === '' ? null : $startedAt;
+        $endedAt = $endedAt === '' ? null : $endedAt;
+
+        if ($startedAt && $endedAt && strtotime($startedAt) > strtotime($endedAt)) {
+            return $this->error('开始时间不能大于结束时间');
+        }
+
+        $record = null;
+        if ($id > 0) {
+            $record = M('promote_limit_rules', 'tab_')->where(['id' => $id])->find();
+            if (!$record) {
+                return $this->error('修改记录不存在');
+            }
+        } else {
+            $promoteRecord = M('promote_limit_rules', 'tab_')->where(['promote_id' => $promoteId])->find();
+            if ($promoteRecord) {
+                return $this->error('该会长已经设定限制规则,请前往更新');
+            }
+        }
+
+        if ($record) {
+            $data = [];
+            $data['started_at'] = $startedAt;
+            $data['ended_at'] = $endedAt;
+            $data['update_time'] = time();
+            M('promote_limit_rules', 'tab_')->where(['id' => $id])->save($data);
+            addOperationLog([
+                'op_type' => 1,
+                'key'=> $promoteId . '/' . $startedAt . '/' . $endedAt,
+                'op_name' => '修改推广限制',
+                'url' => U('PresidentDeposit/edit', ['id'=>$id]), 'menu'=>'推广员-推广员管理-推广限制-修改推广限制'
+            ]);
+        } else {
+            $data = [];
+            $data['promote_id'] = $promoteId;
+            $data['started_at'] = $startedAt;
+            $data['ended_at'] = $endedAt;
+            $data['create_time'] = time();
+            $data['update_time'] = time();
+            M('promote_limit_rules', 'tab_')->add($data);
+            addOperationLog([
+                'op_type' => 0,
+                'key'=> $promoteId . '/' . $startedAt . '/' . $endedAt,
+                'op_name' => '新增推广限制',
+                'url' => U('PresidentDeposit/edit', ['promote_id'=>$promoteId]), 'menu'=>'推广员-推广员管理-推广限制-新增推广限制'
+            ]);
+        }
+
+        return $this->success('保存成功', U('records'));
+    }
+
+    public function delete()
+    {
+        $id = I('id', 0);
+        M('promote_limit_rules', 'tab_')->where(['id' => $id])->delete();
+
+        addOperationLog([
+            'op_type' => 2,
+            'key' => $id,
+            'op_name' => '删除会长推广限制',
+            'url' => U('PresidentDeposit/records', ['id' => $id]),
+            'menu' => '推广员-推广员管理-推广限制-删除推广限制'
+        ]);
+
+        $this->ajaxReturn([
+            'status' => 1,
+            'message' => '删除成功'
+        ]);
+    }
+
+    public function getPromotesByCompany()
+    {
+        $companyId = I('company_id', 0);
+        $promotes = M('promote', 'tab_')->field(['id', 'account'])->where(['level' => 1, 'company_id' => $companyId])->select();
+
+        $this->ajaxReturn([
+            'status' => 1,
+            'message' => '获取成功',
+            'data' => [
+                'promotes' => $promotes
+            ]
+        ]);
+    }
+}
diff --git a/Application/Admin/View/PromoteLimitRule/form.html b/Application/Admin/View/PromoteLimitRule/form.html
new file mode 100644
index 000000000..2912f2344
--- /dev/null
+++ b/Application/Admin/View/PromoteLimitRule/form.html
@@ -0,0 +1,241 @@
+<extend name="Public/base" />
+
+<block name="body">
+  <link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" />
+  <link rel="stylesheet" type="text/css" href="__CSS__/admin_table.css" media="all">
+  <link href="__STATIC__/icons_alibaba/iconfont.css" rel="stylesheet">
+  <script type="text/javascript" src="__STATIC__/uploadify/jquery.uploadify.min.js"></script>
+  <script type="text/javascript" src="__STATIC__/provincecityarea/AreaData_min.js"></script>
+  <script src="__STATIC__/layer/layer.js"></script>
+  <script type="text/javascript" src="__JS__/select2.min.js"></script>
+
+  <style>
+    .tabcon1711 input.time {
+      width: 150px;
+    }
+    #form .txt_area {
+      width: 300px;
+      height: 150px;
+    }
+    .tabcon1711 .form_unit {
+      margin-left: 2px;
+    }
+    .tabcon1711 .mustmark {
+      margin-left:-7px;
+    }
+    .list-ratio {
+      display: table;
+    }
+    .list-ratio .li-ratio {
+      display: flex;
+      margin-bottom: 20px;
+      align-items: center;
+    }
+    .list-ratio .li-ratio .turnover, .list-ratio .li-ratio .turnover-ratio {
+      position: relative;
+    }
+    .list-ratio .li-ratio .turnover span, .list-ratio .li-ratio .turnover-ratio .error-message {
+      color: red;
+      position: absolute;
+      left: 0;
+      top: 30px;
+      white-space: nowrap;
+      display: none;
+    }
+    .iconfont-btn {
+      cursor: pointer;
+    }
+    .iconfont-style {
+      font-size: 18px;
+      color: #fff;
+      border-radius: 4px;
+      border: 0;
+      padding: 5px;
+      margin-left: 10px;
+    }
+    .iconfont-selected {
+      background-color: #0A9AF2;
+    }
+    .iconfont-selected:hover {
+      background-color: #03a9f4;
+    }
+    .iconfont-unselected {
+      background-color: #999;
+    }
+    .iconfont-unselected:hover {
+      background-color: #ababab;
+    }
+  </style>
+  <div class="cf main-place top_nav_list navtab_list">
+    <h3 class="page_title">{$meta_title}</h3>
+<!--    <p class="description_text">说明:此功是创建推广员时所需填写信息</p>-->
+  </div>
+
+  <!-- 标签页导航 -->
+  <div class="tab-wrap">
+    <div class="tab-content tabcon1711">
+      <!-- 表单 -->
+      <form id="form" action="{:U('save')}" method="post" class="form-horizontal">
+        <!-- 基础文档模型 -->
+        <div id="tab1" class="tab-pane in tab1">
+          <table  border="0" cellspacing="0" cellpadding="0">
+            <tbody>
+            
+            <tr>
+              <td class="l"><i class="mustmark">*</i>推广公司:</td>
+              <td class="r">
+                <?php if($record):?>
+                <span class="form_radio table_btn" style="color: red;">{$company.company_name}</span>
+                <?php else:?>
+                <select name="company_id" id="company-select" class="select_gallery">
+                  <option value="">请选择推广公司</option>
+                  <?php foreach($companys as $company):?>
+                  <option value="<?=$company['id']?>" <?php if($company['id'] == $promote['company_id']):?>selected<?php endif;?>><?=$company['company_name']?></option>
+                  <?php endforeach;?>
+                </select>
+                <?php endif;?>
+              </td>
+            </tr>
+            <tr>
+              <td class="l"><i class="mustmark">*</i>会长:</td>
+              <td class="r">
+                <?php if($record):?>
+                <span class="form_radio table_btn" style="color: red;">{$promote.account}</span>
+                <?php else:?>
+                <select name="promote_id" id="promote-select" class="select_gallery">
+                  <option value="">请选择会长</option>
+                </select>
+                <?php endif;?>
+              </td>
+            </tr>
+            <tr>
+              <td class="l">开始时间:</td>
+              <td class="r">
+                <input type="text" name="started_at" class="time" value="<?=$record['started_at']?>" placeholder="请选择开始时间" style="width: 200px"/>
+              </td>
+            </tr>
+            <tr>
+              <td class="l">结束时间:</td>
+              <td class="r">
+                <input type="text" name="ended_at" class="time" value="<?=$record['ended_at']?>" placeholder="请选择结束时间" style="width: 200px" />
+              </td>
+            </tr>
+            </tbody>
+          </table>
+        </div>
+        <input type="hidden" name="id" id="id" value="{$record.id}" />
+        <div class="form-item cf">
+          <button class="submit_btn mlspacing" id="submit" type="submit" target-form="form-horizontal">
+            确认
+          </button>
+          <a class="submit_btn " alt="返回上一页" title="返回上一页" href="javascript:window.history.back();" >
+            返回
+          </a>
+        </div>
+      </form>
+    </div>
+  </div>
+
+  <div class="common_settings">
+    <span class="plus_icon"><span><img src="__IMG__/zwmimages/icon_jia.png"></span></span>
+    <form class="addShortcutIcon">
+      <input type="hidden" name="title" value="{$m_title}">
+      <input type="hidden" name="url" value="Promote/lists/type/1">
+    </form>
+    <a class="ajax-post add-butn <notempty name='commonset'>addSIsetted</notempty>" href="javascript:;" target-form="addShortcutIcon" url="{:U('Think/addShortcutIcon')}"><img src="__IMG__/zwmimages/icon_jia.png"><span><notempty name='commonset'>已添加<else />添加至常用设置</notempty></span></a>
+  </div>
+
+</block>
+
+<block name="script">
+  <link href="__STATIC__/datetimepicker/css/datetimepicker.css" rel="stylesheet" type="text/css">
+  <php>if(C('COLOR_STYLE')=='blue_color') echo '<link href="__STATIC__/datetimepicker/css/datetimepicker_blue.css" rel="stylesheet" type="text/css">';</php>
+  <link href="__STATIC__/datetimepicker/css/dropdown.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript" src="__STATIC__/datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
+  <script type="text/javascript" src="__STATIC__/datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js" charset="UTF-8"></script>
+<script type="text/javascript">
+//导航高亮
+highlight_subnav("{:U('PromoteLimitRule/records')}");
+$(".select_gallery").select2();
+
+$(function(){
+    $('.time').datetimepicker({
+        format: 'yyyy-mm-dd',
+        language: "zh-CN",
+        autoclose: true,
+        scrollMonth: false,
+        scrollTime: false,
+        scrollInput: false,
+        startView: 'month',
+        minView:'month',
+        maxView:'month',
+    });
+    showTab();
+    $('#company-select').on({
+      change: function() {
+        var companyId = $(this).val()
+        getPromotesByCompany(companyId, function(promotes) {
+          var html = '<option value="">请选择会长</option>'
+          for (var key in promotes) {
+            html += '<option value="' + promotes[key].id + '">' + promotes[key].account + '</option>'
+          }
+          $('#promote-select').html(html)
+          $('#promote-select').select2()
+        })
+      }
+    })
+    function getPromotesByCompany(companyId, callback) {
+      $.ajax({
+        url: '{:U("getPromotesByCompany")}',
+        type: 'get',
+        dataType: 'json',
+        data: {company_id: companyId},
+        success: function(result) {
+          if (result.status == 1) {
+            callback(result.data.promotes)
+          } else {
+            layer.msg(result.message)
+          }
+        }
+      })
+    }
+
+    $('#submit').click(function (e) {
+        var target = $('form').get(0).action;
+        var query = $('form').serialize();
+        var that = this;
+        $(that).addClass('disabled').attr('autocomplete','off').prop('disabled',true);
+        $.post(target,query).success(function(data){
+            if(layer) {layer.closeAll('loading');}
+            if (data.status==1) {
+                if (data.url) {
+                    updateAlert(data.info + ' 页面即将自动跳转~');
+                }else{
+                    updateAlert(data.info);
+                }
+                setTimeout(function(){
+                    $(that).removeClass('disabled').prop('disabled',false);
+                    if (data.url) {
+                        location.href=data.url;
+                    } else if( $(that).hasClass('no-refresh')) {
+                        $('#tip').find('.tipclose').click();
+                    } else {
+                        location.reload();
+                    }
+                }, 1500);
+            }else{
+                updateAlert(data.info,'tip_error');
+                setTimeout(function(){
+                    $(that).removeClass('disabled').prop('disabled',false);
+                    if (data.url) {
+                        location.href=data.url;
+                    }else{
+                        $('#tip').find('.tipclose').click();
+                    }
+                },3000);
+            }
+        });
+    });
+});
+</script>
+</block>
\ No newline at end of file
diff --git a/Application/Admin/View/PromoteLimitRule/records.html b/Application/Admin/View/PromoteLimitRule/records.html
new file mode 100644
index 000000000..096c11029
--- /dev/null
+++ b/Application/Admin/View/PromoteLimitRule/records.html
@@ -0,0 +1,216 @@
+<extend name="Public/base"/>
+<block name="css">
+    <link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" />
+    <link rel="stylesheet" href="__CSS__/promote.css" type="text/css"/>
+    <link rel="stylesheet" type="text/css" href="__STATIC__/webuploader/webuploader.css" media="all">
+    <style>
+        .select2-container--default .select2-selection--single {
+            color: #000;
+            resize: none;
+            border-width: 1px;
+            border-style: solid;
+            border-color: #a7b5bc #ced9df #ced9df #a7b5bc;
+            box-shadow: 0px 3px 3px #F7F8F9 inset;height:35px;
+            height:28px;border-radius:3px;font-size:12px;
+        }
+        .select2-container--default .select2-selection--single .select2-selection__rendered {
+            line-height:35px;
+            line-height:28px;
+        }
+        .select2-container--default .select2-selection--single .select2-selection__arrow {
+            height:26px;
+        }
+        .select2-container--default .select2-search--dropdown .select2-search__field {
+            height:26px;line-height:26px;font-size:12px;
+        }
+        .select2-results__option[aria-selected] {font-size:12px;}
+        .textarea-style {
+            width: 200px;
+            height: 80px;
+            border-radius: 5px;
+            padding: 5px;
+        }
+        .mustmark {
+            color: #FF0000;
+            font-style: normal;
+            margin: 0 3px;
+        }
+    </style>
+</block>
+<block name="body">
+    <script type="text/javascript" src="__JS__/bootstrap.min.js"></script>
+    <script type="text/javascript" src="__JS__/select2.min.js"></script>
+    <script type="text/javascript" src="__JS__/jquery.form.js"></script>
+    <script type="text/javascript" src="__STATIC__/uploadify/jquery.uploadify.min.js"></script>
+
+    <script src="__STATIC__/md5.js" type="text/javascript" charset="utf-8"></script>
+    <script type="text/javascript" src="__STATIC__/webuploader/webuploader.js"></script>
+    <script src="__STATIC__/layer/layer.js" type="text/javascript"></script>
+    <script type="text/javascript" src="__STATIC__/layer/extend/layer.ext.js"></script>
+    <div class="cf main-place top_nav_list navtab_list">
+        <h3 class="page_title">推广限制</h3>
+    </div>
+    <div class="cf top_nav_list">
+        <!-- 高级搜索 -->
+        <div class="jssearch fl cf search_list">
+            <div class="input-list search-title-box">
+                <label>搜索:</label>
+            </div>
+            <div class="input-list input-list-promote search_label_rehab">
+                <select id="company_select" name="company_id" class="select_gallery" style="width:200px;">
+                    <option value="">请选择公司</option>
+                    <?php foreach($companys as $company):?>
+                    <option value="<?=$company['id']?>"><?=$company['company_name']?></option>
+                    <?php endforeach;?>
+                </select>
+            </div>
+            <div class="input-list input-list-promote search_label_rehab">
+                <select id="promote-select" name="promote_id" class="select_gallery" style="width:120px;">
+                    <option value="">请选择会长</option>
+                    <volist name=":get_promote_list_by_id()" id="vo">
+                        <option value="{$vo.id}">{$vo.account}</option>
+                    </volist>
+                </select>
+            </div>
+            <div class="input-list">
+                <a class="sch-btn" href="javascript:;" id="search" url="{:U('PromoteLimitRule/records')}">搜索</a>
+                <a class="sch-btn" href="{:U('PromoteLimitRule/edit')}">添加</a>
+            </div>
+            <!-- <div class="input-list">
+                <a class="sch-btn" href="{:U('Export/expUser',array_merge(array('id'=>12,),I('get.')))}">导出</a>
+            </div> -->
+        </div>
+    </div>
+
+    <!-- 数据列表 -->
+    <div class="data_list">
+        <div class="">
+            <table>
+                <!-- 表头 -->
+                <thead>
+                <tr>
+                    <th>
+                        <input class="check-all" type="checkbox">
+                    </th>
+                    <th>推广公司</th>
+                    <th>会长账号</th>
+                    <th>内外团</th>
+                    <th>限制时间</th>
+                    <th>操作</th>
+                </tr>
+                </thead>
+
+                <!-- 列表 -->
+                <tbody>
+                <empty name ="records">
+                    <td colspan="14" class="text-center">aOh! 暂时还没有内容!</td>
+                    <else />
+                    <volist name="records" id="data">
+                        <tr data-id="<?=$data['id']?>">
+                            <td>
+                                <input class="ids" type="checkbox" value="{$data['id']}" name="ids[]">
+                            </td>
+                            <td>{$data.company_name}</td>
+                            <td>{$data.promote_account}</td>
+                            <td>{$data.company_belong}</td>
+                            <td>{$data.limit_rule}</td>
+                            <td>
+                                <div class="partakebtn">
+                                    <a href="<?=U('edit', ['id' => $data['id']])?>">编辑</a>
+                                    <a class="delete-btn">删除</a>
+                                </div>
+                            </td>
+                        </tr>
+                    </volist>
+                </empty>
+                </tbody>
+            </table>
+        </div>
+    </div>
+    <div class="page">
+        <if condition="$role_export_check eq true ">
+            <!-- <a class="sch-btn export-btn"
+               href="{:U(CONTROLLER_NAME.'/'.ACTION_NAME,array_merge(['export'=>1],I('get.')))}" target="_blank">导出</a> -->
+        </if>
+        {$_page|default=''}
+    </div>
+
+    <div class="common_settings">
+        <span class="plus_icon"><span><img src="__IMG__/zwmimages/icon_jia.png"></span></span>
+        <form class="addShortcutIcon">
+            <input type="hidden" name="title" value="{$m_title}">
+            <input type="hidden" name="url" value="Query/withdraw">
+        </form>
+        <a class="ajax-post add-butn <notempty name='commonset'>addSIsetted</notempty>" href="javascript:;" target-form="addShortcutIcon" url="{:U('Think/addShortcutIcon')}"><img src="__IMG__/zwmimages/icon_jia.png"><span><notempty name='commonset'>已添加<else />添加至常用设置</notempty></span></a>
+    </div>
+</block>
+
+<block name="script">
+    <script src="__STATIC__/layer/layer.js" type="text/javascript"></script>
+    <script type="text/javascript" src="__STATIC__/layer/extend/layer.ext.js" ></script>
+    <script src="__STATIC__/jquery.cookie.js" charset="utf-8"></script>
+    <script>
+        <volist name=":I('get.')" id="vo">
+            Think.setValue('{$key}',"{$vo}");
+        </volist>
+        $(".select_gallery").select2();
+    </script>
+    <script type="text/javascript">
+        //导航高亮
+        highlight_subnav("{:U('PromoteLimitRule/records')}");
+        $(function(){
+            //搜索功能
+            $("#search").click(function(){
+                var url = $(this).attr('url');
+                var query  = $('.jssearch').find('input').serialize();
+                query  += "&"+$('.jssearch').find('select').serialize();
+                query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g,'');
+                query = query.replace(/^&/g,'');
+                if( url.indexOf('?')>0 ){
+                    url += '&' + query;
+                }else{
+                    url += '?' + query;
+                }
+                window.location.href = url;
+            });
+            //回车自动提交
+            $('.jssearch').find('input').keyup(function(event){
+                if(event.keyCode===13){
+                    $("#search").click();
+                }
+            })
+            function getIds() {
+                var ids = [];
+                $('.ids:checked').each(function() {
+                    ids.push($(this).val());
+                })
+                return ids;
+            }
+            $('.delete-btn').on({
+                click: function() {
+                    var id = $(this).parents('tr').eq(0).attr('data-id');
+                    $.ajax({
+                        url: '{:U("delete")}',
+                        type: 'post',
+                        dataType: 'json',
+                        data: {id: id},
+                        success: function(result) {
+                            if (result.status == 1) {
+                                layer.msg(result.message)
+                                setTimeout(function() {
+                                    window.location.href = window.location.href
+                                }, 200)
+                            } else {
+                                layer.msg(result.message)
+                            }
+                        }
+                    })
+                }
+            })
+        });
+        /* $(".export-btn").on("click",function(e){
+            e.preventDefault();
+            window.location.href=$(this).attr("href")
+        }) */
+    </script>
+</block>
\ No newline at end of file
diff --git a/Application/Base/Service/PromoteService.class.php b/Application/Base/Service/PromoteService.class.php
index a048db92d..a1645f115 100644
--- a/Application/Base/Service/PromoteService.class.php
+++ b/Application/Base/Service/PromoteService.class.php
@@ -1125,4 +1125,28 @@ class PromoteService {
             return $selfGameIds;
         }
     }
+
+    public function checkPromoteLimitRule($promote)
+    {
+        $topPromote = $this->getTopPromote($promote);
+        $rule = M('promote_limit_rules', 'tab_')->where(['promote_id' => $topPromote['id']])->order('created_at desc')->limit(1)->find();
+        if ($rule) {
+            if ($rule['started_at'] === null && $rule['ended_at'] === null) {
+                return false;
+            } elseif ($rule['started_at'] === null && $rule['ended_at'] !== null) {
+                if (time() < strtotime($rule['ended_at'] . ' 23:59:59')) {
+                    return false;
+                }
+            } elseif ($rule['started_at'] !== null && $rule['ended_at'] === null) {
+                if (time() >= strtotime($rule['started_at'] . ' 00:00:00')) {
+                    return false;
+                }
+            } else {
+                if (time() >= strtotime($rule['started_at'] . ' 00:00:00') && time() < strtotime($rule['ended_at'] . ' 23:59:59')) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
 }
\ No newline at end of file
diff --git a/Application/Home/Controller/HomeController.class.php b/Application/Home/Controller/HomeController.class.php
index 345c8268a..c1c57599f 100644
--- a/Application/Home/Controller/HomeController.class.php
+++ b/Application/Home/Controller/HomeController.class.php
@@ -5,6 +5,7 @@ use Think\Controller;
 use User\Api\MemberApi;
 use Base\Facade\Request;
 use Base\Service\ApplyService;
+use Base\Service\PromoteService;
 use Base\Service\PackageDownloadLogService;
 use Base\Tool\MobileDetect;
 
@@ -170,6 +171,16 @@ class HomeController extends Controller
             $promoteId = $data['promote_id'];
         }
 
+        $promote = M('promote', 'tab_')->field(['id', 'parent_id', 'chain', 'level'])->where(['id' => $promoteId])->find();
+        if (!$promote) {
+            $this->error('该链接已失效');
+        }
+
+        $promoteService = new PromoteService();
+        if (!$promoteService->checkPromoteLimitRule($promote)) {
+            $this->error('链接已失效');
+        }
+
         $isWechat = Request::isWechat();
         $isIOS = Request::isIOS() || Request::isIPadOS();
         $isAndroid = Request::isAndroid();
@@ -208,8 +219,6 @@ class HomeController extends Controller
         $map = ['id' => intval($gameId)];
         $game = M('game', 'tab_')->field($columns)->where($map)->find();
 
-        $promote = M('promote', 'tab_')->field(['id', 'parent_id', 'chain', 'level'])->where(['id' => $promoteId])->find();
-
         if ($game['sdk_version'] == 1 && $isIOS) {
             $map = [];
             $map['relation_game_id'] = $game['relation_game_id'];
diff --git a/Application/Home/Controller/PackageController.class.php b/Application/Home/Controller/PackageController.class.php
index 41e70efce..6f664020d 100644
--- a/Application/Home/Controller/PackageController.class.php
+++ b/Application/Home/Controller/PackageController.class.php
@@ -54,6 +54,16 @@ class PackageController extends Controller
             $promoteId = $data['promote_id'];
         }
 
+        $promote = M('promote', 'tab_')->field(['id', 'parent_id', 'chain', 'level'])->where(['id' => $promoteId])->find();
+        if (!$promote) {
+            $this->error('该链接已失效');
+        }
+
+        $promoteService = new PromoteService();
+        if (!$promoteService->checkPromoteLimitRule($promote)) {
+            $this->error('链接已失效');
+        }
+
         $map = [];
         $map['status'] = 1;
         $map['enable_status'] = 1;
@@ -65,7 +75,6 @@ class PackageController extends Controller
             $this->redirect("package/downloadError", ['message' => '该链接已经停止使用']);
         }
 
-        $promote = M('promote', 'tab_')->field(['id', 'parent_id', 'chain', 'level'])->where(['id' => $promoteId])->find();
         $game = M('game','tab_')->field(['id', 'game_name', 'sdk_version', 'apply_auth'])->where(['id' => $apply['game_id']])->find();
         
         if (Request::isMobile() || Request::isTablet()) {