From 8d9c11f923e0dcb1f3dc79a5fddc2a665b548b59 Mon Sep 17 00:00:00 2001
From: 陶湘宇 <cosmos1314258@163.com>
Date: Tue, 13 Jun 2023 19:13:42 +0800
Subject: [PATCH] APP获取异常

---
 src/main/java/cn/timer/api/bean/qyzx/AppExceptionErro.java        |  62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/main/java/cn/timer/api/controller/LoginController.java        |  69 ++++++++++++++++++++++++++++++++++++++-------------------------------
 src/main/java/cn/timer/api/controller/kqgl/ClockInController.java |   5 +++++
 src/main/java/cn/timer/api/dao/qyzx/APPErroMapper.java            |  18 ++++++++++++++++++
 src/main/resources/application-pro.yml                            | 599 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 src/main/resources/mapping/qyzx/APPErroMapper.xml                 |  12 ++++++++++++
 6 files changed, 437 insertions(+), 328 deletions(-)
 create mode 100644 src/main/java/cn/timer/api/bean/qyzx/AppExceptionErro.java
 create mode 100644 src/main/java/cn/timer/api/dao/qyzx/APPErroMapper.java
 create mode 100644 src/main/resources/mapping/qyzx/APPErroMapper.xml

diff --git a/src/main/java/cn/timer/api/bean/qyzx/AppExceptionErro.java b/src/main/java/cn/timer/api/bean/qyzx/AppExceptionErro.java
new file mode 100644
index 0000000..defda82
--- /dev/null
+++ b/src/main/java/cn/timer/api/bean/qyzx/AppExceptionErro.java
@@ -0,0 +1,62 @@
+package cn.timer.api.bean.qyzx;
+
+import cn.timer.api.bean.yggl.YgglMainEmp;
+import cn.timer.api.dto.login.QysDto;
+import cn.timer.api.dto.qyzx.MenuStructureDto;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Columns;
+
+import javax.persistence.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+* @author tao 2023-6-11
+*/
+@Entity
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Table(name = "app_exception_erro")
+@ApiModel("APP异常错误表")
+public class AppExceptionErro {
+    private static final long serialVersionUID = 1L;
+    @Id
+    @GeneratedValue
+    @TableId(type = IdType.AUTO)
+	@ApiModelProperty(value="编号",example="101")
+    private Integer id;
+    
+	@ApiModelProperty(value="异常日志")
+    @Column(name ="errolog" ,columnDefinition="TEXT", nullable=true)
+    private String errolog;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getErrolog() {
+        return errolog;
+    }
+
+    public void setErrolog(String errolog) {
+        this.errolog = errolog;
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/cn/timer/api/controller/LoginController.java b/src/main/java/cn/timer/api/controller/LoginController.java
index f53d82f..427afcc 100644
--- a/src/main/java/cn/timer/api/controller/LoginController.java
+++ b/src/main/java/cn/timer/api/controller/LoginController.java
@@ -13,6 +13,8 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
+import cn.timer.api.bean.qyzx.*;
+import cn.timer.api.dao.qyzx.APPErroMapper;
 import cn.timer.api.utils.redis.RedisUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -48,11 +50,6 @@ import cn.timer.api.bean.kqmk.KqglAssoOvertimeBasics;
 import cn.timer.api.bean.kqmk.KqglAssoOvertimeRules;
 import cn.timer.api.bean.kqmk.KqglAssoOvertimeRulesM;
 import cn.timer.api.bean.qyxx.CmsContent;
-import cn.timer.api.bean.qyzx.QyzxAdminColour;
-import cn.timer.api.bean.qyzx.QyzxAdminMenu;
-import cn.timer.api.bean.qyzx.QyzxEmpEntAsso;
-import cn.timer.api.bean.qyzx.QyzxEmpLogin;
-import cn.timer.api.bean.qyzx.QyzxEntInfoM;
 import cn.timer.api.bean.xcgl.XcglAssoBszqsz;
 import cn.timer.api.bean.yggl.YgglMainEmp;
 import cn.timer.api.bean.zzgl.ZzglAuth;
@@ -152,12 +149,14 @@ public class LoginController {
 
 	@Value("${config-8timer.authentication-code}")
 	public String authentication_code;
-	//2020/0517 redis缓存taoxy
+//2020/0517 redis缓存taoxy
 	@Autowired
 	private HttpSession session;
 
 	@Autowired
 	private QyzxEmpLoginMapper qyzxEmpLoginMapper;
+	@Autowired
+	private APPErroMapper appErroMapper;
 
 	@Autowired
 	private QyzxEmpEntAssoMapper qyzxEmpEntAssoMapper;
@@ -272,10 +271,18 @@ public class LoginController {
 			return ResultUtil.error("发送验证码失败");
 		}
 	}
-
+	@PostMapping(value = "/apperro")
+	@ApiOperation(value = "1.收集APP异常", httpMethod = "POST", notes = "接口发布说明")
+	@ApiOperationSupport(order = 1)
+	@Log(title = "收集APP异常", businessType = BusinessType.SEND_CODE)
+	public Result<String> sendCode(@RequestBody String errolog) {
+		AppExceptionErro e=new AppExceptionErro();
+		e.setErrolog(errolog);
+		appErroMapper.insert(e);
+		return  ResultUtil.success();
+	}
 	/**
 	 * 发送验证码
-	 *
 	 * @param entRegisterDto
 	 * @return
 	 */
@@ -1059,16 +1066,16 @@ public class LoginController {
 					}else {
 						return ResultUtil.error("登录失败");
 					}
-				}else {
-					return ResultUtil.error("登录有误");
-				}
-			}else {
-				return ResultUtil.error("验证失败");
-			}
-		}else {
+			   }else {
+				   return ResultUtil.error("登录有误");
+			   }
+		   }else {
+			   return ResultUtil.error("验证失败");
+		   }
+	  }else {
 //		  return ResultUtil.error("二维码已过期");
-			return ResultUtil.success("4");
-		}
+		  return ResultUtil.success("4");
+	  }
 
 	}
 
@@ -1138,14 +1145,14 @@ public class LoginController {
 		//
 		QyzxEmpLogin.builder().orgId(orgcodeid).build().update(new QueryWrapper<QyzxEmpLogin>().lambda().eq(QyzxEmpLogin::getPhone, userBean.getQyzxEmpLogin().getPhone()));
 
-		QyzxEmpLogin qyzxEmpLogin1 = new LambdaQueryChainWrapper<QyzxEmpLogin>(qyzxEmpLoginMapper)
-				.eq(QyzxEmpLogin::getPhone, userBean.getQyzxEmpLogin().getPhone()).one();
-		if (qyzxEmpLogin1 != null) {
+			QyzxEmpLogin qyzxEmpLogin1 = new LambdaQueryChainWrapper<QyzxEmpLogin>(qyzxEmpLoginMapper)
+					.eq(QyzxEmpLogin::getPhone, userBean.getQyzxEmpLogin().getPhone()).one();
+			if (qyzxEmpLogin1 != null) {
 
-			return loginhan(qyzxEmpLogin1, request);
-		}else {
-			return ResultUtil.error("切换失败!!");
-		}
+				return loginhan(qyzxEmpLogin1, request);
+			}else {
+				return ResultUtil.error("切换失败!!");
+			}
 
 	}
 
@@ -1153,14 +1160,14 @@ public class LoginController {
 	@ApiOperation(value = "刷新纪录", httpMethod = "GET", notes = "是否有账号")
 	public Result<QyzxEmpLogin> RecordBreaking(@CurrentUser UserBean userBean,HttpServletRequest request) {
 
-		QyzxEmpLogin qyzxEmpLogin1 = new LambdaQueryChainWrapper<QyzxEmpLogin>(qyzxEmpLoginMapper)
-				.eq(QyzxEmpLogin::getPhone, userBean.getQyzxEmpLogin().getPhone()).eq(QyzxEmpLogin::getOrgId, userBean.getOrgCode()).one();
-		if (qyzxEmpLogin1 != null) {
+			QyzxEmpLogin qyzxEmpLogin1 = new LambdaQueryChainWrapper<QyzxEmpLogin>(qyzxEmpLoginMapper)
+					.eq(QyzxEmpLogin::getPhone, userBean.getQyzxEmpLogin().getPhone()).eq(QyzxEmpLogin::getOrgId, userBean.getOrgCode()).one();
+			if (qyzxEmpLogin1 != null) {
 
-			return loginhan(qyzxEmpLogin1, request);
-		}else {
-			return ResultUtil.error("刷新失败!!");
-		}
+				return loginhan(qyzxEmpLogin1, request);
+			}else {
+				return ResultUtil.error("刷新失败!!");
+			}
 
 	}
 
diff --git a/src/main/java/cn/timer/api/controller/kqgl/ClockInController.java b/src/main/java/cn/timer/api/controller/kqgl/ClockInController.java
index 6a9e470..53cced5 100644
--- a/src/main/java/cn/timer/api/controller/kqgl/ClockInController.java
+++ b/src/main/java/cn/timer/api/controller/kqgl/ClockInController.java
@@ -158,6 +158,11 @@ public class ClockInController {
 			//putime: 根据日期  得到打卡所需的详细信息
 			AttendanceCardListDto attdate = MethodCall(qyid,userid,ClockInTool.paraseStringToDate(sStdIoTime,"yyyy-MM-dd HH:mm:SS"));
 			// = new SimpleDateFormat("yyyy-MM-dd").format(sStdIoTime);//转换打卡时间格式 年月日
+			Long puttimeTmp=0L;
+			if (attdate!=null&&attdate.getAttsch()!=null&&attdate.getAttsch().get(0)!=null)
+				puttimeTmp=attdate.getAttsch().get(0).getTime();
+			else
+				puttimeTmp=System.currentTimeMillis();
 			String putime= new SimpleDateFormat("yyyy-MM-dd").format(attdate.getAttsch().get(0).getTime());//转换打卡时间格式 年月日
 			String putimehhmm = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(attdate.getAttsch().get(0).getTime());//转换打卡时间格式 年月日
 
diff --git a/src/main/java/cn/timer/api/dao/qyzx/APPErroMapper.java b/src/main/java/cn/timer/api/dao/qyzx/APPErroMapper.java
new file mode 100644
index 0000000..a4c8d2e
--- /dev/null
+++ b/src/main/java/cn/timer/api/dao/qyzx/APPErroMapper.java
@@ -0,0 +1,18 @@
+package cn.timer.api.dao.qyzx;
+
+import cn.timer.api.bean.qyzx.AppExceptionErro;
+import cn.timer.api.bean.qyzx.QyzxEmpLogin;
+import cn.timer.api.dto.login.QysDto;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+*  员工登录表
+* @author Tang 2019-11-11
+*/
+@Repository
+public interface APPErroMapper extends BaseMapper<AppExceptionErro> {
+
+}
diff --git a/src/main/resources/application-pro.yml b/src/main/resources/application-pro.yml
index bab84c9..57c94ba 100644
--- a/src/main/resources/application-pro.yml
+++ b/src/main/resources/application-pro.yml
@@ -1,297 +1,302 @@
-#生产环境
-server:
-  port: 8089
-  servlet:
-    # context-path: /YoulinghrApiV100
-    session:
-      timeout: 2592000   # session会话过期时间
-tomcat:
-  # 最大连接数,默认值是10000
-  max-connections: 3000
-  # 最大工作线程数,默认200, 4核8g内存,线程数经验值800
-  max-threads: 1000
-  # 等待队列长度,默认100
-  accept-count: 1000
-  max-http-post-size: 50MB
-  min-spare-threads: 50
-
-spring:
-  servlet:
-    multipart:
-      max-file-size: 500MB
-      max-request-size: 500MB
-  jpa:
-    # 配置生成表 存储引擎InnoDB
-    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
-      # database:
-    open-in-view: false
-      # naming:
-      # spring boot jpa hibernate 根据实体类生成表以及字段的命名策略
-      # 无修改命名 org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
-      # 遇到大写字母 加”_”的命名 org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
-      # physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
-    hibernate:
-      ddl-auto: update
-    show-sql: true
-  datasource:
-    # username: root
-    # password: youlingHR73!
-    username: youling8timer
-    password: (!0YouLingRoot0!)
-    # username: tang
-    # password: Tang123456!
-    # url: jdbc:mysql://120.24.172.51:3306/youlingrc_tang?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=CONVERT_TO_NULL
-    url: jdbc:mysql://rm-wz950gd8jf8209376.mysql.rds.aliyuncs.com/timer?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=CONVERT_TO_NULL
-    # url: jdbc:mysql://192.168.172.200:3306/youlingrc_8timer201?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=CONVERT_TO_NULL
-    # url: jdbc:mysql://db.hhlsz.com:3306/youlingrc_8timer201?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=CONVERT_TO_NULL
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    type: com.alibaba.druid.pool.DruidDataSource
-    # 下面为连接池的补充设置,应用到上面所有数据源中
-    # 初始化大小,最小,最大
-    initial-size: 5
-    min-idle: 5
-    max-active: 50
-    maximum-pool-size: 80
-    max-wait: 60000 # 配置获取连接等待超时的时间
-    time-between-eviction-runs-millis: 300000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
-    min-evictable-idle-time-millis: 1800000   # 配置一个连接在池中最小生存的时间,单位是毫秒
-    validation-query: SELECT 1 FROM DUAL
-    test-while-idle: true # 当连接空闲时,是否执行连接测试
-    test-on-borrow: false # 当从连接池借用连接时,是否测试该连接
-    test-on-return: false # 在连接归还到连接池时是否测试该连接
-    # 打开PSCache,并且指定每个连接上PSCache的大小
-    pool-prepared-statements: true
-    # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
-    #max-pool-prepared-statement-per-connection-size: 20
-    # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
-    #connect-properties:  druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
-    druid:
-      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 ,不能用log4j,不然报错:Failed to bind properties under 'spring.datasource.druid' to javax.sql.DataSource:
-      filters:  stat,slf4j
-      # 配置监控服务器
-      stat-view-servlet:
-        login-username: Tang
-        login-password: 123
-        reset-enable: false
-        url-pattern: /druid/*
-        # 添加IP白名单
-        #allow:
-        # 添加IP黑名单,当白名单和黑名单重复时,黑名单优先级更高
-        #deny:
-      web-stat-filter:
-        # 添加过滤规则
-        url-pattern: /*
-        # 忽略过滤格式
-        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
-  # 时间戳统一转换
-  jackson:
-     date-format: yyyy-MM-dd HH:mm:ss
-  # spring boot启动打印横幅 配置
-  banner:
-      charset: UTF-8 # Banner file encoding.
-      location: banner.txt # Banner text resource location.
-      image:
-         location: banner.gif # Banner image file location (jpg or png can also be used).
-         width: 76 # Width of the banner image in chars.
-         height: 76 # Height of the banner image in chars (default based on image height).
-         margin: 2 # Left hand image margin in chars.
-         invert: false # Whether images should be inverted for dark terminal themes.
-  mail:
-     port: 465
-     protocol: smtp
-     host: smtp.163.com
-     username: youlingrc123@163.com
-     password: RIMBNJJQNKYNVUWL
-     default-encoding: utf-8
-     properties:
-        mail:
-           smtp:
-              auth: true
-              starttls:
-                 enable: true
-                 required: true
-              ssl: # SSL Config
-                 enable: true
-              socketFactory:
-                 port: 465
-                 class: javax.net.ssl.SSLSocketFactory
-  redis:
-    database: 5 # Redis数据库索引(默认为0),如果设置为1,那么存入的key-value都存放在select 1中
-    host: r-wz9p8pve7uem63b10upd.redis.rds.aliyuncs.com
-    port: 6379
-    password: (!0YouLingRcRedis0!)
-    max-wait: 30000    # 连接池最大阻塞等待时间(使用负值表示没有限制)
-    max-active: 100   # 连接池最大连接数(使用负值表示没有限制)
-    max-idle: 20     # 连接池中的最大空闲连接
-    min-idle: 0     # 连接池中的最小空闲连接
-    timeout: 5000   # 连接超时
-      #password: 123456 # 密码,默认密码为空
-      #cluster:       # 集群配置
-    #nodes: 127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384,127.0.0.1:6385,127.0.0.1:6386
-    #max-redirects: 2  # 最大重定向次数
-  devtools:
-    restart:
-      poll-interval: 3000ms
-      quiet-period: 2999ms
-
- # mybatis-plus
-mybatis-plus:
-  mapper-locations: classpath:mapping/**/*Mapper.xml   # dao到xml文件映射
-  type-aliases-package: cn.timer.api.bean           # xml中#全局类名别名
-  configuration:
-    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl   # sql日志打印
-    call-setters-on-nulls: true                     # Map做返回体时  字段值为null依然返回
-    cache-enabled: true
-  global-config:
-    db-config:
-      #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
-      #id-type: uuid
-      id-type: auto
-      #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
-      # field-strategy: not_null
-      #驼峰下划线转换
-      table-underline: true
-      #逻辑删除配置
-      #logic-delete-value: 0
-      #logic-not-delete-value: 1
- # 分页插件
-pagehelper:
-  helperDialect: mysql
-  reasonable: true
-  supportMethodsArguments: true
-  params: count=countSql
-
-#showSql
-logging:
-  level:
-    root: ERROR
-    cn.timer.api.dao: error
-  pattern:
-    console: '--%p--%m%n'
-
-#swagger:
-#  ui-config:
-#    operations-sorter: method   # 它提供了两个配置项:alpha和method,分别代表了按字母表排序以及按方法定义顺序排序
-
-config-8timer:
-  environmental-science: pro
-  expiration_time: 2 #扫码登录过期时长
-  machine8timerUrl: 'http://record.8timer.cn'
-  #machine8timerUrl: 'http://192.168.3.38:8088'
-  authentication-code: ''
-  prescription: 8 #一天工作8小时
-  register-free-time: 90   #系统赠送时间
-  register-company-max-num: 100
-  register-childAccount-max-num: 10
-  Aliyun:    # 阿里云
-    PROJECT_NAME: 8小时协同办公 #8小时人事管家
-    REGION_ID: cn-shenzhen
-    ACCESSKEY_ID: LTAI4FuaShJWQ1dggsFWG5CC
-    SECRET: EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR
-    endpoint: http://oss-cn-shenzhen.aliyuncs.com
-    bucketName: 8time-v2
-    bucketName_pri: 8time-v2-private
-    project_package: 8timer2.0/
-    expirationTime: 3153600000000L
-    expirationTime_pri: 600000L
-    RESUMESDK_APPCODE: 17e3b67b02ab4bef967025cc4938c072 #ResumeSDK简历解析 AppCode
-  esign: # e签宝
-     callbackUrl: 'https://client.8timer.cn/callback/esign/dev'
-     redirectUrl: 'http://client.8timer.cn/#/ElecCon/index'
-   # host: https://openapi.esign.cn
-   # PROJECT_ID: 4438775940
-   # PROJECT_SECRET: 7b100813cca2746081c57837855ac5af
-  remind:   #合同提醒时间 默认小于等于1天会提醒+三个配置项
-    one: 3
-    two: 7
-    three: 30
-  init-password: 123456
-
-  # 创建企业默认添加讯息
-  qyxx:
-     title: '欢迎来到8小时'
-     cover: 'http://8time-v2.oss-cn-shenzhen.aliyuncs.com/8timer2.0/261/null/3571E55w28/%E5%9B%9E%E6%9D%A5.png'
-     summary: '<h1>欢迎来到8小时!可先前往组织管理-组织架构添加公司架构及岗位,再前往员工管理-员工名册添加企业员工。</h1>'
-     author: 'System'
-
-  # 客户管理导入服务器保存路径
-  crm-excel:
-     realPath: '/data/crm-excel/'
-
-  # 百度人才智库(TIC)
-  baidu-tic:
-    appid: XOATkGqX6LvCW3i3Eqd5rg6h
-    secret: UqqNAF1nltMjAOz9yxqHPjZlnjtC2gSS
-
-  # 文件存储地址配置 file type:aliyun-oss,physics-oss
-  # 文件存储地址类型:aliyun-oss(阿里云OSS),physics-oss(物理机器OSS)
-  # 默认存储物理机器OSS
-  file-address:
-    #type: physics-oss
-    type: aliyun-oss
-
-#导出zip临时地址
-zip:
-  path: '/data/crm-zip/'
-
-# base_api_url
-BASE_API_URL: 'http://api.8timer.cn'
-#sftp 配置
-sftp:
-  client:
-    protocol: 'sftp'
-    host: '112.74.91.126'
-    port: '22'
-    username: 'root'
-    password: 'fksdlfjs(*&&%HGgjfkdjsfhksh9781283KFHFFGHghhndbv##2@'
-    root: '/home'
-    sessionStrictHostKeyChecking: 'no'
-    sessionConnectTimeout: '15000'
-    channelConnectedTimeout: '15000'
-    serverUrl: 'https://img.8timer.cn'
-    targetPath: '/disk'
-    reservedName: false
-#微信公众号(服务号)
-wxgzh:
-  appid: 'wxd331ab19a67e2319'
-  appSecret: '7032afbdb4235a45e2400b98a8ec4763'
-  #我方token 在微信公众号基本配置里面配置( token = 8timer123 md5加密得)
-  token: 'af37997effca937229453180e830b164'
-  #消息加解密密钥
-  encodingAesKey: 'chAbt69dLAtk8HH0oGMuZwHzK2SuhnxZI5Jbzc4nNzX'
-
-insure:
-  #投保上传文件
-  uploadUrl:  'https://portal.unistar-ins.com/service/Home/Index/fileUpload'
-  #投保立即出单
-  insuredUrl: 'https://portal.unistar-ins.com/mall/Home/Index/createQuotePolicy'
-  #投保请求出单
-  getPolicyUrl: 'https://portal.unistar-ins.com/issuing/Home/Index/index'
-  #查询保单信息
-  policyDetail: 'https://portal.unistar-ins.com/issuing/Home/Index/policy'
-  #申请保单
-  createQuote: 'https://portal.unistar-ins.com/mall/Home/Index/createQuotePolicy'
-  #投保支付
-  toPayUrl: 'https://portal.unistar-ins.com/mall/Home/Pay/toPay'
-  #保全支付
-  batchToPayUrl: 'https://portal.unistar-ins.com/fuli/Home/ImportPay/set_import_pay'
-  #预付款出单接口
-  issue: 'https://portal.unistar-ins.com/cps/Labor/Policy/issue'
-
-  #保全上传文件
-  uploadUrlq: 'https://portal.unistar-ins.com/fuli/Home/Index/file_upload'
-  #保全申请
-  batchUrl: 'https://portal.unistar-ins.com/fuli/Home/WelfareProduct/batch_declare'
-  #保全取消支付
-  cancelPayment: 'https://portal.unistar-ins.com/fuli/Home/OrderImport/order_import_set'
-  #预付款提交接口
-  order_import_set: 'https://portal.unistar-ins.com/cps/Labor/OrderImport/order_import_set'
-
-youling:
-  serverUrl: 'https://www.youlingrc.com'
-
-#h5服务地址
-h5:
-  url: 'http://h5.8timer.cn'
-#支付回调
-pay_page: 'http://oss.8timer.cn'
+#生产环境
+server:
+  port: 8089
+  servlet:
+    # context-path: /YoulinghrApiV100
+    session:
+      timeout: 2592000   # session会话过期时间
+tomcat:
+  # 最大连接数,默认值是10000
+  max-connections: 3000
+  # 最大工作线程数,默认200, 4核8g内存,线程数经验值800
+  max-threads: 1000
+  # 等待队列长度,默认100
+  accept-count: 1000
+  max-http-post-size: 50MB
+  min-spare-threads: 50
+
+spring:
+  servlet:
+    multipart:
+      max-file-size: 500MB
+      max-request-size: 500MB
+  jpa:
+    # 配置生成表 存储引擎InnoDB
+    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+      # database:
+    open-in-view: false
+      # naming:
+      # spring boot jpa hibernate 根据实体类生成表以及字段的命名策略
+      # 无修改命名 org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
+      # 遇到大写字母 加”_”的命名 org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
+      # physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
+    hibernate:
+      ddl-auto: update
+    show-sql: true
+  datasource:
+    # username: root
+    # password: youlingHR73!
+    username: youling8timer
+    password: (!0YouLingRoot0!)
+    # username: tang
+    # password: Tang123456!
+    # url: jdbc:mysql://120.24.172.51:3306/youlingrc_tang?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=CONVERT_TO_NULL
+    url: jdbc:mysql://rm-wz950gd8jf8209376.mysql.rds.aliyuncs.com/timer?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=CONVERT_TO_NULL
+    # url: jdbc:mysql://192.168.172.200:3306/youlingrc_8timer201?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=CONVERT_TO_NULL
+    # url: jdbc:mysql://db.hhlsz.com:3306/youlingrc_8timer201?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=CONVERT_TO_NULL
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    type: com.alibaba.druid.pool.DruidDataSource
+    # 下面为连接池的补充设置,应用到上面所有数据源中
+    # 初始化大小,最小,最大
+    initial-size: 5
+    min-idle: 5
+    max-active: 50
+    maximum-pool-size: 80
+    max-wait: 60000 # 配置获取连接等待超时的时间
+    time-between-eviction-runs-millis: 300000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+    min-evictable-idle-time-millis: 1800000   # 配置一个连接在池中最小生存的时间,单位是毫秒
+    validation-query: SELECT 1 FROM DUAL
+    test-while-idle: true # 当连接空闲时,是否执行连接测试
+    test-on-borrow: false # 当从连接池借用连接时,是否测试该连接
+    test-on-return: false # 在连接归还到连接池时是否测试该连接
+    # 打开PSCache,并且指定每个连接上PSCache的大小
+    pool-prepared-statements: true
+    # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
+    #max-pool-prepared-statement-per-connection-size: 20
+    # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
+    #connect-properties:  druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
+    druid:
+      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 ,不能用log4j,不然报错:Failed to bind properties under 'spring.datasource.druid' to javax.sql.DataSource:
+      filters:  stat,slf4j
+      # 配置监控服务器
+      stat-view-servlet:
+        login-username: Tang
+        login-password: 123
+        reset-enable: false
+        url-pattern: /druid/*
+        # 添加IP白名单
+        #allow:
+        # 添加IP黑名单,当白名单和黑名单重复时,黑名单优先级更高
+        #deny:
+      web-stat-filter:
+        # 添加过滤规则
+        url-pattern: /*
+        # 忽略过滤格式
+        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
+  # 时间戳统一转换
+  jackson:
+     date-format: yyyy-MM-dd HH:mm:ss
+  # spring boot启动打印横幅 配置
+  banner:
+      charset: UTF-8 # Banner file encoding.
+      location: banner.txt # Banner text resource location.
+      image:
+         location: banner.gif # Banner image file location (jpg or png can also be used).
+         width: 76 # Width of the banner image in chars.
+         height: 76 # Height of the banner image in chars (default based on image height).
+         margin: 2 # Left hand image margin in chars.
+         invert: false # Whether images should be inverted for dark terminal themes.
+  mail:
+     port: 465
+     protocol: smtp
+     host: smtp.163.com
+     username: youlingrc123@163.com
+     password: RIMBNJJQNKYNVUWL
+     default-encoding: utf-8
+     properties:
+        mail:
+           smtp:
+              auth: true
+              starttls:
+                 enable: true
+                 required: true
+              ssl: # SSL Config
+                 enable: true
+              socketFactory:
+                 port: 465
+                 class: javax.net.ssl.SSLSocketFactory
+  redis:
+    database: 35 # Redis数据库索引(默认为0),如果设置为1,那么存入的key-value都存放在select 1中
+    host: r-wz9p8pve7uem63b10upd.redis.rds.aliyuncs.com
+    port: 6379
+    password: (!0YouLingRcRedis0!)
+    max-wait: 30000    # 连接池最大阻塞等待时间(使用负值表示没有限制)
+    max-active: 100   # 连接池最大连接数(使用负值表示没有限制)
+    max-idle: 20     # 连接池中的最大空闲连接
+    min-idle: 0     # 连接池中的最小空闲连接
+    timeout: 5000   # 连接超时
+      #password: 123456 # 密码,默认密码为空
+      #cluster:       # 集群配置
+    #nodes: 127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384,127.0.0.1:6385,127.0.0.1:6386
+    #max-redirects: 2  # 最大重定向次数
+  devtools:
+    restart:
+      poll-interval: 3000ms
+      quiet-period: 2999ms
+
+ # mybatis-plus
+mybatis-plus:
+  mapper-locations: classpath:mapping/**/*Mapper.xml   # dao到xml文件映射
+  type-aliases-package: cn.timer.api.bean           # xml中#全局类名别名
+  configuration:
+    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl   # sql日志打印
+    call-setters-on-nulls: true                     # Map做返回体时  字段值为null依然返回
+    cache-enabled: true
+  global-config:
+    db-config:
+      #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
+      #id-type: uuid
+      id-type: auto
+      #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
+      # field-strategy: not_null
+      #驼峰下划线转换
+      table-underline: true
+      #逻辑删除配置
+      #logic-delete-value: 0
+      #logic-not-delete-value: 1
+ # 分页插件
+pagehelper:
+  helperDialect: mysql
+  reasonable: true
+  supportMethodsArguments: true
+  params: count=countSql
+
+#showSql
+logging:
+  level:
+    root: ERROR
+    cn.timer.api.dao: error
+  pattern:
+    console: '--%p--%m%n'
+
+#swagger:
+#  ui-config:
+#    operations-sorter: method   # 它提供了两个配置项:alpha和method,分别代表了按字母表排序以及按方法定义顺序排序
+
+config-8timer:
+  environmental-science: pro
+  expiration_time: 2 #扫码登录过期时长
+  machine8timerUrl: 'http://record.8timer.cn'
+  #machine8timerUrl: 'http://192.168.3.38:8088'
+  authentication-code: ''
+  prescription: 8 #一天工作8小时
+  register-free-time: 90   #系统赠送时间
+  register-company-max-num: 100
+  register-childAccount-max-num: 10
+  Aliyun:    # 阿里云
+    PROJECT_NAME: 8小时协同办公 #8小时人事管家
+    REGION_ID: cn-shenzhen
+    ACCESSKEY_ID: LTAI4FuaShJWQ1dggsFWG5CC
+    SECRET: EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR
+    endpoint: http://oss-cn-shenzhen.aliyuncs.com
+    bucketName: 8time-v2
+    bucketName_pri: 8time-v2-private
+    project_package: 8timer2.0/
+    expirationTime: 3153600000000L
+    expirationTime_pri: 600000L
+    RESUMESDK_APPCODE: 17e3b67b02ab4bef967025cc4938c072 #ResumeSDK简历解析 AppCode
+  esign: # e签宝
+     callbackUrl: 'https://client.8timer.cn/callback/esign/dev'
+     redirectUrl: 'http://client.8timer.cn/#/ElecCon/index'
+   # host: https://openapi.esign.cn
+   # PROJECT_ID: 4438775940
+   # PROJECT_SECRET: 7b100813cca2746081c57837855ac5af
+  remind:   #合同提醒时间 默认小于等于1天会提醒+三个配置项
+    one: 3
+    two: 7
+    three: 30
+  init-password: 123456
+
+  # 创建企业默认添加讯息
+  qyxx:
+     title: '欢迎来到8小时'
+     cover: 'http://8time-v2.oss-cn-shenzhen.aliyuncs.com/8timer2.0/261/null/3571E55w28/%E5%9B%9E%E6%9D%A5.png'
+     summary: '<h1>欢迎来到8小时!可先前往组织管理-组织架构添加公司架构及岗位,再前往员工管理-员工名册添加企业员工。</h1>'
+     author: 'System'
+
+  # 客户管理导入服务器保存路径
+  crm-excel:
+     realPath: '/data/crm-excel/'
+
+  # 百度人才智库(TIC)
+  baidu-tic:
+    appid: XOATkGqX6LvCW3i3Eqd5rg6h
+    secret: UqqNAF1nltMjAOz9yxqHPjZlnjtC2gSS
+
+  # 文件存储地址配置 file type:aliyun-oss,physics-oss
+  # 文件存储地址类型:aliyun-oss(阿里云OSS),physics-oss(物理机器OSS)
+  # 默认存储物理机器OSS
+  file-address:
+    #type: physics-oss
+    type: aliyun-oss
+
+#导出zip临时地址
+zip:
+  path: '/data/crm-zip/'
+
+# base_api_url
+BASE_API_URL: 'http://api.8timer.cn'
+#sftp 配置
+sftp:
+  client:
+    protocol: 'sftp'
+    host: '112.74.91.126'
+    port: '22'
+    username: 'root'
+    password: 'fksdlfjs(*&&%HGgjfkdjsfhksh9781283KFHFFGHghhndbv##2@'
+    root: '/home'
+    sessionStrictHostKeyChecking: 'no'
+    sessionConnectTimeout: '15000'
+    channelConnectedTimeout: '15000'
+    serverUrl: 'https://img.8timer.cn'
+    targetPath: '/disk'
+    reservedName: false
+#微信公众号(服务号)
+wxgzh:
+  appid: 'wxd331ab19a67e2319'
+  appSecret: '7032afbdb4235a45e2400b98a8ec4763'
+  #我方token 在微信公众号基本配置里面配置( token = 8timer123 md5加密得)
+  token: 'af37997effca937229453180e830b164'
+  #消息加解密密钥
+  encodingAesKey: 'chAbt69dLAtk8HH0oGMuZwHzK2SuhnxZI5Jbzc4nNzX'
+
+insure:
+  #投保 appid
+  appid:  '1002209110212305335'
+  #投保 secret
+  secret: '1ef7b79471be7f6b5489832c65109f81'
+  #投保上传文件
+  uploadUrl:  'https://portal.unistar-ins.com/service/Home/Index/fileUpload'
+  #投保立即出单
+  insuredUrl: 'https://portal.unistar-ins.com/mall/Home/Index/createQuotePolicy'
+  #投保请求出单
+  getPolicyUrl: 'https://portal.unistar-ins.com/issuing/Home/Index/index'
+  #申请保单
+  createQuote: 'https://portal.unistar-ins.com/mall/Home/Index/createQuote'
+  #投保支付
+  toPayUrl: 'https://portal.unistar-ins.com/mall/Home/Pay/toPay'
+
+
+  #保全支付
+  batchToPayUrl: 'https://portal.unistar-ins.com/fuli/Home/ImportPay/set_import_pay'
+  #查询保单信息
+  policyDetail: 'https://portal.unistar-ins.com/issuing/Home/Index/policy'
+  #保全appid
+  appidq: '1000711000604326196'
+  #保全 secret
+  secretq:  'a2da17a2797c63dff9172df50af9da65'
+  #保全上传文件
+  uploadUrlq: 'https://portal.unistar-ins.com/fuli/Home/Index/file_upload'
+  #保全申请
+  batchUrl: 'https://portal.unistar-ins.com/fuli/Home/WelfareProduct/batch_declare'
+  #保全取消支付
+  cancelPayment: 'https://portal.unistar-ins.com/fuli/Home/OrderImport/order_import_set'
+
+youling:
+  serverUrl: 'https://www.youlingrc.com'
+
+#h5服务地址
+h5:
+  url: 'http://h5.8timer.cn'
+#支付回调
+pay_page: 'http://oss.8timer.cn'
diff --git a/src/main/resources/mapping/qyzx/APPErroMapper.xml b/src/main/resources/mapping/qyzx/APPErroMapper.xml
new file mode 100644
index 0000000..bf3e905
--- /dev/null
+++ b/src/main/resources/mapping/qyzx/APPErroMapper.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.timer.api.dao.qyzx.APPErroMapper">
+    
+    <resultMap id="EntMap" type="cn.timer.api.bean.qyzx.AppExceptionErro" >
+                <result column="id" property="id" />
+                <result column="errolog" property="errolog" />
+
+    </resultMap>
+
+</mapper>
\ No newline at end of file
--
libgit2 0.26.0