diff --git a/build.gradle b/build.gradle
index 904d15f..c3e92ce 100644
--- a/build.gradle
+++ b/build.gradle
@@ -57,7 +57,10 @@
     compile group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: '3.10.1'
     compile group: 'org.apache.poi', name: 'poi-scratchpad', version: '3.10.1'
     compile 'com.supwisdom:payapi-sdk:e4bf762'
+    compile group: 'org.springframework.security.oauth', name: 'spring-security-oauth2', version: '2.3.4.RELEASE'
 
+
+    implementation 'com.github.penggle:kaptcha:2.3.2'
     implementation 'org.springframework.boot:spring-boot-devtools'
     implementation 'org.springframework.boot:spring-boot-starter-tomcat'
     implementation 'org.springframework.boot:spring-boot-starter-data-redis'
diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index 77d4185..84dffed 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -8,7 +8,7 @@
 #logging.level.org.hibernate.SQL=DEBUG
 # Postgresql settings
 spring.datasource.platform=postgresql
-spring.datasource.url=jdbc:postgresql://172.28.201.101:25432/restauranttest
+spring.datasource.url=jdbc:postgresql://172.28.201.70:15432/restaurantdev
 spring.datasource.username=payapi
 spring.datasource.password=123456
 database.dbtype=postgresql
diff --git a/src/main/java/com/supwisdom/dlpay/framework/KaptchaConfig.java b/src/main/java/com/supwisdom/dlpay/framework/KaptchaConfig.java
new file mode 100644
index 0000000..c69dc38
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/KaptchaConfig.java
@@ -0,0 +1,29 @@
+package com.supwisdom.dlpay.framework;
+
+import com.google.code.kaptcha.impl.DefaultKaptcha;
+import com.google.code.kaptcha.util.Config;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.Properties;
+
+@Configuration
+public class KaptchaConfig {
+  @Bean
+  public DefaultKaptcha getDefaultKaptcha(){
+    DefaultKaptcha captchaProducer = new DefaultKaptcha();
+    Properties properties = new Properties();
+    properties.setProperty("kaptcha.border", "yes");
+    properties.setProperty("kaptcha.border.color", "105,179,90");
+    properties.setProperty("kaptcha.textproducer.font.color", "blue");
+    properties.setProperty("kaptcha.image.width", "110");
+    properties.setProperty("kaptcha.image.height", "40");
+    properties.setProperty("kaptcha.textproducer.font.size", "30");
+    properties.setProperty("kaptcha.session.key", "code");
+    properties.setProperty("kaptcha.textproducer.char.length", "4");
+    properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");
+    Config config = new Config(properties);
+    captchaProducer.setConfig(config);
+    return captchaProducer;
+  }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/TenantConfigDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/TenantConfigDao.java
new file mode 100644
index 0000000..b52710e
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/dao/TenantConfigDao.java
@@ -0,0 +1,12 @@
+package com.supwisdom.dlpay.framework.dao;
+
+import com.supwisdom.dlpay.framework.domain.TTenantConfig;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface TenantConfigDao extends CrudRepository<TTenantConfig, String> {
+  @Query("select t from TTenantConfig  t where t.cfgid='main'")
+  TTenantConfig getDefault();
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/ApiClientRedis.java b/src/main/java/com/supwisdom/dlpay/framework/domain/ApiClientRedis.java
index d7bb016..2904156 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/ApiClientRedis.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/ApiClientRedis.java
@@ -15,6 +15,8 @@
 
   String loginTimestamp;
 
+  String tenantId;
+
   public String getId() {
     return id;
   }
@@ -46,4 +48,12 @@
   public void setRoles(String roles) {
     this.roles = roles;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/filter/ValidateCodeFilter.java b/src/main/java/com/supwisdom/dlpay/framework/filter/ValidateCodeFilter.java
index 77242b9..1be683f 100755
--- a/src/main/java/com/supwisdom/dlpay/framework/filter/ValidateCodeFilter.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/filter/ValidateCodeFilter.java
@@ -1,16 +1,13 @@
 package com.supwisdom.dlpay.framework.filter;
 
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.supwisdom.dlpay.api.bean.JsonResult;
 import com.supwisdom.dlpay.exception.ValidateCodeException;
+import com.supwisdom.dlpay.framework.security.CodeUtil;
+import com.supwisdom.dlpay.framework.security.MyAuthenticationFailureHandler;
 import com.supwisdom.dlpay.framework.security.validate.ImageCodeUtil;
 import com.supwisdom.dlpay.framework.security.validate.VerifyCode;
 import com.supwisdom.dlpay.framework.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.security.web.authentication.AuthenticationFailureHandler;
-import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
 import org.springframework.stereotype.Component;
 import org.springframework.web.filter.OncePerRequestFilter;
 
@@ -22,37 +19,41 @@
 
 
 @Component("validateCodeFilter")
-public class ValidateCodeFilter extends OncePerRequestFilter{
+public class ValidateCodeFilter extends OncePerRequestFilter {
 
 	/**
 	 * 校验失败处理器
 	 */
 	@Autowired
-	private AuthenticationFailureHandler myAuthenticationFailureHandler;
-
-	/**
-	 * 校验成功处理器
-	 */
-	@Autowired
-	private AuthenticationSuccessHandler myAuthenticationSuccessHandler;
-	@Autowired
-	private ObjectMapper objectMapper;
+	private MyAuthenticationFailureHandler myAuthenticationFailureHandler;
 
 
 	@Override
 	protected void doFilterInternal(HttpServletRequest request,
-																	HttpServletResponse response, FilterChain filterChain)
+									HttpServletResponse response, FilterChain filterChain)
 			throws ServletException, IOException {
-		if (StringUtil.equals("/login/form", request.getRequestURI())
+		String context = request.getContextPath();
+		if (context == null || "" == context.trim()) {
+			context = "/";
+		}
+		if (request.getRequestURI().isEmpty()) {
+			filterChain.doFilter(request, response);
+			return;
+		}
+		String url = request.getRequestURI();
+		if (!"/".equals(context)) {
+			url = url.replace(context, "");
+		}
+		if (StringUtil.equals("/login/form", url)
 				&& StringUtil.equalsIgnoreCase(request.getMethod(), "post")) {
 			try {
 				validate(request);
 			} catch (ValidateCodeException e) {
-				response.setStatus(HttpStatus.OK.value());
-				response.setContentType("application/json;charset=UTF-8");
-				response.getWriter().write(objectMapper.writeValueAsString(JsonResult.error(400, e.getMessage())));
+				//response.setStatus(HttpStatus.OK.value());
+				//response.setContentType("application/json;charset=UTF-8");
+				//response.getWriter().write(objectMapper.writeValueAsString(JsonResult.error(400, e.getMessage())));
 				//response.sendError(HttpStatus.UNAUTHORIZED.value(),e.getMessage());
-				//myAuthenticationFailureHandler.onAuthenticationFailure(request, response, e);
+				myAuthenticationFailureHandler.onAuthenticationFailure(request, response, e);
 				return;
 			}
 		}
@@ -60,27 +61,32 @@
 	}
 
 	private void validate(HttpServletRequest request) throws ValidateCodeException {
-		VerifyCode imageCode = (VerifyCode) request.getSession().getAttribute(ImageCodeUtil.LOGIN_IMAGECODE_SESSIONKEY);
-		String inputCode;
-		try {
-			inputCode = request.getParameter("imageCode");
-		} catch (Exception e) {
-			throw new ValidateCodeException("获取验证码的值失败");
-		}
-		if (StringUtil.isEmpty(inputCode)) {
-			throw new ValidateCodeException("验证码不能为空");
-		}
-		if (null == imageCode) {
-			throw new ValidateCodeException("验证码不存在");
-		}
-		if (imageCode.isExpired()) {
-			request.getSession().removeAttribute(ImageCodeUtil.LOGIN_IMAGECODE_SESSIONKEY);
-			throw new ValidateCodeException("验证码已过期");
-		}
-		if (!StringUtil.equalsIgnoreCase(imageCode.getText(), inputCode)) {
+		if (!CodeUtil.checkVerifyCode(request)) {
 			throw new ValidateCodeException("验证码不匹配");
+		} else {
+			request.getSession().removeAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
 		}
-		request.getSession().removeAttribute(ImageCodeUtil.LOGIN_IMAGECODE_SESSIONKEY);
+//    VerifyCode imageCode = (VerifyCode) request.getSession().getAttribute(ImageCodeUtil.LOGIN_IMAGECODE_SESSIONKEY);
+//    String inputCode;
+//    try {
+//      inputCode = request.getParameter("imageCode");
+//    } catch (Exception e) {
+//      throw new ValidateCodeException("获取验证码的值失败");
+//    }
+//    if (StringUtil.isEmpty(inputCode)) {
+//      throw new ValidateCodeException("验证码不能为空");
+//    }
+//    if (null == imageCode) {
+//      throw new ValidateCodeException("验证码不存在");
+//    }
+//    if (imageCode.isExpired()) {
+//      request.getSession().removeAttribute(ImageCodeUtil.LOGIN_IMAGECODE_SESSIONKEY);
+//      throw new ValidateCodeException("验证码已过期");
+//    }
+//    if (!StringUtil.equalsIgnoreCase(imageCode.getText(), inputCode)) {
+//      throw new ValidateCodeException("验证码不匹配");
+//    }
+//    request.getSession().removeAttribute(ImageCodeUtil.LOGIN_IMAGECODE_SESSIONKEY);
 	}
 
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/security/CodeUtil.java b/src/main/java/com/supwisdom/dlpay/framework/security/CodeUtil.java
new file mode 100644
index 0000000..ecfb7c9
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/security/CodeUtil.java
@@ -0,0 +1,47 @@
+package com.supwisdom.dlpay.framework.security;
+
+import javax.servlet.http.HttpServletRequest;
+
+public class CodeUtil {
+  /**
+   * 将获取到的前端参数转为string类型
+   *
+   * @param request
+   * @param key
+   * @return
+   */
+  public static String getString(HttpServletRequest request, String key) {
+    try {
+      String result = request.getParameter(key);
+      if (result != null) {
+        result = result.trim();
+      }
+      if ("".equals(result)) {
+        result = null;
+      }
+      return result;
+    } catch (Exception e) {
+      return null;
+    }
+  }
+
+  /**
+   * 验证码校验
+   *
+   * @param request
+   * @return
+   */
+  public static boolean checkVerifyCode(HttpServletRequest request) {
+    //获取生成的验证码
+    String verifyCodeExpected = (String) request.getSession()
+        .getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
+    System.out.println(verifyCodeExpected);
+    //获取用户输入的验证码
+    String verifyCodeActual = CodeUtil.getString(request, "imageCode");
+    System.out.println(verifyCodeActual);
+    if (verifyCodeActual == null || !verifyCodeActual.equals(verifyCodeExpected)) {
+      return false;
+    }
+    return true;
+  }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/security/MyAuthenticationFailureHandler.java b/src/main/java/com/supwisdom/dlpay/framework/security/MyAuthenticationFailureHandler.java
index f18d092..28e09ae 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/security/MyAuthenticationFailureHandler.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/security/MyAuthenticationFailureHandler.java
@@ -37,11 +37,11 @@
     } else if (exception instanceof ValidateCodeException) {
       errmsg = exception.getMessage();
     }
-    setDefaultFailureUrl("/login");
-    super.onAuthenticationFailure(request, response, new ValidateCodeException(errmsg));
-    /*response.setTransStatus(HttpStatus.OK.value());
+  /*  setDefaultFailureUrl("/login");*/
+  /*  super.onAuthenticationFailure(request, response, new ValidateCodeException(errmsg));*/
+    response.setStatus(HttpStatus.OK.value());
     response.setContentType("application/json;charset=UTF-8");
-    response.getWriter().write(objectMapper.writeValueAsString(JsonResult.error(400, errmsg)));*/
+    response.getWriter().write(objectMapper.writeValueAsString(JsonResult.error(400, errmsg)));
   }
 
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/security/MyAuthenticationSuccessHandler.java b/src/main/java/com/supwisdom/dlpay/framework/security/MyAuthenticationSuccessHandler.java
index abaa46a..52388f1 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/security/MyAuthenticationSuccessHandler.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/security/MyAuthenticationSuccessHandler.java
@@ -2,9 +2,16 @@
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.supwisdom.dlpay.api.bean.JsonResult;
+import com.supwisdom.dlpay.framework.domain.TFunction;
+import com.supwisdom.dlpay.framework.domain.TOperLog;
+import com.supwisdom.dlpay.framework.domain.TOperator;
+import com.supwisdom.dlpay.framework.util.DateUtil;
+import com.supwisdom.dlpay.system.service.FunctionService;
+import com.supwisdom.dlpay.system.service.OperatorService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.core.Authentication;
+import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
 import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;
 import org.springframework.stereotype.Component;
@@ -16,17 +23,36 @@
 
 @Component("myAuthenctiationSuccessHandler")
 public class MyAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {
-  @Autowired
-  private ObjectMapper objectMapper;
+    @Autowired
+    private ObjectMapper objectMapper;
+    @Autowired
+    private OperatorService operatorService;
+    @Autowired
+    private FunctionService functionService;
 
-  @Override
-  public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
-                                      Authentication authentication) throws IOException, ServletException {
+    @Override
+    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
+                                        Authentication authentication) throws IOException, ServletException {
 
-    logger.info("登录成功");
-    //TODO:记录日志
-    response.setStatus(HttpStatus.OK.value());
-    response.setContentType("application/json;charset=UTF-8");
-    response.getWriter().write(objectMapper.writeValueAsString(JsonResult.ok("登录成功")));
-  }
+        logger.info("登录成功");
+        //TODO:记录日志
+        UserDetails userDetails = (UserDetails) authentication.getPrincipal();
+        if (userDetails != null) {
+            TOperator operator = operatorService.getOperatorByCode(userDetails.getUsername());
+            TOperLog log = new TOperLog();
+            log.setLogdate(DateUtil.getNow());
+            log.setOperid(operator.getOperid());
+            log.setOpername(operator.getOpercode());
+            log.setResname("登录成功");
+            log.setRespath("/login");
+            log.setFunctionname("登录成功");
+            operatorService.saveOperLog(log);
+        }
+        response.setStatus(HttpStatus.OK.value());
+        response.setContentType("application/json;charset=UTF-8");
+        response.getWriter().write(objectMapper.writeValueAsString(JsonResult.ok("登录成功")));
+    }
+
+
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/security/MyPermissionEvaluator.java b/src/main/java/com/supwisdom/dlpay/framework/security/MyPermissionEvaluator.java
index f19c136..4e96995 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/security/MyPermissionEvaluator.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/security/MyPermissionEvaluator.java
@@ -42,18 +42,21 @@
               if (resource != null) {
                 TPermission permission1 = roleService.findByRoleIdAndResid(role.getRoleId(), resource.getId());
                 if (permission1 != null) {
-                  TOperLog log = new TOperLog();
-                  log.setLogdate(DateUtil.getNow());
-                  log.setOperid(operator.getOperid());
-                  log.setOpername(operator.getOpercode());
-                  log.setResname(resource.getName());
-                  log.setRespath(resource.getUri());
-                  TFunction function = functionService.getFunctionById(resource.getFunctionId());
-                  if (function != null) {
-                    log.setFunctionid(function.getId());
-                    log.setFunctionname(function.getName());
+                  if(resource.getUri().indexOf("operator")!=-1){
+                    TOperLog log = new TOperLog();
+                    log.setLogdate(DateUtil.getNow());
+                    log.setOperid(operator.getOperid());
+                    log.setOpername(operator.getOpercode());
+                    log.setResname(resource.getName());
+                    log.setRespath(resource.getUri());
+                    TFunction function = functionService.getFunctionById(resource.getFunctionId());
+                    if (function != null) {
+                      log.setFunctionid(function.getId());
+                      log.setFunctionname(function.getName());
+                    }
+                    operatorService.saveOperLog(log);
                   }
-                  operatorService.saveOperLog(log);
+
                   return true;
                 }
               }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
index ef9dc20..0d6e626 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
@@ -55,8 +55,12 @@
     }
     @Override
     public JsonResult saveCustomer(TCustomer customer) {
+        List<TCustomer> cus=customerDao.findAllByCardno(customer.getCardno());
+        if(cus.size()!=0){
+            return JsonResult.error("用户"+cus.get(0).getCustname()+"已拥有该卡");
+        }
         customer.setLastsaved(DateUtil.getNow("yyyyMMddHHmmss"));
-        TCustomer cus=customerDao.save(customer);
+        customerDao.save(customer);
        /* if(null !=cus){
             String cardverno= systemUtilService.getCardverno();
             String date=DateUtil.getNow("yyyyMMdd");
@@ -129,15 +133,18 @@
         }
 
         String msg = "";
+        Integer successCnt=0;
+        Integer failCnt=0;
         for (Object[][] data : oList) {
             for (int i = 1; i < data.length; i++) {
 
                 if (StringUtil.isEmpty((String) data[i][0]) || StringUtil.isEmpty((String) data[i][1]) || StringUtil.isEmpty((String) data[i][2])) {
                     msg = msg + "第" + i + "行，关键字段缺失。<br/>";
+                    failCnt+=1;
                 } else if (customerDao.countByCardno((String) data[i][1]) >0) {
                     msg = msg + "第" + i + "行，该市名卡已存在。<br/>";
-                }
-                else{
+                    failCnt+=1;
+                } else{
                     TCustomer d=new TCustomer();
                     d.setCustname((String) data[i][0]);
                     String cardno=(String) data[i][1];
@@ -147,6 +154,7 @@
                         d.setPhone((String) data[i][3]);
                     }
                     sList.add(d);
+                    successCnt+=1;
                 }
             }
         }
@@ -163,6 +171,8 @@
 
             return JsonResult.ok("成功导入"+sList.size()+"条信息");
         }
+        msg="导入成功"+successCnt+"条，导入失败"+failCnt+"条<br/>"+msg;
+
         return JsonResult.error(String.format(Locale.CHINESE, msg));
     }
 
diff --git a/src/main/kotlin/com/supwisdom/dlpay/RestaurantApplication.kt b/src/main/kotlin/com/supwisdom/dlpay/RestaurantApplication.kt
index 46f5548..fdbdb46 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/RestaurantApplication.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/RestaurantApplication.kt
@@ -2,9 +2,15 @@
 
 import io.lettuce.core.ReadFrom
 import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.SpringApplication
 import org.springframework.boot.autoconfigure.SpringBootApplication
 import org.springframework.boot.autoconfigure.data.redis.RedisProperties
+import org.springframework.boot.builder.SpringApplicationBuilder
 import org.springframework.boot.runApplication
+import org.springframework.boot.web.servlet.ServletComponentScan
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
+import org.springframework.cache.annotation.EnableCaching
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient
 import org.springframework.context.annotation.Bean
 import org.springframework.context.annotation.Configuration
 import org.springframework.data.redis.connection.RedisConnectionFactory
@@ -16,7 +22,7 @@
 import org.springframework.data.redis.repository.configuration.EnableRedisRepositories
 import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer
 import org.springframework.data.redis.serializer.StringRedisSerializer
-
+import org.springframework.scheduling.annotation.EnableScheduling
 
 @Configuration
 @EnableRedisRepositories
@@ -54,10 +60,13 @@
     }
 }
 
-
+@EnableDiscoveryClient
+@ServletComponentScan
 @SpringBootApplication
 class RestaurantApplication
 
 fun main(args: Array<String>) {
     runApplication<RestaurantApplication>(*args)
 }
+
+
diff --git a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
index 10f6603..088c74d 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
@@ -1,9 +1,12 @@
 package com.supwisdom.dlpay.framework.controller
 
+import com.google.code.kaptcha.Producer
+import com.supwisdom.dlpay.exception.TransactionCheckException
 import com.supwisdom.dlpay.framework.ResponseBodyBuilder
 import com.supwisdom.dlpay.framework.core.JwtConfig
 import com.supwisdom.dlpay.framework.core.JwtTokenUtil
 import com.supwisdom.dlpay.framework.dao.ApiClientDao
+import com.supwisdom.dlpay.framework.dao.TenantConfigDao
 import com.supwisdom.dlpay.framework.domain.ApiClientRedis
 import com.supwisdom.dlpay.framework.domain.JwtRedis
 import com.supwisdom.dlpay.framework.domain.TOperator
@@ -13,26 +16,28 @@
 import com.supwisdom.dlpay.framework.security.validate.VerifyCode
 import com.supwisdom.dlpay.framework.service.CommonService
 import com.supwisdom.dlpay.framework.service.SystemUtilService
-import com.supwisdom.dlpay.framework.util.DateUtil
-import com.supwisdom.dlpay.framework.util.HmacUtil
-import com.supwisdom.dlpay.framework.util.TradeDict
+import com.supwisdom.dlpay.framework.util.*
 import com.supwisdom.dlpay.system.service.FunctionService
 import mu.KotlinLogging
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.http.HttpStatus
 import org.springframework.http.ResponseEntity
+import org.springframework.security.core.Authentication
 import org.springframework.security.core.annotation.AuthenticationPrincipal
 import org.springframework.security.core.context.SecurityContextHolder
 import org.springframework.security.core.userdetails.UserDetails
+import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer
+import org.springframework.security.oauth2.provider.OAuth2Authentication
 import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler
 import org.springframework.social.connect.web.HttpSessionSessionStrategy
 import org.springframework.stereotype.Controller
 import org.springframework.ui.Model
-import org.springframework.web.bind.annotation.GetMapping
-import org.springframework.web.bind.annotation.PathVariable
-import org.springframework.web.bind.annotation.RequestMapping
-import org.springframework.web.bind.annotation.RestController
+import org.springframework.web.bind.annotation.*
 import org.springframework.web.context.request.ServletWebRequest
+import java.awt.image.BufferedImage
+import java.io.IOException
+import java.lang.Exception
+import java.security.Principal
 import java.util.*
 import javax.imageio.ImageIO
 import javax.servlet.http.HttpServletRequest
@@ -57,25 +62,37 @@
     @Autowired
     lateinit var jwtConfig: JwtConfig
 
+
     @GetMapping(value = ["/gettoken", "/gettoken/{clientid}"])
-    fun loginInit(appid: String, @PathVariable clientid: String?): ResponseEntity<Any> {
+    fun loginInit(appid: String, @PathVariable clientid: String?,
+                  @RequestHeader(Constants.HEADER_TETANTID) tetantId: String?): ResponseEntity<Any> {
+
+     /*   tetantConfigDao.default?.also {
+            if (it.tenantId != tetantId) {
+                throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
+                        "租户ID错误")
+            }
+        } ?: throw TransactionCheckException(TradeErrorCode.BUSINESS_DEAL_ERROR,
+                "系统未配置租户信息")*/
+
         apiClientDao.findById(appid).run {
             if (!isPresent) {
                 return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build()
             }
-            if (get().status != "normal") {
+            if (get().status != TradeDict.STATUS_NORMAL) {
                 return ResponseEntity.ok(ResponseBodyBuilder.create()
-                        .fail(1, "API状态错误"))
+                        .fail(TradeErrorCode.BUSINESS_DEAL_ERROR, "API状态错误"))
             }
             get()
-        }.let {
+        }.let { api ->
             val token = generateRandomToken()
             val now = systemUtil.sysdatetime.hostdatetime
-            ApiClientRedis().apply {
-                id = if (clientid == null) appid else "$appid-$clientid"
-                loginTimestamp = now
-                roles = it.roles
-                this.token = HmacUtil.HMACSHA256(token, it.secret)
+            ApiClientRedis().also {
+                it.id = if (clientid == null) appid else "$appid-$clientid"
+                it.loginTimestamp = now
+                it.roles = api.roles
+                it.tenantId = tetantId
+                it.token = HmacUtil.HMACSHA256(token, api.secret)
             }.also {
                 apiClientRepository.save(it)
             }
@@ -103,9 +120,11 @@
             if (it.isPresent && checkSecretToken(it.get(), secret)) {
                 apiClientRepository.deleteById(requestId)
                 val token = JwtTokenUtil(jwtConfig).generateToken(
-                        mapOf("uid" to appid, "issuer" to "payapi",
+                        mapOf(Constants.JWT_CLAIM_UID to appid,
+                                "issuer" to "payapi",
                                 "audience" to (clientid ?: appid),
-                                "authorities" to it.get().roles.split(";")))
+                                Constants.JWT_CLAIM_TENANTID to it.get().tenantId,
+                                Constants.JWT_CLAIM_AUTHORITIES to it.get().roles.split(";")))
                 JwtRedis().apply {
                     jti = token.jti
                     uid = appid
@@ -138,9 +157,10 @@
             if (it.isPresent && it.get().status == TradeDict.STATUS_NORMAL) {
                 // 新证书
                 val token = JwtTokenUtil(jwtConfig).generateToken(
-                        mapOf("uid" to appid, "issuer" to "payapi",
+                        mapOf(Constants.JWT_CLAIM_UID to appid,
+                                "issuer" to "payapi",
                                 "audience" to jwt["audience"],
-                                "authorities" to it.get().roles.split(";")))
+                                Constants.JWT_CLAIM_AUTHORITIES to it.get().roles.split(";")))
                 JwtRedis().apply {
                     jti = token.jti
                     uid = appid
@@ -165,11 +185,40 @@
 @RestController
 class ValidateCodeController {
 
+    @Autowired
+    private lateinit var captchaProducer: Producer
+
     @GetMapping("/code/image")
     fun createCode(request: HttpServletRequest, response: HttpServletResponse) {
         val imageCode = VerifyCode(60)
         HttpSessionSessionStrategy().setAttribute(ServletWebRequest(request), ImageCodeUtil.LOGIN_IMAGECODE_SESSIONKEY, imageCode)
-        ImageIO.write(imageCode.image, "JPEG", response.outputStream)
+        val session = request.session
+        response.setDateHeader("Expires", 0)
+        response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate")
+        response.addHeader("Cache-Control", "post-check=0, pre-check=0")
+        response.setHeader("Pragma", "no-cache")
+        response.contentType = "image/jpeg"
+        //生成验证码
+        val capText = captchaProducer.createText()
+        session.setAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY, capText)
+        //向客户端写出
+        val bi = captchaProducer.createImage(capText);
+        ImageIO.write(bi, "JPEG", response.outputStream)
+        try {
+            response.outputStream.flush()
+        } catch (ex: Exception) {
+            response.outputStream.close()
+        }
+    }
+}
+
+@RestController
+class UserInforController {
+
+    @RequestMapping("/api/userinfor")
+    fun user(user: Principal): Principal {
+        System.out.println(user)
+        return user
     }
 }
 
@@ -186,6 +235,23 @@
     @GetMapping("/login")
     fun loginView() = "login"
 
+    @RequestMapping("/third/logout")
+    fun oauthLogout(request: HttpServletRequest, response: HttpServletResponse) {
+        val back = request.getParameter("redirect_uri")
+        SecurityContextLogoutHandler().logout(request, null, null);
+        try {
+            SecurityContextHolder.getContext().authentication = null
+            if (back != null) {
+                response.sendRedirect(back)
+            } else {
+                logger.debug { request.getHeader("referer") }
+                response.sendRedirect(request.getHeader("referer"))
+            }
+        } catch (e: IOException) {
+            e.printStackTrace()
+        }
+    }
+
     @GetMapping("/logout")
     fun logout(request: HttpServletRequest, response: HttpServletResponse): String {
         SecurityContextHolder.getContext().authentication?.also {
@@ -203,6 +269,7 @@
         model.addAttribute("payapiVersion", commonService.getSystemVersion())
         return "index"
     }
+
 }
 
 @Controller
@@ -212,7 +279,7 @@
      * 控制台
      */
     @GetMapping("/console")
-    fun console() :String{
+    fun console(): String {
         return "home/console"
     }
 
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index ce82feb..f761b5c 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -37,42 +37,43 @@
 INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('truss_time1', 1, '2359', '0000', '扎帐时间点1(HHmm)', '1001', 'TS');
 INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('truss_time2', 1, '2359', '0000', '扎帐时间点2(HHmm)', '1531', 'TS');
 INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('truss_time3', 1, '2359', '0000', '扎帐时间点3(HHmm)', '2131', 'TS');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('breakfast_price', 7, NULL, NULL, '免费就餐-早餐价格(单位:分)', '30', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('buscar_amt_interval', 7, NULL, NULL, '车载机调价单价(单位:分)', '50', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('buscar_banner', 7, NULL, NULL, '车载机欢迎标语', '测试大学', 'S');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('buscar_base_amt', 7, NULL, NULL, '车载机基本价(单位:分)', '30', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('buscar_period_pay_not_wice', 7, NULL, NULL, '车载机同卡消费时间间隔(单位:分)', '1', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('buscar_price_adjust', 7, NULL, NULL, '车载机是否调价(0不启用,1启用)', '1', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('communicate_time', 7, '255', '0', '终端请求超时时间(单位:秒)', '3', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('consume_fail_show_time', 7, '255', '0', '消费失败显示时间([0-255] 单位:秒)', '1', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('consume_show_time', 7, '255', '0', '消费结果显示时间([0-255] 单位:秒)', '1', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('control_flag', 7, '255', '0', '控制开关字节(8bit):[支付宝卡代扣][正扫][NFC][反扫][营业额] 例如:27为[11011] (NFC消费为关闭,其他功能都是启用) ', '15', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('credit_low_limit', 7, NULL, NULL, '卡授信额度阀值(单位:分)', '2000', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('day_sum_limit_amt', 7, '999999', '1', '日累计消费限额 ([1-999999] 单位:分)', '2000', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('dinner_price', 7, NULL, NULL, '免费就餐-晚餐价格(单位:分)', '25', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('dtl_query_mode', 7, NULL, NULL, '流水查询方式(0后台,1-本地)', '0', 'B');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('dtl_show_way', 7, NULL, NULL, '流水显示方式(0优化,1-详细)', '1', 'B');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('fixpay_consume_gap', 7, '255', '0', '定额消费同一张卡连续消费间隔时间([0-255] 单位:秒)', '30', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('heat_beat', 7, '3600', '1', '心跳间隔 ([1-3600] 单位:秒)', '20', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('limit_switch', 7, NULL, NULL, '卡限开关 (0-关闭，1-开启)', '1', 'B');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('lunch_price', 7, NULL, NULL, '免费就餐-午餐价格(单位：分)', '20', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('manage_passwd', 7, NULL, NULL, '终端维护密码(默认914387)', '914387', 'S');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('max_cardbal', 7, '99999999', '1', '最大卡余额 ([1-99999999] 单位:分)', '99999', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('max_offline_days', 7, '90', '0', '脱机使用最大天数 ([1-90] 单位:天)', '7', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('max_pay_cnt', 7, '999999', '1', '卡最大使用次数 ([1-999999])', '65535', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('min_cardbal', 7, '99999', '0', '最小卡余额 ([0-99999] 单位:分)', '1', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('offline_flag', 7, NULL, NULL, '脱机消费时限开关 (0-关闭， 1-开启)', '0', 'B');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('once_limit_amt', 7, NULL, NULL, '单笔消费限额 ([1-9999] 单位:分)', '1000', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('qrcode_url', 7, NULL, NULL, '二维码消费地址', 'http://ykt.supwisdom.com:9116/epay/wxpage/qrscan', 'S');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('qr_offline_enable', 7, NULL, NULL, '二维码脱机支持 0--不支持脱机扫码 1--支持脱机扫码', '1', 'B');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('return_flag', 7, NULL, NULL, '消费撤销开关 (0-关闭， 1-开启)', '1', 'B');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('revenue_way', 7, NULL, NULL, '营业额查询方式(0-按天查询,1-餐次查询)', '0', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('socket_switch', 7, NULL, NULL, '长连接是否启用(0不启用,1启用)', '1', 'B');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('submeal_consume_enable', 7, '255', '0', '免费就餐次数([0-255] )', '0', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('timeout', 7, '9999', '10', '超时时间 ([10-9999] 单位:秒)', '90', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('truss_time1', 7, '2359', '0000', '扎帐时间点1(HHmm)', '1001', 'TS');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('truss_time2', 7, '2359', '0000', '扎帐时间点2(HHmm)', '1531', 'TS');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('truss_time3', 7, '2359', '0000', '扎帐时间点3(HHmm)', '2131', 'TS');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('breakfast_price', 0, NULL, NULL, '免费就餐-早餐价格(单位:分)', '30', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('buscar_amt_interval', 0, NULL, NULL, '车载机调价单价(单位:分)', '50', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('buscar_banner', 0, NULL, NULL, '车载机欢迎标语', '测试大学', 'S');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('buscar_base_amt', 0, NULL, NULL, '车载机基本价(单位:分)', '30', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('buscar_period_pay_not_wice', 0, NULL, NULL, '车载机同卡消费时间间隔(单位:分)', '1', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('buscar_price_adjust', 0, NULL, NULL, '车载机是否调价(0不启用,1启用)', '1', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('communicate_time', 0, '255', '0', '终端请求超时时间(单位:秒)', '3', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('consume_fail_show_time', 0, '255', '0', '消费失败显示时间([0-255] 单位:秒)', '1', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('consume_show_time', 0, '255', '0', '消费结果显示时间([0-255] 单位:秒)', '1', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('control_flag', 0, '255', '0', '控制开关字节(8bit):[支付宝卡代扣][正扫][NFC][反扫][营业额] 例如:27为[11011] (NFC消费为关闭,其他功能都是启用) ', '15', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('credit_low_limit', 0, NULL, NULL, '卡授信额度阀值(单位:分)', '2000', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('day_sum_limit_amt', 0, '999999', '1', '日累计消费限额 ([1-999999] 单位:分)', '2000', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('dinner_price', 0, NULL, NULL, '免费就餐-晚餐价格(单位:分)', '25', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('dtl_query_mode', 0, NULL, NULL, '流水查询方式(0后台,1-本地)', '0', 'B');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('dtl_show_way', 0, NULL, NULL, '流水显示方式(0优化,1-详细)', '1', 'B');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('fixpay_consume_gap', 0, '255', '0', '定额消费同一张卡连续消费间隔时间([0-255] 单位:秒)', '30', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('heat_beat', 0, '3600', '1', '心跳间隔 ([1-3600] 单位:秒)', '20', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('limit_switch', 0, NULL, NULL, '卡限开关 (0-关闭，1-开启)', '1', 'B');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('lunch_price', 0, NULL, NULL, '免费就餐-午餐价格(单位：分)', '20', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('manage_passwd', 0, NULL, NULL, '终端维护密码(默认914387)', '914387', 'S');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('max_cardbal', 0, '99999999', '1', '最大卡余额 ([1-99999999] 单位:分)', '99999', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('max_offline_days', 0, '90', '0', '脱机使用最大天数 ([1-90] 单位:天)', '7', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('max_pay_cnt', 0, '999999', '1', '卡最大使用次数 ([1-999999])', '65535', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('min_cardbal', 0, '99999', '0', '最小卡余额 ([0-99999] 单位:分)', '1', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('offline_flag', 0, NULL, NULL, '脱机消费时限开关 (0-关闭， 1-开启)', '0', 'B');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('once_limit_amt', 0, NULL, NULL, '单笔消费限额 ([1-9999] 单位:分)', '1000', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('qrcode_url', 0, NULL, NULL, '二维码消费地址', 'http://ykt.supwisdom.com:9116/epay/wxpage/qrscan', 'S');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('qr_offline_enable', 0, NULL, NULL, '二维码脱机支持 0--不支持脱机扫码 1--支持脱机扫码', '1', 'B');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('return_flag', 0, NULL, NULL, '消费撤销开关 (0-关闭， 1-开启)', '1', 'B');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('revenue_way', 0, NULL, NULL, '营业额查询方式(0-按天查询,1-餐次查询)', '0', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('socket_switch', 0, NULL, NULL, '长连接是否启用(0不启用,1启用)', '1', 'B');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('submeal_consume_enable', 0, '255', '0', '免费就餐次数([0-255] )', '0', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('timeout', 0, '9999', '10', '超时时间 ([10-9999] 单位:秒)', '90', 'N');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('truss_time1', 0, '2359', '0000', '扎帐时间点1(HHmm)', '1001', 'TS');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('truss_time2', 0, '2359', '0000', '扎帐时间点2(HHmm)', '1531', 'TS');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('truss_time3', 0, '2359', '0000', '扎帐时间点3(HHmm)', '2131', 'TS');
+insert into "tb_devpara_group"(groupid,globalflag,groupname,lastsaved,verno) values(1,'t','默认参数组','',7);
 
 INSERT INTO "tb_dictionary"(dictval,dicttype,dictcaption,dicttypename) VALUES ('0', 'sexList', '女', '性别');
 INSERT INTO "tb_dictionary"(dictval,dicttype,dictcaption,dicttypename) VALUES ('1', 'sexList', '男', '性别');
@@ -91,8 +92,6 @@
 INSERT INTO "tb_function" (id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (11, NULL, 1, NULL, 'layui-icon-util', '/param/syspara', '全局参数配置', 1, 10);
 INSERT INTO "tb_function" (id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (12, NULL, 1, NULL, 'layui-icon-util', '/param/businesspara', '业务参数配置', 2, 10);
 INSERT INTO "tb_function" (id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (17, NULL, 1, NULL, 'layui-icon-util', '/param/apiclientpara', '应用参数配置', 3, 10);
-INSERT INTO "tb_function" (id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (8, NULL, 0, NULL, 'layui-icon-home', '#', '区域管理', 23, -1);
-INSERT INTO "tb_function" (id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (13, NULL, 1, NULL, 'layui-icon-home', '/area/index', '地区管理', 1, 8);
 INSERT INTO "tb_function" (id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (14, NULL, 0, NULL, 'layui-icon-app', '#', '设备管理', 8, -1);
 INSERT INTO "tb_function" (id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (15, NULL, 1, NULL, 'layui-icon-app', '/device/index', '注册设备', 1, 14);
 INSERT INTO "tb_function" (id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid) VALUES (16, NULL, 1, NULL, 'layui-icon-home', '/devicegroup/index', '设备组管理', 2, 14);
diff --git a/src/main/resources/templates/ologin.html b/src/main/resources/templates/ologin.html
new file mode 100644
index 0000000..8f9362e
--- /dev/null
+++ b/src/main/resources/templates/ologin.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+
+<html xmlns:th="http://www.thymeleaf.org">
+
+<head>
+    <title>统一身份认证</title>
+    <meta name="_csrf" th:content="${_csrf.token}"/>
+    <!-- default header name is X-CSRF-TOKEN -->
+    <meta name="_csrf_header" th:content="${_csrf.headerName}"/>
+    <link rel="stylesheet" type="text/css" th:href="@{/static/libs/layui/css/layui.css}"/>
+    <link rel="stylesheet" type="text/css" th:href="@{/static/custom/css/login.css}"/>
+</head>
+<body>
+<div class="login-wrapper">
+    <div class=" login-body">
+        <div class="layui-card">
+            <div class="layui-card-header">
+                <i class="layui-icon layui-icon-engine"></i>&nbsp;&nbsp;统一身份认证
+            </div>
+            <div class="layui-card-body layui-form layui-form-pane">
+                <p style="color:red;padding: 0 0 10px 0;" th:if="${session['SPRING_SECURITY_LAST_EXCEPTION']!=null and session['SPRING_SECURITY_LAST_EXCEPTION'].message!=null}" th:text="${session['SPRING_SECURITY_LAST_EXCEPTION'].message}"></p>
+                <form th:action="@{/login/form}" method="post">
+                    <div class="layui-form-item">
+                        <label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
+                        <div class="layui-input-block">
+                            <input name="username" type="text" lay-verify="required" placeholder="账号"
+                                   class="layui-input">
+                            <input type="hidden"
+                                   th:name="${_csrf.parameterName}"
+                                   th:value="${_csrf.token}"/>
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label"><i class="layui-icon layui-icon-password"></i></label>
+                        <div class="layui-input-block">
+                            <input name="password" type="password" lay-verify="required" placeholder="密码"
+                                   class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
+                        <div class="layui-input-block">
+                            <div class="layui-row inline-block">
+                                <div class="layui-col-xs7">
+                                    <input name="imageCode" type="text" placeholder="验证码"
+                                           class="layui-input">
+                                </div>
+                                <div class="layui-col-xs5" style="padding-left: 10px;">
+                                    <img width="100px" height="35px" class="login-captcha" th:src="@{/code/image}">
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <!--<a href="javascript:;" class="layui-link">帐号注册</a>-->
+                        <a href="javascript:;" class="layui-link pull-right">忘记密码？</a>
+                    </div>
+                    <div class="layui-form-item">
+                        <button type="submit" lay-filter="login-submit" class="layui-btn layui-btn-fluid" lay-submit>登 录</button>
+                    </div>
+                </form>
+                <!--<div class="layui-form-item login-other">-->
+                <!--<label>第三方登录</label>-->
+                <!--<a href="javascript:;"><i class="layui-icon layui-icon-login-qq"></i></a>-->
+                <!--<a href="javascript:;"><i class="layui-icon layui-icon-login-wechat"></i></a>-->
+                <!--<a href="javascript:;"><i class="layui-icon layui-icon-login-weibo"></i></a>-->
+                <!--</div>-->
+            </div>
+        </div>
+    </div>
+
+    <div class="login-footer">
+        <p>© 2019 <a href="javascript:;" target="_blank">上海树维信息科技有限公司 版权所有</a></p>
+        <!--<p>-->
+        <!--<span><a href="javascript:;" target="_blank">前往github</a></span>-->
+        <!--<span><a href="https://gitee.com/andyzy/zy-admin.git" target="_blank">前往gitee</a></span>-->
+        <!--<span><a href="javascript:;" target="_blank">文档说明</a></span>-->
+        <!--</p>-->
+    </div>
+</div>
+
+<script type="text/javascript"  th:src="@{/static/libs/layui/layui.js}" ></script>
+<script>
+    layui.config({
+        base: 'custom/module/'
+    }).use(['form'], function () {
+        var $ = layui.jquery;
+
+        // 图形验证码
+        $('.login-captcha').click(function () {
+            this.src = this.src + '?t=' + (new Date).getTime();
+        });
+    });
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/restaurant/customer/form.html b/src/main/resources/templates/restaurant/customer/form.html
index 426d576..d3f2230 100644
--- a/src/main/resources/templates/restaurant/customer/form.html
+++ b/src/main/resources/templates/restaurant/customer/form.html
@@ -2,14 +2,14 @@
 <form id="customer-form" lay-filter="form" class="layui-form model-form">
     <input name="custid" id="customer-custid" type="hidden"/>
     <div class="layui-form-item">
-        <label class="layui-form-label">姓名</label>
+        <label class="layui-form-label"><span style="color: red">* </span>姓名</label>
         <div class="layui-input-block">
             <input name="custname" placeholder="请输入" type="text" class="layui-input" maxlength="20"
                    lay-verify="required|custname" required/>
         </div>
     </div>
     <div class="layui-form-item">
-        <label class="layui-form-label">市名卡号</label>
+        <label class="layui-form-label"><span style="color: red">* </span>市名卡号</label>
         <div class="layui-input-block">
             <input name="cardno" placeholder="请输入" type="text" class="layui-input" maxlength="20"
                    lay-verify="required|number" required/>
@@ -17,7 +17,7 @@
     </div>
 
     <div class="layui-form-item">
-        <label class="layui-form-label">银行卡号</label>
+        <label class="layui-form-label"><span style="color: red">* </span>银行卡号</label>
         <div class="layui-input-block">
             <input name="bankcardno" placeholder="请输入" type="text" class="layui-input" maxlength="30"
                    lay-verify="required|number" required/>
diff --git a/src/main/resources/templates/restaurant/device/form.html b/src/main/resources/templates/restaurant/device/form.html
index e5ee279..1f3d234 100644
--- a/src/main/resources/templates/restaurant/device/form.html
+++ b/src/main/resources/templates/restaurant/device/form.html
@@ -2,7 +2,7 @@
 <form id="device-form" lay-filter="form" class="layui-form model-form">
     <input name="id" id="device-id" type="hidden"/>
     <div class="layui-form-item">
-        <label class="layui-form-label">设备物理ID</label>
+        <label class="layui-form-label"><span style="color: red">* </span>设备物理ID</label>
         <div class="layui-input-block">
             <input name="devphyid" placeholder="不能重复" type="text" class="layui-input" maxlength="20"
                    lay-verify="required|devphyid" required/>
@@ -19,7 +19,7 @@
 
 
     <div class="layui-form-item">
-        <label class="layui-form-label">所属商户ID</label>
+        <label class="layui-form-label"><span style="color: red">* </span>所属商户ID</label>
         <div class="layui-input-block">
             <input name="shopid" placeholder="请输入" type="text" class="layui-input"/>
         </div>
diff --git a/src/main/resources/templates/restaurant/device/import.html b/src/main/resources/templates/restaurant/device/import.html
index 4d9f10d..6249a7a 100644
--- a/src/main/resources/templates/restaurant/device/import.html
+++ b/src/main/resources/templates/restaurant/device/import.html
@@ -58,7 +58,6 @@
             console.log(formData);
             layer.load(2);
             let token = $("meta[name='_csrf_token']").attr("value");
-            debugger
             $.ajax({
                 type: "POST",
                 url: url,
diff --git a/src/main/resources/templates/restaurant/device/index.html b/src/main/resources/templates/restaurant/device/index.html
index 26d5449..a63f279 100644
--- a/src/main/resources/templates/restaurant/device/index.html
+++ b/src/main/resources/templates/restaurant/device/index.html
@@ -16,12 +16,12 @@
             <button id="device-btn-import" class="layui-btn icon-btn" ><i class="layui-icon"></i>批量导入</button>
 
         </div>
-        <table class="layui-table" id="device-table" lay-filter="table"></table>
+        <table class="layui-table" id="device-table" lay-filter="device-table"></table>
     </div>
 </div>
 
-<script type="text/html" id="dev-tpl-state">
-    <input type="checkbox" lay-filter="dev-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="正常|注销"
+<script type="text/html" id="device-dev-tpl-state">
+    <input type="checkbox" lay-filter="device-dev-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="正常|注销"
            {{d.state=='1'?'checked':''}} />
 </script>
 <script>
@@ -44,10 +44,10 @@
                     {field: 'devphyid', sort: true, width: 200, title: '设备物理id'},
                     {field: 'shopid', sort: true, width: 200, title: '商户id'},
                     {field: 'factoryid', sort: true, width: 200, title: '设备厂商'},
-                    {field: 'state', title: '状态', sort: true, width: 100, templet: '#dev-tpl-state'},
+                    {field: 'state', title: '状态', sort: true, width: 100, templet: '#device-dev-tpl-state'},
                     {
                         field: 'id', align: 'center', title: '操作', fixed: 'right', templet: function (item) {
-                            return ' <a class="layui-btn  layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a> ';
+                            return ' <a class="layui-btn  layui-btn-xs" lay-event="device-edit"><i class="layui-icon layui-icon-edit"></i>编辑</a> ';
                         }
                     }
                 ]
@@ -59,7 +59,7 @@
             table.reload('device-table', {where: {searchkey: key}, page: {curr: 1}});
         });
         $('#device-btn-add').click(function () {
-            showModel();
+            showDevModel();
         });
         $('#device-btn-import').click(function () {
             showDownload();
@@ -74,7 +74,7 @@
                 }
             });
         };
-        let showModel = function (data) {
+        let showDevModel = function (data) {
             let title = data ? '修改设备' : '添加设备';
             admin.putTempData('t_dev', data);
             admin.popupCenter({
@@ -88,17 +88,15 @@
 
 
         // 工具条点击事件
-        table.on('tool(table)', function (obj) {
+        table.on('tool(device-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);
+            if (layEvent === 'device-edit') {
+                showDevModel(data);
             }
         });
-        let showDelete = function (data) {
+      /*  let showDelete = function (data) {
             layer.confirm('确定要删除吗？', function (i) {
                 layer.close(i);
                 layer.load(2);
@@ -126,9 +124,9 @@
                     layer.msg('请求失败了，请稍后再试', {icon: 2});
                 });
             });
-        };
+        };*/
 
-        form.on('switch(dev-tpl-state)', function (obj) {
+        form.on('switch(device-dev-tpl-state)', function (obj) {
             layer.load(2);
             let token = $("meta[name='_csrf_token']").attr("value");
             admin.go('[[@{/device/updatestate}]]', {
diff --git a/src/main/resources/templates/restaurant/devicegroup/form.html b/src/main/resources/templates/restaurant/devicegroup/form.html
index a85f85e..281367a 100644
--- a/src/main/resources/templates/restaurant/devicegroup/form.html
+++ b/src/main/resources/templates/restaurant/devicegroup/form.html
@@ -2,14 +2,14 @@
 <form id="devicegroup-form" lay-filter="form" class="layui-form model-form">
     <input name="devgroupid" id="devicegroup-devgroupid" type="hidden"/>
     <div class="layui-form-item">
-        <label class="layui-form-label">设备组名称</label>
+        <label class="layui-form-label"><span style="color: red">* </span>设备组名称</label>
         <div class="layui-input-block">
             <input name="groupname"  type="text" class="layui-input" maxlength="20"
                    lay-verify="required|groupname" required/>
         </div>
     </div>
     <div class="layui-form-item">
-        <label class="layui-form-label">上级设备组</label>
+        <label class="layui-form-label"><span style="color: red">* </span>上级设备组</label>
         <div class="layui-input-block">
             <select name="pid"  lay-verify="required">
                 <option value="0">根设备</option>
diff --git a/src/main/resources/templates/restaurant/devicegroup/index.html b/src/main/resources/templates/restaurant/devicegroup/index.html
index e359ca9..dcb9d31 100644
--- a/src/main/resources/templates/restaurant/devicegroup/index.html
+++ b/src/main/resources/templates/restaurant/devicegroup/index.html
@@ -51,6 +51,7 @@
         table.render({
             elem: '#devicegroup-table',
             url: '[[@{/devicegroup/listDevice}]]',
+            where:  {searchkey:0},
             page: true,
             cols: [
                 [
@@ -65,8 +66,8 @@
         });
         // 搜索按钮点击事件
         $('#devicegroup-btn-search').click(function () {
-            let key = $('#search-value').val().trim();
-            table.reload('devicegroup-table', {where: {searchkey: key}, page: {curr: 1}});
+            let key = $('#search-value').val();
+            table.reload('devicegroup-table', {where: {searchkey: key.trim()}, page: {curr: 1}});
         });
         $('#devicegroup-btn-add').click(function () {
             showModel();
@@ -90,11 +91,6 @@
             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) {
             layer.confirm('确定要删除吗？', function (i) {
diff --git a/src/main/resources/templates/restaurant/devicemanage/form.html b/src/main/resources/templates/restaurant/devicemanage/form.html
index 81162e7..09d53ba 100644
--- a/src/main/resources/templates/restaurant/devicemanage/form.html
+++ b/src/main/resources/templates/restaurant/devicemanage/form.html
@@ -2,14 +2,14 @@
 <form id="form" lay-filter="form" class="layui-form model-form">
     <input name="id" id="id" type="hidden"/>
     <div class="layui-form-item">
-        <label class="layui-form-label">设备名称</label>
+        <label class="layui-form-label"><span style="color: red">* </span>设备名称</label>
         <div class="layui-input-block">
             <input name="devicename" placeholder="建议采用带有地理坐标的名称" type="text" class="layui-input" maxlength="20"
                    lay-verify="required|devphyid" required/>
         </div>
     </div>
     <div class="layui-form-item">
-        <label class="layui-form-label">设备组</label>
+        <label class="layui-form-label"><span style="color: red">* </span>设备组</label>
         <div class="layui-input-block">
             <select name="devgroupid" id="devgroupid" lay-verify="required">
                 <option value="0">无</option>
@@ -37,7 +37,7 @@
 
         var url = '[[@{/devicemanage/update}]]';
         // 回显user数据
-        var dev = admin.getTempData('t_dev');
+        var dev = admin.getTempData('t_devm');
         if (dev) {
             $('input[name="id"]').attr('readonly', 'readonly');
             form.val('form', dev);
diff --git a/src/main/resources/templates/restaurant/devicemanage/index.html b/src/main/resources/templates/restaurant/devicemanage/index.html
index 6f09bb5..283b379 100644
--- a/src/main/resources/templates/restaurant/devicemanage/index.html
+++ b/src/main/resources/templates/restaurant/devicemanage/index.html
@@ -22,12 +22,12 @@
             </button>
 
         </div>
-        <table class="layui-table" id="devicemanage-table" lay-filter="table"></table>
+        <table class="layui-table" id="devicemanage-table" lay-filter="devicemanage-table"></table>
     </div>
 </div>
 
 <script type="text/html" id="devicemanage-dev-tpl-state">
-    <input type="checkbox" lay-filter="dev-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="正常|注销"
+    <input type="checkbox" lay-filter="devicemanage-dev-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="正常|注销"
            {{d.state=='1'?'checked':''}} />
 </script>
 <script>
@@ -51,10 +51,10 @@
                     {field: 'devphyid', sort: true, width: 200, title: '设备物理id'},
                     {field: 'shopid', sort: true, width: 150, title: '商户id'},
                     {field: 'factoryid', sort: true, width: 200, title: '设备厂商'},
-                    {field: 'state', title: '状态', sort: true, width: 100, templet: '#dev-tpl-state'},
+                    {field: 'state', title: '状态', sort: true, width: 100, templet: '#devicemanage-dev-tpl-state'},
                     {
                         field: 'id', align: 'center', title: '操作', fixed: 'right', templet: function (item) {
-                            return ' <a class="layui-btn  layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>修改</a> ';
+                            return ' <a class="layui-btn  layui-btn-xs" lay-event="devicemanage-edit"><i class="layui-icon layui-icon-edit"></i>修改</a> ';
                         }
                     }
                 ]
@@ -88,16 +88,16 @@
 
 
         // 工具条点击事件
-        table.on('tool(table)', function (obj) {
+        table.on('tool(devicemanage-table)', function (obj) {
             let data = obj.data;
             let layEvent = obj.event;
             console.log(data);
-            if (layEvent === 'edit') {
+            if (layEvent === 'devicemanage-edit') {
                 showModel(data);
             }
         });
 
-        form.on('switch(dev-tpl-state)', function (obj) {
+        form.on('switch(devicemanage-dev-tpl-state)', function (obj) {
             layer.load(2);
             let token = $("meta[name='_csrf_token']").attr("value");
             admin.go('[[@{/device/updatestate}]]', {
diff --git a/src/main/resources/templates/restaurant/devpara/devpara.html b/src/main/resources/templates/restaurant/devpara/devpara.html
index d460615..5525d8d 100644
--- a/src/main/resources/templates/restaurant/devpara/devpara.html
+++ b/src/main/resources/templates/restaurant/devpara/devpara.html
@@ -51,7 +51,10 @@
                         }},
                     {
                         field: 'lastsaved', title: '更新时间', align: 'center', templet: function (d) {
-                            return admin.formatDate(d.lastsaved);
+                            if(d.lastsaved!=null){
+                                return admin.formatDate(d.lastsaved);
+                            }
+                           return '';
                         }
                     },
                     {align: 'center', title: '操作', width: 250, toolbar: '#devparagroup-table-bar',  fixed: 'right'}
diff --git a/src/main/resources/templates/restaurant/discountrule/ruleform.html b/src/main/resources/templates/restaurant/discountrule/ruleform.html
index 24010a9..236edb9 100644
--- a/src/main/resources/templates/restaurant/discountrule/ruleform.html
+++ b/src/main/resources/templates/restaurant/discountrule/ruleform.html
@@ -74,12 +74,14 @@
         laydate.render({
             elem: '#form-discountrule-starttime',
             type: 'time',
-            format: 'HH:mm'
+            format: 'HH:mm',
+            trigger: 'click'
         });
         laydate.render({
             elem: '#form-discountrule-endtime',
             type: 'time',
-            format: 'HH:mm'
+            format: 'HH:mm',
+            trigger: 'click'
         });
 
         // 表单提交事件
diff --git a/src/main/resources/templates/restaurant/transdtl/index.html b/src/main/resources/templates/restaurant/transdtl/index.html
index c7298f4..a18b3ff 100644
--- a/src/main/resources/templates/restaurant/transdtl/index.html
+++ b/src/main/resources/templates/restaurant/transdtl/index.html
@@ -62,6 +62,8 @@
                             </select>
                         </div>
                     </div>
+                </div>
+                <div class="layui-form-item">
                     <div class="layui-inline" style="margin-left:5%">
                         <button id="transdtl-btn-search" class="layui-btn icon-btn" data-type="search">
                             <i class="layui-icon">&#xe615;</i>搜索
diff --git a/src/main/resources/templates/restaurant/transdtlform/index.html b/src/main/resources/templates/restaurant/transdtlform/index.html
index 0142ee2..6d872c4 100644
--- a/src/main/resources/templates/restaurant/transdtlform/index.html
+++ b/src/main/resources/templates/restaurant/transdtlform/index.html
@@ -1,191 +1,90 @@
-<div class="layui-card layui-col-xs3" style="padding-bottom: 40%">
+<div class="layui-card">
     <div class="layui-card-header">
-        <h2 class="header-title">设备组</h2>
-
+        <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">
-            <button id="btn-add" class="layui-btn icon-btn" data-type="add"><i class="layui-icon"></i>添加设备组</button>
+            <form id="transdtl-form"  >
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <label class="layui-form-label">交易日期：</label>
+                        <div class="layui-input-inline">
+                            <input type="text" name="startdate" class="layui-input" th:value="${startDate}"
+                                   id="transdtlform-startdate" placeholder="yyyy-MM-dd">
+                        </div>
+                        <div class="layui-input-inline">
+                            <input type="text" name="enddate" class="layui-input" th:value="${endDate}"
+                                   id="transdtlform-enddate" placeholder="yyyy-MM-dd">
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-input-inline">
+                    <input id="search-devparabind-form-devgroupid" type="text"
+                           lay-filter="search-devparabind-form-devgroupid-filter" autocomplete="off"
+                           class="layui-input"/>
+                </div>
+            </form>
+
         </div>
-        <div id="menuContent" class="menuContent " style="position: absolute;">
-            <ul id="ztree-menu" class="ztree" style="margin-top:0;"></ul>
-        </div>
+        <table class="layui-table" id="transdtl-table" lay-filter="table"></table>
     </div>
 </div>
 
-
-<div class="layui-card layui-col-xs8" style="margin-left:3% ">
-    <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="search-value" class="layui-input search-input" type="hidden"/>&emsp;
-            <!--    <button id="btn-search" class="layui-btn icon-btn" data-type="search"><i class="layui-icon">&#xe615;</i>搜索
-                </button>-->
-
-        </div>
-        <table class="layui-table" id="table" lay-filter="table"></table>
-    </div>
-</div>
-
-<script type="text/html" id="dev-tpl-state">
-    <input type="checkbox" lay-filter="dev-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="正常|注销" disabled
-           {{d.state=='1'?'checked':''}} />
-</script>
 <script>
 
     layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
         let form = layui.form;
         let table = layui.table;
         let admin = layui.admin;
+        var treeSelect = layui.treeSelect;
 
-        form.render('select');
 
-        // 渲染表格
-        table.render({
-            elem: '#table',
-            url: '[[@{/devicegroup/listDevice}]]',
-            cols: [
-                [
-                    {field: 'id', title: '终端编号',width: 100, sort: true},
-                    {field: 'devicename', title: '设备名称',width: 160, sort: true},
-                    {field: 'devphyid', sort: true, width: 120, title: '设备物理id'},
-                    {field: 'shopid', sort: true, width: 100, title: '商户id'},
-                    {field: 'factoryid', sort: true, width: 150, title: '设备厂商'},
-                    {field: 'state', title: '状态', sort: true, width: 100, templet: '#dev-tpl-state'},
-                ]
-            ]
-        });
+
         // 搜索按钮点击事件
         $('#btn-search').click(function () {
             let key = $('#search-value').val().trim();
             table.reload('table', {where: {searchkey: key}});
         });
-        $('#btn-add').click(function () {
-            showModel();
-        });
-
-        let showModel = function (data) {
-            let title = data ? '修改设备组' : '添加设备组';
-            admin.putTempData('t_devgroup', data);
-            admin.popupCenter({
-                title: title,
-                path: '/devicegroup/loadadd',
-                finish: function () {
-                    loadTree();
+        treeSelect.render({
+            elem: '#search-devparabind-form-devgroupid',
+            data: '[[@{/device/binddevparagrouptree}]]',
+            type: 'get',
+            placeholder: '选择设备组',
+            search: false,
+            style: {
+                folder: {
+                    enable: false
+                },
+                line: {
+                    enable: true
                 }
-            });
-        };
-
-
-        // 工具条点击事件
-        table.on('tool(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);
+            },
+            // 点击回调
+            click: function (d) {
+                var treeNode = d.current;
+                console.log(treeNode);
+                return true;
+            },
+            success: function (d) {
+                console.log(d); // 加载完成后的回调函数
             }
         });
-        let showDelete = function (data) {
-            layer.confirm('确定要删除吗？', function (i) {
-                layer.close(i);
-                layer.load(2);
-                let token = $("meta[name='_csrf_token']").attr("value");
-                admin.go('[[@{/device/delete}]]', {
-                    id: data.id,
-                    _csrf: token
-                }, function (data) {
-                    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('table', {});
-                }, function (ret) {
-                    console.log(ret);
-                    layer.closeAll('loading');
-                    layer.msg('请求失败了，请稍后再试', {icon: 2});
-                });
-            });
-        };
-
-        function OnGrpClick(e, treeId, treeNode) {
-            console.log(treeNode.id);
-            table.reload('table', {where: {searchkey: treeNode.id}});
-
-        }
-        function loadZTree(eNodes) {
-            var menuSetting = {
-                view: {
-                    dblClickExpand: true,
-                    selectedMulti: false,
-                    showLine: true,
-                    showIcon: false
-                },
-                edit: {
-                    enable: true,
-                    drag: {
-                        isMove: true,
-                        prev: true,
-                        autoOpenTime: 0
-                    },
-                },
-                data: {
-                    simpleData: {
-                        enable: true
-                    }
-                },
-                callback: {
-                    onClick: OnGrpClick
-                }
-            };
-            $.fn.zTree.init($("#ztree-menu"), menuSetting, eNodes);
-        }
-
-        $(document).ready(function () {
-            loadTree();
-        })
-
-        function loadTree() {
-            let token = $("meta[name='_csrf_token']").attr("value");
-            $.ajax({
-                type: "POST",
-                dataType: "json",
-                url: "[[@{/devicegroup/listTree}]]",
-                headers: {
-                    'Accept': 'application/json',
-                    'X-CSRF-TOKEN': token,
-                },
-                data: {},
-                success: function (result) {
-                    console.log("获取返回", result.data);
-                    if (result.code == 0) {
-                        loadZTree(result.data);
-                    } else {
-                        layer.msg('请求失败了，请稍后再试', {icon: 2});
-                    }
-                },
-                error: function (data) {
-                    layer.msg('请求失败了，请稍后再试', {icon: 2});
-                }
-            })
-        }
-
+        laydate.render({
+            elem: '#transdtlform-startdate',
+            btns: ['now', 'confirm'],
+            trigger: 'click',
+            max: enddate
+        });
+        laydate.render({
+            elem: '#transdtlform-enddate',
+            btns: ['now', 'confirm'],
+            trigger: 'click',
+            max: enddate
+        });
 
 
     });
diff --git a/src/main/resources/templates/system/operator/operator.html b/src/main/resources/templates/system/operator/operator.html
index 682e6c4..c96c14b 100644
--- a/src/main/resources/templates/system/operator/operator.html
+++ b/src/main/resources/templates/system/operator/operator.html
@@ -2,14 +2,14 @@
 <form id="oper-form" lay-filter="oper-form" class="layui-form model-form">
     <input name="operid" id="operid" type="hidden"/>
     <div class="layui-form-item">
-        <label class="layui-form-label">账号</label>
+        <label class="layui-form-label"><span style="color: red">* </span>账号</label>
         <div class="layui-input-block">
             <input name="opercode" placeholder="请输入账号" type="text" class="layui-input" maxlength="20"
                    lay-verify="required|opercode" required/>
         </div>
     </div>
     <div class="layui-form-item">
-        <label class="layui-form-label">用户名</label>
+        <label class="layui-form-label"><span style="color: red">* </span>用户名</label>
         <div class="layui-input-block">
             <input name="opername" placeholder="请输入用户名" type="text" class="layui-input" maxlength="60"
                    lay-verify="required" required/>
@@ -42,7 +42,7 @@
     </div>
 
     <div class="layui-form-item">
-        <label class="layui-form-label">角色</label>
+        <label class="layui-form-label"><span style="color: red">* </span>角色</label>
         <div class="layui-input-block">
             <select name="roleId" xm-select="roleId" lay-verify="required">
                 <option th:each="role : ${roles}" th:value="${role.roleId}">[[${role.roleName}]]</option>
@@ -65,6 +65,7 @@
         var formSelects = layui.formSelects;
 
         form.render('radio');
+        form.render('checkbox');
         form.verify({
             "mobile": function (e) {
                 if (null != e && e.length > 0 && !(/^1\d{10}$/.test(e))) {
diff --git a/src/main/resources/templates/system/role/form.html b/src/main/resources/templates/system/role/form.html
index d60bac8..d9a8358 100755
--- a/src/main/resources/templates/system/role/form.html
+++ b/src/main/resources/templates/system/role/form.html
@@ -1,6 +1,7 @@
 <!-- operator表单弹窗 -->
 <form id="form" lay-filter="form" class="layui-form model-form">
     <input name="roleId" id="roleId" type="hidden"/>
+    <input name="roleCode" id="roleCode" type="hidden"/>
     <div class="layui-form-item">
         <label class="layui-form-label">角色名称</label>
         <div class="layui-input-block">
@@ -11,7 +12,7 @@
     <div class="layui-form-item">
         <label class="layui-form-label">角色描述</label>
         <div class="layui-input-block">
-            <textarea name="roleDesc" placeholder="请输入描述" class="layui-textarea"></textarea>
+            <textarea name="roleDesc" id="roleDesc" placeholder="描述最多为60字符" class="layui-textarea"></textarea>
         </div>
     </div>
 
@@ -31,12 +32,19 @@
         var func = admin.getTempData('t_func');
         if (func) {
             $('input[name="roleId"]').attr('readonly', 'readonly');
+            $('input[name="roleCode"]').attr('readonly', 'readonly');
             form.val('form', func);
         }
         // 表单提交事件
         form.on('submit(form-submit)', function (data) {
             layer.load(2);
             let token = $("meta[name='_csrf_token']").attr("value");
+            var roleDesc=$("#roleDesc").val();
+            if(roleDesc.length>60){
+                layer.msg("角色描述字数超过上限！", {icon: 2});
+                layer.closeAll('loading');
+                return false;
+            }
             $.ajax({
                 type : "POST",
                 dataType : "json",
