diff --git a/config/application-devel-pg-xkx.properties b/config/application-devel-pg-xkx.properties
index 7f41697..0e5c007 100644
--- a/config/application-devel-pg-xkx.properties
+++ b/config/application-devel-pg-xkx.properties
@@ -27,11 +27,16 @@
 spring.jackson.serialization.fail-on-empty-beans=false
 
 # task setting
-#cron.offlinedtl=0/30 * * * * ?
-#payapi.logintime=0 0/20 * * * ?
-#restaurant.chkdtltask.cron=0 0/3 * * * ?
+# 对账任务
 restaurant.chkdtltask.cron=-
+# 统计任务
 restaurant.statement.cron=-
+# 客户信息校对任务
+restaurant.customercheck.cron=-
+# 流水入账任务
+restaurant.submitofflinedtl.cron=-
+# 查询流水状态任务
+restaurant.querydtlresult.cron=-
 
 # payapi setting
 payapi.url=http://172.28.201.70:10010/payapi
diff --git a/sql/public_SQL.sql b/sql/public_SQL.sql
new file mode 100644
index 0000000..57af746
--- /dev/null
+++ b/sql/public_SQL.sql
@@ -0,0 +1,12 @@
+create table "public"."tb_tenantconfig"(
+"cfgid" varchar(32) not null,
+"tenant_id" varchar(60) not null,
+"tenant_name" varchar(200),
+"tenant_schema" varchar(30) not null
+);
+alter table "public"."tb_tenantconfig" add constraint "uk_tenantconfig_tenantid" unique ("tenant_id");
+alter table "public"."tb_tenantconfig" add constraint "pk_tenantconfig_cfgid" primary key ("cfgid");
+
+-- INSERT INTO "tb_tenantconfig"("cfgid", "tenant_id", "tenant_name", "tenant_schema") VALUES ('1', 'dlszf.cn', '大理市政府机关食堂', 'dlszfst');
+-- INSERT INTO "tb_tenantconfig"("cfgid", "tenant_id", "tenant_name", "tenant_schema") VALUES ('2', 'ynrcc.cn', '大理农商行食堂', 'dlynrcc');
+-- commit;
\ No newline at end of file
diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/TenantConfigDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/TenantConfigDao.java
index c4098b0..f016336 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/dao/TenantConfigDao.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/dao/TenantConfigDao.java
@@ -11,5 +11,6 @@
 public interface TenantConfigDao extends CrudRepository<TTenantConfig, String> {
   TTenantConfig getByTenantId(String tenantid);
 
-  List<TTenantConfig> findAll();
+  @Query("from TTenantConfig t order by t.tenantId ")
+  List<TTenantConfig> findAllTenants();
 }
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..23dfb56 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
@@ -164,7 +164,7 @@
         String cardverno = systemUtilService.getCardverno();
         List<TCard> card = cardDao.findAllByCustid(custid);
         for (TCard c : card) {
-            cardDao.deleteById(c.getCardno());
+            cardDao.delete(c);
             String date = DateUtil.getNow("yyyyMMdd");
             saveCardver(cardverno, date, c, c.getStatus(), RestaurantConstant.STATUS_CARD_LOGOUT, 0);
         }
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 345ff3e..19eb831 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/task/RestaurantTask.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/task/RestaurantTask.java
@@ -69,7 +69,7 @@
       searchBean.setCheckstatus(RestaurantConstant.STATUS_CHECKSTATUS_UNCHECK);
 
       List<CustomerShowBean> dtls = customerService.getCustomerPage(searchBean).getData();
-      logger.info("正同步" + dtls.size() + "名人员");
+      logger.debug("正同步" + dtls.size() + "名人员");
       if (dtls.size() > 0) {
         for (CustomerShowBean dtl : dtls) {
           QueryUserParam param = new QueryUserParam();
diff --git a/src/main/java/com/supwisdom/dlpay/tenant/service/impl/MultiTenantServiceImpl.java b/src/main/java/com/supwisdom/dlpay/tenant/service/impl/MultiTenantServiceImpl.java
index e8bc432..140a24a 100644
--- a/src/main/java/com/supwisdom/dlpay/tenant/service/impl/MultiTenantServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/tenant/service/impl/MultiTenantServiceImpl.java
@@ -39,8 +39,8 @@
   public List<TenantDetails> getSystemAllTenantDetails() {
     List<TenantDetails> result = new ArrayList<>(0);
     TenantContextHolder.getContext().setTenant(TenantConstant.defaultTenantDetails); //public下
-    List<TTenantConfig> configList = tenantConfigDao.findAll();
-    if (StringUtil.isEmpty(configList)) {
+    List<TTenantConfig> configList = tenantConfigDao.findAllTenants();
+    if (!StringUtil.isEmpty(configList)) {
       for (TTenantConfig conf : configList) {
         TenantDetails tenantDetails = new TenantDetails();
         tenantDetails.setId(conf.getTenantId());
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index 6d69446..1c16953 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -512,6 +512,11 @@
 INSERT INTO "tb_businesspara" (parakey,paraval) VALUES ('payapi.secret', 'dc1d26c0d43e442588092c8d45c21bce');
 INSERT INTO "tb_businesspara" (parakey,paraval) VALUES ('customer.ignore', 'false');
 
+-- 多租户jwt秘钥配置，不同的租户secret最好配置不同
+INSERT INTO "tb_tenant_jwtconfig"("id", "jwt_secret") VALUES ('main', 'DLLSHLomEbrM0lk+NMQZbHfSxaDU1wekjT+kiC3YzDw=');
+--INSERT INTO "tb_tenant_jwtconfig"("id", "jwt_secret") VALUES ('main', 'DLSZFLomEbrM0lk+NMQZbHfSxaDU1wekjT+kiC3YzDw=');
+commit;
+
 
 CREATE SEQUENCE SEQ_REFNO
 INCREMENT BY 1
