大理访客登记h5待测试
diff --git a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
index 92179ac..887a8f1 100644
--- a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
+++ b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
@@ -1,6 +1,5 @@
 package com.supwisdom.dlpay.app.controller;

 

-import com.supwisdom.dlpay.app.domain.EVisitorDtl;

 import com.supwisdom.dlpay.app.domain.VisitorConfig;

 import com.supwisdom.dlpay.app.domain.WechatResp;

 import com.supwisdom.dlpay.app.service.AppService;

@@ -23,12 +22,14 @@
 import javax.servlet.http.HttpServletRequest;

 import javax.servlet.http.HttpServletResponse;

 import javax.servlet.http.HttpSession;

+import java.security.KeyPair;

+import java.security.PrivateKey;

+import java.security.PublicKey;

+import java.util.Arrays;

 import java.util.HashMap;

 import java.util.List;

 import java.util.Map;

 

-import static jxl.biff.FormatRecord.logger;

-

 @Controller

 @RequestMapping("/app")

 public class AppController {

@@ -44,6 +45,8 @@
     private VisitormanageService visitormanageService;

     private String wechatURL, redirect, appid, appsecret;

 

+    private final String privatekeystring="MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAK9Zcfjepn4EJvCIvEa28UY6/PgZtyO1aRv9SXJmk3X9p4etO2MpWJUL6KLd6ZAIXuKn+qmejnrg3NiWpewvGqLOuz6x0PjA21AQlc/Gf+bVkRZfH8so/om6dv0w6KwDMuwZoXtVToM81Z1gNLdfVNBskOj7c1sEpNWOUOn6qY5DAgMBAAECgYEApJdEz+HOTcL/+g+fCpF18AI2qXsZ2L7Tpp4dbvCxwbMSqdwFPpL0vxKqjxXVwojY58/dDZHzE4w2QGdH32ZnjJKIfE5Li9xjPyS9V6fHe2Lttocns1QaFhMLzHA9tgnC+HK5bP9bAyd4SCsXkUIQDMf824ytkAPgxooYp0lF+aECQQDr+r7Gfjf/FjelxndTyxCaFXSO/DbTPeabzw2RXx/SARqlttABMi45R/JxIpny/5OVlgu4NbmApfRxTv2qaAJ1AkEAvjne/XOR7ojwO9DomTIaHyWQ2NotMltnQXjHo5+PlxS+s8elpiR6bIagv8OCvbXObRqkwm3Eu5LWFOd7vqXG1wJAU47YGqT64wJU9ghOnIcc+9J5EWBRcX9LtwQcA8uxEsV9UAxpnuLL51CIknL0HE1PTvpwb+vmIZ2h7rVPsRVfOQJBAJeXwMfUSNCCGohgpGwpTD3UDwlxXSFLTA8V9GrFpoVsx8i3ap/rZBCGfSY05UTP1NCHshMrrOMaUjbYfnng3IMCQApnWtHEMlDH/PVr4Ig0Jvf6NZ2VUSzM1lgcbE6L2M8w3hNZKYtM8oC0/PEGfh53KG7E+HpQa1m/flimvSNIFGs=";

+    private final String pubkeystring="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvWXH43qZ+BCbwiLxGtvFGOvz4GbcjtWkb/UlyZpN1/aeHrTtjKViVC+ii3emQCF7ip/qpno564NzYlqXsLxqizrs+sdD4wNtQEJXPxn/m1ZEWXx/LKP6Junb9MOisAzLsGaF7VU6DPNWdYDS3X1TQbJDo+3NbBKTVjlDp+qmOQwIDAQAB";

     @RequestMapping("/appindex")

     public String impdevindex(@RequestParam(value = "userid") String userId, Model model) {

         model.addAttribute("userId", userId);

@@ -143,6 +146,7 @@
         //qrcode="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+"&redirect_uri="+redirect+"%2fapp%2fqrcodevisitor%3finoutflag%3d"+inoutflag+"&response_type=code&scope=snsapi_userinfo&state=&connect_redirect=1#wechat_redirect";

         qrcode = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&redirect_uri=" + redirect + "%2fapp%2fqrcodevisitor%3finoutflag%3d" + inoutflag + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";

         model.addAttribute("qrcode", qrcode);

+        model.addAttribute("inoutflag", inoutflag);

         return "apph5/visitorcode";

     }

 

@@ -196,7 +200,7 @@
     }

 

     @ResponseBody

-    @RequestMapping(value = "/apply", method = {RequestMethod.POST})

+    @RequestMapping(value = "/apply/apply", method = {RequestMethod.POST})

     public Map applyforvisitor(@RequestBody VisitorCheckBean postData) {

         Map map = new HashMap();

 

@@ -215,23 +219,52 @@
             eVisitorCheckDtl.setIdno(postData.getIdno());

             eVisitorCheckDtl.setSex(postData.getSex());

             eVisitorCheckDtl.setTranstime(time.substring(8));

+            String s = StringUtil.getRandomString(18);

+            s+=time;

+            eVisitorCheckDtl.setSign(s);

+            eVisitorCheckDtl.setTotalcount(3);

+            eVisitorCheckDtl.setUsecount(0);

+            eVisitorCheckDtl.setQrcodetime(time);

+            eVisitorCheckDtl.setIsqrcode("1");

+            String sign="SIGNFORVISITOR"+s;

+            eVisitorCheckDtl.setQrcode(sign);

 

             boolean b = visitormanageService.saveVisitorCheck(eVisitorCheckDtl);

+

+

             if(b){

-                map.put("errStr", "");

+                EVisitorCheckDtl checkBySign = visitormanageService.getVisitorCheckBySign(sign);

+                int id = checkBySign.getId();

+                map.put("retcode", "0");

+                map.put("retmsg", "保存成功");

+                map.put("visitorid", id);

             }else {

-                map.put("errStr", "保存失败");

+                map.put("retcode", "99");

+                map.put("retmsg", "保存失败");

 

             }

         }catch (Exception e){

             e.printStackTrace();

-            map.put("errStr", "保存失败!");

+            map.put("retcode", "99");

+            map.put("retmsg", "系统错误!");

         }

 

         return map;

     }

 

-

+    @RequestMapping("/getapplyqrcode")

+    public String getapplycode(@RequestParam(value = "visitorid") int visitorid, Model model) {

+        String qrcode = "";

+        EVisitorCheckDtl visitorCheckById = visitormanageService.getVisitorCheckById(visitorid);

+        if(visitorCheckById!=null){

+            qrcode = visitorCheckById.getQrcode();

+        }

+        //qrcode="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+"&redirect_uri="+redirect+"%2fapp%2fqrcodevisitor%3finoutflag%3d"+inoutflag+"&response_type=code&scope=snsapi_userinfo&state=&connect_redirect=1#wechat_redirect";

+        //qrcode = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&redirect_uri=" + redirect + "%2fapp%2fqrcodevisitor%3finoutflag%3d" + inoutflag + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";

+        model.addAttribute("qrcode", qrcode);

+        model.addAttribute("isapply", 1);

+        return "apph5/visitorcode";

+    }

     //根据设备名称模糊查询

     @ResponseBody

     @RequestMapping("/searchByDevName")

diff --git a/src/main/java/com/supwisdom/dlpay/app/dao/AppDao.java b/src/main/java/com/supwisdom/dlpay/app/dao/AppDao.java
index b82a5ef..a33d3c1 100644
--- a/src/main/java/com/supwisdom/dlpay/app/dao/AppDao.java
+++ b/src/main/java/com/supwisdom/dlpay/app/dao/AppDao.java
@@ -1,10 +1,10 @@
 package com.supwisdom.dlpay.app.dao;

 

 

-import com.supwisdom.dlpay.app.domain.EVisitorDtl;

 import com.supwisdom.dlpay.app.domain.EWechatAccount;

 import com.supwisdom.dlpay.app.domain.TAppDevFre;

 import com.supwisdom.dlpay.ncmgr.domain.TNcDevice;

+import com.supwisdom.dlpay.visitormanage.domain.EVisitorDtl;

 

 import java.util.List;

 

diff --git a/src/main/java/com/supwisdom/dlpay/app/dao/impl/AppDaoImpl.java b/src/main/java/com/supwisdom/dlpay/app/dao/impl/AppDaoImpl.java
index ea928cd..201e8f0 100644
--- a/src/main/java/com/supwisdom/dlpay/app/dao/impl/AppDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/app/dao/impl/AppDaoImpl.java
@@ -1,11 +1,10 @@
 package com.supwisdom.dlpay.app.dao.impl;

 

 import com.supwisdom.dlpay.app.dao.AppDao;

-import com.supwisdom.dlpay.app.domain.EVisitorDtl;

 import com.supwisdom.dlpay.app.domain.EWechatAccount;

 import com.supwisdom.dlpay.app.domain.TAppDevFre;

-import com.supwisdom.dlpay.ncmgr.domain.TBuilding;

 import com.supwisdom.dlpay.ncmgr.domain.TNcDevice;

+import com.supwisdom.dlpay.visitormanage.domain.EVisitorDtl;

 import org.springframework.stereotype.Repository;

 import org.springframework.transaction.annotation.Transactional;

 

diff --git a/src/main/java/com/supwisdom/dlpay/app/domain/EVisitorDtl.java b/src/main/java/com/supwisdom/dlpay/app/domain/EVisitorDtl.java
deleted file mode 100644
index c805a9b..0000000
--- a/src/main/java/com/supwisdom/dlpay/app/domain/EVisitorDtl.java
+++ /dev/null
@@ -1,162 +0,0 @@
-package com.supwisdom.dlpay.app.domain;
-
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-
-/**
- * Created by shuwei on 17/6/12.
- */
-@Entity
-@Table(name = "E_VISITOR_DTL")
-public class EVisitorDtl {
-
-    private int id;
-    private String openid;
-    
-    private Integer status;
-    private String binddate;
-    private String nickname;
-    private String sex;
-    private String province;
-    private String city;
-    private String country;
-    private String headimgurl;
-    private String privilege;
-    private String unionid;
-    private Integer inoutflag;
-    private String transdate;
-    private String transtime;
-
-
-
-    @Id
-    @Column(name = "ID", unique = true,  nullable = false, length = 32)
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    public int getId() {
-        return id;
-    }
-
-    public void setId(int id) {
-        this.id = id;
-    }
-
-
-
-
-    @Column(name = "OPENID",length = 128)
-    public String getOpenid() {
-        return openid;
-    }
-
-    public void setOpenid(String openid) {
-        this.openid = openid;
-    }
-
-    @Column(name = "STATUS", length = 1)
-    public Integer getStatus() {
-        return status;
-    }
-
-    public void setStatus(Integer status) {
-        this.status = status;
-    }
-    @Column(name = "BINDDATE", length = 14)
-    public String getBinddate() {
-        return binddate;
-    }
-
-    public void setBinddate(String binddate) {
-        this.binddate = binddate;
-    }
-    @Column(name = "NICKNAME", length = 100)
-    public String getNickname() {
-        return nickname;
-    }
-
-    public void setNickname(String nickname) {
-        this.nickname = nickname;
-    }
-    @Column(name = "SEX", length = 1)
-    public String getSex() {
-        return sex;
-    }
-
-    public void setSex(String sex) {
-        this.sex = sex;
-    }
-    @Column(name = "PROVINCE", length = 60)
-    public String getProvince() {
-        return province;
-    }
-
-    public void setProvince(String province) {
-        this.province = province;
-    }
-    @Column(name = "CITY", length = 60)
-    public String getCity() {
-        return city;
-    }
-
-    public void setCity(String city) {
-        this.city = city;
-    }
-    @Column(name = "COUNTRY", length = 60)
-    public String getCountry() {
-        return country;
-    }
-
-    public void setCountry(String country) {
-        this.country = country;
-    }
-    @Column(name = "HEADIMGURL", length = 200)
-    public String getHeadimgurl() {
-        return headimgurl;
-    }
-
-    public void setHeadimgurl(String headimgurl) {
-        this.headimgurl = headimgurl;
-    }
-    @Column(name = "PRIVILEGE", length = 40)
-    public String getPrivilege() {
-        return privilege;
-    }
-
-    public void setPrivilege(String privilege) {
-        this.privilege = privilege;
-    }
-    @Column(name = "UNIONID", length = 128)
-    public String getUnionid() {
-        return unionid;
-    }
-
-    public void setUnionid(String unionid) {
-        this.unionid = unionid;
-    }
-    @Column(name = "INOUTFLAG", length = 1)
-    public Integer getInoutflag() {
-        return inoutflag;
-    }
-
-    public void setInoutflag(Integer inoutflag) {
-        this.inoutflag = inoutflag;
-    }
-    @Column(name = "TRANSDATE", length = 8)
-
-    public String getTransdate() {
-        return transdate;
-    }
-
-    public void setTransdate(String transdate) {
-        this.transdate = transdate;
-    }
-    @Column(name = "TRANSTIME", length = 6)
-
-    public String getTranstime() {
-        return transtime;
-    }
-
-    public void setTranstime(String transtime) {
-        this.transtime = transtime;
-    }
-}
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 1cc093b..e5f7348 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
@@ -22,6 +22,7 @@
 import com.supwisdom.dlpay.ncmgr.dao.NcDeviceDao;

 import com.supwisdom.dlpay.ncmgr.domain.TNcDevice;

 import com.supwisdom.dlpay.util.RedisUtil;

+import com.supwisdom.dlpay.visitormanage.domain.EVisitorDtl;

 import org.apache.commons.codec.binary.Base64;

 import org.apache.http.HttpStatus;

 import org.slf4j.Logger;

diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java b/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java
index 365e5ce..261d6d3 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java
@@ -202,4 +202,22 @@
     return res;
   }
 
+
+  /**
+   * 获取指定长度随字符串
+   *
+   * @param length
+   * @return
+   */
+  public static String getRandomString(int length) {
+    String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+    Random random = new Random();
+    StringBuffer sb = new StringBuffer();
+    for (int i = 0; i < length; i++) {
+      int number = random.nextInt(62);
+      sb.append(str.charAt(number));
+    }
+    return sb.toString();
+  }
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/dao/VisitorDao.java b/src/main/java/com/supwisdom/dlpay/visitormanage/dao/VisitorDao.java
index 7e6f387..f506fe9 100644
--- a/src/main/java/com/supwisdom/dlpay/visitormanage/dao/VisitorDao.java
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/dao/VisitorDao.java
@@ -19,4 +19,6 @@
     public PageResult<EVisitorDtl> getVisitorInfoPage(VisitorSearchBean param);
     public PageResult<VisitorShowBean> getCheckInfoPage(VisitorCheckSearchBean param);
     public boolean saveVisitorCheck(EVisitorCheckDtl bean);
+    public EVisitorCheckDtl getVisitorCheckById(int id);
+    public EVisitorCheckDtl getVisitorCheckBySign(String sign);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/dao/impl/VisitorDaoImpl.java b/src/main/java/com/supwisdom/dlpay/visitormanage/dao/impl/VisitorDaoImpl.java
index 421d5c7..ad5b2dd 100644
--- a/src/main/java/com/supwisdom/dlpay/visitormanage/dao/impl/VisitorDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/dao/impl/VisitorDaoImpl.java
@@ -28,7 +28,6 @@
     EntityManager entityManager;
 
 
-
     @Transactional
     @Override
     public PageResult<EVisitorDtl> getVisitorInfoPage(VisitorSearchBean param) {
@@ -42,34 +41,40 @@
         String countSql = "select count(*) as cnt from E_VISITOR_DTL a  " +
                 " where a.status='1' ";
 
-        if (!StringUtil.isEmpty(nickname)){
+        if (!StringUtil.isEmpty(nickname)) {
             sql += " and a.nickname like :nickname ";
             countSql += " and a.nickname like :nickname ";
-        }if (!StringUtil.isEmpty(inoutflag)){
+        }
+        if (!StringUtil.isEmpty(inoutflag)) {
             sql += " and a.inoutflag = :inoutflag ";
             countSql += " and a.inoutflag = :inoutflag ";
-        }if (!StringUtil.isEmpty(startdate)){
+        }
+        if (!StringUtil.isEmpty(startdate)) {
             sql += " and a.transdate >= :startdate ";
             countSql += " and a.transdate >= :startdate ";
-        }if (!StringUtil.isEmpty(enddate)){
+        }
+        if (!StringUtil.isEmpty(enddate)) {
             sql += " and a.transdate <= :enddate ";
             countSql += " and a.transdate <= :enddate ";
         }
-        sql +=" order by a.transtime desc ";
+        sql += " order by a.transtime desc ";
 
 
         Query query = entityManager.createNativeQuery(sql);
         Query countQuery = entityManager.createNativeQuery(countSql);
-        if (!StringUtil.isEmpty(nickname)){
-            query.setParameter("nickname", "%"+nickname+"%");
-            countQuery.setParameter("nickname", "%"+nickname+"%");
-        }if (!StringUtil.isEmpty(inoutflag)){
+        if (!StringUtil.isEmpty(nickname)) {
+            query.setParameter("nickname", "%" + nickname + "%");
+            countQuery.setParameter("nickname", "%" + nickname + "%");
+        }
+        if (!StringUtil.isEmpty(inoutflag)) {
             query.setParameter("inoutflag", Integer.parseInt(inoutflag));
             countQuery.setParameter("inoutflag", Integer.parseInt(inoutflag));
-        }if (!StringUtil.isEmpty(startdate)){
+        }
+        if (!StringUtil.isEmpty(startdate)) {
             query.setParameter("startdate", startdate);
             countQuery.setParameter("startdate", startdate);
-        }if (!StringUtil.isEmpty(enddate)){
+        }
+        if (!StringUtil.isEmpty(enddate)) {
             query.setParameter("enddate", enddate);
             countQuery.setParameter("enddate", enddate);
         }
@@ -81,6 +86,7 @@
         BigInteger count = (BigInteger) countQuery.getSingleResult();
         return new PageResult<>(count.longValue(), list);
     }
+
     @Transactional
     @Override
     public PageResult<VisitorShowBean> getCheckInfoPage(VisitorCheckSearchBean param) {
@@ -94,34 +100,40 @@
         String countSql = "select count(*) as cnt  from E_VISITOR_CHECK_DTL a left join t_customer b on a.custid=b.custid left join tb_dept c on c.deptcode=a.deptcode  " +
                 " where a.status='1' ";
 
-        if (!StringUtil.isEmpty(visitorname)){
+        if (!StringUtil.isEmpty(visitorname)) {
             sql += " and a.visitorname like :visitorname ";
             countSql += " and a.visitorname like :visitorname ";
-        }if (!StringUtil.isEmpty(sex)){
+        }
+        if (!StringUtil.isEmpty(sex)) {
             sql += " and a.sex = :sex ";
             countSql += " and a.sex = :sex ";
-        }if (!StringUtil.isEmpty(startdate)){
+        }
+        if (!StringUtil.isEmpty(startdate)) {
             sql += " and a.transdate >= :startdate ";
             countSql += " and a.transdate >= :startdate ";
-        }if (!StringUtil.isEmpty(enddate)){
+        }
+        if (!StringUtil.isEmpty(enddate)) {
             sql += " and a.transdate <= :enddate ";
             countSql += " and a.transdate <= :enddate ";
         }
-        sql +=" order by a.transtime desc ";
+        sql += " order by a.transtime desc ";
 
 
         Query query = entityManager.createNativeQuery(sql);
         Query countQuery = entityManager.createNativeQuery(countSql);
-        if (!StringUtil.isEmpty(visitorname)){
-            query.setParameter("visitorname", "%"+visitorname+"%");
-            countQuery.setParameter("visitorname", "%"+visitorname+"%");
-        }if (!StringUtil.isEmpty(sex)){
+        if (!StringUtil.isEmpty(visitorname)) {
+            query.setParameter("visitorname", "%" + visitorname + "%");
+            countQuery.setParameter("visitorname", "%" + visitorname + "%");
+        }
+        if (!StringUtil.isEmpty(sex)) {
             query.setParameter("sex", sex);
             countQuery.setParameter("sex", sex);
-        }if (!StringUtil.isEmpty(startdate)){
+        }
+        if (!StringUtil.isEmpty(startdate)) {
             query.setParameter("startdate", startdate);
             countQuery.setParameter("startdate", startdate);
-        }if (!StringUtil.isEmpty(enddate)){
+        }
+        if (!StringUtil.isEmpty(enddate)) {
             query.setParameter("enddate", enddate);
             countQuery.setParameter("enddate", enddate);
         }
@@ -133,17 +145,47 @@
         BigInteger count = (BigInteger) countQuery.getSingleResult();
         return new PageResult<>(count.longValue(), list);
     }
+
     @Transactional
     @Override
     public boolean saveVisitorCheck(EVisitorCheckDtl bean) {
-        boolean flag=false;
+        boolean flag = false;
         try {
             entityManager.persist(bean);
-            flag=true;
-        }catch (Exception e){
+            flag = true;
+        } catch (Exception e) {
             e.printStackTrace();
         }
         return flag;
     }
 
+    @Transactional
+    @Override
+    public EVisitorCheckDtl getVisitorCheckById(int id) {
+
+        String sql = "select a.* from E_VISITOR_CHECK_DTL a  " +
+                " where a.id = ? and a.status = 1 ";
+        Query query = entityManager.createNativeQuery(sql, EVisitorCheckDtl.class);
+        query.setParameter(1, id);
+        List<EVisitorCheckDtl> list = query.getResultList();
+        if (list != null && list.size() > 0) {
+            return list.get(0);
+        }
+        return null;
+    }
+    @Transactional
+    @Override
+    public EVisitorCheckDtl getVisitorCheckBySign(String sign) {
+
+        String sql = "select a.* from E_VISITOR_CHECK_DTL a  " +
+                " where a.sign = ? and a.status = 1 ";
+        Query query = entityManager.createNativeQuery(sql, EVisitorCheckDtl.class);
+        query.setParameter(1, sign);
+        List<EVisitorCheckDtl> list = query.getResultList();
+        if (list != null && list.size() > 0) {
+            return list.get(0);
+        }
+        return null;
+    }
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/domain/EVisitorCheckDtl.java b/src/main/java/com/supwisdom/dlpay/visitormanage/domain/EVisitorCheckDtl.java
index 3125c7a..3f047d4 100644
--- a/src/main/java/com/supwisdom/dlpay/visitormanage/domain/EVisitorCheckDtl.java
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/domain/EVisitorCheckDtl.java
@@ -43,6 +43,8 @@
 
     private String qrcode;
 
+    private String sign;
+
 
 
 
@@ -190,11 +192,6 @@
     }
 
 
-
-
-
-
-
     @Column(name = "QRCODE", length = 255)
 
     public String getQrcode() {
@@ -213,4 +210,12 @@
     public void setUsecount(Integer usecount) {
         this.usecount = usecount;
     }
+    @Column(name = "SIGN", length = 32)
+    public String getSign() {
+        return sign;
+    }
+
+    public void setSign(String sign) {
+        this.sign = sign;
+    }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/service/VisitormanageService.java b/src/main/java/com/supwisdom/dlpay/visitormanage/service/VisitormanageService.java
index 0527279..793d5ba 100644
--- a/src/main/java/com/supwisdom/dlpay/visitormanage/service/VisitormanageService.java
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/service/VisitormanageService.java
@@ -27,4 +27,9 @@
     PageResult<VisitorShowBean> getCheckInfoPage(VisitorCheckSearchBean bean);
     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
     public boolean saveVisitorCheck(EVisitorCheckDtl bean);
+    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
+    public EVisitorCheckDtl getVisitorCheckById(int id);
+    public EVisitorCheckDtl getVisitorCheckBySign(String sign);
+
+
     }
diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/service/impl/VisitormanageServiceImpl.java b/src/main/java/com/supwisdom/dlpay/visitormanage/service/impl/VisitormanageServiceImpl.java
index 5e77a73..4374629 100644
--- a/src/main/java/com/supwisdom/dlpay/visitormanage/service/impl/VisitormanageServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/service/impl/VisitormanageServiceImpl.java
@@ -53,4 +53,13 @@
     public boolean saveVisitorCheck(EVisitorCheckDtl bean) {
         return visitorDao.saveVisitorCheck(bean);
     }
+
+    @Override
+    public EVisitorCheckDtl getVisitorCheckById(int id) {
+        return visitorDao.getVisitorCheckById(id);
+    }
+    @Override
+    public EVisitorCheckDtl getVisitorCheckBySign(String sign) {
+        return visitorDao.getVisitorCheckBySign(sign);
+    }
 }
diff --git a/src/main/kotlin/com/supwisdom/dlpay/security.kt b/src/main/kotlin/com/supwisdom/dlpay/security.kt
index 65bcb2c..dadfafe 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/security.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/security.kt
@@ -124,6 +124,7 @@
                         .authorizeRequests()
                         .antMatchers("/api/auth/**").permitAll()
                         .antMatchers("/api/doorapi/**").permitAll()
+                        .antMatchers("/app/apply/**").permitAll()
                         .antMatchers("/api/conference/**").permitAll()
                         .antMatchers("/api/notify/**").permitAll()
                         .antMatchers("/api/common/**").hasAnyRole("THIRD_COMMON", "THIRD_ADMIN")
diff --git a/src/main/resources/templates/apph5/applyforvisitor.html b/src/main/resources/templates/apph5/applyforvisitor.html
index aba7390..c3715aa 100644
--- a/src/main/resources/templates/apph5/applyforvisitor.html
+++ b/src/main/resources/templates/apph5/applyforvisitor.html
@@ -206,20 +206,23 @@
     }
 
     function saveTempCustomer(_that, formdata, formName) {
+        var token = $("meta[name='_csrf_token']").attr("value");
         $.ajax({
             type: "post",
-            url: encodeURI("[[@{/app/apply}]]"),
+            url: encodeURI("[[@{/app/apply/apply}]]"),
             dataType: "json",
             contentType: "application/json",
             headers: {
                 'Accept': 'application/json',
-                'Content-Type': 'application/json'
+                'Content-Type': 'application/json',
+                'X-CSRF-TOKEN': token,
             },
             data: JSON.stringify(formdata),
             success: function (data) {
 
-                if (data.errcode != "0") {
-                    layer.msg(data.errStr, {icon: 2, time: 2000});
+                if (data.retcode != "0") {
+                    layer.msg(data.retmsg, {icon: 2, time: 2000});
+                    window.location = "[[@{/app/getapplyqrcode?visitorid=}]]"+data.visitorid;
                 } else {
                     layer.msg('登记成功!', {icon: 1, time: 1000});
                 }
diff --git a/src/main/resources/templates/apph5/visitorcode.html b/src/main/resources/templates/apph5/visitorcode.html
index 60edccd..5b84262 100644
--- a/src/main/resources/templates/apph5/visitorcode.html
+++ b/src/main/resources/templates/apph5/visitorcode.html
@@ -48,12 +48,21 @@
             });
         }
         var inoutflag = $("#inoutflag").val();
+        var isapply = $("#isapply").val();
 
         if (inoutflag == 1) {
             $("#title").text("进门登记码")
-        } else {
-            $("#title").text("出门登记码")
+        } else if(inoutflag == 2){
 
+                $("#title").text("出门登记码")
+
+        }else {
+            if(isapply==1){
+                $("#title").text("访客申请码")
+            }else {
+                $("#title").text("访客申请码")
+
+            }
         }
 
     });
@@ -74,6 +83,7 @@
 <div style="text-align: center;padding: 30px;">
     <input type="hidden" id="myText" th:value="${qrcode}"/>
     <input type="hidden" id="inoutflag" th:value="${inoutflag}"/>
+    <input type="hidden" id="isapply" th:value="${isapply}"/>
 </div>
 <div id="qrcode" class="qrcode-cc" ></div>
 <p style="text-align: center;margin-top:40px;color:#999;font-size: 14px">请将二维码对准扫描设备完成登记(如您使用扫一扫功能,请重新扫码)</p>