diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/dao/CardDao.java b/src/main/java/com/supwisdom/dlpay/mainservice/dao/CardDao.java
index 972160b..d3595d8 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/dao/CardDao.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/dao/CardDao.java
@@ -11,4 +11,6 @@
     public TCard findCardByCardno(String cardno);
 
     public boolean updateCard(TCard bean);
+
+    public boolean deleteCard(String  custid);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardDaoImpl.java b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardDaoImpl.java
index 05a0c98..cde13c3 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardDaoImpl.java
@@ -7,6 +7,7 @@
 
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
 import javax.persistence.TypedQuery;
 import java.util.List;
 
@@ -66,4 +67,20 @@
         }
         return flag;
     }
+
+    @Transactional
+    @Override
+    public boolean deleteCard(String  custid) {
+        boolean flag = false;
+        try {
+            String sql = "delete from TCard t where t.custid=?1";
+            Query query = entityManager.createQuery(sql);
+            query.setParameter(1, custid);
+            query.executeUpdate();
+            flag=true;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return flag;
+    }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java
index 828f894..4979e95 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java
@@ -6,11 +6,13 @@
 import com.supwisdom.dlpay.doorlist.bean.TCustomerInfo;
 import com.supwisdom.dlpay.framework.util.PageResult;
 import com.supwisdom.dlpay.framework.util.StringUtil;
+import com.supwisdom.dlpay.mainservice.dao.CardDao;
 import com.supwisdom.dlpay.mainservice.dao.CustomerDao;
 import com.supwisdom.dlpay.mainservice.domain.TCustomer;
 import org.apache.commons.lang3.StringUtils;
 import org.hibernate.query.internal.NativeQueryImpl;
 import org.hibernate.transform.Transformers;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -24,9 +26,13 @@
 @Repository
 public class CustomerDaoImpl implements CustomerDao {
 
+    @Autowired
+    private CardDao cardDao;
+
     @PersistenceContext
     EntityManager entityManager;
 
+
     @Transactional
     @Override
     public TCustomer findCustomerByNo(String cardno) {
@@ -224,6 +230,8 @@
             Query query = entityManager.createQuery(sql);
             query.setParameter(1, custid);
             query.executeUpdate();
+
+            cardDao.deleteCard(custid);
             flag=true;
         }catch (Exception e){
             e.printStackTrace();
diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/service/impl/WebInterfaceServiceImpl.java b/src/main/java/com/supwisdom/dlpay/mainservice/service/impl/WebInterfaceServiceImpl.java
index 38c4400..9540462 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/service/impl/WebInterfaceServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/service/impl/WebInterfaceServiceImpl.java
@@ -157,6 +157,8 @@
 
     @Override
     public boolean deleteCustomer(String custid){
+
+
         return customerDao.deleteCustomer(custid);
     }
 
diff --git a/src/main/java/com/supwisdom/dlpay/system/domain/TSystemParam.java b/src/main/java/com/supwisdom/dlpay/system/domain/TSystemParam.java
index d08abf4..ca0d274 100644
--- a/src/main/java/com/supwisdom/dlpay/system/domain/TSystemParam.java
+++ b/src/main/java/com/supwisdom/dlpay/system/domain/TSystemParam.java
@@ -50,4 +50,10 @@
     public void setParamFlag(String paramFlag) {
         this.paramFlag = paramFlag;
     }
+
+    public static void main(String[] args) {
+        String i= "/services/microprogram/getaccountinfo";
+        System.out.println(i.contains("/microprogram"));
+    }
+
 }
