大理访客登记微信扫码及管理端界面
diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index d17198f..efb17aa 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -36,3 +36,7 @@
#apiLogin.refresh.cron=0 0/20 * * * ?
conference.updatestatus.cron=0 0/1 * * * ?
conference.uploaddtl.cron=5/10 * * * * ?
+
+visitor.appid=wx063b94046a147a77
+visitor.secret=702d663e7685d0adc0a83673701c8878
+
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 64b952a..e02521b 100644
--- a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
+++ b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
@@ -1,10 +1,15 @@
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;
+import com.supwisdom.dlpay.framework.util.DateUtil;
import com.supwisdom.dlpay.framework.util.StringUtil;
import com.supwisdom.dlpay.ncmgr.domain.TNcDevice;
import com.supwisdom.dlpay.ncmgr.service.NcService;
import com.supwisdom.dlpay.util.RedisUtil;
+import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -14,10 +19,15 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import static jxl.biff.FormatRecord.logger;
+
@Controller
@RequestMapping("/app")
public class AppController {
@@ -27,13 +37,87 @@
private AppService appService;
@Autowired
private NcService ncService;
-
+ @Autowired
+ private VisitorConfig visitorConfig;
+ private String wechatURL, redirect, appid, appsecret;
@RequestMapping("/appindex")
public String impdevindex(@RequestParam(value = "userid")String userId,Model model){
model.addAttribute("userId", userId);
return "apph5/remoteH5";
}
+ @RequestMapping("/qrcodevisitor")
+ public String qrcodevisitor(@RequestParam(value = "inoutflag")String inoutflag,HttpServletRequest request, HttpServletResponse response,Model model){
+ String code = request.getParameter("code");
+ String state = request.getParameter("state");
+ getWechatConfig();
+ if (StringUtils.isEmpty(redirect)) {
+ //redirect = mainService.getPropValueByKey(WXAPIContants.WECHAT_MP_REDIRECT);
+ }
+ HttpSession session = request.getSession();
+ boolean needinfor = false;
+ if (!StringUtils.isEmpty(state) && state.contains("login")) {
+ needinfor = true;
+ }
+ int issuccess=0;
+ WechatResp resp = appService.doWechatAuth(appid, appsecret, code, needinfor);
+ if (resp != null) {
+ logger.error("openid=" + resp.getOpenid());
+ if(resp.getOpenid()!=null){
+ issuccess=1;
+ }
+ session.setAttribute("wx_openid", resp.getOpenid());
+ if (!StringUtils.isEmpty(resp.getWxid())) {
+ session.setAttribute("wx_id", resp.getWxid());
+ }
+ }
+ session.setAttribute("openmsg",resp);
+ session.setAttribute("inoutflag",inoutflag);
+ model.addAttribute("issuccess", issuccess);
+ return "apph5/appvisitor";
+ }
+ @RequestMapping("/qrcodemanage")
+ public String qrcodemanage(Model model){
+ String qrcode="";
+ String appid = visitorConfig.getAppid();
+ qrcode="1";
+ model.addAttribute("qrcode", qrcode);
+ return "apph5/getinoutflag";
+ }
+ @RequestMapping("/getqrcode")
+ public String getcode(@RequestParam(value = "inoutflag")String inoutflag,Model model){
+ String qrcode="";
+ String appid = visitorConfig.getAppid();
+ qrcode="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+"&redirect_uri=192.168.1.117%2Fdoor%2Fapp%2Fqrcodevisitor%3finoutflag%3d"+inoutflag+"&response_type=code&scope=snsapi_userinfo&state=&connect_redirect=1#wechat_redirect";
+ model.addAttribute("qrcode", qrcode);
+ return "apph5/visitorcode";
+ }
+ @ResponseBody
+ @RequestMapping("/getvistor")
+ public Map getvistorin(HttpServletRequest request, Model model){
+ HttpSession session = request.getSession();
+ WechatResp openmsg = (WechatResp) session.getAttribute("openmsg");
+ int inoutflag = (int) session.getAttribute("inoutflag");
+ //WechatResp openmsg = new WechatResp();
+ //openmsg.setCity("上海");
+ boolean b = appService.saveOpenmsg(openmsg, inoutflag);
+ Map map=new HashMap();
+ if(b){
+ map.put("retcode",0);
+ map.put("retmsg","成功");
+ }else {
+ map.put("retcode",99);
+ map.put("retmsg","失败");
+ }
+ return map;
+ }
+
+
+ private void getWechatConfig() {
+ //Map<String, String> map = payMethodService.getPaymethodConfigMap("wechat_ykt");
+ appid = visitorConfig.getAppid();
+ appsecret = visitorConfig.getSecret();
+ }
@RequestMapping("/appMintUIindex")
public String appMintUIindex(@RequestParam(value = "userid")String userId,Model model){
model.addAttribute("userId", userId);
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 7d028e7..b82a5ef 100644
--- a/src/main/java/com/supwisdom/dlpay/app/dao/AppDao.java
+++ b/src/main/java/com/supwisdom/dlpay/app/dao/AppDao.java
@@ -1,6 +1,8 @@
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;
@@ -22,4 +24,13 @@
//保存AppDevFre对象
public boolean saveAppDevFre(TAppDevFre bean);
+
+
+
+ public boolean saveAccount(EWechatAccount bean);
+ public boolean saveVisitor(EVisitorDtl bean);
+ public boolean updateAccount(EWechatAccount bean);
+
+
+ public List<EWechatAccount> getAccountByOpenid(String openid);
}
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 307723a..42ac336 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,7 +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 org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@@ -103,4 +106,53 @@
}
return flag;
}
+ @Transactional
+ @Override
+ public boolean saveAccount(EWechatAccount bean) {
+ boolean flag=false;
+ try {
+ entityManager.persist(bean);
+ flag=true;
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return flag;
+ }
+ @Transactional
+ @Override
+ public boolean saveVisitor(EVisitorDtl bean) {
+
+ boolean flag=false;
+ try {
+ entityManager.persist(bean);
+ flag=true;
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return flag;
+ }
+ @Transactional
+ @Override
+ public boolean updateAccount(EWechatAccount bean) {
+ boolean flag = false;
+ try {
+ entityManager.merge(bean);
+ flag = true;
+ } catch (Exception e) {
+ throw e;
+ }
+ return flag;
+ }
+ @Transactional
+ @Override
+ public List<EWechatAccount> getAccountByOpenid(String openid) {
+ String sql = "select a.* from EWechatAccount a where a.openid =? and a.status='1'";
+ Query query = entityManager.createNativeQuery(sql, EWechatAccount.class);
+ query.setParameter(1, openid);
+ List<EWechatAccount> list = query.getResultList();
+ if (list!=null && list.size()>0){
+ return list;
+ }
+ return null;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/app/domain/EVisitorDtl.java b/src/main/java/com/supwisdom/dlpay/app/domain/EVisitorDtl.java
new file mode 100644
index 0000000..c805a9b
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/app/domain/EVisitorDtl.java
@@ -0,0 +1,162 @@
+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/domain/EWechatAccount.java b/src/main/java/com/supwisdom/dlpay/app/domain/EWechatAccount.java
new file mode 100644
index 0000000..eb1947b
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/app/domain/EWechatAccount.java
@@ -0,0 +1,161 @@
+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_WECHAT_ACCOUNT")
+public class EWechatAccount {
+
+ private String wxid;
+ private String userid;
+ private Double appkey;
+ private String openid;
+ private String stuempno;
+ private String 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 String cardcode;
+
+ @Id
+ @Column(name = "WXID", unique = true, nullable = false, length = 32)
+ public String getWxid() {
+ return wxid;
+ }
+
+ public void setWxid(String wxid) {
+ this.wxid = wxid;
+ }
+ @Column(name = "USERID", length = 32)
+ public String getUserid() {
+ return userid;
+ }
+
+ public void setUserid(String userid) {
+ this.userid = userid;
+ }
+ @Column(name = "APPKEY", length = 32)
+ public Double getAppkey() {
+ return appkey;
+ }
+
+ public void setAppkey(Double appkey) {
+ this.appkey = appkey;
+ }
+ @Column(name = "OPENID",length = 128)
+ public String getOpenid() {
+ return openid;
+ }
+
+ public void setOpenid(String openid) {
+ this.openid = openid;
+ }
+ @Column(name = "STUEMPNO", length = 40)
+ public String getStuempno() {
+ return stuempno;
+ }
+
+ public void setStuempno(String stuempno) {
+ this.stuempno = stuempno;
+ }
+ @Column(name = "STATUS", length = 1)
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String 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 = "CARDCODE", length = 40)
+ public String getCardcode() {
+ return cardcode;
+ }
+
+ public void setCardcode(String cardcode) {
+ this.cardcode = cardcode;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/app/domain/EWechatConfig.java b/src/main/java/com/supwisdom/dlpay/app/domain/EWechatConfig.java
new file mode 100644
index 0000000..bb1262f
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/app/domain/EWechatConfig.java
@@ -0,0 +1,106 @@
+package com.supwisdom.dlpay.app.domain;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+/**
+ * Created by shuwei on 17/8/9.
+ */
+@Entity
+@Table(name = "E_WECHAT_CONFIG")
+public class EWechatConfig {
+ private String id;
+ private String appid;
+ private String secret;
+ private String shopid;
+ private String shopkey;
+ private String cardid;
+ private String accesstoken;
+ private String refreshtoken;
+ private Long tokentime;
+ private String domain;
+
+ @Id
+ @Column(name = "ID", unique = true, nullable = false, length = 40)
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+ @Column(name = "APPID", length = 40)
+ public String getAppid() {
+ return appid;
+ }
+
+ public void setAppid(String appid) {
+ this.appid = appid;
+ }
+ @Column(name = "SECRET", length = 200)
+ public String getSecret() {
+ return secret;
+ }
+
+ public void setSecret(String secret) {
+ this.secret = secret;
+ }
+ @Column(name = "SHOPID", length = 32)
+ public String getShopid() {
+ return shopid;
+ }
+
+ public void setShopid(String shopid) {
+ this.shopid = shopid;
+ }
+ @Column(name = "SHOPKEY", length = 200)
+ public String getShopkey() {
+ return shopkey;
+ }
+
+ public void setShopkey(String shopkey) {
+ this.shopkey = shopkey;
+ }
+ @Column(name = "CARDID", length = 40)
+ public String getCardid() {
+ return cardid;
+ }
+
+ public void setCardid(String cardid) {
+ this.cardid = cardid;
+ }
+ @Column(name = "ACCESSTOKEN", length = 200)
+ public String getAccesstoken() {
+ return accesstoken;
+ }
+
+ public void setAccesstoken(String accesstoken) {
+ this.accesstoken = accesstoken;
+ }
+ @Column(name = "REFRESHTOKEN", length = 200)
+ public String getRefreshtoken() {
+ return refreshtoken;
+ }
+
+ public void setRefreshtoken(String refreshtoken) {
+ this.refreshtoken = refreshtoken;
+ }
+ @Column(name = "TOKENTIME", precision = 15,scale = 0)
+ public Long getTokentime() {
+ return tokentime;
+ }
+
+ public void setTokentime(Long tokentime) {
+ this.tokentime = tokentime;
+ }
+ @Column(name = "DOMAIN", length = 200)
+ public String getDomain() {
+ return domain;
+ }
+
+ public void setDomain(String domain) {
+ this.domain = domain;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/app/domain/VisitorConfig.java b/src/main/java/com/supwisdom/dlpay/app/domain/VisitorConfig.java
new file mode 100644
index 0000000..46ea6f1
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/app/domain/VisitorConfig.java
@@ -0,0 +1,20 @@
+package com.supwisdom.dlpay.app.domain;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class VisitorConfig {
+ @Value("${visitor.appid}")
+ private String appid;
+ @Value("${visitor.secret}")
+ private String secret;
+
+ public String getAppid() {
+ return appid;
+ }
+
+ public String getSecret() {
+ return secret;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/app/domain/WechatResp.java b/src/main/java/com/supwisdom/dlpay/app/domain/WechatResp.java
new file mode 100644
index 0000000..b592cef
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/app/domain/WechatResp.java
@@ -0,0 +1,200 @@
+package com.supwisdom.dlpay.app.domain;
+
+/**
+ * Created by shuwei on 17/6/12.
+ */
+public class WechatResp {
+ private String wxid;
+ //req
+ private String appid;
+ private String secret;
+ private String code;
+ private String grant_type;
+ //resp
+ private String access_token;
+ private Integer expires_in;
+ private String refresh_token;
+ private String openid;
+ private String scope;
+ private Integer errcode;
+ private String errmsg;
+
+ private String nickname;
+ private String sex;
+ private String province;
+ private String city;
+ private String country;
+ private String headimgurl;
+ private String unionid;
+
+ private String jsondata;
+ private String return_code;
+ private String return_msg;
+ private String err_code;
+
+
+
+ public String getAppid() {
+ return appid;
+ }
+
+ public void setAppid(String appid) {
+ this.appid = appid;
+ }
+
+ public String getSecret() {
+ return secret;
+ }
+
+ public void setSecret(String secret) {
+ this.secret = secret;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getGrant_type() {
+ return grant_type;
+ }
+
+ public void setGrant_type(String grant_type) {
+ this.grant_type = grant_type;
+ }
+
+ public String getAccess_token() {
+ return access_token;
+ }
+
+ public void setAccess_token(String access_token) {
+ this.access_token = access_token;
+ }
+
+ public Integer getExpires_in() {
+ return expires_in;
+ }
+
+ public void setExpires_in(Integer expires_in) {
+ this.expires_in = expires_in;
+ }
+
+ public String getRefresh_token() {
+ return refresh_token;
+ }
+
+ public void setRefresh_token(String refresh_token) {
+ this.refresh_token = refresh_token;
+ }
+
+ public String getOpenid() {
+ return openid;
+ }
+
+ public void setOpenid(String openid) {
+ this.openid = openid;
+ }
+
+ public String getScope() {
+ return scope;
+ }
+
+ public void setScope(String scope) {
+ this.scope = scope;
+ }
+
+ public Integer getErrcode() {
+ return errcode;
+ }
+
+ public void setErrcode(Integer errcode) {
+ this.errcode = errcode;
+ }
+
+ public String getErrmsg() {
+ return errmsg;
+ }
+
+ public void setErrmsg(String errmsg) {
+ this.errmsg = errmsg;
+ }
+
+ public String getNickname() {
+ return nickname;
+ }
+
+ public void setNickname(String nickname) {
+ this.nickname = nickname;
+ }
+
+ public String getSex() {
+ return sex;
+ }
+
+ public void setSex(String sex) {
+ this.sex = sex;
+ }
+
+ public String getProvince() {
+ return province;
+ }
+
+ public void setProvince(String province) {
+ this.province = province;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country;
+ }
+
+ public String getHeadimgurl() {
+ return headimgurl;
+ }
+
+ public void setHeadimgurl(String headimgurl) {
+ this.headimgurl = headimgurl;
+ }
+
+ public String getUnionid() {
+ return unionid;
+ }
+
+ public void setUnionid(String unionid) {
+ this.unionid = unionid;
+ }
+
+ public String getWxid() {
+ return wxid;
+ }
+
+ public void setWxid(String wxid) {
+ this.wxid = wxid;
+ }
+
+ public String getJsondata() {
+ return jsondata;
+ }
+
+ public void setJsondata(String jsondata) {
+ this.jsondata = jsondata;
+ }
+
+
+
+
+}
diff --git a/src/main/java/com/supwisdom/dlpay/app/service/AppService.java b/src/main/java/com/supwisdom/dlpay/app/service/AppService.java
index be11399..a2e3f94 100644
--- a/src/main/java/com/supwisdom/dlpay/app/service/AppService.java
+++ b/src/main/java/com/supwisdom/dlpay/app/service/AppService.java
@@ -1,5 +1,8 @@
package com.supwisdom.dlpay.app.service;
+import com.supwisdom.dlpay.app.domain.EWechatAccount;
+import com.supwisdom.dlpay.app.domain.EWechatConfig;
+import com.supwisdom.dlpay.app.domain.WechatResp;
import com.supwisdom.dlpay.ncmgr.domain.TNcDevice;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@@ -23,5 +26,12 @@
//根据用户和设备名称 查询开门设备
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
public List<TNcDevice> findAllDevByUserIdAndDevName(String userId,String devName);
-
+ @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
+ public WechatResp doWechatAuth(String appid, String appsecret, String code, boolean needinfor);
+ @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
+ public EWechatAccount getAccountByOpenid(String openid);
+ @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
+ EWechatConfig getWechatConfig();
+ @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
+ public boolean saveOpenmsg(WechatResp openmsg,int inoutflag);
}
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 4b864b5..597a65c 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
@@ -1,10 +1,12 @@
package com.supwisdom.dlpay.app.service.impl;
import com.google.gson.Gson;
+import com.sun.jersey.api.client.Client;
+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.dao.AppDao;
-import com.supwisdom.dlpay.app.domain.TAppDevFre;
-import com.supwisdom.dlpay.app.domain.TAppDevFreId;
+import com.supwisdom.dlpay.app.domain.*;
import com.supwisdom.dlpay.app.service.AppService;
import com.supwisdom.dlpay.doorlist.bean.TCustomerInfo;
import com.supwisdom.dlpay.framework.util.DateUtil;
@@ -19,9 +21,12 @@
import com.supwisdom.dlpay.ncmgr.dao.NcDeviceDao;
import com.supwisdom.dlpay.ncmgr.domain.TNcDevice;
import com.supwisdom.dlpay.util.RedisUtil;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.http.HttpStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.ws.rs.core.MediaType;
import java.util.List;
@Service
@@ -186,5 +191,113 @@
public List<TNcDevice> findAllDevByUserIdAndDevName(String userId, String devName) {
return appDao.findAllDevByUserIdAndDevName(userId, devName);
}
+ @Override
+ public EWechatAccount getAccountByOpenid(String openid) {
+ if (!StringUtil.isEmpty(openid)) {
+ List list = appDao.getAccountByOpenid(openid);
+ if (null != list && list.size() > 0) {
+ return (EWechatAccount) list.get(0);
+ }
+ }
+ return null;
+ }
+ @Override
+ public EWechatConfig getWechatConfig() {
+ return new EWechatConfig();
+ }
+
+ @Override
+ public boolean saveOpenmsg(WechatResp openmsg ,int inoutflag ) {
+ EVisitorDtl eVisitorDtl=new EVisitorDtl();
+ eVisitorDtl.setInoutflag(inoutflag);
+ eVisitorDtl.setOpenid(openmsg.getOpenid());
+ eVisitorDtl.setNickname(openmsg.getNickname());
+ eVisitorDtl.setSex(openmsg.getSex());
+ eVisitorDtl.setProvince(openmsg.getProvince());
+ eVisitorDtl.setCity(openmsg.getCity());
+ eVisitorDtl.setCountry(openmsg.getCountry());
+ eVisitorDtl.setHeadimgurl(openmsg.getHeadimgurl());
+ eVisitorDtl.setUnionid(openmsg.getUnionid());
+ eVisitorDtl.setTransdate(DateUtil.getNow().substring(0,8));
+ eVisitorDtl.setTranstime(DateUtil.getNow().substring(8));
+ boolean b = appDao.saveVisitor(eVisitorDtl);
+ return b;
+ }
+
+ public WechatResp doWechatAuth(String appid, String appsecret, String code, boolean needinfor) {
+ EWechatConfig config = getWechatConfig();
+ //TODO 1.判断accesstoken是否可用
+ //TODO 2.判断refreshtoken是否可用
+ if (config == null) {
+ //logger.error("微信公众号相关信息未配置,请在表E_WECHAT_CONFIG中添加记录,其中ID默认为WECHAT");
+
+ }
+ boolean issave=false;
+ Client c = Client.create();
+ c.setConnectTimeout(20000);
+ WebResource r = c.resource("https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appid + "&secret=" + appsecret + "&code=" + code + "&grant_type=authorization_code");
+ ClientResponse respClient = r.accept(MediaType.APPLICATION_JSON).post(ClientResponse.class);
+ if (HttpStatus.SC_OK == respClient.getStatus()) {
+ String s = respClient.getEntity(String.class);
+ Gson gson = new Gson();
+ WechatResp ret = gson.fromJson(s, WechatResp.class);
+ if (ret != null) {
+ if (needinfor) {
+ String openid = ret.getOpenid();
+ String acctoken = ret.getAccess_token();
+ r = c.resource("https://api.weixin.qq.com/sns/userinfo?access_token=" + acctoken + "&openid=" + openid + "&lang=zh_CN");
+ respClient = r.accept(MediaType.APPLICATION_JSON).post(ClientResponse.class);
+ if (HttpStatus.SC_OK == respClient.getStatus()) {
+ s = respClient.getEntity(String.class);
+ WechatResp infor = gson.fromJson(s, WechatResp.class);
+ EWechatAccount account = getAccountByOpenid(ret.getOpenid());
+ if (account == null) {
+ account = new EWechatAccount();
+ issave=true;
+ }
+ account.setCity(infor.getCity());
+ String nick = "";
+ try {
+ nick = Base64.encodeBase64String(infor.getNickname().getBytes("UTF-8"));
+ if (nick.length() > 100) {
+ nick = nick.substring(0, 100);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ account.setNickname(nick);
+ account.setHeadimgurl(infor.getHeadimgurl());
+ account.setSex(infor.getSex());
+ account.setProvince(infor.getProvince());
+ account.setCity(infor.getCity());
+ account.setCountry(infor.getCountry());
+ account.setOpenid(openid);
+ account.setStatus("1");
+ account.setBinddate(DateUtil.getNow());
+ if(issave){
+ boolean b = appDao.saveAccount(account);
+ if (!b){
+ return null;
+ }
+ }else {
+
+ }
+ infor.setJsondata(s);
+ infor.setWxid(account.getWxid());
+ return infor;
+ }
+ }
+ EWechatAccount account = getAccountByOpenid(ret.getOpenid());
+ if (account != null) {
+ ret.setWxid(account.getWxid());
+ }
+ ret.setJsondata(s);
+ return ret;
+ } else {
+ return null;
+ }
+ }
+ return null;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/controller/VisitorManageController.java b/src/main/java/com/supwisdom/dlpay/visitormanage/controller/VisitorManageController.java
new file mode 100644
index 0000000..0d243a5
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/controller/VisitorManageController.java
@@ -0,0 +1,105 @@
+package com.supwisdom.dlpay.visitormanage.controller;
+
+
+import com.google.gson.Gson;
+import com.supwisdom.dlpay.api.bean.JsonResult;
+import com.supwisdom.dlpay.api.bean.QueryUserParam;
+import com.supwisdom.dlpay.api.bean.UserInforResponse;
+import com.supwisdom.dlpay.customer.bean.CustomerSearchBean;
+import com.supwisdom.dlpay.doorlist.bean.CustomerListBean;
+import com.supwisdom.dlpay.doorlist.bean.TCustomerInfo;
+import com.supwisdom.dlpay.framework.domain.TOperator;
+import com.supwisdom.dlpay.framework.util.DateUtil;
+import com.supwisdom.dlpay.framework.util.PageResult;
+import com.supwisdom.dlpay.framework.util.WebConstant;
+import com.supwisdom.dlpay.mainservice.service.WebInterfaceService;
+import com.supwisdom.dlpay.paysdk.proxy.UserProxy;
+import com.supwisdom.dlpay.system.domain.TCustType;
+import com.supwisdom.dlpay.system.domain.TDept;
+import com.supwisdom.dlpay.system.service.SystemService;
+import com.supwisdom.dlpay.visitormanage.domain.EVisitorDtl;
+import com.supwisdom.dlpay.visitormanage.domain.VisitorSearchBean;
+import com.supwisdom.dlpay.visitormanage.domain.VisitorShowBean;
+import com.supwisdom.dlpay.visitormanage.service.VisitormanageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Controller
+@RequestMapping("/visitor")
+public class VisitorManageController {
+
+
+ @Autowired
+ private UserProxy userProxy;
+ @Autowired
+ private SystemService systemService;
+ @Autowired
+ private VisitormanageService visitormanageService;
+
+ @RequestMapping("/index")
+ public String indexView(ModelMap model) {
+ List<TCustType> lst = systemService.findAllCusttype();
+ List<TDept> dept=systemService.findAllDept();
+ Gson gson = new Gson();
+ String deptString = gson.toJson(dept);
+ model.put("deptlist", deptString);
+ String typeString = gson.toJson(lst);
+ model.put("custtypelist", typeString);
+
+ return "visitormanage/customer/index";
+ }
+
+ @RequestMapping("/list")
+ @ResponseBody
+ public PageResult<EVisitorDtl> getDataList(@RequestParam("page") Integer pageNo,
+ @RequestParam("limit") Integer pageSize,
+ @RequestParam(value = "searchkey", required = false) String searchKey,
+ @RequestParam(value = "inoutflag", required = false) String inoutflag,
+ @RequestParam(value = "startdate", required = false) String startdate,
+ @RequestParam(value = "enddate", required = false) String enddate
+ ) {
+ try {
+ if (null == pageNo || pageNo < 1) pageNo = WebConstant.PAGENO_DEFAULT;
+ if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT;
+ VisitorSearchBean searchBean = new VisitorSearchBean();
+ if(startdate!=null){
+ startdate=startdate.replace("-","");
+ }if(enddate!=null){
+ enddate=enddate.replace("-","");
+ }
+ searchBean.setPageNo(pageNo);
+ searchBean.setNickname(searchKey);
+ searchBean.setInoutflag(inoutflag);
+ searchBean.setStartdate(startdate);
+ searchBean.setEnddate(enddate);
+ searchBean.setPageSize(pageSize);
+ PageResult<EVisitorDtl> bean= visitormanageService.getVisitorInfoPage(searchBean);
+
+ return bean;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new PageResult<>(99, "系统查询错误");
+ }
+ }
+
+
+ @GetMapping("/loadadd")
+ public String loadadd(Model model) {
+ List<TCustType> list=systemService.findAllCusttype();
+ model.addAttribute("typelist",list);
+ List<TDept> deptlist=systemService.findAllDept();
+ model.addAttribute("deptlist",deptlist);
+
+ return "doorlist/customer/form";
+ }
+
+
+
+
+}
diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/dao/VisitorDao.java b/src/main/java/com/supwisdom/dlpay/visitormanage/dao/VisitorDao.java
new file mode 100644
index 0000000..c9fbce8
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/dao/VisitorDao.java
@@ -0,0 +1,21 @@
+package com.supwisdom.dlpay.visitormanage.dao;
+
+import com.supwisdom.dlpay.customer.bean.CustomerSearchBean;
+import com.supwisdom.dlpay.doorlist.bean.TCustomerInfo;
+import com.supwisdom.dlpay.framework.util.PageResult;
+import com.supwisdom.dlpay.mainservice.domain.TCustomer;
+import com.supwisdom.dlpay.visitormanage.domain.EVisitorDtl;
+import com.supwisdom.dlpay.visitormanage.domain.VisitorSearchBean;
+
+import java.util.List;
+
+public interface VisitorDao {
+
+
+
+
+
+
+ public PageResult<EVisitorDtl> getVisitorInfoPage(VisitorSearchBean param);
+
+}
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
new file mode 100644
index 0000000..d89f3ce
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/dao/impl/VisitorDaoImpl.java
@@ -0,0 +1,86 @@
+package com.supwisdom.dlpay.visitormanage.dao.impl;
+
+import com.supwisdom.dlpay.customer.bean.CustomerSearchBean;
+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.CustomerDao;
+import com.supwisdom.dlpay.mainservice.domain.TCustomer;
+import com.supwisdom.dlpay.visitormanage.dao.VisitorDao;
+import com.supwisdom.dlpay.visitormanage.domain.EVisitorDtl;
+import com.supwisdom.dlpay.visitormanage.domain.VisitorSearchBean;
+import org.hibernate.query.internal.NativeQueryImpl;
+import org.hibernate.transform.Transformers;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import javax.persistence.TypedQuery;
+import java.math.BigInteger;
+import java.util.List;
+
+@Repository
+public class VisitorDaoImpl implements VisitorDao {
+
+ @PersistenceContext
+ EntityManager entityManager;
+
+
+
+ @Transactional
+ @Override
+ public PageResult<EVisitorDtl> getVisitorInfoPage(VisitorSearchBean param) {
+
+ String nickname = param.getNickname();
+ String inoutflag = param.getInoutflag();
+ String startdate = param.getStartdate();
+ String enddate = param.getEnddate();
+ String sql = "select a.id,a.openid,a.status,a.nickname,a.sex,a.province,a.city,a.country,a.inoutflag,a.transdate,a.transtime from E_VISITOR_DTL a " +
+ " where a.status='1' ";
+ String countSql = "select count(*) as cnt from E_VISITOR_DTL a " +
+ " where a.status='1' ";
+
+ if (!StringUtil.isEmpty(nickname)){
+ sql += " and a.nickname like :nickname ";
+ countSql += " and a.nickname like :nickname ";
+ }if (!StringUtil.isEmpty(inoutflag)){
+ sql += " and a.inoutflag = :inoutflag ";
+ countSql += " and a.inoutflag = :inoutflag ";
+ }if (!StringUtil.isEmpty(startdate)){
+ sql += " and a.transdate >= :startdate ";
+ countSql += " and a.transdate >= :startdate ";
+ }if (!StringUtil.isEmpty(enddate)){
+ sql += " and a.transdate <= :enddate ";
+ countSql += " and a.transdate <= :enddate ";
+ }
+ 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)){
+ query.setParameter("inoutflag", Integer.parseInt(inoutflag));
+ countQuery.setParameter("inoutflag", Integer.parseInt(inoutflag));
+ }if (!StringUtil.isEmpty(startdate)){
+ query.setParameter("startdate", startdate);
+ countQuery.setParameter("startdate", startdate);
+ }if (!StringUtil.isEmpty(enddate)){
+ query.setParameter("enddate", enddate);
+ countQuery.setParameter("enddate", enddate);
+ }
+ query.setFirstResult((param.getPageNo() - 1) * param.getPageSize());
+ query.setMaxResults(param.getPageSize()); //分页显示
+
+ query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(EVisitorDtl.class));
+ List<EVisitorDtl> list = query.getResultList();
+ BigInteger count = (BigInteger) countQuery.getSingleResult();
+ return new PageResult<>(count.longValue(), list);
+ }
+
+
+}
diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/domain/EVisitorDtl.java b/src/main/java/com/supwisdom/dlpay/visitormanage/domain/EVisitorDtl.java
new file mode 100644
index 0000000..4c3d67d
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/domain/EVisitorDtl.java
@@ -0,0 +1,160 @@
+package com.supwisdom.dlpay.visitormanage.domain;
+
+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/visitormanage/domain/VisitorSearchBean.java b/src/main/java/com/supwisdom/dlpay/visitormanage/domain/VisitorSearchBean.java
new file mode 100644
index 0000000..76cd3e2
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/domain/VisitorSearchBean.java
@@ -0,0 +1,42 @@
+package com.supwisdom.dlpay.visitormanage.domain;
+
+import com.supwisdom.dlpay.system.bean.PageBean;
+
+public class VisitorSearchBean extends PageBean {
+ private String nickname;
+ private String startdate;
+ private String enddate;
+ private String inoutflag;
+
+ public String getNickname() {
+ return nickname;
+ }
+
+ public void setNickname(String nickname) {
+ this.nickname = nickname;
+ }
+
+ public String getStartdate() {
+ return startdate;
+ }
+
+ public void setStartdate(String startdate) {
+ this.startdate = startdate;
+ }
+
+ public String getEnddate() {
+ return enddate;
+ }
+
+ public void setEnddate(String enddate) {
+ this.enddate = enddate;
+ }
+
+ public String getInoutflag() {
+ return inoutflag;
+ }
+
+ public void setInoutflag(String inoutflag) {
+ this.inoutflag = inoutflag;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/domain/VisitorShowBean.java b/src/main/java/com/supwisdom/dlpay/visitormanage/domain/VisitorShowBean.java
new file mode 100644
index 0000000..d315796
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/domain/VisitorShowBean.java
@@ -0,0 +1,107 @@
+package com.supwisdom.dlpay.visitormanage.domain;
+
+
+public class VisitorShowBean {
+ private String custid;
+ private Integer custtype;
+ private String custname;
+ private String phone;
+ private String cardno;
+ private String cardphyid;
+ private String bankcardno;
+ private String deptcode;
+ private String custtypeid;
+ private String checkstatus;
+ private String status;
+
+
+ public String getDeptcode() {
+ return deptcode;
+ }
+
+ public void setDeptcode(String deptcode) {
+ this.deptcode = deptcode;
+ }
+
+ public String getCusttypeid() {
+ return custtypeid;
+ }
+
+ public void setCusttypeid(String custtypeid) {
+ this.custtypeid = custtypeid;
+ }
+
+ public String getCustid() {
+ return custid;
+ }
+
+ public void setCustid(String custid) {
+ this.custid = custid;
+ }
+
+ public Integer getCusttype() {
+ return custtype;
+ }
+
+ public void setCusttype(Integer custtype) {
+ this.custtype = custtype;
+ }
+
+ public String getCustname() {
+ return custname;
+ }
+
+ public void setCustname(String custname) {
+ this.custname = custname;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ public String getCardno() {
+ return cardno;
+ }
+
+ public void setCardno(String cardno) {
+ this.cardno = cardno;
+ }
+
+ public String getCardphyid() {
+ return cardphyid;
+ }
+
+ public void setCardphyid(String cardphyid) {
+ this.cardphyid = cardphyid;
+ }
+
+ public String getBankcardno() {
+ return bankcardno;
+ }
+
+ public void setBankcardno(String bankcardno) {
+
+ this.bankcardno = bankcardno;
+ }
+
+ public String getCheckstatus() {
+ return checkstatus;
+ }
+
+ public void setCheckstatus(String checkstatus) {
+
+ this.checkstatus = checkstatus;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/visitormanage/service/VisitormanageService.java b/src/main/java/com/supwisdom/dlpay/visitormanage/service/VisitormanageService.java
new file mode 100644
index 0000000..1b4ac25
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/service/VisitormanageService.java
@@ -0,0 +1,27 @@
+package com.supwisdom.dlpay.visitormanage.service;
+
+import com.supwisdom.dlpay.api.bean.UserInforResponse;
+import com.supwisdom.dlpay.customer.bean.CustomerSearchBean;
+import com.supwisdom.dlpay.doorlist.bean.CustomerListBean;
+import com.supwisdom.dlpay.doorlist.bean.TCustomerInfo;
+import com.supwisdom.dlpay.framework.util.PageResult;
+import com.supwisdom.dlpay.mainservice.bean.TDoorcardlstInfo;
+import com.supwisdom.dlpay.mainservice.bean.TDoordtlInfo;
+import com.supwisdom.dlpay.mainservice.domain.TCard;
+import com.supwisdom.dlpay.mainservice.domain.TCustomer;
+import com.supwisdom.dlpay.mainservice.domain.TKey;
+import com.supwisdom.dlpay.system.page.Pagination;
+import com.supwisdom.dlpay.visitormanage.domain.EVisitorDtl;
+import com.supwisdom.dlpay.visitormanage.domain.VisitorSearchBean;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+public interface VisitormanageService {
+
+
+ @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
+ PageResult<EVisitorDtl> getVisitorInfoPage(VisitorSearchBean bean);
+
+ }
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
new file mode 100644
index 0000000..9261017
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/visitormanage/service/impl/VisitormanageServiceImpl.java
@@ -0,0 +1,48 @@
+package com.supwisdom.dlpay.visitormanage.service.impl;
+
+import com.supwisdom.dlpay.api.bean.UserInforResponse;
+import com.supwisdom.dlpay.customer.bean.CustomerSearchBean;
+import com.supwisdom.dlpay.doorlist.bean.CustomerListBean;
+import com.supwisdom.dlpay.doorlist.bean.TCustomerInfo;
+import com.supwisdom.dlpay.framework.util.PageResult;
+import com.supwisdom.dlpay.mainservice.bean.TDoorcardlstInfo;
+import com.supwisdom.dlpay.mainservice.bean.TDoordtlInfo;
+import com.supwisdom.dlpay.mainservice.dao.*;
+import com.supwisdom.dlpay.mainservice.domain.TCard;
+import com.supwisdom.dlpay.mainservice.domain.TCustomer;
+import com.supwisdom.dlpay.mainservice.domain.TKey;
+import com.supwisdom.dlpay.mainservice.service.WebInterfaceService;
+import com.supwisdom.dlpay.system.domain.TDept;
+import com.supwisdom.dlpay.system.page.Pagination;
+import com.supwisdom.dlpay.system.service.SystemService;
+import com.supwisdom.dlpay.visitormanage.dao.VisitorDao;
+import com.supwisdom.dlpay.visitormanage.domain.EVisitorDtl;
+import com.supwisdom.dlpay.visitormanage.domain.VisitorSearchBean;
+import com.supwisdom.dlpay.visitormanage.service.VisitormanageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class VisitormanageServiceImpl implements VisitormanageService {
+ @Autowired
+ KeyDao keyDao;
+ @Autowired
+ CardListDao cardListDao;
+ @Autowired
+ DoordtlDao doordtlDao;
+ @Autowired
+ VisitorDao visitorDao;
+ @Autowired
+ CardDao cardDao;
+ @Autowired
+ private SystemService systemService;
+
+
+
+ @Override
+ public PageResult<EVisitorDtl> getVisitorInfoPage(VisitorSearchBean bean){
+ return visitorDao.getVisitorInfoPage(bean);
+ }
+}
diff --git a/src/main/resources/static/res/assets/css/wxpage.css b/src/main/resources/static/res/assets/css/wxpage.css
new file mode 100644
index 0000000..a41b9b1
--- /dev/null
+++ b/src/main/resources/static/res/assets/css/wxpage.css
@@ -0,0 +1,87 @@
+body {
+ background: #f6f6f6;
+}
+.wx-logo-img {
+ width: 48px;
+ height: 48px;
+}
+.qrcode-cc{
+ text-align: center;
+}
+.qrcode-cc img{
+ display: inline!important;
+}
+.topbar{
+ display: flex;
+ padding: 10px;
+ background: #4AA6E6;
+}
+.topbar a{
+ color:#fff;
+}
+.topbar p{
+ color:#fff;
+ flex:1;
+ text-align: center;
+}
+.back:before{
+ content: "";
+ background: url(../../images/wxapp/icon_back.png);
+ padding: 5px 15px;
+}
+.refresh{
+ content: "";
+ background: url(../../images/wxapp/icon_refresh.png);
+ padding: 5px 15px;
+}
+.btn-bg{
+ background: #4AA6E6;
+}
+.ui-header {
+ padding: 30px 0;
+}
+
+.ui-title {
+ text-align: center;
+ vertical-align: middle;
+}
+
+.pay-success {
+ width: 60px;
+ height: 60px;
+ vertical-align: middle;
+}
+
+.span-success {
+ vertical-align: middle;
+ color: #1296db;
+}
+
+.span-wait {
+ vertical-align: middle;
+ color: #1296db;
+}
+
+.span-fail {
+ color: #FF3900;
+ vertical-align: middle;
+}
+
+.weui-btn_primary {
+ background-color: #4AA6E6
+}
+
+.weui-btn_primary:not(.weui-btn_disabled):visited {
+ color: #fff
+}
+
+.weui-btn_primary:not(.weui-btn_disabled):active {
+ color: hsla(0, 0%, 100%, .6);
+ background-color: #5fa7db;
+}
+.centerCss{
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+}
\ No newline at end of file
diff --git a/src/main/resources/static/res/assets/js/qrcode.min.js b/src/main/resources/static/res/assets/js/qrcode.min.js
new file mode 100644
index 0000000..993e88f
--- /dev/null
+++ b/src/main/resources/static/res/assets/js/qrcode.min.js
@@ -0,0 +1 @@
+var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this.parsedData=[];for(var b=[],d=0,e=this.data.length;e>d;d++){var f=this.data.charCodeAt(d);f>65536?(b[0]=240|(1835008&f)>>>18,b[1]=128|(258048&f)>>>12,b[2]=128|(4032&f)>>>6,b[3]=128|63&f):f>2048?(b[0]=224|(61440&f)>>>12,b[1]=128|(4032&f)>>>6,b[2]=128|63&f):f>128?(b[0]=192|(1984&f)>>>6,b[1]=128|63&f):b[0]=f,this.parsedData=this.parsedData.concat(b)}this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function b(a,b){this.typeNumber=a,this.errorCorrectLevel=b,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}function i(a,b){if(void 0==a.length)throw new Error(a.length+"/"+b);for(var c=0;c<a.length&&0==a[c];)c++;this.num=new Array(a.length-c+b);for(var d=0;d<a.length-c;d++)this.num[d]=a[d+c]}function j(a,b){this.totalCount=a,this.dataCount=b}function k(){this.buffer=[],this.length=0}function m(){return"undefined"!=typeof CanvasRenderingContext2D}function n(){var a=!1,b=navigator.userAgent;return/android/i.test(b)&&(a=!0,aMat=b.toString().match(/android ([0-9]\.[0-9])/i),aMat&&aMat[1]&&(a=parseFloat(aMat[1]))),a}function r(a,b){for(var c=1,e=s(a),f=0,g=l.length;g>=f;f++){var h=0;switch(b){case d.L:h=l[f][0];break;case d.M:h=l[f][1];break;case d.Q:h=l[f][2];break;case d.H:h=l[f][3]}if(h>=e)break;c++}if(c>l.length)throw new Error("Too long data");return c}function s(a){var b=encodeURI(a).toString().replace(/\%[0-9a-fA-F]{2}/g,"a");return b.length+(b.length!=a?3:0)}a.prototype={getLength:function(){return this.parsedData.length},write:function(a){for(var b=0,c=this.parsedData.length;c>b;b++)a.put(this.parsedData[b],8)}},b.prototype={addData:function(b){var c=new a(b);this.dataList.push(c),this.dataCache=null},isDark:function(a,b){if(0>a||this.moduleCount<=a||0>b||this.moduleCount<=b)throw new Error(a+","+b);return this.modules[a][b]},getModuleCount:function(){return this.moduleCount},make:function(){this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var d=0;d<this.moduleCount;d++){this.modules[d]=new Array(this.moduleCount);for(var e=0;e<this.moduleCount;e++)this.modules[d][e]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(a,c),this.typeNumber>=7&&this.setupTypeNumber(a),null==this.dataCache&&(this.dataCache=b.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,b){for(var c=-1;7>=c;c++)if(!(-1>=a+c||this.moduleCount<=a+c))for(var d=-1;7>=d;d++)-1>=b+d||this.moduleCount<=b+d||(this.modules[a+c][b+d]=c>=0&&6>=c&&(0==d||6==d)||d>=0&&6>=d&&(0==c||6==c)||c>=2&&4>=c&&d>=2&&4>=d?!0:!1)},getBestMaskPattern:function(){for(var a=0,b=0,c=0;8>c;c++){this.makeImpl(!0,c);var d=f.getLostPoint(this);(0==c||a>d)&&(a=d,b=c)}return b},createMovieClip:function(a,b,c){var d=a.createEmptyMovieClip(b,c),e=1;this.make();for(var f=0;f<this.modules.length;f++)for(var g=f*e,h=0;h<this.modules[f].length;h++){var i=h*e,j=this.modules[f][h];j&&(d.beginFill(0,100),d.moveTo(i,g),d.lineTo(i+e,g),d.lineTo(i+e,g+e),d.lineTo(i,g+e),d.endFill())}return d},setupTimingPattern:function(){for(var a=8;a<this.moduleCount-8;a++)null==this.modules[a][6]&&(this.modules[a][6]=0==a%2);for(var b=8;b<this.moduleCount-8;b++)null==this.modules[6][b]&&(this.modules[6][b]=0==b%2)},setupPositionAdjustPattern:function(){for(var a=f.getPatternPosition(this.typeNumber),b=0;b<a.length;b++)for(var c=0;c<a.length;c++){var d=a[b],e=a[c];if(null==this.modules[d][e])for(var g=-2;2>=g;g++)for(var h=-2;2>=h;h++)this.modules[d+g][e+h]=-2==g||2==g||-2==h||2==h||0==g&&0==h?!0:!1}},setupTypeNumber:function(a){for(var b=f.getBCHTypeNumber(this.typeNumber),c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[Math.floor(c/3)][c%3+this.moduleCount-8-3]=d}for(var c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[c%3+this.moduleCount-8-3][Math.floor(c/3)]=d}},setupTypeInfo:function(a,b){for(var c=this.errorCorrectLevel<<3|b,d=f.getBCHTypeInfo(c),e=0;15>e;e++){var g=!a&&1==(1&d>>e);6>e?this.modules[e][8]=g:8>e?this.modules[e+1][8]=g:this.modules[this.moduleCount-15+e][8]=g}for(var e=0;15>e;e++){var g=!a&&1==(1&d>>e);8>e?this.modules[8][this.moduleCount-e-1]=g:9>e?this.modules[8][15-e-1+1]=g:this.modules[8][15-e-1]=g}this.modules[this.moduleCount-8][8]=!a},mapData:function(a,b){for(var c=-1,d=this.moduleCount-1,e=7,g=0,h=this.moduleCount-1;h>0;h-=2)for(6==h&&h--;;){for(var i=0;2>i;i++)if(null==this.modules[d][h-i]){var j=!1;g<a.length&&(j=1==(1&a[g]>>>e));var k=f.getMask(b,d,h-i);k&&(j=!j),this.modules[d][h-i]=j,e--,-1==e&&(g++,e=7)}if(d+=c,0>d||this.moduleCount<=d){d-=c,c=-c;break}}}},b.PAD0=236,b.PAD1=17,b.createData=function(a,c,d){for(var e=j.getRSBlocks(a,c),g=new k,h=0;h<d.length;h++){var i=d[h];g.put(i.mode,4),g.put(i.getLength(),f.getLengthInBits(i.mode,a)),i.write(g)}for(var l=0,h=0;h<e.length;h++)l+=e[h].dataCount;if(g.getLengthInBits()>8*l)throw new Error("code length overflow. ("+g.getLengthInBits()+">"+8*l+")");for(g.getLengthInBits()+4<=8*l&&g.put(0,4);0!=g.getLengthInBits()%8;)g.putBit(!1);for(;;){if(g.getLengthInBits()>=8*l)break;if(g.put(b.PAD0,8),g.getLengthInBits()>=8*l)break;g.put(b.PAD1,8)}return b.createBytes(g,e)},b.createBytes=function(a,b){for(var c=0,d=0,e=0,g=new Array(b.length),h=new Array(b.length),j=0;j<b.length;j++){var k=b[j].dataCount,l=b[j].totalCount-k;d=Math.max(d,k),e=Math.max(e,l),g[j]=new Array(k);for(var m=0;m<g[j].length;m++)g[j][m]=255&a.buffer[m+c];c+=k;var n=f.getErrorCorrectPolynomial(l),o=new i(g[j],n.getLength()-1),p=o.mod(n);h[j]=new Array(n.getLength()-1);for(var m=0;m<h[j].length;m++){var q=m+p.getLength()-h[j].length;h[j][m]=q>=0?p.get(q):0}}for(var r=0,m=0;m<b.length;m++)r+=b[m].totalCount;for(var s=new Array(r),t=0,m=0;d>m;m++)for(var j=0;j<b.length;j++)m<g[j].length&&(s[t++]=g[j][m]);for(var m=0;e>m;m++)for(var j=0;j<b.length;j++)m<h[j].length&&(s[t++]=h[j][m]);return s};for(var c={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},d={L:1,M:0,Q:3,H:2},e={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},f={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(a){for(var b=a<<10;f.getBCHDigit(b)-f.getBCHDigit(f.G15)>=0;)b^=f.G15<<f.getBCHDigit(b)-f.getBCHDigit(f.G15);return(a<<10|b)^f.G15_MASK},getBCHTypeNumber:function(a){for(var b=a<<12;f.getBCHDigit(b)-f.getBCHDigit(f.G18)>=0;)b^=f.G18<<f.getBCHDigit(b)-f.getBCHDigit(f.G18);return a<<12|b},getBCHDigit:function(a){for(var b=0;0!=a;)b++,a>>>=1;return b},getPatternPosition:function(a){return f.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,b,c){switch(a){case e.PATTERN000:return 0==(b+c)%2;case e.PATTERN001:return 0==b%2;case e.PATTERN010:return 0==c%3;case e.PATTERN011:return 0==(b+c)%3;case e.PATTERN100:return 0==(Math.floor(b/2)+Math.floor(c/3))%2;case e.PATTERN101:return 0==b*c%2+b*c%3;case e.PATTERN110:return 0==(b*c%2+b*c%3)%2;case e.PATTERN111:return 0==(b*c%3+(b+c)%2)%2;default:throw new Error("bad maskPattern:"+a)}},getErrorCorrectPolynomial:function(a){for(var b=new i([1],0),c=0;a>c;c++)b=b.multiply(new i([1,g.gexp(c)],0));return b},getLengthInBits:function(a,b){if(b>=1&&10>b)switch(a){case c.MODE_NUMBER:return 10;case c.MODE_ALPHA_NUM:return 9;case c.MODE_8BIT_BYTE:return 8;case c.MODE_KANJI:return 8;default:throw new Error("mode:"+a)}else if(27>b)switch(a){case c.MODE_NUMBER:return 12;case c.MODE_ALPHA_NUM:return 11;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 10;default:throw new Error("mode:"+a)}else{if(!(41>b))throw new Error("type:"+b);switch(a){case c.MODE_NUMBER:return 14;case c.MODE_ALPHA_NUM:return 13;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 12;default:throw new Error("mode:"+a)}}},getLostPoint:function(a){for(var b=a.getModuleCount(),c=0,d=0;b>d;d++)for(var e=0;b>e;e++){for(var f=0,g=a.isDark(d,e),h=-1;1>=h;h++)if(!(0>d+h||d+h>=b))for(var i=-1;1>=i;i++)0>e+i||e+i>=b||(0!=h||0!=i)&&g==a.isDark(d+h,e+i)&&f++;f>5&&(c+=3+f-5)}for(var d=0;b-1>d;d++)for(var e=0;b-1>e;e++){var j=0;a.isDark(d,e)&&j++,a.isDark(d+1,e)&&j++,a.isDark(d,e+1)&&j++,a.isDark(d+1,e+1)&&j++,(0==j||4==j)&&(c+=3)}for(var d=0;b>d;d++)for(var e=0;b-6>e;e++)a.isDark(d,e)&&!a.isDark(d,e+1)&&a.isDark(d,e+2)&&a.isDark(d,e+3)&&a.isDark(d,e+4)&&!a.isDark(d,e+5)&&a.isDark(d,e+6)&&(c+=40);for(var e=0;b>e;e++)for(var d=0;b-6>d;d++)a.isDark(d,e)&&!a.isDark(d+1,e)&&a.isDark(d+2,e)&&a.isDark(d+3,e)&&a.isDark(d+4,e)&&!a.isDark(d+5,e)&&a.isDark(d+6,e)&&(c+=40);for(var k=0,e=0;b>e;e++)for(var d=0;b>d;d++)a.isDark(d,e)&&k++;var l=Math.abs(100*k/b/b-50)/5;return c+=10*l}},g={glog:function(a){if(1>a)throw new Error("glog("+a+")");return g.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;a>=256;)a-=255;return g.EXP_TABLE[a]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},h=0;8>h;h++)g.EXP_TABLE[h]=1<<h;for(var h=8;256>h;h++)g.EXP_TABLE[h]=g.EXP_TABLE[h-4]^g.EXP_TABLE[h-5]^g.EXP_TABLE[h-6]^g.EXP_TABLE[h-8];for(var h=0;255>h;h++)g.LOG_TABLE[g.EXP_TABLE[h]]=h;i.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var b=new Array(this.getLength()+a.getLength()-1),c=0;c<this.getLength();c++)for(var d=0;d<a.getLength();d++)b[c+d]^=g.gexp(g.glog(this.get(c))+g.glog(a.get(d)));return new i(b,0)},mod:function(a){if(this.getLength()-a.getLength()<0)return this;for(var b=g.glog(this.get(0))-g.glog(a.get(0)),c=new Array(this.getLength()),d=0;d<this.getLength();d++)c[d]=this.get(d);for(var d=0;d<a.getLength();d++)c[d]^=g.gexp(g.glog(a.get(d))+b);return new i(c,0).mod(a)}},j.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],j.getRSBlocks=function(a,b){var c=j.getRsBlockTable(a,b);if(void 0==c)throw new Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+b);for(var d=c.length/3,e=[],f=0;d>f;f++)for(var g=c[3*f+0],h=c[3*f+1],i=c[3*f+2],k=0;g>k;k++)e.push(new j(h,i));return e},j.getRsBlockTable=function(a,b){switch(b){case d.L:return j.RS_BLOCK_TABLE[4*(a-1)+0];case d.M:return j.RS_BLOCK_TABLE[4*(a-1)+1];case d.Q:return j.RS_BLOCK_TABLE[4*(a-1)+2];case d.H:return j.RS_BLOCK_TABLE[4*(a-1)+3];default:return void 0}},k.prototype={get:function(a){var b=Math.floor(a/8);return 1==(1&this.buffer[b]>>>7-a%8)},put:function(a,b){for(var c=0;b>c;c++)this.putBit(1==(1&a>>>b-c-1))},getLengthInBits:function(){return this.length},putBit:function(a){var b=Math.floor(this.length/8);this.buffer.length<=b&&this.buffer.push(0),a&&(this.buffer[b]|=128>>>this.length%8),this.length++}};var l=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]],o=function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){function g(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg",a);for(var d in b)b.hasOwnProperty(d)&&c.setAttribute(d,b[d]);return c}var b=this._htOption,c=this._el,d=a.getModuleCount();Math.floor(b.width/d),Math.floor(b.height/d),this.clear();var h=g("svg",{viewBox:"0 0 "+String(d)+" "+String(d),width:"100%",height:"100%",fill:b.colorLight});h.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),c.appendChild(h),h.appendChild(g("rect",{fill:b.colorDark,width:"1",height:"1",id:"template"}));for(var i=0;d>i;i++)for(var j=0;d>j;j++)if(a.isDark(i,j)){var k=g("use",{x:String(i),y:String(j)});k.setAttributeNS("http://www.w3.org/1999/xlink","href","#template"),h.appendChild(k)}},a.prototype.clear=function(){for(;this._el.hasChildNodes();)this._el.removeChild(this._el.lastChild)},a}(),p="svg"===document.documentElement.tagName.toLowerCase(),q=p?o:m()?function(){function a(){this._elImage.src=this._elCanvas.toDataURL("image/png"),this._elImage.style.display="block",this._elCanvas.style.display="none"}function d(a,b){var c=this;if(c._fFail=b,c._fSuccess=a,null===c._bSupportDataURI){var d=document.createElement("img"),e=function(){c._bSupportDataURI=!1,c._fFail&&_fFail.call(c)},f=function(){c._bSupportDataURI=!0,c._fSuccess&&c._fSuccess.call(c)};return d.onabort=e,d.onerror=e,d.onload=f,d.src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==",void 0}c._bSupportDataURI===!0&&c._fSuccess?c._fSuccess.call(c):c._bSupportDataURI===!1&&c._fFail&&c._fFail.call(c)}if(this._android&&this._android<=2.1){var b=1/window.devicePixelRatio,c=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(a,d,e,f,g,h,i,j){if("nodeName"in a&&/img/i.test(a.nodeName))for(var l=arguments.length-1;l>=1;l--)arguments[l]=arguments[l]*b;else"undefined"==typeof j&&(arguments[1]*=b,arguments[2]*=b,arguments[3]*=b,arguments[4]*=b);c.apply(this,arguments)}}var e=function(a,b){this._bIsPainted=!1,this._android=n(),this._htOption=b,this._elCanvas=document.createElement("canvas"),this._elCanvas.width=b.width,this._elCanvas.height=b.height,a.appendChild(this._elCanvas),this._el=a,this._oContext=this._elCanvas.getContext("2d"),this._bIsPainted=!1,this._elImage=document.createElement("img"),this._elImage.style.display="none",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return e.prototype.draw=function(a){var b=this._elImage,c=this._oContext,d=this._htOption,e=a.getModuleCount(),f=d.width/e,g=d.height/e,h=Math.round(f),i=Math.round(g);b.style.display="none",this.clear();for(var j=0;e>j;j++)for(var k=0;e>k;k++){var l=a.isDark(j,k),m=k*f,n=j*g;c.strokeStyle=l?d.colorDark:d.colorLight,c.lineWidth=1,c.fillStyle=l?d.colorDark:d.colorLight,c.fillRect(m,n,f,g),c.strokeRect(Math.floor(m)+.5,Math.floor(n)+.5,h,i),c.strokeRect(Math.ceil(m)-.5,Math.ceil(n)-.5,h,i)}this._bIsPainted=!0},e.prototype.makeImage=function(){this._bIsPainted&&d.call(this,a)},e.prototype.isPainted=function(){return this._bIsPainted},e.prototype.clear=function(){this._oContext.clearRect(0,0,this._elCanvas.width,this._elCanvas.height),this._bIsPainted=!1},e.prototype.round=function(a){return a?Math.floor(1e3*a)/1e3:a},e}():function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){for(var b=this._htOption,c=this._el,d=a.getModuleCount(),e=Math.floor(b.width/d),f=Math.floor(b.height/d),g=['<table style="border:0;border-collapse:collapse;">'],h=0;d>h;h++){g.push("<tr>");for(var i=0;d>i;i++)g.push('<td style="border:0;border-collapse:collapse;padding:0;margin:0;width:'+e+"px;height:"+f+"px;background-color:"+(a.isDark(h,i)?b.colorDark:b.colorLight)+';"></td>');g.push("</tr>")}g.push("</table>"),c.innerHTML=g.join("");var j=c.childNodes[0],k=(b.width-j.offsetWidth)/2,l=(b.height-j.offsetHeight)/2;k>0&&l>0&&(j.style.margin=l+"px "+k+"px")},a.prototype.clear=function(){this._el.innerHTML=""},a}();QRCode=function(a,b){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:"#000000",colorLight:"#ffffff",correctLevel:d.H},"string"==typeof b&&(b={text:b}),b)for(var c in b)this._htOption[c]=b[c];"string"==typeof a&&(a=document.getElementById(a)),this._android=n(),this._el=a,this._oQRCode=null,this._oDrawing=new q(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)},QRCode.prototype.makeCode=function(a){this._oQRCode=new b(r(a,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(a),this._oQRCode.make(),this._el.title=a,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){"function"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=d}();
\ No newline at end of file
diff --git a/src/main/resources/templates/apph5/appvisitor.html b/src/main/resources/templates/apph5/appvisitor.html
new file mode 100644
index 0000000..94bc82e
--- /dev/null
+++ b/src/main/resources/templates/apph5/appvisitor.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
+
+<head>
+ <title>首页</title>
+ <!--<meta name="_csrf_header" th:content="${_csrf.headerName}" />
+ <meta name="_csrf_token" th:content="${_csrf.parameterName}" th:value="${_csrf.token}" />-->
+ <meta charset="utf-8"/>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="/static/libs/layui/css/layui.css" th:href="@{/static/libs/layui/css/layui.css}"/>
+
+ <link rel="stylesheet" href="/static/res/assets/plugins/element-ui/theme-default/index.css" th:href="@{/static/res/assets/plugins/element-ui/theme-default/index.css}"/>
+
+ <!--<script type="text/javascript" th:src="@{/static/libs/jquery/jquery-3.2.1.min.js}"></script>-->
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.min.js}"></script>
+ <!--<script type="text/javascript" th:src="@{/static/libs/layui/layui.js}"></script>-->
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.form.js}"></script>
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/layer/layer.js}"></script>
+ <script type="text/javascript" th:src="@{/static/res/assets/js/vue.min.js}"></script>
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/element-ui/index.js}"></script>
+
+
+</head>
+
+<body>
+
+ <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>
+ <!--动态将图片轮播图的容器高度设置成与图片一致-->
+
+ <el-button type="success" @click="openDoor" style=" display:block;margin:0 auto;width:100px;height:100px;border-radius:50px;border:solid rgb(100,100,100) 0px; font-size: 20px" >登记</el-button>
+ </div>
+
+ </div>
+
+</body>
+
+<script>
+ var app_vue = new Vue({
+ el:'#app',
+ data:{
+ devNameList: [],
+ devIdList:[],
+ selectDevName:'',
+ selectDevId:'',
+ // 图片父容器高度
+ bannerHeight :1000,
+ // 浏览器宽度
+ screenWidth :0,
+ userId:''
+ },
+
+ methods:{
+ indexChange: function (pre, next) {
+ var _self = this;
+ var devIdListTmp = _self.devIdList;
+ _self.selectDevId=devIdListTmp[pre];
+ // console.log(_self.selectDevId)
+
+ },
+ openDoor:function () {
+ var devId = app_vue.selectDevId;
+ app_openDoor(devId);
+ },
+ setSize:function () {
+ // 通过浏览器宽度(图片宽度)计算高度
+ this.bannerHeight = this.screenWidth;
+ },
+ },
+ created:function(){
+ var _self = this;
+ // 首次加载时,需要调用一次
+ _self.screenWidth = window.innerWidth;
+ _self.setSize();
+
+ var userId='[[${userId}]]';
+ _self.userId = userId;
+
+
+ }
+
+ })
+
+ function app_openDoor(devId) {
+
+ layer.confirm('你确定要登记吗?',{icon: 3,title: '请确认',offset: '30%'},function (index) {
+ $.ajax({
+ type: "get",
+ dataType: "json",
+ url:encodeURI("[[@{/app/getvistor}]]"),
+ success:function (ret) {
+ if(ret.retcode==1){
+ alert(ret.retmsg);
+ }
+ }
+ })
+ });
+
+ }
+
+ // 窗口大小发生改变时,调用一次
+ window.onresize = function(){
+ app_vue.screenWidth = window.innerWidth;
+ app_vue.setSize();
+ }
+
+
+
+
+</script>
+
+<style>
+
+ .el-carousel__item h3 {
+ color: #ff3366;
+ font-size: 14px;
+ opacity: 0.75;
+ line-height: 300px;
+ margin: 0;
+ /*background-color:#66cccc;
+ border: 0px solid #e5e5e5;
+ width: 50%;
+ left: 10%;
+ height: 100%;*/
+ }
+
+ .el-carousel__item:nth-child(2n) {
+ background-color: #ffffff;
+ }
+
+ .el-carousel__item:nth-child(2n+1) {
+ background-color: #ffffff;
+ }
+
+ .el-carousel__item .Carousel{
+ border-bottom: 1px solid #f1f4f8;
+ }
+</style>
\ No newline at end of file
diff --git a/src/main/resources/templates/apph5/getinoutflag.html b/src/main/resources/templates/apph5/getinoutflag.html
new file mode 100644
index 0000000..f34d378
--- /dev/null
+++ b/src/main/resources/templates/apph5/getinoutflag.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
+
+<head>
+ <title>首页</title>
+ <!--<meta name="_csrf_header" th:content="${_csrf.headerName}" />
+ <meta name="_csrf_token" th:content="${_csrf.parameterName}" th:value="${_csrf.token}" />-->
+ <meta charset="utf-8"/>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="/static/libs/layui/css/layui.css" th:href="@{/static/libs/layui/css/layui.css}"/>
+
+ <link rel="stylesheet" href="/static/res/assets/plugins/element-ui/theme-default/index.css" th:href="@{/static/res/assets/plugins/element-ui/theme-default/index.css}"/>
+
+ <!--<script type="text/javascript" th:src="@{/static/libs/jquery/jquery-3.2.1.min.js}"></script>-->
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.min.js}"></script>
+ <!--<script type="text/javascript" th:src="@{/static/libs/layui/layui.js}"></script>-->
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.form.js}"></script>
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/layer/layer.js}"></script>
+ <script type="text/javascript" th:src="@{/static/res/assets/js/vue.min.js}"></script>
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/element-ui/index.js}"></script>
+
+
+</head>
+
+<body>
+
+ <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>
+ <!--动态将图片轮播图的容器高度设置成与图片一致-->
+
+ <el-button type="success" @click="openDoor1" style=" display:block;margin:0 auto;width:100px;height:100px;border-radius:50px;border:solid rgb(100,100,100) 0px; font-size: 20px" >进门登记</el-button>
+ <el-button type="success" @click="openDoor" style=" display:block;margin:0 auto;width:100px;height:100px;border-radius:50px;border:solid rgb(100,100,100) 0px; font-size: 20px" >出门登记</el-button>
+ </div>
+
+ </div>
+
+</body>
+
+<script>
+ var app_vue = new Vue({
+ el:'#app',
+ data:{
+ devNameList: [],
+ devIdList:[],
+ selectDevName:'',
+ selectDevId:'',
+ // 图片父容器高度
+ bannerHeight :1000,
+ // 浏览器宽度
+ screenWidth :0,
+ userId:''
+ },
+
+ methods:{
+ indexChange: function (pre, next) {
+ var _self = this;
+ var devIdListTmp = _self.devIdList;
+ _self.selectDevId=devIdListTmp[pre];
+ // console.log(_self.selectDevId)
+
+ },
+ openDoor1:function () {
+ app_openDoor(1);
+ },openDoor:function () {
+ app_openDoor(2);
+ },
+ setSize:function () {
+ // 通过浏览器宽度(图片宽度)计算高度
+ this.bannerHeight = this.screenWidth;
+ },
+ },
+ created:function(){
+ var _self = this;
+ // 首次加载时,需要调用一次
+ _self.screenWidth = window.innerWidth;
+ _self.setSize();
+
+ var userId='[[${userId}]]';
+ _self.userId = userId;
+
+
+ }
+
+ })
+
+ function app_openDoor(devId) {
+
+ layer.confirm('你确定要生成二维码吗?',{icon: 3,title: '请确认',offset: '30%'},function (index) {
+ window.location = "[[@{/app/getqrcode?inoutflag=}]]"+devId;
+ });
+
+ }
+
+ // 窗口大小发生改变时,调用一次
+ window.onresize = function(){
+ app_vue.screenWidth = window.innerWidth;
+ app_vue.setSize();
+ }
+
+
+
+
+</script>
+
+<style>
+
+ .el-carousel__item h3 {
+ color: #ff3366;
+ font-size: 14px;
+ opacity: 0.75;
+ line-height: 300px;
+ margin: 0;
+ /*background-color:#66cccc;
+ border: 0px solid #e5e5e5;
+ width: 50%;
+ left: 10%;
+ height: 100%;*/
+ }
+
+ .el-carousel__item:nth-child(2n) {
+ background-color: #ffffff;
+ }
+
+ .el-carousel__item:nth-child(2n+1) {
+ background-color: #ffffff;
+ }
+
+ .el-carousel__item .Carousel{
+ border-bottom: 1px solid #f1f4f8;
+ }
+</style>
\ No newline at end of file
diff --git a/src/main/resources/templates/apph5/visitorcode.html b/src/main/resources/templates/apph5/visitorcode.html
new file mode 100644
index 0000000..60edccd
--- /dev/null
+++ b/src/main/resources/templates/apph5/visitorcode.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
+
+<head>
+ <title>首页</title>
+ <!--<meta name="_csrf_header" th:content="${_csrf.headerName}" />
+ <meta name="_csrf_token" th:content="${_csrf.parameterName}" th:value="${_csrf.token}" />-->
+ <meta charset="utf-8"/>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="/static/libs/layui/css/layui.css" th:href="@{/static/libs/layui/css/layui.css}"/>
+
+ <link rel="stylesheet" href="/static/res/assets/plugins/element-ui/theme-default/index.css"
+ th:href="@{/static/res/assets/plugins/element-ui/theme-default/index.css}"/>
+ <link rel="stylesheet" href="/static/res/assets/css/wxpage.css"
+ th:href="@{/static/res/assets/css/wxpage.css}"/>
+
+ <!--<script type="text/javascript" th:src="@{/static/libs/jquery/jquery-3.2.1.min.js}"></script>-->
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.min.js}"></script>
+ <!--<script type="text/javascript" th:src="@{/static/libs/layui/layui.js}"></script>-->
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.form.js}"></script>
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/layer/layer.js}"></script>
+ <script type="text/javascript" th:src="@{/static/res/assets/js/vue.min.js}"></script>
+ <script type="text/javascript" th:src="@{/static/res/assets/js/qrcode.min.js}"></script>
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/element-ui/index.js}"></script>
+
+
+</head>
+
+<script type="text/javascript">
+ setInterval(function () {
+ window.location.reload();
+ }, 60000);
+
+ $(function () {
+
+
+ var qcode = $("#myText").val();
+ if (undefined != qcode && null != qcode && "" != qcode) {
+ var qrcode = new QRCode(document.getElementById("qrcode"), {
+ render : "canvas",
+ text: qcode,
+ width: 220,
+ height: 220,
+ colorDark: "#000000",
+ colorLight: "#ffffff",
+ correctLevel: QRCode.CorrectLevel.H
+ });
+ }
+ var inoutflag = $("#inoutflag").val();
+
+ if (inoutflag == 1) {
+ $("#title").text("进门登记码")
+ } else {
+ $("#title").text("出门登记码")
+
+ }
+
+ });
+</script>
+<style>
+ body {
+ background-color: #ffffff;
+ }
+
+</style>
+</html>
+<body class="page" style="text-align: center">
+<div class="topbar">
+ <p id="title" class="el-message-box__title" style="text-align: center"></p>
+ <a href="javascript:window.location.reload();"><span class="refresh"></span></a>
+</div>
+
+<div style="text-align: center;padding: 30px;">
+ <input type="hidden" id="myText" th:value="${qrcode}"/>
+ <input type="hidden" id="inoutflag" th:value="${inoutflag}"/>
+</div>
+<div id="qrcode" class="qrcode-cc" ></div>
+<p style="text-align: center;margin-top:40px;color:#999;font-size: 14px">请将二维码对准扫描设备完成登记(如您使用扫一扫功能,请重新扫码)</p>
+<a href="javascript:window.location.reload();" class="weui-btn weui-btn_primary btn-bg"
+ style="align-content: center;margin: 20px">手动刷新二维码</a>
+
+</body>
+</style>
\ No newline at end of file
diff --git a/src/main/resources/templates/apph5/visitorresult.html b/src/main/resources/templates/apph5/visitorresult.html
new file mode 100644
index 0000000..14447fc
--- /dev/null
+++ b/src/main/resources/templates/apph5/visitorresult.html
@@ -0,0 +1,171 @@
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
+<head>
+ <title>首页</title>
+ <!--<meta name="_csrf_header" th:content="${_csrf.headerName}" />
+ <meta name="_csrf_token" th:content="${_csrf.parameterName}" th:value="${_csrf.token}" />-->
+ <meta charset="utf-8"/>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <!-- 引入样式 -->
+ <!--<link rel="stylesheet" href="https://unpkg.com/mint-ui/lib/style.css">-->
+ <link rel="stylesheet" href="/static/res/assets/plugins/mintui/style.css" th:href="@{/static/res/assets/plugins/mintui/style.css}">
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.min.js}"></script>
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/layer/layer.js}"></script>
+ <!-- 先引入 Vue -->
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/nutui/vue.min.js}"></script>
+ <!-- 引入组件库 -->
+ <script type="text/javascript" th:src="@{/static/res/assets/plugins/mintui/index.js}"></script>
+
+ <!--<script src="https://unpkg.com/vue/dist/vue.js"></script>
+ <script src="https://unpkg.com/mint-ui/lib/index.js"></script>-->
+</head>
+<body>
+<div id="app" >
+ <div class="page-title" style="text-align:center; font-size: 24px;color: #FF8247">登记结果</div><br>
+ <div class="mintui-success" id="msg"></div>
+ <input type="hidden" id="issuccess" th:value="${issuccess}">
+
+</div>
+</body>
+
+<script>
+ $(function () {
+
+ if(inoutflag==1){
+ $("#msg").html("<p class='mintui-success'>登记成功</p>")
+ }else {
+ $("#msg").html("<p class='mintui-success'>登记失败</p>")
+ }
+
+ });
+ var mint_vue = new Vue({
+ el: '#app',
+ data:{
+ devList:[],
+ userId:'',
+ selectDevId:'',
+ devName:'',
+ },
+ methods: {
+ openDoor:function (devId) {
+ mint_openDoor(devId);
+ },
+ loadListData:function (devName) {
+ mint_searchByDevName(devName);
+ },
+
+ },
+ watch:{
+ devName:function(newvs,oldvs){
+
+ if(!newvs){
+ mint_searchByDevName('');
+ }
+ }
+ },
+ created:function(){
+ var _self = this;
+
+ var userId='[[${userId}]]';
+ _self.userId = userId;
+
+
+ $.ajax({
+ type: "get",
+ dataType: "json",
+ url: "[[@{/app/loadAppDevList?userId=}]]"+userId,
+ success: function (ret) {
+ var ut = ret.devList;
+ if (ut == null){
+ confirm("不具有开门权限");
+ return;
+ }
+ var devs = [];
+ var names = [];
+ var ids = [];
+ for (var i = 0; i < ut.length; i++) {
+ devs.push({
+ label:ut[i].devname,
+ value:ut[i].deviceid,
+ building:ut[i].buildingname
+ });
+ names.push(ut[i].devname);
+ ids.push(ut[i].deviceid);
+ }
+ _self.devList = devs;
+
+
+ }
+ })
+ }
+
+
+ })
+
+
+ function mint_openDoor(devId) {
+ var userId = mint_vue.userId;
+ console.log(userId);
+ layer.confirm('你确定要开启此门吗?',{icon: 3,title: '请确认',offset: '30%'},function (index) {
+ $.ajax({
+ type: "get",
+ dataType: "json",
+ url:encodeURI("[[@{/app/openDoorById?devId=}]]" +devId+"&userId="+userId),
+ success:function (ret) {
+ if (ret.message == undefined){
+ layer.msg('用户认证已过期,请重新登录',{icon: 2,time:1000});
+ window.location = "[[@{/login}]]";
+ return;
+ }
+ if (ret.message != "") {
+ layer.msg(ret.message, {icon: 2, time: 2000});
+ } else {
+ layer.msg('开门成功', {icon: 1, time: 2000});
+ }
+ }
+ })
+ });
+
+ }
+
+ function mint_searchByDevName(devName) {
+ var userId = mint_vue.userId;
+ $.ajax({
+ type: "get",
+ dataType: "json",
+ url: "[[@{/app/searchByDevName?userId=}]]"+userId+"&devName="+devName,
+ success: function (ret) {
+ var ut = ret.devNameList;
+ if (ut == null) {
+ confirm("没有对应设备!");
+ return;
+ }
+ var devs = [];
+ var names = [];
+ var ids = [];
+ for (var i = 0; i < ut.length; i++) {
+ devs.push({
+ label: ut[i].devname,
+ value: ut[i].deviceid,
+ building: ut[i].buildingname
+ });
+ names.push(ut[i].devname);
+ ids.push(ut[i].deviceid);
+ }
+ mint_vue.devList = devs;
+ }
+ })
+ }
+</script>
+<style>
+ .mint-search{
+ height:50px;
+ }
+
+ .mint-searchbar{
+ padding:1px 1px 1px 1px;
+ box-sizing: border-box
+ }
+</style>
+</html>
diff --git a/src/main/resources/templates/visitormanage/customer/index.html b/src/main/resources/templates/visitormanage/customer/index.html
new file mode 100644
index 0000000..298f712
--- /dev/null
+++ b/src/main/resources/templates/visitormanage/customer/index.html
@@ -0,0 +1,200 @@
+<div class="layui-card">
+ <div class="layui-card-header">
+ <h2 class="header-title">访客登记管理</h2>
+ <span class="layui-breadcrumb pull-right">
+ <a href="#">访客登记管理</a>
+ <a><cite>访客登记管理</cite></a>
+ </span>
+ </div>
+ <div class="layui-card-body">
+ <div class="layui-form toolbar">
+ 搜索:
+ <input id="visitor-search-value" class="layui-input search-input" type="text" placeholder="输入姓名"/> 
+ <select id="visitor-search-inoutflag" class="layui-input search-input" type="" >
+ <option value="">出入状况</option>
+ <option value="1">入</option>
+ <option value="2">出</option>
+ </select> 
+ <input id="visitor-search-startdate" class="layui-input search-input" type="date" /> 
+ <label>~ </label>
+ <input id="visitor-search-enddate" class="layui-input search-input" type="date" /> 
+ <button id="customer-btn-search" class="layui-btn icon-btn" data-type="search"><i class="layui-icon"></i>搜索
+ </button>
+ <!-- <button id="customer-btn-import" class="layui-btn icon-btn" ><i class="layui-icon"></i>批量导入</button>-->
+ <!-- <a id="customer-btn-export" href="javascript:void(0);" class="layui-btn layui-btn-primary" >导出</a>-->
+ </div>
+ <table class="layui-table" id="customer-table" lay-filter="customer-table"></table>
+ </div>
+</div>
+<input hidden th:value="${custtypelist}" id="custtypelist">
+<input hidden th:value="${deptlist}" id="deptlist">
+<script>
+
+ var ctlist=$("#custtypelist").val();
+ var custtypelist=JSON.parse(ctlist);
+ var dplist=$("#deptlist").val();
+ var deptlist=JSON.parse(dplist);
+ layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
+ let form = layui.form;
+ let table = layui.table;
+ let admin = layui.admin;
+
+ form.render('select');
+
+ // 渲染表格
+ table.render({
+ elem: '#customer-table',
+ url: '[[@{/visitor/list}]]',
+ page: true,
+ minWidth: 80,
+ cols: [
+ [
+ {field: 'nickname', title: '昵称'},
+
+
+ /*{
+ field: 'checkstatus', title: '审核状态', align: 'center', width: 120, sort: true, templet: function (d) {
+ if ('uncheck' == d.checkstatus) {
+ return '<span class="layui-badge layui-bg-orange">待审核</span>'
+ } else if ('normal' == d.checkstatus) {
+ return '<span class="layui-badge layui-bg-green">成功</span>';
+ } else if ('fail' == d.checkstatus) {
+ return '<span class="layui-badge layui-bg-gray">失败</span>';
+ } else {
+ return d.checkstatus;
+ }
+ }
+ },*/
+ {
+ field: 'sex',
+ title: '性别',
+ align: 'center',
+ templet: function (item) {
+ if(item.sex==1){
+ return "男"
+ }else {
+ return "女"
+ }
+ }
+ },
+ {
+ field: 'transdate', width:200, title: '日期',align: 'center', templet: function (item) {
+ return item.transdate.substring(0,4)+"-"+item.transdate.substring(4,6)+"-"+item.transdate.substring(6,8);
+ }
+ },{
+ field: 'transtime', width:200, title: '时间', align: 'center',templet: function (item) {
+ return item.transtime.substring(0,2)+":"+item.transtime.substring(2,4)+":"+item.transtime.substring(4,6);
+ }
+ },{
+ field: 'inoutflag', width:100, title: '出入状况',align: 'center', templet: function (item) {
+ if(item.inoutflag==1){
+ return "入"
+ }else {
+ return "出"
+ } }
+ },
+ {field: 'city', align: 'center', title: '城市'},
+ {field: 'province', align: 'center', title: '省份'},
+ {field: 'country', align: 'center', title: '国家'}
+ ]
+ ]
+ });
+ $('#customer-btn-export').click(function () {
+ var url = '[[@{/customer/export}]]';
+ /* $("#form").attr("action",url);
+
+ $("#form").submit();*/
+
+ $("#customer-btn-export").attr("href", url );
+ $("#customer-btn-export")[0].click();
+ });
+ // 搜索按钮点击事件
+ $('#customer-btn-search').click(function () {
+ let key = $('#visitor-search-value').val().trim();
+ let inoutflag = $('#visitor-search-inoutflag').val().trim();
+ let startdate = $('#visitor-search-startdate').val().trim();
+ let enddate = $('#visitor-search-enddate').val().trim();
+ if(enddate!=null&&enddate!=""){
+ if(startdate!=null&&startdate!=""){
+ if(startdate>enddate){
+ alert("请输入正确的日期")
+ return;
+ }
+ }
+
+ }
+ table.reload('customer-table', {where: {searchkey: key,inoutflag: inoutflag,startdate:startdate,enddate:enddate }, page: {curr: 1}});
+ });
+ $('#customer-btn-add').click(function () {
+ showModel();
+ });
+ /* $('#customer-btn-import').click(function () {
+ showDownload();
+ });
+ let showDownload = function () {
+ let title ='导入';
+ admin.popupCenter({
+ title: title,
+ path: '[[@{/customer/loadimport}]]',
+ finish: function () {
+ table.reload('customer-table', {});
+ }
+ });
+ };*/
+ let showModel = function (data) {
+ let title = data ? '修改人员信息' : '添加人员信息';
+ admin.putTempData('t_cust', data);
+ admin.popupCenter({
+ title: title,
+ path: '[[@{/customer/loadadd}]]',
+ finish: function () {
+ table.reload('customer-table', {});
+ }
+ });
+ };
+
+
+ // 工具条点击事件
+ table.on('tool(customer-table)', function (obj) {
+ let data = obj.data;
+ let layEvent = obj.event;
+ console.log(data);
+ if (layEvent === 'edit') {
+ showModel(data);
+ } else if (layEvent === 'del') {
+ showDelete(data);
+ }
+ });
+ let showDelete = function (data) {
+ console.log(data);
+ layer.confirm('确定要删除吗?', function (i) {
+ layer.close(i);
+ layer.load(2);
+ let token = $("meta[name='_csrf_token']").attr("value");
+ admin.go('[[@{/customer/delete}]]', {
+ custid: data.custid,
+ _csrf: token
+ }, function (data) {
+ console.log(data.code);
+ layer.closeAll('loading');
+ if (data.code == 200) {
+ layer.msg(data.msg, {icon: 1});
+ } else if (data.code == 401) {
+ layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+ location.replace('/login');
+ }, 1000);
+ return;
+ } else {
+ layer.msg(data.msg, {icon: 2});
+ }
+ table.reload('customer-table', {});
+ }, function (ret) {
+ console.log(ret);
+ layer.closeAll('loading');
+ layer.msg('请求失败了,请稍后再试', {icon: 2});
+ });
+ });
+ };
+
+ });
+</script>