diff --git a/src/main/java/com/supwisdom/dlpay/app/service/impl/AppServiceImpl.java b/src/main/java/com/supwisdom/dlpay/app/service/impl/AppServiceImpl.java
index bd3ca72..725d6b9 100644
--- a/src/main/java/com/supwisdom/dlpay/app/service/impl/AppServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/app/service/impl/AppServiceImpl.java
@@ -5,6 +5,7 @@
 import com.sun.jersey.api.client.ClientResponse;
 import com.sun.jersey.api.client.WebResource;
 import com.supwisdom.dlpay.app.bean.CustomerInfo;
+import com.supwisdom.dlpay.app.controller.AppController;
 import com.supwisdom.dlpay.app.dao.AppDao;
 import com.supwisdom.dlpay.app.domain.*;
 import com.supwisdom.dlpay.app.service.AppService;
@@ -23,6 +24,8 @@
 import com.supwisdom.dlpay.util.RedisUtil;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.http.HttpStatus;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -31,6 +34,8 @@
 
 @Service
 public class AppServiceImpl implements AppService {
+    protected static Logger logger = LoggerFactory.getLogger(AppServiceImpl.class);
+
 
     @Autowired
     AppDao appDao;
@@ -229,9 +234,11 @@
         //TODO 1.判断accesstoken是否可用
         //TODO 2.判断refreshtoken是否可用
         if (config == null) {
-            //logger.error("微信公众号相关信息未配置，请在表E_WECHAT_CONFIG中添加记录，其中ID默认为WECHAT");
+            logger.error("微信公众号相关信息未配置，请在表E_WECHAT_CONFIG中添加记录，其中ID默认为WECHAT");
 
         }
+        logger.error("appid"+appid);
+        logger.error("code"+code);
         boolean issave=false;
         Client c = Client.create();
         c.setConnectTimeout(20000);
@@ -239,7 +246,7 @@
         ClientResponse respClient = r.accept(MediaType.APPLICATION_JSON).post(ClientResponse.class);
         if (HttpStatus.SC_OK == respClient.getStatus()) {
             String s = respClient.getEntity(String.class);
-            System.out.println(s);
+            logger.error("获取token"+s);
             Gson gson = new Gson();
             WechatResp ret = gson.fromJson(s, WechatResp.class);
             if (ret != null) {
@@ -250,7 +257,7 @@
                     respClient = r.accept(MediaType.APPLICATION_JSON).post(ClientResponse.class);
                     if (HttpStatus.SC_OK == respClient.getStatus()) {
                         s = respClient.getEntity(String.class);
-                        System.out.println(s);
+                        logger.error("获取身份信息"+s);
                         WechatResp infor = gson.fromJson(s, WechatResp.class);
                         EWechatAccount account = getAccountByOpenid(ret.getOpenid());
                         if (account == null) {
@@ -276,7 +283,7 @@
                         account.setOpenid(openid);
                         account.setStatus("1");
                         account.setBinddate(DateUtil.getNow());
-                        System.out.println("account对象内容"+account);
+                        logger.error("account对象内容"+account);
                         if(issave){
                             boolean b = appDao.saveAccount(account);
                             if (!b){
diff --git a/src/main/resources/templates/apph5/applyforvisitor.html b/src/main/resources/templates/apph5/applyforvisitor.html
index d3ffe5a..054f6b6 100644
--- a/src/main/resources/templates/apph5/applyforvisitor.html
+++ b/src/main/resources/templates/apph5/applyforvisitor.html
@@ -29,7 +29,7 @@
 <div id="app">
     <div class="block" style="background:#ffffff;">
         <br>
-        <span class="demonstration" style="text-align: center;display:block; font-size: 20px;color: #9932CC">请假申请</span><br><br>
+        <span class="demonstration" style="text-align: center;display:block; font-size: 20px;color: #9932CC">访客申请</span><br><br>
         <!--动态将图片轮播图的容器高度设置成与图片一致-->
         <div class="el-message-box__input">
             <label class="label-fade-enter">姓名</label><input type="text" class="el-input" id="name">
