diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerShowBean.java b/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerShowBean.java
index b03083d..74b5e99 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerShowBean.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerShowBean.java
@@ -13,6 +13,7 @@
     private String bankcardno;
     private String checkstatus;
     private String status;
+    private String inputdate;
 
     public CustomerShowBean(){
 
@@ -101,4 +102,12 @@
     public void setStatus(String status) {
         this.status = status;
     }
+
+    public String getInputdate() {
+        return inputdate;
+    }
+
+    public void setInputdate(String inputdate) {
+        this.inputdate = inputdate;
+    }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustType.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustType.java
index 23351c1..0984abf 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustType.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustType.java
@@ -10,6 +10,7 @@
     private Integer custtypeid;
     private String custtypename;
     private Integer feetype;
+    private Integer expireday;
 
     @Id
     @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_CUSTTYPE")
@@ -39,4 +40,14 @@
     public void setFeetype(Integer feetype) {
         this.feetype = feetype;
     }
+
+
+    @Column(name = "expireday" ,length = 9)
+    public Integer getExpireday() {
+        return expireday;
+    }
+
+    public void setExpireday(Integer expireday) {
+        this.expireday = expireday;
+    }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java
index 38b47ad..01bafaf 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java
@@ -21,7 +21,7 @@
     private String lastsaved;
     private String status;
     private String checkstatus;
-
+    private String inputdate;
     private String deptno;
 
     @Id
@@ -140,4 +140,13 @@
     public void setDeptno(String deptno) {
         this.deptno = deptno;
     }
+
+    @Column(name = "inputdate", length = 8)
+    public String getInputdate() {
+        return inputdate;
+    }
+
+    public void setInputdate(String inputdate) {
+        this.inputdate = inputdate;
+    }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
index 413c222..cd30368 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
@@ -46,7 +46,7 @@
 
     @Override
     public PageResult<CustomerShowBean> getCustomerPage(CustomerSearchBean param) {
-        StringBuffer querySql = new StringBuffer("select t.cardno,c.custid,c.custname, " +
+        StringBuffer querySql = new StringBuffer("select t.cardno,c.custid,c.custname,c.inputdate, " +
                 "t.bankcardno,t.cardphyid,c.phone,c.custtype,c.checkstatus,t.status from tb_customer c " +
                 "left join Tb_card t on t.custid=c.custid where 1=1 ");
         StringBuffer countSql = new StringBuffer("select count(*) as cnt from tb_customer c " +
@@ -108,6 +108,7 @@
         cus.setBatchno(customer.getBatchno());
         cus.setStatus(customer.getStatus());
         cus.setCheckstatus(customer.getCheckstatus());
+        cus.setInputdate(DateUtil.getNow("yyyyMMdd"));
         cus = customerDao.save(cus);
         if (null != cus) {
             if(0==customer.getSavecardflag()){
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/task/RestaurantTask.java b/src/main/java/com/supwisdom/dlpay/restaurant/task/RestaurantTask.java
index 3c9e0a2..dd82f82 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/task/RestaurantTask.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/task/RestaurantTask.java
@@ -80,4 +80,11 @@
 
     }
 
+    //TODO 
+    @Scheduled(cron = "0 0/1 * * * ? ")
+    private void deleteExpiredWhitelist(){
+        List<TCustomer> expiredCustomer=customerDao.findAll();
+
+    }
+
 }
diff --git a/src/main/resources/templates/restaurant/customer/index.html b/src/main/resources/templates/restaurant/customer/index.html
index 4ac3c6c..3e91ddc 100644
--- a/src/main/resources/templates/restaurant/customer/index.html
+++ b/src/main/resources/templates/restaurant/customer/index.html
@@ -44,6 +44,7 @@
                     {field: 'cardno', sort: true,width: 120, title: '市名卡号'},
                     {field: 'phone',  title: '联系电话'},
                     {field: 'bankcardno', sort: true, width: 200, title: '银行卡号'},
+                    {field: 'inputdate', sort: true, width: 120, title: '保存日期'},
                     {
                         field: 'checkstatus', title: '审核状态', align: 'center', width: 120, sort: true, templet: function (d) {
                             if ('uncheck' == d.checkstatus) {
diff --git a/src/main/resources/templates/restaurant/custtype/form.html b/src/main/resources/templates/restaurant/custtype/form.html
index 574b725..6518e04 100644
--- a/src/main/resources/templates/restaurant/custtype/form.html
+++ b/src/main/resources/templates/restaurant/custtype/form.html
@@ -2,13 +2,21 @@
 <form id="custtype-form" lay-filter="custtype-form" class="layui-form model-form">
     <input name="custtypeid" id="custtypeid" type="hidden"/>
     <div class="layui-form-item">
-        <label class="layui-form-label">客户类别名称</label>
+        <label class="layui-form-label"><span style="color: red">* </span>客户类别名称</label>
         <div class="layui-input-block">
             <input name="custtypename" placeholder="" type="text" class="layui-input" maxlength="20"
                    lay-verify="required" required/>
         </div>
     </div>
 
+    <div class="layui-form-item">
+        <label class="layui-form-label"><span style="color: red">* </span>过期时间(天)</label>
+        <div class="layui-input-block">
+            <input name="expireday" placeholder="" type="text" class="layui-input" maxlength="20"
+                   lay-verify="required|number" required/>
+        </div>
+    </div>
+
     <div class="layui-form-item model-form-footer">
         <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
         <button class="layui-btn" lay-filter="custtype-form-submit" lay-submit id="custtype-submitbtn">保存</button>
diff --git a/src/main/resources/templates/restaurant/custtype/index.html b/src/main/resources/templates/restaurant/custtype/index.html
index 8abc183..3aacc4d 100644
--- a/src/main/resources/templates/restaurant/custtype/index.html
+++ b/src/main/resources/templates/restaurant/custtype/index.html
@@ -35,6 +35,7 @@
                 [
                     {field: 'custtypeid', title: '类别号',  fixed: 'left', sort: true},
                     {field: 'custtypename', title: '类别名称', sort: true},
+                    {field: 'expireday', title: '过期时间(天)', sort: true},
                     {
                         field: 'custtypeid', align: 'center',width:160, title: '操作', fixed: 'right', templet: function (item) {
                             return ' <a class="layui-btn  layui-btn-xs" lay-event="custtype-edit"><i class="layui-icon layui-icon-edit"></i>编辑</a> ' +
