Browse Source

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

Lijy 2 years ago
parent
commit
dbd77377f1

+ 61 - 86
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java

@@ -7,17 +7,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.constant.Constant;
 import com.management.platform.entity.*;
 import com.management.platform.mapper.*;
-import com.management.platform.service.FeishuInfoService;
-import com.management.platform.service.SysRoleService;
-import com.management.platform.service.UserService;
+import com.management.platform.service.*;
 import com.management.platform.util.ColorUtil;
 import com.management.platform.util.HttpRespMsg;
-import com.management.platform.util.MD5Util;
-import com.management.platform.util.SnowFlake;
-import org.junit.Test;
+
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.ldap.core.LdapTemplate;
-import org.springframework.ldap.filter.EqualsFilter;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -25,11 +21,17 @@ import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.naming.Context;
 import javax.naming.NamingException;
+import javax.naming.ldap.Control;
+import javax.naming.ldap.InitialLdapContext;
+import javax.naming.ldap.LdapContext;
+import javax.naming.ldap.SortControl;
 import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -71,6 +73,17 @@ public class UserController {
     private DepartmentMapper departmentMapper;
     @Resource
     private SysRoleMapper sysRoleMapper;
+    @Resource
+    private ExpenseMainTypeService expenseMainTypeService;
+    @Resource
+    private ExpenseTypeService expenseTypeService;
+
+    @Value("${spring.ldap.urls}")
+    private String ldapUrl;
+    @Value("${spring.ldap.base.dcFirst}")
+    private String dcFirst;
+    @Value("${spring.ldap.base.dcSecond}")
+    private String dcSecond;
 
     /**
      * 登录网页端
@@ -328,20 +341,51 @@ public class UserController {
     }
 
 
-    @RequestMapping(value = "/loginForAd", method = RequestMethod.GET)
+    @RequestMapping(value = "/loginForAd", method = RequestMethod.POST)
     public HttpRespMsg loginForAd(@RequestParam String username, @RequestParam String passWord) {
         HttpRespMsg httpRespMsg=new HttpRespMsg();
-        int i = username.indexOf("@");
-        String substring = username.substring(0, i);
-        EqualsFilter filter = new EqualsFilter("sAMAccountName", substring);
-        boolean res =  ldapTemplate.authenticate("",filter.toString(), passWord);
-        if(res){
-            User user = userService.getOne(new QueryWrapper<User>().eq("phone", username).eq("company_id", 3523));
+        User user = userService.getOne(new QueryWrapper<User>().eq("phone", username+"@"+dcFirst+"."+dcSecond));
+        if(username.equals("sysadmin")){
             if(user!=null){
                 return loginByUserId(user.getId());
+            }else {
+                httpRespMsg.setError("账号不存在");
+                return httpRespMsg;
             }
         }
-        httpRespMsg.setError("AD域控用户账号或者密码错误,验证失败");
+        LdapContext ldapContext = null;
+        Hashtable<String, Object> env = new Hashtable<String, Object>();
+        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
+        //验证类型
+        env.put(Context.SECURITY_AUTHENTICATION, "simple");
+        //用户名称,cn,ou,dc 分别:用户,组,域
+        env.put(Context.SECURITY_PRINCIPAL, username+"@"+dcFirst+"."+dcSecond);
+        //用户密码 cn 的密码
+        env.put(Context.SECURITY_CREDENTIALS, passWord);
+        //url 格式:协议://ip:端口/组,域   ,直接连接到域或者组上面
+        env.put(Context.PROVIDER_URL,ldapUrl);
+//        //协议
+//        env.put(Context.SECURITY_PROTOCOL, "ssl");
+//        env.put("java.naming.ldap.factory.socket", "DummySSLSocketFactory类全路径");
+//        //objectGUID 转换,很关键
+        env.put("java.naming.ldap.attributes.binary","objectGUID");
+        try {
+            Control[] sortConnCtls = new SortControl[1];
+            sortConnCtls[0] = new SortControl("sAMAccountName", Control.CRITICAL);
+            ldapContext = new InitialLdapContext(env, sortConnCtls);
+            if(ldapContext!=null){
+                if(user!=null){
+                    return loginByUserId(user.getId());
+                }else {
+                    httpRespMsg.setError("账号不存在");
+                    return httpRespMsg;
+                }
+            }
+        } catch (IOException | NamingException e) {
+            e.printStackTrace();
+            httpRespMsg.setError("AD域控用户账号或者密码错误,验证失败");
+            return httpRespMsg;
+        }
         return httpRespMsg;
     }
 
@@ -361,76 +405,7 @@ public class UserController {
 
     @RequestMapping("/initSystemForAd")
     public HttpRespMsg initSystemForAd(String companyName) throws Exception {
-        HttpRespMsg msg = new HttpRespMsg();
-        Company company = new Company().setCompanyName(companyName)
-                .setExpirationDate(LocalDateTime.now().plusDays(36500));
-        company.setPackageWorktime(1);
-        companyMapper.insert(company);
-        //生成工作时长
-        TimeType timeType = new TimeType();
-        timeType.setCompanyId(company.getId());
-        timeTypeMapper.insert(timeType);
-        SysRole smanager = sysRoleService.generateDefaultRoles(company.getId());
-        //生成项目的成本基线默认条目
-        String[] array = Constant.DEFAULT_BASE_COST_ITEMS;
-        for (String baseItem : array) {
-            ProjectBasecostSetting setting = new ProjectBasecostSetting();
-            setting.setName(baseItem);
-            setting.setCompanyId(company.getId());
-            projectBasecostSettingMapper.insert(setting);
-        }
-        //todo: 生成项目报表服务默认条目
-        Integer[] arrayInteger = new Integer[]{1, 2, 3, 4, 7};
-        for (Integer integerItem : arrayInteger) {
-            CompanyReport companyReport = new CompanyReport();
-            companyReport.setCompanyId(company.getId());
-            companyReport.setReportFormId(integerItem);
-            companyReportMapper.insert(companyReport);
-        }
-        SysRole role = sysRoleMapper.selectOne(new QueryWrapper<SysRole>().eq("company_id", company.getId()).eq("rolename","普通员工"));
-        List<JSONObject> deptArrays = userService.ldapGetOU();
-        for (JSONObject dept : deptArrays) {
-            Department department=new Department();
-            department.setDepartmentName(dept.getString("name"))
-                      .setCompanyId(company.getId());
-            String canonicalName = dept.getString("canonicalName");
-            String[] split = canonicalName.split("/");
-            if(split.length>2){
-                String s = split[split.length - 2];
-                Department one = departmentMapper.selectOne(new QueryWrapper<Department>().eq("department_name", s).eq("company_id", company.getId()));
-                if(Optional.of(one).isPresent()){
-                    department.setSuperiorId(one.getDepartmentId());
-                }
-            }
-            departmentMapper.insert(department);
-        }
-        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", company.getId()));
-        List<JSONObject> userArrays = userService.getUser();
-        for (JSONObject user : userArrays) {
-            User u=new User();
-            u.setId(SnowFlake.nextId()+"")
-             .setName(user.getString("name"))
-             .setPhone(user.getString("userPrincipalName"))
-             .setId(SnowFlake.nextId()+"")
-             .setRoleId(role.getId())//默认普通员工
-             .setRoleName(role.getRolename())
-             .setCompanyId(company.getId())
-             .setColor(ColorUtil.randomColor())
-             .setPassword(MD5Util.getPassword("000000"));
-            String distinguishedName = user.getString("distinguishedName");
-            String[] split = distinguishedName.split(",");
-            List<String> list = Arrays.asList(split);
-            List<String> collect = list.stream().filter(l -> l.contains("OU=")).collect(Collectors.toList());
-            if(collect.size()>0){
-                String s = collect.get(0).replaceAll("OU=", "");
-                Department one = departmentMapper.selectOne(new QueryWrapper<Department>().eq("department_name", s).eq("company_id", company.getId()));
-                if(one!=null){
-                    u.setDepartmentId(one.getDepartmentId()).setDepartmentName(one.getDepartmentName()).setDepartmentCascade(convertDepartmentIdToCascade(one.getDepartmentId(),departmentList));
-                }
-                userService.save(u);
-            }
-        }
-        return msg;
+        return userService.initSystemForAd(companyName);
     }
 
     @RequestMapping("/updateUserDeptHierarchy")

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserService.java

@@ -99,4 +99,6 @@ public interface UserService extends IService<User> {
     List<JSONObject> ldapGetOU() throws NamingException;
 
     List<JSONObject> getUser() throws Exception;
+
+    HttpRespMsg initSystemForAd(String companyName) throws Exception;
 }

+ 225 - 12
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -236,17 +236,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         } else if (userList.get(0).getIsActive() == 0) {
             httpRespMsg.setError(MessageUtils.message("user.inactive"));
         } else {
-            if(userList.get(0).getCompanyId()==3523){
-                int i = username.indexOf("@");
-                String substring = username.substring(0, i);
-                EqualsFilter filter = new EqualsFilter("sAMAccountName", substring);
-                boolean res =  ldapTemplate.authenticate("",filter.toString(), password);
-                if(!res){
-                    httpRespMsg.setError("AD域控用户账号或者密码错误,验证失败");
-                    return httpRespMsg;
-                }
-                userList.get(0).setPassword(MD5Util.getPassword(password));
-            }
             if (MD5Util.getPassword(password).equals(userList.get(0).getPassword())){
                 //查看该公司非会员公司,只能允许试用三天,超时不可登录
                 Company company = companyMapper.selectOne(new QueryWrapper<Company>().eq("id", userList.get(0).getCompanyId()));
@@ -2187,6 +2176,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         item.setVcode(""+vcode);
         if (isPrivateDeploy) {
             userVcodeMapper.insert(item);
+            msg.setData(item);
         } else {
             SendSmsResponse sendSmsResponse = SmsUtil.sendSms(mobile, "" + vcode);
             if (!sendSmsResponse.getBody().getCode().equals("OK")) {
@@ -3049,7 +3039,230 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         return jsonObjectList;
     }
 
-    private LdapContext adLogin() {
+    @Override
+    public HttpRespMsg initSystemForAd(String companyName) throws Exception {
+        HttpRespMsg msg = new HttpRespMsg();
+        Integer count = companyMapper.selectCount(new QueryWrapper<Company>().eq("company_name", companyName));
+        if (count>0){
+            msg.setError("当前公司名称已存在");
+            return msg;
+        }
+        Company company = new Company().setCompanyName(companyName)
+                .setExpirationDate(LocalDateTime.now().plusDays(36500));
+        company.setPackageWorktime(1);
+        companyMapper.insert(company);
+        //生成工作时长
+        TimeType timeType = new TimeType();
+        timeType.setCompanyId(company.getId());
+        timeTypeMapper.insert(timeType);
+        SysRole smanager = sysRoleService.generateDefaultRoles(company.getId());
+        //创建企业负责人账号
+        Long id = SnowFlake.nextId();
+        User manager = new User()
+                .setId(id.toString())
+                .setRoleId(smanager.getId())
+                .setRoleName(smanager.getRolename())
+                .setName("sysadmin")
+                .setPhone("sysadmin@"+dcFirst+dcSecond)
+                .setPassword(MD5Util.getPassword("000000"))
+                .setColor(ColorUtil.randomColor())
+                .setCompanyId(company.getId());
+        userMapper.insert(manager);
+        System.out.println("生成超级管理员:sysadmin");
+        //生成项目的成本基线默认条目
+        String[] array = Constant.DEFAULT_BASE_COST_ITEMS;
+        for (String baseItem : array) {
+            ProjectBasecostSetting setting = new ProjectBasecostSetting();
+            setting.setName(baseItem);
+            setting.setCompanyId(company.getId());
+            projectBasecostSettingMapper.insert(setting);
+        }
+        //生成费用报销默认条目
+        String[] expenseTypes = Constant.EXPENSE_TYPES;
+        List<String> commonly = new ArrayList<>();
+        commonly.add("材料费");
+        //commonly.add(MessageUtils.message("entry.materialCost"));
+        commonly.add("办公用品");
+        //commonly.add(MessageUtils.message("entry.workCost"));
+        commonly.add("培训费");
+        //commonly.add(MessageUtils.message("entry.trainCost"));
+        commonly.add("打印费");
+        //commonly.add(MessageUtils.message("entry.printCost"));
+        commonly.add("快递费");
+        //commonly.add(MessageUtils.message("entry.expressCost"));
+        commonly.add("制作费");
+        //commonly.add(MessageUtils.message("entry.makeCost"));
+        commonly.add("律师费");
+        //commonly.add(MessageUtils.message("entry.lawyerCost"));
+        commonly.add("水费");
+        //commonly.add(MessageUtils.message("entry.waterCost"));
+        commonly.add("电费");
+        //commonly.add(MessageUtils.message("entry.electricCost"));
+        commonly.add("团建费");
+        //commonly.add(MessageUtils.message("entry.leagueCost"));
+        commonly.add("其他");
+        //commonly.add(MessageUtils.message("entry.other"));
+        List<String> travel  = new ArrayList<>();
+        travel.add("城市间交通费");
+        //travel.add(MessageUtils.message("entry.cityTrafficCost"));
+        travel.add("住宿费");
+        //travel.add(MessageUtils.message("entry.liveCost"));
+        travel.add("伙食补助费");
+        //travel.add(MessageUtils.message("entry.eatCost"));
+        travel.add("市内交通费");
+        //travel.add(MessageUtils.message("entry.insideCityCost"));
+        travel.add("其他差旅费");
+        //travel.add(MessageUtils.message("entry.otherLiveTraCost"));
+        List<String> outsource = new ArrayList<>();
+        outsource.add("项目外包费");
+        //outsource.add(MessageUtils.message("entry.projectCost"));
+        outsource.add("劳务外包费");
+        //outsource.add(MessageUtils.message("entry.labourCost"));
+        outsource.add("其他外包费");
+        //outsource.add(MessageUtils.message("entry.OtherOutsourceCost"));
+        List<ExpenseType> expenseTypeList=new ArrayList<>();
+        List<ExpenseMainType> expenseMainTypes=new ArrayList<>();
+        ExpenseMainType expenseMainType=new ExpenseMainType();
+        expenseMainType.setName("一般费用");
+        expenseMainType.setCompanyId(company.getId());
+        ExpenseMainType expenseMainType1=new ExpenseMainType();
+        expenseMainType1.setName("差旅费用");
+        expenseMainType1.setCompanyId(company.getId());
+        ExpenseMainType expenseMainType2=new ExpenseMainType();
+        expenseMainType2.setName("外包费用");
+        expenseMainType2.setCompanyId(company.getId());
+        expenseMainTypes.add(expenseMainType);
+        expenseMainTypes.add(expenseMainType1);
+        expenseMainTypes.add(expenseMainType2);
+        expenseMainTypeService.saveBatch(expenseMainTypes);
+        for (String expenseType : expenseTypes) {
+            ExpenseType item=new ExpenseType();
+            item.setCompanyId(company.getId());
+            item.setTypeName(expenseType);
+            if(commonly.contains(expenseType)){
+                item.setMainType(expenseMainType.getId());
+            }
+            if(travel.contains(expenseType)){
+                item.setMainType(expenseMainType1.getId());
+            }
+            if(outsource.contains(expenseType)){
+                item.setMainType(expenseMainType2.getId());
+            }
+            expenseTypeList.add(item);
+        }
+        expenseTypeService.saveBatch(expenseTypeList);
+        //todo: 生成初始测试项目及任务
+        Project project=new Project();
+        project.setCompanyId(company.getId());
+        project.setInchargerId(manager.getId());
+        project.setInchargerName(manager.getName());
+        project.setCreatorId(manager.getId());
+        project.setCreatorName(manager.getName());
+        project.setCreateDate(LocalDate.now());
+        project.setProjectCode("example");
+        project.setProjectName("示例项目");
+        //设置为公共项目,这样测试的用户都能填报
+        project.setIsPublic(1);
+        projectMapper.insert(project);
+        //todo: 生成初始项目相关日报审核人
+        ProjectAuditor projectAuditor=new ProjectAuditor();
+        projectAuditor.setAuditorId(manager.getId());
+        projectAuditor.setAuditorName(manager.getName());
+        projectAuditor.setProjectId(project.getId());
+        projectAuditorMapper.insert(projectAuditor);
+        //todo: 生成项目报表服务默认条目
+        Integer[] arrayInteger = new Integer[]{1, 2, 3, 4, 7};
+        for (Integer integerItem : arrayInteger) {
+            CompanyReport companyReport = new CompanyReport();
+            companyReport.setCompanyId(company.getId());
+            companyReport.setReportFormId(integerItem);
+            companyReportMapper.insert(companyReport);
+        }
+        //todo: 生成初始项目相关示例任务分组/任务阶段以及示例任务
+        TaskGroup taskGroup = new TaskGroup();
+        taskGroup.setProjectId(project.getId())
+                .setInchargerId(manager.getId())
+                .setName("项目阶段");
+        taskGroupMapper.insert(taskGroup);
+        Stages stage = new Stages();
+        stage.setGroupId(taskGroup.getId());
+        stage.setSequence(1);
+        stage.setProjectId(project.getId());
+        stage.setStagesName("工作开展");
+        stagesMapper.insert(stage);
+        Task task=new Task();
+        Integer oneDayHours = 8;
+        task.setCreateDate(LocalDate.now());
+        task.setProjectId(project.getId());
+        task.setCompanyId(company.getId());
+        task.setCreaterId(manager.getId());
+        task.setCreaterName(manager.getName());
+        task.setCreatorColor(manager.getColor());
+        task.setExecutorId(manager.getId());
+        task.setExecutorColor(manager.getColor());
+        task.setExecutorName(manager.getName());
+        task.setPlanHours(oneDayHours);
+        task.setStagesId(stage.getId());
+        task.setGroupId(taskGroup.getId());
+        task.setSeq(0);
+        task.setName("示例任务");
+        taskMapper.insert(task);
+        //任务执行人表也要插入,不然会导致编辑任务的时候执行人为空
+        TaskExecutor executor = new TaskExecutor();
+        executor.setTaskId(task.getId());
+        executor.setPlanHours(oneDayHours);
+        executor.setProjectId(project.getId());
+        executor.setExecutorId(manager.getId());
+        executor.setExecutorColor(manager.getColor());
+        executor.setExecutorName(manager.getName());
+        taskExecutorMapper.insert(executor);
+        SysRole role = sysRoleMapper.selectOne(new QueryWrapper<SysRole>().eq("company_id", company.getId()).eq("rolename","普通员工"));
+        List<JSONObject> deptArrays = ldapGetOU();
+        for (JSONObject dept : deptArrays) {
+            Department department=new Department();
+            department.setDepartmentName(dept.getString("name"))
+                    .setCompanyId(company.getId());
+            String canonicalName = dept.getString("canonicalName");
+            String[] split = canonicalName.split("/");
+            if(split.length>2){
+                String s = split[split.length - 2];
+                Department one = departmentMapper.selectOne(new QueryWrapper<Department>().eq("department_name", s).eq("company_id", company.getId()));
+                if(one!=null&&Optional.of(one).isPresent()){
+                    department.setSuperiorId(one.getDepartmentId());
+                }
+            }
+            departmentMapper.insert(department);
+        }
+        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", company.getId()));
+        List<JSONObject> userArrays = getUser();
+        for (JSONObject user : userArrays) {
+            User u=new User();
+            u.setId(SnowFlake.nextId()+"")
+                    .setName(user.getString("name"))
+                    .setPhone(user.getString("userPrincipalName"))
+                    .setId(SnowFlake.nextId()+"")
+                    .setRoleId(role.getId())//默认普通员工
+                    .setRoleName(role.getRolename())
+                    .setCompanyId(company.getId())
+                    .setColor(ColorUtil.randomColor())
+                    .setPassword(MD5Util.getPassword("000000"));
+            String distinguishedName = user.getString("distinguishedName");
+            String[] split = distinguishedName.split(",");
+            List<String> list = Arrays.asList(split);
+            List<String> collect = list.stream().filter(l -> l.contains("OU=")).collect(Collectors.toList());
+            if(collect.size()>0){
+                String s = collect.get(0).replaceAll("OU=", "");
+                Department one = departmentMapper.selectOne(new QueryWrapper<Department>().eq("department_name", s).eq("company_id", company.getId()));
+                if(one!=null){
+                    u.setDepartmentId(one.getDepartmentId()).setDepartmentName(one.getDepartmentName()).setDepartmentCascade(convertDepartmentIdToCascade(one.getDepartmentId(),departmentList));
+                }
+            }
+            userMapper.insert(u);
+        }
+        return msg;
+    }
+
+    public LdapContext adLogin() {
 
         LdapContext ldapContext = null;
         Hashtable<String, Object> env = new Hashtable<String, Object>();

+ 143 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/application-meenyi.yml

@@ -0,0 +1,143 @@
+server:
+  port: 10010
+  tomcat:
+    uri-encoding: utf-8
+    max-http-form-post-size: -1
+    connection-timeout: 18000000s
+spring:
+  servlet:
+    multipart:
+      # 配置上传文件的大小设置
+
+      # Single file max size  即单个文件大小
+      max-file-size: 100MB
+      max-request-size: 100MB
+      location: C:/upload/
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://127.0.0.1:3306/man_mingyi?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
+    username: root
+    password: meenyi@123!
+    hikari:
+      maximum-pool-size: 60
+      minimum-idle: 10
+      max-lifetime: 180000
+      # 数据库连接超时时间,默认30秒,即30000
+      connection-timeout: 60000
+      connection-test-query: SELECT 1
+    #######redis配置######
+    # redis
+    redis:
+      host: 127.0.0.1
+      port: 6379
+      timeout: 3
+      # password:
+      pool:
+        minIdle: 1
+        maxIdle: 10
+        maxWait: 3
+        maxActive: 8
+  ####全局配置时间返回格式#####
+  jackson:
+    #参数意义:
+    #JsonInclude.Include.ALWAYS       默认
+    #JsonInclude.Include.NON_DEFAULT   属性为默认值不序列化
+    #JsonInclude.Include.NON_EMPTY     属性为 空(””) 或者为 NULL 都不序列化
+    #JsonInclude.Include.NON_NULL      属性为NULL  不序列化
+    default-property-inclusion: ALWAYS
+    time-zone: GMT+8
+    date-format: yyyy-MM-dd HH:mm:ss
+  messages:
+    basename: i18n.messages #配置国际化资源文件路径
+    encoding: UTF-8
+
+  ##AD认证
+  ldap:
+    ##AD服务器IP,默认端口389
+    urls: ldap://172.10.10.180:389
+    ##登录账号
+    username: OA@my.com
+    ##密码
+    password: meenyi.com
+    #distinguishedName的部分节点
+    base:
+      dcFirst: my
+      dcSecond: com
+##########日志配置
+logging:
+  level:
+    root: info
+    org.mybatis: debug
+    java.sql: debug
+    org.springframework.web: trace
+    #打印sql语句
+    com.management.platform.mapper: debug
+  path: D:/worktime/server/log/
+  file: worktime.log
+##########
+mybatis-plus:
+  #  mapper-locations: classpath:mapper/*/*.xml
+  #  #实体扫描,多个package用逗号或者分号分隔
+  #  typeAliasesPackage: com.hssx.cloudmodel
+  global-config:
+    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
+    id-type: 0
+    #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
+    field-strategy: 2
+    db-column-underline: true
+    refresh-mapper:
+    #################插入和更新非null判断
+    db-config:
+      insert-strategy: not_null
+      update-strategy: not_null
+  configuration:
+    map-underscore-to-camel-case: true
+    cache-enabled: false
+######mybstis配置#######
+mybatis:
+  type-aliases-package: com.management.platform.entity
+  mapper-locations: mappers/*Mapper.xml
+#####配置图片上传路径####
+upload:
+  path: D:/staticproject/timesheet/upload/
+
+referer:
+  refererDomain:
+    - localhost
+    - mytime.ttkuaiban.com
+
+##actuator健康检查配置
+management:
+  security:
+    enabled:false:
+  server:
+    port: 10012
+  #  endpoints:
+  #    web:
+  #      exposure:
+  #        include: "*"
+
+  health:
+    redis:
+      enabled: false
+    ldap:
+      enabled: false
+
+configEnv:
+  isDev: false
+  # 是否是私有化部署,企业内部应用
+  isPrivateDeploy: true
+
+privateDeployURL:
+  pcUrl: http://dev.huoshishanxin.com/#/
+  mobUrl: http://dev.huoshishanxin.com/#/
+
+# SFTP上传配置
+sftp:
+  isEnabled: false
+  server: 101.132.166.205
+  port: 22022
+  remoteDir: /bkup/timesheet
+  user: root
+  password: Huoshi@2022
+