wangsaitao 1 年間 前
コミット
732d057a22
100 ファイル変更7244 行追加0 行削除
  1. 5 0
      .gitignore
  2. 42 0
      .travis.yml
  3. 927 0
      CHANGELOG.md
  4. 32 0
      LICENSE.txt
  5. 1 0
      README.md
  6. 11 0
      api.http
  7. 1 0
      application/.htaccess
  8. 6 0
      application/api/config/app.php
  9. 22 0
      application/api/controller/Base.php
  10. 560 0
      application/api/controller/Timer.php
  11. 19 0
      application/api/controller/dinner/BaseDinner.php
  12. 112 0
      application/api/controller/dinner/Dinner.php
  13. 74 0
      application/api/controller/dinner/Login.php
  14. 50 0
      application/api/controller/v1/Action.php
  15. 61 0
      application/api/controller/v1/AppIcon.php
  16. 57 0
      application/api/controller/v1/AppIconCate.php
  17. 63 0
      application/api/controller/v1/AppMgr.php
  18. 293 0
      application/api/controller/v1/Apply.php
  19. 16 0
      application/api/controller/v1/ApplyRecord.php
  20. 87 0
      application/api/controller/v1/Approval.php
  21. 48 0
      application/api/controller/v1/ApprovalCate.php
  22. 89 0
      application/api/controller/v1/Article.php
  23. 20 0
      application/api/controller/v1/ArticleLog.php
  24. 52 0
      application/api/controller/v1/AssetAdd.php
  25. 52 0
      application/api/controller/v1/AssetCate.php
  26. 79 0
      application/api/controller/v1/AssetCheck.php
  27. 52 0
      application/api/controller/v1/AssetClass.php
  28. 24 0
      application/api/controller/v1/AssetDisposal.php
  29. 28 0
      application/api/controller/v1/AssetExportTemp.php
  30. 151 0
      application/api/controller/v1/AssetItems.php
  31. 24 0
      application/api/controller/v1/AssetReceive.php
  32. 30 0
      application/api/controller/v1/AssetRepair.php
  33. 52 0
      application/api/controller/v1/AssetUnit.php
  34. 52 0
      application/api/controller/v1/AssetWay.php
  35. 24 0
      application/api/controller/v1/AssetWithdraw.php
  36. 64 0
      application/api/controller/v1/AttendanceAddr.php
  37. 31 0
      application/api/controller/v1/AttendanceApply.php
  38. 51 0
      application/api/controller/v1/AttendanceClass.php
  39. 46 0
      application/api/controller/v1/AttendanceGroup.php
  40. 25 0
      application/api/controller/v1/AttendanceGroupClass.php
  41. 38 0
      application/api/controller/v1/AttendanceGroupUser.php
  42. 41 0
      application/api/controller/v1/AttendanceLeave.php
  43. 52 0
      application/api/controller/v1/AttendanceLeaveType.php
  44. 90 0
      application/api/controller/v1/AttendanceRecord.php
  45. 19 0
      application/api/controller/v1/AttendanceRecordResult.php
  46. 47 0
      application/api/controller/v1/Banner.php
  47. 83 0
      application/api/controller/v1/Budget.php
  48. 83 0
      application/api/controller/v1/BudgetDep.php
  49. 25 0
      application/api/controller/v1/BudgetDepTotal.php
  50. 70 0
      application/api/controller/v1/BudgetItems.php
  51. 57 0
      application/api/controller/v1/BudgetPay.php
  52. 71 0
      application/api/controller/v1/Car.php
  53. 47 0
      application/api/controller/v1/Certificate.php
  54. 27 0
      application/api/controller/v1/Common.php
  55. 16 0
      application/api/controller/v1/Company.php
  56. 253 0
      application/api/controller/v1/Contract.php
  57. 51 0
      application/api/controller/v1/DelLog.php
  58. 84 0
      application/api/controller/v1/Dep.php
  59. 58 0
      application/api/controller/v1/Dinner.php
  60. 51 0
      application/api/controller/v1/DinnerCate.php
  61. 69 0
      application/api/controller/v1/DinnerCompany.php
  62. 127 0
      application/api/controller/v1/DinnerOrders.php
  63. 41 0
      application/api/controller/v1/DinnerUser.php
  64. 62 0
      application/api/controller/v1/Document.php
  65. 55 0
      application/api/controller/v1/DocumentCate.php
  66. 495 0
      application/api/controller/v1/Email.php
  67. 45 0
      application/api/controller/v1/Feedback.php
  68. 44 0
      application/api/controller/v1/File.php
  69. 46 0
      application/api/controller/v1/FileRecord.php
  70. 45 0
      application/api/controller/v1/FileUserTemp.php
  71. 39 0
      application/api/controller/v1/FinanceLog.php
  72. 58 0
      application/api/controller/v1/House.php
  73. 33 0
      application/api/controller/v1/HouseAuth.php
  74. 64 0
      application/api/controller/v1/HouseBuilding.php
  75. 38 0
      application/api/controller/v1/HouseCate.php
  76. 34 0
      application/api/controller/v1/HouseCommunity.php
  77. 38 0
      application/api/controller/v1/HouseCompany.php
  78. 77 0
      application/api/controller/v1/HouseContract.php
  79. 33 0
      application/api/controller/v1/HouseContractDefault.php
  80. 58 0
      application/api/controller/v1/HouseContractPay.php
  81. 47 0
      application/api/controller/v1/HouseDistrict.php
  82. 32 0
      application/api/controller/v1/HouseFloor.php
  83. 60 0
      application/api/controller/v1/HouseFloorInfo.php
  84. 52 0
      application/api/controller/v1/HouseLabel.php
  85. 41 0
      application/api/controller/v1/HouseLessee.php
  86. 38 0
      application/api/controller/v1/HouseLesseeProp.php
  87. 40 0
      application/api/controller/v1/HouseLevel.php
  88. 32 0
      application/api/controller/v1/HouseMark.php
  89. 34 0
      application/api/controller/v1/HouseRepair.php
  90. 37 0
      application/api/controller/v1/HouseRight.php
  91. 37 0
      application/api/controller/v1/HouseSelect.php
  92. 95 0
      application/api/controller/v1/HouseTurn.php
  93. 144 0
      application/api/controller/v1/HouseTurnLessee.php
  94. 45 0
      application/api/controller/v1/Icons.php
  95. 49 0
      application/api/controller/v1/Important.php
  96. 102 0
      application/api/controller/v1/ImportantRecord.php
  97. 38 0
      application/api/controller/v1/ImportantRecordAnnotation.php
  98. 79 0
      application/api/controller/v1/Job.php
  99. 45 0
      application/api/controller/v1/LeaderShip.php
  100. 0 0
      application/api/controller/v1/LeaveBj.php

+ 5 - 0
.gitignore

@@ -0,0 +1,5 @@
+/.idea
+/.vscode
+*.log
+.env
+.DS_Store

ファイルの差分が大きいため隠しています
+ 42 - 0
.travis.yml


+ 927 - 0
CHANGELOG.md

@@ -0,0 +1,927 @@
+## V5.1.39 LTS(2019-11-18)
+
+本次更新为常规更新,主要包括:
+
+* 修正`memcached`驱动
+* 改进`HasManyThrough`关联查询
+* 改进`Request`类`isJson`方法
+* 改进关联查询
+* 改进`redis`驱动
+* 增加 Model类`getWhere`方法对复合主键的支持
+* 改进`newQuery`方法
+* 改进闭包查询的参数绑定
+* 修正`Validate`
+* 修复某些情况下URL会多一个冒号
+* 调整composer.json
+* 修复使用`Cache::clear()`时,报错缓存文件不存在问题
+* 使用File类的unlink方法进行文件删除
+* 改进`paraseData`方法
+* 修正image验证方法
+* 改进Url生成
+* 改进空操作对数字的支持
+* 改进一处PHP7.4兼容性问题
+
+## V5.1.38 LTS(2019-8-8)
+
+本次更新为常规更新,主要包括:
+
+* `Request`类增加`isJson`方法
+* 改进浮点型查询
+* 修正关联查询关联外键为空的查询错误
+* 远程一对多支持关联统计和预载入查询
+* 远程一对多关联支持`has`/`hasWhere`查询
+* 优化`parseIn`解析
+* 改进`parseLike`查询
+* 改进Url生成
+* 改进模型的`toArray`方法
+* 修正`notIn`查询
+* 改进`JSON`字段查询
+* 改进Controller类`display`/`fetch`方法返回`ViewResponse`对象
+* 改进`param`方法
+* 改进`mysql`驱动`getExplain`方法
+* 改进时间查询
+* 改进模型关联的`has`/`hasWhere`方法对软删除的支持
+* 修正社区反馈的BUG
+
+## V5.1.37 LTS(2019-5-26)
+
+本次更新为常规更新,主要更新如下:
+
+* 改进关联数据更新
+* 修正关联动态获取器
+* 改进`redis`驱动 
+* 修复验证规则里面出现二维数组时的错误
+* 改进跨域请求支持
+* 完善模型`hidden`方法对关联属性的支持
+* 改进`where`查询方法传入`Query`对象的支持`bind`数据
+* 改进数据集对象的`load`方法
+* 修正缓存类`clear`方法对`tag`的支持
+
+## V5.1.36 LTS(2019-4-28)
+
+本次更新为常规更新,主要更新如下:
+
+* 修正`chunk`方法一处异常抛出的错误
+* 修正模型输出的`visible`
+* 改进环境变量加载
+* 改进命令行日志的`level`配置支持
+* 修复设置有缓存前缀时,无法清空缓存标签的问题
+* HasMony对象`saveAll`方法兼容`Collection`格式参数格式
+* 修正`whereOr`查询使用字符串的问题
+* 改进`dateFormat`设置对写入数据的影响
+* 修正查询缓存
+* 记住指定的跳转地址
+* 改进软删除
+* 改进聚合查询SQL去除limit 1
+* 改进缓存驱动
+
+## V5.1.35 LTS(2019-3-2)
+
+本次主要为常规更新,修正了一些反馈的问题。
+
+* 修正验证类自定义验证方法执行两次的问题
+* 模型增加`isEmpty`方法用于判断是否空模型
+* 改进获取器对`append`的支持
+* 修正一对多关联的`withCount`自关联问题
+* facade类注释调整
+* 改进关联属性的`visible`和`hidden`判断
+* 修正路由分组的`MISS`路由
+* 改进pgsql.sql
+
+## V5.1.34 LTS(2019-1-30)
+
+本次更新为常规更新,修正了一些反馈的问题。
+
+* 改进Request类的`has`方法,支持`patch`
+* 改进`unique`验证的多条件支持
+* 修复自定义上传验证,检测文件大小
+* 改进`in`查询支持表达式
+* 改进路由的`getBind`方法
+* 改进验证类的错误信息获取
+* 改进`response`助手函数默认值
+* 修正mysql的`regexp`查询
+* 改进模型类型强制转换写入对`Expression`对象的支持
+
+## V5.1.33 LTS(2019-1-16)
+
+* 修复路由中存在多个相同替换的正则BUG
+* 修正whereLike查询
+* join方法支持参数绑定
+* 改进union方法
+* 修正多对多关联的attach方法
+* 改进验证类的正则规则自定义
+* 改进Request类method方法
+* 改进File日志类型的CLI日志写入
+* 改进文件日志time_format配置对JSON格式的支持
+
+## V5.1.32 LTS(2018-12-24)
+
+本次主要为常规更新,修正了一些反馈的问题。
+
+
+* 改进多对多关联的`attach`方法 
+* 改进聚合查询的`field`处理
+* 改进关联的`save`方法
+* 修正模型`exists`方法返回值
+* 改进时间字段写入和输出
+* 改进控制器中间件的调用
+* 改进路由变量替换的性能
+* 改进缓存标签的处理机制
+
+## V5.1.31 LTS (2018-12-9)
+
+本次版本包含一个安全更新,建议升级。
+
+* 改进`field`方法
+* 改进`count`方法返回类型
+* `download`函数增加在浏览器中显示文件功能
+* 修正多对多模型的中间表数据写入
+* 改进`sqlsrv`驱动支持多个Schemas模式查询
+* 统一助手函数与\think\response\Download函数文件过期时间
+* 完善关联模型的`save`方法 增加`make`方法仅创建对象不保存
+* 修改条件表达式对静态变量的支持
+* 修正控制器名获取
+* 改进view方法的`field`解析
+
+## V5.1.30 LTS(2018-11-30)
+
+该版本为常规更新,修正了一些社区反馈的问题。
+
+主要更新如下:
+
+* 改进查询类的`execute`方法
+* 判断路由规则定义添加对请求类型的判断
+* 修复`orderRaw`异常
+* 修正 `optimize:autoload`指令
+* 改进软删除的`destroy`方法造成重复执行事件的问题
+* 改进验证类对扩展验证规则 始终验证 不管是否`require`
+* 修复自定义验证`remove`所有规则的异常
+* 改进时间字段的自动写入支持微秒数据
+* 改进`Connection`类的`getrealsql`方法
+* 修正`https`地址的URL生成
+* 修复 `array_walk_recursive` 在低于PHP7.1消耗内部指针问题
+* 改进手动参数绑定使用
+* 改进聚合查询方法的`field`参数支持`Expression`
+
+## V5.1.29 LTS(2018-11-11)
+
+该版本主要改进了参数绑定的解析问题和提升性能,并修正了一些反馈的问题。
+
+* 改进手动参数绑定
+* 修正MISS路由的分组参数无效问题
+* 行为支持对象的方法
+* 修正全局查询范围
+* 改进`belongsto`关联的`has`方法
+* 改进`hasMany`关联
+* 改进模型观察者多次注册的问题
+* 改进`query`类的默认查询参数处理
+* 修正`parseBetween`解析方法
+* 改进路由地址生成的本地域名支持
+* 改进参数绑定的实际URL解析性能
+* 改进`Env`类的`getEnv`和`get`方法
+* 改进模板缓存的生成优化
+* 修复验证类的多语言支持
+* 修复自定义场景验证`remove`规则异常
+* File类添加是否自动补全扩展名的选项
+* 改进`strpos`对子串是否存在的判断
+* 修复`choice`无法用值选择第一个选项问题
+* 验证器支持多维数组取值验证
+* 改进解析`extend`和`block`标签的正则
+
+## V5.1.28 LTS(2018-10-29)
+
+该版本主要修正了上一个版本存在的一些问题,并改进了关联查询
+
+* 改进聚合查询方法的字段支持DISTINCT
+* 改进定义路由后url函数的端口生成
+* 改进控制器中间件对`swoole`等的支持
+* 改进Log类`save`方法
+* 改进验证类的闭包验证参数
+* 多对多关联支持指定中间表数据的名称
+* 关联聚合查询支持闭包方式指定聚合字段
+* 改进Lang类`get`方法
+* 多对多关联增加判断关联数据是否存在的方法
+* 改进关联查询使用`fetchsql`的情况
+* 改进修改器的是否已经执行判断
+* 增加`afterWith`和`beforeWith`验证规则 用于比较日期字段
+
+## V5.1.27 LTS(2018-10-22)
+
+该版本主要修正了路由绑定的参数,改进了修改器的执行多次问题,并正式宣布为LTS版本!
+
+
+* 修正路由绑定的参数丢失问题
+* 修正路由别名的参数获取
+* 改进修改器会执行多次的问题
+
+## V5.1.26(2018-10-12)
+
+该版本主要修正了上一个版本的一些问题,并改进了全局查询范围的支持,同时包含了一个安全更新。
+
+
+* 修正单一模块下注解路由无效的问题
+* 改进数据库的聚合查询的字段处理
+* 模型类增加`globalScope`属性定义 用于指定全局的查询范围
+* 模型的`useGlobalScope`方法支持传入数组 用于指定当前查询需要使用的全局查询范围
+* 改进数据集的`order`方法对数字类型的支持
+* 修正上一个版本`order`方法解析的一处BUG
+* 排序字段不合法或者错误的时候抛出异常
+* 改进`Request`类的`file`方法对上传文件的错误判断
+
+##  V5.1.25(2018-9-21)
+
+该版本主要改进了查询参数绑定的性能和对浮点型的支持,以及一些细节的完善。
+
+* 修正一处命令行问题
+* 改进`Socketlog`日志驱动,支持自定义默认展开日志类别
+* 修正`MorphMany`一处bug
+* 跳转到上次记住的url,并支持默认值
+* 改进模型的异常提示
+* 改进参数绑定对浮点型的支持
+* 改进`order`方法解析
+* 改进`json`字段数据的自动编码
+* 改进日志`log_write`可能造成的日志写入死循环
+* Log类增加`log_level`行为标签位置,用于对某个类型的日志进行处理
+* Route类增加`clear`方法清空路由规则
+* 分布式数据库配置支持使用数组
+* 单日志文件也支持`max_files`参数
+* 改进查询参数绑定的性能
+* 改进别名路由的URL后缀参数检测
+* 控制器前置方法和控制器中间件的`only`和`except`定义不区分大小写
+
+## V5.1.24(2018-9-5)
+
+该版本主要增加了命令行的表格输出功能,并增加了查看路由定义的指令,以及修正了社区的一些反馈问题。
+
+* 修正`Request`类的`file`方法
+* 修正路由的`cache`方法
+* 修正路由缓存的一处问题
+* 改进上传文件获取的异常处理
+* 改进`fetchCollection`方法支持传入数据集类名
+* 修正多级控制器的注解路由生成
+* 改进`Middleware`类`clear`方法
+* 增加`route:list`指令用于[查看定义的路由](752690) 并支持排序
+* 命令行增加`Table`输出类
+* `Command`类增加`table`方法用于输出表格
+* 改进搜索器查询方法支持别名定义
+* 命令行配置增加`auto_path`参数用于定义自动载入的命令类路径
+* 增加`make:command`指令用于[快速生成指令](354146)
+* 改进`make:controller`指令对操作方法后缀的支持
+* 改进命令行的定义文件支持索引数组 用于指令对象的惰性加载
+* 改进`value`和`column`方法对后续查询结果的影响
+* 改进`RuleName`类的`setRule`方法
+
+## V5.1.23(2018-8-23)
+
+该版本主要改进了数据集对象的处理,增加了`findOrEmpty`方法,并且修正了一些社区反馈的BUG。
+
+* 数据集类增加`diff`/`intersect`方法用于获取差集和交集(默认根据主键值比较)
+* 数据集类增加`order`方法支持指定字段排序
+* 数据集类增加`map`方法使用回调函数处理数据并返回新的数据集对象
+* Db增加`allowEmpty`方法允许`find`方法在没有数据的时候返回空数组或者空模型对象而不是null
+* Db增加`findOrEmpty`方法
+* Db增加`fetchCollection`方法用于指定查询返回数据集对象
+* 改进`order`方法的数组方式解析,增强安全性
+* 改进`withSearch`方法,支持第三个参数传入字段前缀标识,用于多表查询字段搜索
+* 修正`optimize:route`指令开启类库后缀后的注解路由生成
+* 修正redis缓存及session驱动
+* 支持指定`Yaconf`的独立配置文件
+* 增加`yaconf`助手函数用于配置文件
+
+
+## V5.1.22(2018-8-9)
+
+该版本主要增加了模型搜索器和`withJoin`方法,完善了模型输出和对`Yaconf`的支持,修正了一些社区反馈的BUG。
+
+* 改进一对一关联的`table`识别问题
+* 改进内置`Facade`类
+* 增加`withJoin`方法支持`join`方式的[一对一关联](一对一关联.md)查询
+* 改进`join`预载入查询的空数据问题
+* 改进`Config`类的`load`方法支持快速加载配置文件
+* 改进`execute`方法和事务的断线重连
+* 改进`memcache`驱动的`has`方法
+* 模型类支持定义[搜索器](搜索器.md)方法
+* 完善`Config`类对`Yaconf`的支持
+* 改进模型的`hidden/visible/append/withAttr`方法,支持在[查询前后调用](数组访问.md),以及支持数据集对象
+* 数据集对象增加`where`方法根据字段或者关联数据[过滤数据](模型数据集.md)
+* 改进AJAX请求的`204`判断
+
+
+## V5.1.21(2018-8-2)
+
+该版本主要增加了下载响应对象和数组查询对象的支持,并修正了一些社区反馈的问题。
+
+* 改进核心对象的无用信息调试输出
+* 改进模型的`isRelationAttr`方法判断
+* 模型类的`get`和`all`方法并入Db类
+* 增加[下载响应对象](文件下载.md)和`download`助手函数
+* 修正别名路由配置定义读取
+* 改进`resultToModel`方法
+* 修正开启类库后缀后的注解路由生成
+* `Response`类增加`noCache`快捷方法
+* 改进路由对象在`Swoole`/`Workerman`下面参数多次合并问题
+* 修正路由`ajax`/`pjax`参数后路由变量无法正确获取的问题
+* 增加清除中间件的方法
+* 改进依赖注入的参数规范自动识别(便于对接前端小写+下划线规范)
+* 改进`hasWhere`的数组条件的字段判断
+* 增加[数组查询对象](高级查询.md)`Where`支持(喜欢数组查询的福音)
+* 改进多对多关联的闭包支持
+
+## V5.1.20(2018-7-25)
+
+该版本主要增加了Db和模型的动态获取器的支持,并修正了一些已知问题。
+
+* Db类添加[获取器支持](703981)
+* 支持模型及关联模型字段[动态定义获取器](354046)
+* 动态获取器支持`JSON`字段
+* 改进路由的`before`行为执行(匹配后执行)
+*  `Config`类支持`Yaconf`
+* 改进Url生成的端口问题
+* Request类增加`setUrl`和`setBaseUrl`方法
+* 改进页面trace的信息显示
+* 修正`MorphOne`关联
+* 命令行添加[查看版本指令](703994)
+
+## V5.1.19 (2018-7-13)
+
+该版本是一个小幅改进版本,针对`Swoole`和`Workerman`的`Cookie`支持做了一些改进,并修正了一些已知的问题。
+
+
+* 改进query类`delete`方法对软删除条件判断
+* 修正分表查询的软删除问题
+* 模型查询的时候同时传入`table`和`name`属性
+* 容器类增加`IteratorAggregate`和`Countable`接口支持
+* 路由分组支持对下面的资源路由统一设置`only/except/vars`参数
+* 改进Cookie类更好支持扩展
+* 改进Request类`post`方法
+* 改进模型自关联的自动识别
+* 改进Request类对`php://input`数据的处理
+
+
+## V5.1.18 (2018-6-30)
+
+该版本主要完善了对`Swoole`和`Workerman`的`HttpServer`运行支持,改进`Request`类,并修正了一些已知的问题。
+
+* 改进关联`append`方法的处理
+* 路由初始化和检测方法分离
+* 修正`destroy`方法强制删除
+* `app_init`钩子位置移入`run`方法
+* `think-swoole`扩展更新到2.0版本
+* `think-worker`扩展更新到2.0版本
+* 改进Url生成的域名自动识别
+* `Request`类增加`setPathinfo`方法和`setHost`方法
+* `Request`类增加`withGet`/`withPost`/`withHeader`/`withServer`/`withCookie`/`withEnv`方法进行赋值操作
+* Route类改进`host`属性的获取
+* 解决注解路由配置不生效的问题
+* 取消Test日志驱动,改为使用`close`设置关闭全局日志写入
+* 修正路由的`response`参数
+* 修正204响应输出的判断
+
+## V5.1.17 (2018-6-18)
+
+该版本主要增加了控制器中间件的支持,改进了路由功能,并且修正了社区反馈的一些问题。
+
+* 修正软删除的`delete`方法
+* 修正Query类`Count`方法
+* 改进多对多`detach`方法
+* 改进Request类`Session`方法
+* 增加控制器中间件支持
+* 模型类增加`jsonAssoc`属性用于定义json数据是否返回数组
+* 修正Request类`method`方法的请求伪装
+* 改进静态路由的匹配
+* 分组首页路由自动完整匹配
+* 改进sqlsrv的`column`方法
+* 日志类的`apart_level`配置支持true自动生成对应类型的日志文件
+* 改进`204`输出判断
+* 修正cli下页面输出的BUG
+* 验证类使用更高效的`ctype`验证机制
+* 改进Request类`cookie`方法
+* 修正软删除的`withTrashed`方法
+* 改进多态一对多的预载入查询
+* 改进Query类`column`方法的缓存读取
+* Query类增加`whereBetweenTimeField`方法
+* 改进分组下多个相同路由规则的合并匹配问题
+* 路由类增加`getRule`/`getRuleList`方法获取定义的路由
+
+## V5.1.16 (2018-6-7)
+
+该版本主要修正了社区反馈的一些问题,并对Request类做了进一步规范和优化。
+
+* 改进Session类的`boot`方法
+* App类的初始化方法可以单独执行
+* 改进Request类的`param`方法
+* 改进资源路由的变量替换
+* Request类增加`__isset`方法
+* 改进`useGlobalScope`方法对软删除的影响
+* 修正命令行调用
+* 改进Cookie类`init`方法
+* 改进多对多关联删除的返回值
+* 一对多关联写入支持`replace`
+* 路由增加`filter`检测方法,用于通过请求参数检测路由是否匹配
+* 取消Request类`session/env/server`方法的`filter`参数
+* 改进关联的指定属性输出
+* 模型删除操作删除后不清空对象数据仅作标记
+* 调整模型的`save`方法返回值为布尔值
+* 修正Request类`isAjax`方法
+* 修正中间件的模块配置读取
+* 取消Request类的请求变量的设置功能
+* 取消请求变量获取的默认修饰符
+* Request类增加`setAction/setModule/setController`方法
+* 关联模型的`delete`方法调用Query类
+* 改进URL生成的域名识别
+* 改进URL检测对已定义路由的域名判断
+* 模型类增加`isExists`和`isForce`方法
+* 软删除的`destroy`和`restore`方法返回值调整为布尔值
+
+## V5.1.15 (2018-6-1)
+
+该版本主要改进了路由缓存的性能和缓存方式设置,增加了JSON格式文件日志的支持,并修正了社区反馈的一些问题。
+
+* 容器类增加`exists`方法 仅判断是否存在对象实例
+* 取消配置类的`autoload`方法
+* 改进路由缓存大小提高性能
+* 改进Dispatch类`init`方法
+* 增加`make:validate`指令生成验证器类
+* Config类`get`方法支持默认值参数
+* 修正字段缓存指令
+* 改进App类对`null`数据的返回
+* 改进模型类的`__isset`方法判断
+* 修正`Query`类的`withAggregate`方法
+* 改进`RuleItem`类的`setRuleName`方法
+* 修正依赖注入和参数的冲突问题
+* 修正Db类对第三方驱动的支持
+* 修正模型类查询对象问题
+* 修正File缓存驱动的`has`方法
+* 修正资源路由嵌套
+* 改进Request类对`$_SERVER`变量的读取
+* 改进请求缓存处理
+* 路由缓存支持指定单独的缓存方式和参数
+* 修正资源路由的中间件多次执行问题
+* 修正`optimize:config`指令
+* 文件日志支持`JSON`格式日志保存
+* 修正Db类`connect`方法
+* 改进Log类`write`方法不会自动写入之前日志
+* 模型的关联操作默认启用事务
+* 改进软删除的事件响应
+
+## V5.1.14 (2018-5-18)
+
+该版本主要对底层容器进行了一些优化改进,并增加了路由缓存功能,可以进一步提升路由性能。
+
+* 依赖注入的对象参数传入改进
+* 改进核心类的容器实例化
+* 改进日期字段的读取
+* 改进验证类的`getScene`方法
+* 模型的`create`方法和`save`方法支持`replace`操作
+* 改进`Db`类的调用机制
+* App类调整为容器类
+* 改进容器默认绑定
+* `Loader`类增加工厂类的实例化方法
+* 增加路由变量默认规则配置参数
+* 增加路由缓存设计
+* 错误处理机制改进
+* 增加清空路由缓存指令
+
+
+## V5.1.13 (2018-5-11)
+
+该版本主要增加了MySQL的XA事务支持,模型事件支持观察者,以及对Facade类的改进。
+
+* 改进自动缓存
+* 改进Url生成
+* 修正数据缓存
+* 修正`value`方法的缓存
+* `join`方法和`view`方法的条件支持使用`Expression`对象
+* 改进驱动的`parseKey`方法
+* 改进Request类`host`方法和`domain`方法对端口的处理
+* 模型增加`withEvent`方法用于控制当前操作是否需要执行模型事件
+* 模型`setInc/setDec`方法支持更新事件
+* 模型添加`before_restore/after_restore`事件
+* 增加模型事件观察者
+* 路由增加`mobile`方法设置是否允许手机访问
+* 数据库XA事务支持
+* 改进索引数组查询对`IN`查询的支持
+* 修正`invokeMethod`方法
+* 修正空数据写入返回值的BUG
+* redis驱动支持`predis`
+* 改进`parseData`方法
+* 改进模块加载
+* App类初始化方法调整
+* 改进数组查询对表达式`Expression`对象支持
+* 改进闭包的依赖注入调用
+* 改进多对多关联的中间表模型更新
+* 增加容器中对象的自定义实例化
+
+## V5.1.12 (2018-4-25)
+
+该版本主要改进了主从查询的及时性,并支持动态设置请求数据。
+
+* 支持动态设置请求数据
+* 改进`comment`方法解析
+* 修正App类`__unset`方法
+* 改进url生成的域名绑定
+* 改进主从查询的及时性
+* 修正`value`的数据缓存功能
+* 改进分页类的集合对象方法调用
+* 改进Db类的代码提示
+* SQL日志增加主从标记
+
+## V5.1.11 (2018-4-19)
+
+该版本为安全和修正版本,改进了JSON查询的参数绑定问题和容器类对象实例获取,并包含一处可能的安全隐患,建议更新。
+
+* 支持指定JSON数据查询的字段类型
+* 修正`selectInsert`方法
+* `whereColumn`方法支持数组方式
+* 改进容器类`make`方法
+* 容器类`delete`方法支持数组
+* 改进`composer`自动加载
+* 改进模板引擎
+* 修正`like`查询的一处安全隐患
+
+## V5.1.10 (2018-4-16)
+
+该版本为修正版本,修正上一个版本的一些BUG,并增强了`think clear`指令。
+
+* 改进`orderField`方法
+* 改进`exists`查询
+* 修改cli模式入口文件位置计算
+* 修正`null`查询
+* 改进`parseTime`方法
+* 修正关联预载入查询
+* 改进`mysql`驱动
+* 改进`think clear`指令 支持 `-c -l -r `选项
+* 改进路由规则对`/`结尾的支持
+
+## V5.1.9 (2018-4-12)
+
+该版本主要是一些改进和修正,并包含一个安全更新,是一个推荐更新版本。
+
+* 默认模板渲染规则支持配置保持操作方法名
+* 改进`Request`类的`ip`方法
+* 支持模型软删除字段的默认值定义
+* 改进路由变量规则对中文的支持
+* 使用闭包查询的时候使用`cache(true)` 抛出异常提示
+* 改进`Loader`类`loadComposerAutoloadFiles`方法
+* 改进查询方法安全性
+* 修正路由地址中控制器名驼峰问题
+* 调整上一个版本的`module_init`和`app_begin`的钩子顺序问题
+* 改进CLI命令行执行的问题
+* 修正社区反馈的其它问题
+
+## V5.1.8 (2018-4-5)
+
+该版本主要改进了中间件的域名和模块支持,并同时修正了几个已知问题。
+
+* 增加`template.auto_rule` 参数设置默认模板渲染的操作名自动转换规则
+* 默认模板渲染规则改由视图驱动实现
+* 修正路由标识定义
+* 修正控制器路由方法
+* 改进Request类`ip`方法支持自定义代理IP参数
+* 路由注册中间件支持数组方式别名
+* 改进命令行执行下的`composer`自动加载
+* 添加域名中间件注册支持
+* 全局中间件支持模块定义文件
+* Log日志配置支持`close`参数可以全局关闭日志写入
+* 中间件方法中捕获`HttpResponseException`异常
+* 改进中间件的闭包参数传入
+* 改进分组路由的延迟解析
+* 改进URL生成对域名绑定的支持
+* 改进文件缓存和文件日志驱动的并发支持
+
+## V5.1.7 (2018-3-28)
+
+该版本主要修正了路由的一些问题,并改进了查询的安全性。
+
+* 支持`middleware`配置文件预先定义中间件别名方便路由调用
+* 修正资源路由
+* 改进`field`方法 自动识别`fieldRaw`
+* 增加`Expression`类
+* Query类增加`raw`方法
+* Query类的`field`/ `order` 和` where`方法都支持使用`raw`表达式查询
+* 改进`inc/dec`查询 支持批量更新
+* 改进路由分组
+* 改进Response类`create`方法
+* 改进composer自动加载
+* 修正域名路由的`append`方法
+* 修正操作方法的初始化方法获取不到问题
+
+## V5.1.6 (2018-3-26)
+
+该版本主要改进了路由规则的匹配算法,大幅提升了路由性能。并正式引入了中间件的支持,可以在路由中定义或者全局定义。另外包含了一个安全更新,是一个建议更新版本。
+
+* 改进URL生成对路由`ext`方法的支持
+* 改进查询缓存对不同数据库相同表名的支持
+* 改进composer自动加载的性能
+* 改进空路由变量对默认参数的影响
+* mysql的`json`字段查询支持多级
+* Query类增加`option`方法
+* 优化路由匹配
+* 修复验证规则数字键名丢失问题
+* 改进路由Url生成
+* 改进一对一关联预载入查询
+* Request类增加`rootDomain`方法
+* 支持API资源控制器生成 `make:controller --api`
+* 优化Template类的标签解析
+* 容器类增加删除和清除对象实例的方法
+* 修正MorphMany关联的`eagerlyMorphToMany`方法一处错误
+* Container类的异常捕获改进
+* Domain对象支持`bind`方法
+* 修正分页参数
+* 默认模板的输出规则不受URL影响
+* 注解路由支持多级控制器
+* Query类增加`getNumRows`方法获取前次操作影响的记录数
+* 改进查询条件的性能
+* 改进模型类`readTransform`方法对序列化类型的处理
+* Log类增加`close`方法可以临时关闭当前请求的日志写入
+* 文件日志方式增加自动清理功能(设置`max_files`参数)
+* 修正Query类的`getPk`方法
+* 修正模板缓存的布局开关问题
+* 修正Query类`select`方法的缓存
+* 改进input助手函数
+* 改进断线重连的信息判断
+* 改进正则验证方法
+* 调整语言包的加载顺序 放到`app_init`之前
+* controller类`fetch`方法改为`final`
+* 路由地址中的变量支持使用`<var>`方式
+* 改进XMLResponse 支持传入编码过的xml内容
+* 修正Query类`view`方法的数组表名支持
+* 改进路由的模型闭包绑定
+* 改进分组变量规则的继承
+* 改进`cli-server`模式下的`composer`自动加载
+* 路由变量规则异常捕获
+* 引入中间件支持
+* 路由定义增加`middleware`方法
+* 增加生成中间件指令`make:middleware` 
+* 增加全局中间件定义支持
+* 改进`optimize:config`指令对全局中间件的支持
+* 改进config类`has`方法
+* 改进时间查询的参数绑定
+* 改进`inc/dec/exp`查询的安全性
+
+
+## V5.1.5 (2018-1-31)
+
+该版本主要增强了数据库的JSON查询,并支持JSON字段的聚合查询,改进了一些性能问题,修正了路由的一些BUG,主要更新如下:
+
+* 改进数据集查询对`JSON`数据的支持
+* 改进聚合查询对`JSON`字段的支持
+* 模型类增加`getOrFail`方法
+* 改进数据库驱动的`parseKey`方法
+* 改进Query类`join`方法的自关联查询
+* 改进数据查询不存在不生成查询缓存
+* 增加`run`命令行指令启动内置服务器
+* `Request`类`pathinfo`方法改进对`cli-server`支持
+* `Session`类增加`use_lock`配置参数设置是否启用锁机制
+* 优化`File`缓存自动生成空目录的问题
+* 域名及分组路由支持`append`方法传递隐式参数
+* 改进日志的并发写入问题
+* 改进`Query`类的`where`方法支持传入`Query`对象
+* 支持设置单个日志文件的文件名
+* 修正路由规则的域名条件约束 
+* `Request`类增加`subDomain`方法用于获取当前子域名
+* `Response`类增加`allowCache`方法控制是否允许请求缓存
+* `Request`类增加`sendData`方法便于扩展
+* 改进`Env`类不依赖`putenv`方法
+* 改进控制台`trace`显示错误
+* 改进`MorphTo`关联
+* 改进完整路由匹配后带斜线访问出错的情况
+* 改进路由的多级分组问题
+* 路由url地址生成支持多级分组
+* 改进路由Url生成的`url_convert`参数的影响
+* 改进`miss`和`auto`路由内部解析
+* 取消预载入关联查询缓存功能
+
+## V5.1.4 (2018-1-19)
+
+该版本主要增强了数据库和模型操作,主要更新如下:
+
+* 支持设置 `deleteTime`属性为`false` 关闭软删除
+* 模型增加`getError`方法
+* 改进Query类的`getTableFields`/`getFieldsType`方法 支持表名自动获取
+* 模型类`toCollection`方法增加参数指定数据集类
+* 改进`union`查询
+* 关联预载入`with`方法增加缓存参数
+* 改进模型类的`get`和`all`方法的缓存 支持关联缓存
+* 支持`order by field`操作
+* 改进`insertAll`分批写入
+* 改进`json`字段数据支持
+* 增加JSON数据的模型对象化操作
+* 改进路由`ext`参数检测 
+* 修正`rule`方法的`method`参数使用 `get|post` 方式注册路由的问题
+
+## V5.1.3 (2018-1-12)
+
+该版本主要改进了路由及调整函数加载顺序,主要更新如下:
+
+* 增加`env`助手函数;
+* 增加`route`助手函数;
+* 增加视图路由方法;
+* 增加路由重定向方法;
+* 路由默认区分最后的目录斜杆(支持设置不区分);
+* 调整公共文件和配置文件的加载顺序(可以在配置文件中直接使用助手函数);
+* 视图类增加`filter`方法设置输出过滤;
+* `view`助手函数增加`filter`参数;
+* 改进缓存生成指令;
+* Session类的`get`方法支持获取多级;
+* Request类`only`方法支持指定默认值;
+* 改进路由分组;
+* 修正使用闭包查询的时候自动数据缓存出错的情况;
+* 废除`view_filter`钩子位置;
+* 修正分组下面的资源路由;
+* 改进session驱动;
+
+## V5.1.2 (2018-1-8)
+
+该版本改进了配置类及数据库类,主要更新如下:
+
+* 修正嵌套路由分组;
+* 修正自定义模板标签界定符后表达式语法出错的情况;
+* 修正自关联的多次调用问题;
+* 修正数组查询的`null`条件查询;
+* 修正Query类的`order`及`field`的一处可能的BUG;
+* 配置参数设置支持三级;
+* 配置对象支持`ArrayAccess`;
+* App类增加`path`方法用于设置应用目录;
+* 关联定义增加`selfRelation`方法用于设置是否为自关联;
+
+## V5.1.1 (2018-1-3)
+
+修正一些反馈的BUG,包括:
+
+* 修正Cookie类存取数组的问题
+* 修正Controller的`fetch`方法
+* 改进跨域请求
+* 修正`insertAll`方法
+* 修正`chunk`方法
+
+## V5.1.0 (2018-1-1)
+
+主要更新如下:
+
+* 增加注解路由支持
+* 路由支持跨域请求设置
+* 增加`app_dispatch`钩子位置
+* 修正多对多关联的`detach`方法
+* 修正软删除的`destroy`方法
+* Cookie类`httponly`参数默认为false
+* 日志File驱动增加`single`参数配置记录同一个文件(不按日期生成)
+* 路由的`ext`和`denyExt`方法支持不传任何参数
+* 改进模型的`save`方法对`oracle`的支持
+* Query类的`insertall`方法支持配合`data`和`limit`方法
+* 增加`whereOr`动态查询支持
+* 日志的ip地址记录改进
+* 模型`saveAll`方法支持`isUpdate`方法
+* 改进`Pivot`模型的实例化操作
+* 改进Model类的`data`方法
+* 改进多对多中间表模型类
+* 模型增加`force`方法强制更新所有数据
+* Hook类支持设置入口方法名称
+* 改进验证类
+* 改进`hasWhere`查询的数据重复问题
+* 模型的`saveall`方法返回数据集对象
+* 改进File缓存的`clear`方法
+* 缓存添加统一的序列化机制
+* 改进泛三级域名的绑定
+* 改进泛域名的传值和取值
+* Request类增加`panDomain`方法
+* 改进废弃字段判断
+* App类增加`create`方法用于实例化应用类库
+* 容器类增加`has`方法
+* 改进多数据库切换连接
+* 改进断线重连的异常捕获
+* 改进模型类`buildQuery`方法
+* Query类增加`unionAll`方法
+* 关联统计功能增强(支持Sum/Max/Min/Avg)
+* 修正延迟写入
+* chunk方法支持复合主键
+* 改进JSON类型的写入
+* 改进Mysql的insertAll方法
+* Model类`save`方法改进复合主键包含自增的情况
+* 改进Query类`inc`和`dec`方法的关键字处理
+* File缓存inc和dec方法保持原来的有效期
+* 改进redis缓存的有效期判断
+* 增加checkRule方法用于单独数据的多个验证规则
+* 修正setDec方法的延迟写入
+* max和min方法增加force参数
+* 二级配置参数区分大小写
+* 改进join方法自关联的问题
+* 修正关联模型自定义表名的情况
+* Query类增加getFieldsType和getTableFields方法
+* 取消视图替换功能及view_replace_str配置参数
+* 改进域名绑定模块后的额外路由规则问题
+* 改进mysql的insertAll方法
+* 改进insertAll方法写入json字段数据的支持
+* 改进redis长连接多编号库的情况
+
+## RC3版本(2017-11-6)
+
+主要更新如下:
+
+* 改进redis驱动的`get`方法
+* 修正Query类的`alias`方法
+* `File`类错误信息支持多语言
+* 修正路由的额外参数解析
+* 改进`whereTime`方法
+* 改进Model类`getAttr`方法
+* 改进App类的`controller`和`validate`方法支持多层
+* 改进`HasManyThrough`类
+* 修正软删除的`restore`方法
+* 改进`MorpthTo`关联
+* 改进数据库驱动类的`parseKey`方法
+* 增加`whereField`动态查询方法
+* 模型增加废弃字段功能
+* 改进路由的`after`行为检查和`before`行为机制
+* 改进路由分组的检查
+* 修正mysql的`json`字段查询
+* 取消Connection类的`quote`方法
+* 改进命令行的支持
+* 验证信息支持多语言
+* 修正路由模型绑定
+* 改进参数绑定类型对枚举类型的支持
+* 修正模板的`{$Think.version} `输出
+* 改进模板`date`函数解析
+* 改进`insertAll`方法支持分批执行
+* Request类`host`方法支持反向代理
+* 改进`JumpResponse`支持区分成功和错误模板
+* 改进开启类库后缀后的关联外键自动识别问题
+* 修正一对一关联的JOIN方式预载入查询问题
+* Query类增加`hidden`方法
+
+## RC2版本(2017-10-17)
+
+主要更新如下:
+
+* 修正视图查询
+* 修正资源路由
+* 修正`HasMany`关联 修正`where`方法的闭包查询
+* 一对一关联绑定属性到父模型后 关联属性不再保留
+* 修正应用的命令行配置文件读取
+* 改进`Connection`类的`getCacheKey`方法
+* 改进文件上传的非法图像异常
+* 改进验证类的`unique`规则
+* Config类`get`方法支持获取一级配置
+* 修正count方法对`fetchSql`的支持
+* 修正mysql驱动对`socket`支持
+* 改进Connection类的`getRealSql`方法
+* 修正`view`助手函数
+* Query类增加`leftJoin` `rightJoin` 和 `fullJoin`方法
+* 改进app_namespace的获取
+* 改进`append`方法对一对一`bind`属性的支持
+* 改进关联的`saveall`方法的返回值
+* 路由标识设置异常修复
+* 改进Route类`rule`方法
+* 改进模型的`table`属性设置
+* 改进composer autofile的加载顺序
+* 改进`exception_handle`配置对闭包的支持
+* 改进app助手函数增加参数
+* 改进composer的加载路径判断
+* 修正路由组合变量的URL生成
+* 修正路由URL生成
+* 改进`whereTime`查询并支持扩展规则
+* File类的`move`方法第二个参数支持`false`
+* 改进Config类
+* 改进缓存类`remember`方法
+* 惯例配置文件调整 Url类当普通模式参数的时候不做`urlencode`处理
+* 取消`ROOT_PATH`和`APP_PATH`常量定义 如需更改应用目录 自己重新定义入口文件
+* 增加`app_debug`的`Env`获取
+* 修正泛域名绑定
+* 改进查询表达式的解析机制
+* mysql增加`regexp`查询表达式 支持正则查询
+* 改进查询表达式的异常判断
+* 改进model类的`destroy`方法
+* 改进Builder类 取消`parseValue`方法
+* 修正like查询的参数绑定问题
+* console和start文件移出核心纳入应用库
+* 改进Db类主键删除方法
+* 改进泛域名绑定模块
+* 取消`BIND_MODULE`常量 改为在入口文件使用`bind`方法设置
+* 改进数组查询
+* 改进模板渲染的异常处理
+* 改进控制器基类的架构方法参数
+* 改进Controller类的`success`和`error`方法
+* 改进对浏览器`JSON-Handle`插件的支持
+* 优化跳转模板的移动端显示
+* 修正模型查询的`chunk`方法对时间字段的支持
+* 改进trace驱动
+* Collection类增加`push`方法
+* 改进Redis Session驱动
+* 增加JumpResponse驱动
+
+
+## RC1(2017-9-8)
+
+主要新特性为:
+
+* 引入容器和Facade支持
+* 依赖注入完善和支持更多场景
+* 重构的(对象化)路由
+* 配置和路由目录独立
+* 取消系统常量
+* 助手函数增强
+* 类库别名机制
+* 模型和数据库增强
+* 验证类增强
+* 模板引擎改进
+* 支持PSR-3日志规范
+* RC1版本取消了5.0多个字段批量数组查询的方式

+ 32 - 0
LICENSE.txt

@@ -0,0 +1,32 @@
+
+ThinkPHP遵循Apache2开源协议发布,并提供免费使用。
+版权所有Copyright © 2006-2018 by ThinkPHP (http://thinkphp.cn)
+All rights reserved。
+ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。
+
+Apache Licence是著名的非盈利开源组织Apache采用的协议。
+该协议和BSD类似,鼓励代码共享和尊重原作者的著作权,
+允许代码修改,再作为开源或商业软件发布。需要满足
+的条件: 
+1. 需要给代码的用户一份Apache Licence ;
+2. 如果你修改了代码,需要在被修改的文件中说明;
+3. 在延伸的代码中(修改和有源代码衍生的代码中)需要
+带有原来代码中的协议,商标,专利声明和其他原来作者规
+定需要包含的说明;
+4. 如果再发布的产品中包含一个Notice文件,则在Notice文
+件中需要带有本协议内容。你可以在Notice中增加自己的
+许可,但不可以表现为对Apache Licence构成更改。 
+具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.

+ 1 - 0
README.md

@@ -0,0 +1 @@
+京宜安oa

+ 11 - 0
api.http

@@ -0,0 +1,11 @@
+POST http://joaserver.jya-tech.com/api/v1/userAppIcon/queryAppIconListNew
+Content-Type: application/x-www-form-urlencoded
+
+token=b4520b8e808d67af00380d3cfd16e6df&userId=100002&orgId=4
+###
+
+POST http://joaserver.jya-tech.com/api/v1/server/attendanceRecord/save
+Content-Type: application/x-www-form-urlencoded
+
+token=1eec97261fe8fd070f4e71ec9f1fbfb5&userId=100005&orgId=4&platform=Android&appVersion=100&lat=34.777997&lng=113.707814&address=%E9%87%91%E6%88%90%E6%97%B6%E4%BB%A3%E5%B9%BF%E5%9C%BA&deviceSn=25f537c5eb45d3574a1ed6c7406fb7e6e
+###

+ 1 - 0
application/.htaccess

@@ -0,0 +1 @@
+deny from all

+ 6 - 0
application/api/config/app.php

@@ -0,0 +1,6 @@
+<?php
+
+//配置文件
+return [
+    'exception_handle' => '\\app\\common\\exception\\Http',
+];

+ 22 - 0
application/api/controller/Base.php

@@ -0,0 +1,22 @@
+<?php
+namespace app\api\controller;
+
+use think\Controller;
+
+class Base extends Controller
+{
+    protected $middleware = ['Auth'];
+
+    protected $userId;
+
+    protected $orgId;
+
+    protected function initialize()
+    {
+        parent::initialize();
+
+        $this->userId = input('userId/d',0);
+        $this->orgId = input('orgId/d',0);
+    }
+
+}

+ 560 - 0
application/api/controller/Timer.php

@@ -0,0 +1,560 @@
+<?php
+namespace app\api\controller;
+
+use PhpOffice\PhpWord\TemplateProcessor;
+use think\Controller;
+use think\Db;
+use think\Exception;
+use tools\Qxsms;
+
+class Timer extends Controller
+{
+    public function apply(){ // 流程超时提醒
+        $apps = Db::name('approval')->where('max_day','>',0)->field('id,max_day')->select();
+        $curDate = date('Y-m-d');
+        $cts = strtotime($curDate.' 00:00:00');
+        $cte = strtotime($curDate.' 00:00:00')+24*60*60;
+        if($apps){
+            foreach ($apps as $v){
+                $st = date('Y-m-d H:i:s',$cts - $v['max_day']*24*60*60);
+                $et = date('Y-m-d H:i:s',$cte - $v['max_day']*24*60*60);
+
+                $applys = Db::name('apply')
+                    ->where('status',1)
+                    ->where('approval_id',$v['id'])
+                    ->where('create_time','>=',$st)
+                    ->where('create_time','<',$et)
+                    ->field('id,user_id,nodeid,org_id')
+                    ->select();
+                foreach ($applys as $key=>$val){
+                    model('Apply')->remindAuditCommon($val);
+                }
+            }
+        }
+    }
+
+    // 获取今年节假日
+    public function holiday(){
+        $url = "http://timor.tech/api/holiday/year/".date('Y');
+        $content = file_get_contents($url);
+        if($content){
+            $data = json_decode($content,true);
+            if(!empty($data['holiday'])){
+                $holiday = $data['holiday'];
+                foreach ($holiday as $k=>$v){
+                    $d = [
+                        'day' => $v['date'],
+                        'holiday' => $v['holiday']?1:0,
+                        'name' => $v['name'],
+                        'target' => isset($v['target'])?$v['target']:''
+                    ];
+                    $day = Db::name('holiday')->where('day',$d['day'])->find();
+                    if(!$day){
+                        Db::name('holiday')->insert($d);
+                    }
+                }
+            }
+        }
+    }
+
+    // 房产合同到期提醒
+    public function houseContract(){
+        $curDay = date('Y-m-d');
+        // 先获取能接受提醒的人
+        $users = Db::name('house_auth')
+            ->where('type',1)
+            ->where('remind',1)
+            ->field('user_id,ids')
+            ->select();
+        if(!$users){
+            exit();
+        }
+        foreach ($users as $k=>$v){
+            $users[$k]['ids'] = $v['ids']?explode(',',$v['ids']):[];
+        }
+
+        $lists = Db::name('house_contract')
+            ->where('del',0)
+            ->where('status',1)
+            ->where('remind',1)
+            ->where('remind_date',$curDay)
+            ->field('id,sn,org_id')
+            ->select();
+        if(!$lists){
+            exit();
+        }
+
+        foreach ($lists as $k=>$v){
+            $levels = Db::name('house_contract_relation')
+                ->alias('hcr')
+                ->join('house h','h.id = hcr.house_id')
+                ->where('hcr.contract_id',$v['id'])
+                ->column('level_id');
+            $levels = $levels?$levels:[];
+            foreach ($users as $kk=>$vv){
+                $arr = array_intersect($levels,$vv['ids']);
+                if($arr){
+                    model('Message')->add(3,$v['id'],9,$vv['user_id'],$v['org_id'],'合同['.$v['sn'].']即将到期,请及时续约');
+                }
+            }
+        }
+    }
+
+    // 房产标签到期提醒
+    public function houseMark(){
+        $curDay = date('Y-m-d');
+        // 先获取能接受提醒的人
+        $users = Db::name('house_auth')
+            ->where('type',1)
+            ->where('remind',1)
+            ->field('user_id,ids')
+            ->select();
+        if(!$users){
+            exit();
+        }
+        foreach ($users as $k=>$v){
+            $users[$k]['ids'] = $v['ids']?explode(',',$v['ids']):[];
+        }
+
+        $lists = Db::name('house_mark')
+            ->alias('hm')
+            ->join('house h','h.id = hm.house_id')
+            ->where('h.del',0)
+            ->where('h.enable',1)
+            ->where('hm.type',1)
+            ->where('hm.end_time',$curDay)
+            ->field('hm.id,h.level_id,hm.content,hm.org_id')
+            ->select();
+        if(!$lists){
+            exit();
+        }
+
+        foreach ($lists as $k=>$v){
+            foreach ($users as $kk=>$vv){
+                if(in_array($v['level_id'],$vv['ids'])){
+                    model('Message')->add(3,$v['id'],10,$vv['user_id'],$v['org_id'],$v['content']);
+                }
+            }
+        }
+    }
+
+    // 支付单提醒
+    public function housePay(){
+        $curDay = date('Y-m-d');
+        // 先获取能接受提醒的人
+        $users = Db::name('house_auth')
+            ->where('type',1)
+            ->where('remind',1)
+            ->field('user_id,ids')
+            ->select();
+        if(!$users){
+            exit();
+        }
+        foreach ($users as $k=>$v){
+            $users[$k]['ids'] = $v['ids']?explode(',',$v['ids']):[];
+        }
+
+        $lists = Db::name('house_contract_pay')
+            ->alias('hcp')
+            ->join('house_contract hc','hc.id = hcp.contract_id')
+            ->where('hcp.del',0)
+            ->where('hcp.status',0)
+            ->where('hc.del',0)
+            ->where('hc.status',0)
+            ->where('hcp.remind',1)
+            ->where('hcp.remind_date',$curDay)
+            ->field('hcp.id,hcp.contract_id,hc.org_id')
+            ->select();
+        if(!$lists){
+            exit();
+        }
+
+        foreach ($lists as $k=>$v){
+            $levels = Db::name('house_contract_relation')
+                ->alias('hcr')
+                ->join('house h','h.id = hcr.house_id')
+                ->where('hcr.contract_id',$v['id'])
+                ->column('level_id');
+            $levels = $levels?$levels:[];
+            foreach ($users as $kk=>$vv){
+                $arr = array_intersect($levels,$vv['ids']);
+                if($arr){
+                    model('Message')->add(3,$v['contract_id'],9,$vv['user_id'],$v['org_id'],'合同['.$v['sn'].']缴费即将到期,请及时处理');
+                }
+            }
+        }
+    }
+
+    // 房产合同到期释放房产
+    public function houseRelease(){
+        $curDay = date('Y-m-d');
+        $lists = Db::name('house_contract')
+            ->where('end_time','<',$curDay)
+            ->where('del',0)
+            ->where('release',1)
+            ->where('is_released',0)
+            ->where('status',1)
+            ->field('id')
+            ->select();
+        if($lists){
+            foreach ($lists as $k=>$v){
+                try{
+                    Db::name('house_contract')->where('id',$v['id'])->update(['is_released'=>1]);
+                    $houses = Db::name('house_contract_relation')->where('contract_id',$v['id'])->column('house_id');
+                    if($houses){
+                        $dd = [
+                            'cur_lessee_id' => 0,
+                            'cur_contract_id' => 0
+                        ];
+                        Db::name('house')->where('id','in',$houses)->update($dd);
+                    }
+                    Db::commit();
+                }catch (Exception $e){
+                    trace($e->getMessage());
+                    Db::rollback();
+                    halt($e->getMessage());
+                }
+            }
+        }
+    }
+
+    // 发放员工年假
+    public function annual(){
+        //年假统一为:工作满1年不满10年:5天;
+        //                满10年不满20年:10天;
+        //                满20年:15天。
+        $str = date('m-d');
+        if($str != '01-01'){ // 每年的1月1日执行
+            exit();
+        }
+        $year = date('Y');
+        // 每年的1月1日执行
+        $users = Db::name('user')
+            ->alias('u')
+            ->join('user_info ui','u.id = ui.user_id')
+            ->where('u.del',0)
+            ->where('u.enable',1)
+            ->where('ui.is_working','in',[1,2])
+            ->where('ui.work_date','exp','is not null')
+            ->where('ui.work_date','<>','')
+//            ->where('ui.annual_year',2023)
+            ->where('ui.annual_year','<>',$year)
+            ->field('u.id,ui.name,ui.work_date')
+            ->select();
+        foreach ($users as $k=>$v){
+            $age = calculate_age($v['work_date']);
+            $day = 0;
+            if($age >= 1 && $age < 10){
+                $day = 5;
+            }else if($age >= 10 && $age < 20){
+                $day = 10;
+            }else if($age >= 20){
+                $day = 15;
+            }
+            $users[$k]['age'] = $age;
+            $users[$k]['day'] = $day;
+            $ret = Db::name('user_info')->where('user_id',$v['id'])->update([
+                'annual_year' => $year,
+                'annual_leave' => $day,
+                'update_time' => date('Y-m-d H:i:s')
+            ]);
+            if(!$ret){
+                trace('年假更新失败:'.$v['id']);
+            }
+        }
+        halt($users);
+    }
+
+    // 每月1号保存用户档案
+    public function historyUser(){
+        $company = Db::name('company')->select();
+        $month = date('Y年m月');
+        foreach ($company as $k=>$v){
+            $data = [
+                'title' => $month.'-'.$v['title'].'-档案',
+                'org_id' => $v['org_id'],
+                'company_id' => $v['id'],
+                'remark' => ''
+            ];
+            $ret = model('UserHistory')->add($data);
+            var_dump($ret);
+        }
+        $data = [
+            'title' => $month.'-其他-档案',
+            'org_id' => 4,
+            'company_id' => 0,
+            'remark' => ''
+        ];
+        $ret = model('UserHistory')->add($data);
+        var_dump($ret);
+    }
+
+    // 下载印花税word文档
+    public function stampword(){
+        $ids = input('ids','','trim');
+        if(!$ids){
+            exit();
+        }
+        $templateProcessor  = new TemplateProcessor(__DIR__.'/../../../public/word/stamp_tmp.docx');
+        $arr = [];
+        $ids = explode(',',$ids);
+        foreach ($ids as $k=>$v){
+            $ret = model('Contract')->info($v);
+            if($ret){
+                $arr[] = [
+                    'programSn' => $ret['program_sn'],
+                    'company' => $ret['company'],
+                    'fhUserName' => $ret['fh_user_name'],
+                    'agent' => $ret['agent'],
+                    'name1' => '应税凭证名称',
+                    'title' => $ret['title'],
+                    'name2' => '对方单位名称',
+                    'company2' => $ret['company2'],
+                    'name3' => '签订日期',
+                    'handleDate' => $ret['handle_date'],
+                    'name4' => '适用印花税税目',
+                    'stampTitle' => $ret['stamp']['title'],
+                    'name5' => '计税金额',
+                    'money' => $ret['money'],
+                    'name6' => '适用税率',
+                    'stampBl' => $ret['stamp']['bl'].'‰',
+                    'name7' => '本期应纳税额',
+                    'sdMoney' => $ret['sd_money'],
+                ];
+            }
+        }
+
+//        $arr = [
+//            [
+//                'programSn' => 'N0001',
+//                'company' => '中心',
+//                'fhUserName' => '张三',
+//                'agent' => '李四',
+//                'name1' => '应税凭证名称',
+//                'title' => '111',
+//                'name2' => '对方单位名称',
+//                'company2' => '111',
+//                'name3' => '签订日期',
+//                'handleDate' => '111',
+//                'name4' => '适用印花税税目',
+//                'stampTitle' => '111',
+//                'name5' => '计税金额',
+//                'money' => '111',
+//                'name6' => '适用税率',
+//                'stampBl' => '111',
+//                'name7' => '本期应纳税额',
+//                'sdMoney' => '111',
+//            ],
+//            [
+//                'programSn' => 'N0002',
+//                'company' => '中心',
+//                'fhUserName' => '张三',
+//                'agent' => '李四',
+//                'name1' => '应税凭证名称',
+//                'title' => '111',
+//                'name2' => '对方单位名称',
+//                'company2' => '111',
+//                'name3' => '签订日期',
+//                'handleDate' => '111',
+//                'name4' => '适用印花税税目',
+//                'stampTitle' => '111',
+//                'name5' => '计税金额',
+//                'money' => '111',
+//                'name6' => '适用税率',
+//                'stampBl' => '111',
+//                'name7' => '本期应纳税额',
+//                'sdMoney' => '111',
+//            ],
+//        ];
+        $templateProcessor->cloneBlock('block_name', 0, true, false, $arr);
+
+        // 将 word 文档保存至 你设置的路径
+        $file_dir = './word/zs' . time() . ".docx";
+        $templateProcessor->saveAs($file_dir);
+
+        $file = fopen ( $file_dir, "rb" );//以只读和二进制模式打开文件
+        Header ( "Content-type: application/octet-stream" ); //告诉浏览器这是一个文件流格式的文件
+        Header ( "Accept-Ranges: bytes" );  //请求范围的度量单位
+        Header ( "Accept-Length: " . filesize ( $file_dir ) ); //Content-Length是指定包含于请求或响应中数据的字节长度
+        //用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。
+        Header ( "Content-Disposition: attachment; filename=印花税计算表.docx" );
+        echo fread ( $file, filesize ( $file_dir ) );   //读取文件内容并直接输出到浏览器
+        fclose ( $file );
+        @unlink($file_dir);
+        exit ();
+    }
+
+    // 提醒即将超时的记录,每天早上8点执行一次
+    public function importantRecord(){
+        $curTime = date('Y-m-d H:i:s',time() + 24*60*60);
+        $lists = Db::name('important_record')
+            ->where('status','in',[0,1])
+            ->where('end_time','<=',$curTime)
+            ->where('end_time','>',date('Y-m-d H:i:s'))
+            ->field('id,user_id,org_id')
+            ->select();
+        $lists = $lists?$lists:[];
+        foreach ($lists as $k=>$v){
+            model('Message')->add(3,$v['id'],14,$v['user_id'],$v['org_id'],'您有一项重要事项即将超时,请及时处理.');
+        }
+    }
+
+    public function cpay(){
+        $lists = Db::name('contract_pay')
+            ->alias('cp')
+            ->join('apply a','a.id = cp.apply_id')
+            ->where('cp.dep_user_id',0)
+            ->where('cp.status',1)
+            ->where('a.approval_id',88)
+            ->field('cp.id,cp.apply_id')
+            ->limit(5)
+            ->select();
+        dump($lists);
+        $lists = $lists?$lists:[];
+        foreach ($lists as $k=>$v){
+            model('ContractPay')->formatContractPay($v['apply_id']);
+        }
+    }
+
+    public function editIpmcEmail(){
+        $config = config('app.email');
+        $str = 'ABCDEFHHIGKLMNOPGRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
+        $str1 = msubstr(str_shuffle($str), 0, mt_rand(2,6));
+        $str2 = msubstr(str_shuffle($str), 0, mt_rand(2,6));
+        $str3 = msubstr(str_shuffle($str), 0, mt_rand(2,6));
+        $password = $str1.'&'.$str2.'.'.$str3;
+        $data = [
+            'id' => 176,
+            'password' => $password,
+            'is_password' => 1,
+            'uname' => '',
+            'position' => '',
+            'tel' => '',
+            'branch_id' => 0,
+            'active' => 1, // 启用
+            'is_imap' => 0,
+            'limits' => 0,
+            'limitg' => 0,
+            'is_convert' => 0,
+            'login_password' => 0,
+            'disabled_password' => 1,
+            'my_spam_mode' => 1,
+            '_key' => $config['key'],
+            '_lang' => 'zh-cn',
+        ];
+
+        $url = $config['host'].'User/update';
+        $ret = $this->http_post($url,$data);
+    }
+
+    private function http_post($url,$param){
+        try{
+            $ret = curl_post($url,$param);
+            $data = json_decode($ret,true);
+            if($data['status'] == 1){
+                return $data;
+            }else{
+                \exception($data['msg']);
+            }
+        }catch (\think\Exception $e){
+            trace($data['msg']);
+            return false;
+        }
+    }
+
+    // 自动处理待确定订餐变为已确定
+    public function dinner(){
+        $vals = Db::name('config')->where('name','dinner_apply_limit')->value('value');
+        if($vals){
+            $limitTime = date('Y-m-d').' '.$vals;
+            $curTime = date('Y-m-d H:i');
+            if($curTime > $limitTime){
+                Db::name('dinner_orders')->where('del',0)->where('status',1)->update([
+                    'status'=>2,
+                    'update_time'=>date('Y-m-d H:i:s')
+                ]);
+            }
+        }
+    }
+
+    // 提醒审核人员确认订单,每分钟运行一次
+    public function dinnerapply(){
+        $curTime = date('H:i:s');
+        $cates = Db::name('dinner_cate')
+            ->where('del',0)
+            ->where('enable',1)
+            ->where('end',$curTime)
+            ->select();
+        if(!$cates){
+            exit();
+        }
+        $company = Db::name('dinner_company')
+            ->where('del',0)
+            ->where('enable',1)
+            ->where('user_id','>',0)
+            ->select();
+        if(!$company){
+            exit();
+        }
+        foreach ($cates as $k=>$v){
+            foreach ($company as $kk=>$vv){
+                $orders = Db::name('dinner_order_goods')
+                    ->alias('a')
+                    ->join('dinner_orders b','b.id = a.order_id')
+                    ->where('a.company_id',$vv['id'])
+                    ->where('b.cate_id',$v['id'])
+                    ->where('b.status',1)
+                    ->where('b.del',0)
+                    ->field('a.id')
+                    ->find();
+                if($orders){
+                    $context = $v['title'].'售卖已结束,请及时确认订单。';
+                    model('Message')->add(3,0,0,$vv['user_id'],4,$context,1);
+                }
+            }
+        }
+
+    }
+
+    // 更新打卡状态
+    public function attendance(){
+        $yday = date('Y-m-d',time() - 86400);
+        // 昨天不跨天进行中的状态改为已完成
+        $map1[] = ['day','=',$yday];
+        $map1[] = ['next','=',0];
+        $map1[] = ['status','=',0];
+
+        $yyday = date('Y-m-d',time() - 2*86400);
+        // 昨天跨天进行中的状态改为已完成
+        $map2[] = ['day','=',$yyday];
+        $map2[] = ['next','=',1];
+        $map2[] = ['status','=',0];
+
+        $lists = Db::name('attendance_user_class')
+            ->whereOr([ $map1, $map2 ])
+            ->field('id,content')
+            ->select();
+        $lists = $lists?$lists:[];
+        foreach ($lists as $k=>$v){
+            $dates = json_decode($v['content'],true);
+            foreach ($dates as $kk=>$vv){
+                $dates[$kk]['sstatus'] = 1;
+                $dates[$kk]['estatus'] = 1;
+            }
+            Db::name('attendance_user_class')->where('id',$v['id'])->update([
+                'content' => json_encode($dates),
+                'status' => 1,
+                'update_time' => date('Y-m-d H:i:s')
+            ]);
+        }
+    }
+
+    // 昨日未打卡的日期
+    public function attendanceReissue(){
+        $yday = date('Y-m-d',time() - 86400);
+        model('AttendanceUserClass')->attendanceReissueFixed($yday); // 固定班制
+        model('AttendanceUserClass')->attendanceReissueClass($yday); // 排班制
+
+    }
+
+}

+ 19 - 0
application/api/controller/dinner/BaseDinner.php

@@ -0,0 +1,19 @@
+<?php
+namespace app\api\controller\dinner;
+
+use think\Controller;
+
+class BaseDinner extends Controller
+{
+    protected $middleware = ['AuthDinner'];
+
+    protected $userId;
+
+    protected function initialize()
+    {
+        parent::initialize();
+
+        $this->userId = input('userId/d',0);
+    }
+
+}

+ 112 - 0
application/api/controller/dinner/Dinner.php

@@ -0,0 +1,112 @@
+<?php
+namespace app\api\controller\dinner;
+
+use app\hander\HelpHander;
+use think\Controller;
+use think\Db;
+
+class Dinner extends BaseDinner
+{
+
+    public function goods(){
+          $day = get_dinner_day();
+          $curTime = date('H:i:s');
+          $cates = Db::name('dinner_cate')
+              ->where('del',0)
+              ->where('enable',1)
+              ->where('show_start','<=',$curTime)
+              ->where('show_end','>=',$curTime)
+              ->field('id,title')
+              ->order('id asc')
+              ->select();
+          $cates = $cates?$cates:[];
+          $narr = [];
+          foreach ($cates as $k=>$v){
+              $goods = Db::name('dinner')
+                  ->where('del',0)
+                  ->where('enable',1)
+                  ->where('cate_id',$v['id'])
+                  ->where('day',$day)
+                  ->order('sorts desc,id asc')
+                  ->field('id,title,img,cate_id,remark,price')
+                  ->select();
+              $goods = $goods?$goods:[];
+              foreach ($goods as $kk=>$vv){
+                  $goods[$kk]['img'] = $vv['img']?$vv['img']:request()->domain().'/static/dinner.png';
+                  $goods[$kk]['cate_title'] = $v['title'];
+              }
+              if($goods){
+                  $v['goods'] = $goods;
+                  $narr[] = $v;
+              }
+          }
+        HelpHander::success(['day'=>$day,'list'=>$narr]);
+    }
+
+    public function company(){
+        $lists = Db::name('dinner_company')
+            ->where('del',0)
+            ->where('enable',1)
+            ->order('sorts asc,id asc')
+            ->field('id,title')
+            ->select();
+        HelpHander::success($lists?$lists:[],'成功');
+    }
+
+    public function book(){
+        $data = [
+            'remark' => input('remark','','trim'),
+            'goods' => input('goods','','trim'),
+            'user_id' => $this->userId
+        ];
+        model('DinnerOrders')->book($data);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function orders(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $lists = model('DinnerOrders')->orders($page,$size,$this->userId);
+        HelpHander::success($lists);
+    }
+
+    public function userinfo(){
+        $user = Db::name('dinner_user')->where('id',$this->userId)->field('name')->find();
+        HelpHander::success($user);
+    }
+
+    public function cancel(){
+        $id = input('id/d',0);
+        $info = Db::name('dinner_orders')->where('id',$id)->where('del',0)->find();
+        if(!$info){
+            HelpHander::error('订单不存在');
+        }
+        if($info['user_id'] != $this->userId){
+            HelpHander::error('无权限操作');
+        }
+        $limitTime = strtotime($info['day'].' 08:30:00');
+        if(time() > $limitTime){
+            HelpHander::error('该时间段无权限取消订单');
+        }
+
+        if($info['status'] == 0){
+            HelpHander::error('订单已取消');
+        }
+        $ret = Db::name('dinner_orders')->where('id',$id)->update(['status'=>0,'update_time'=>date('Y-m-d H:i:s')]);
+        if(!$ret){
+            HelpHander::error('取消失败');
+        }else{
+            HelpHander::success([],'取消成功');
+        }
+    }
+
+    public function modifypass(){
+        $data = [
+            'userId' => $this->userId,
+            'oldPass' => input('oldPass','','trim'),
+            'pass' => input('pass','','trim'),
+        ];
+        model('DinnerUser')->modifyPass($data);
+        HelpHander::success([],'操作成功');
+    }
+}

+ 74 - 0
application/api/controller/dinner/Login.php

@@ -0,0 +1,74 @@
+<?php
+namespace app\api\controller\dinner;
+
+use app\hander\HelpHander;
+use think\Controller;
+use think\Db;
+
+class Login extends Controller
+{
+    protected $middleware = ['Cross'];
+
+    public function login(){
+        $phone = input('phone','','trim');
+        $password = input('password','','trim');
+        if(!$phone){
+            HelpHander::error('请输入手机号');
+        }
+        if(!$password){
+            HelpHander::error('请输入密码');
+        }
+
+        $ret = model('DinnerUser')->login($phone,$password);
+        HelpHander::success($ret);
+    }
+
+    public function autologin(){
+        $token = input('token');
+        $userId = input('userId');
+        if(empty($token) || empty($userId)){
+            HelpHander::error('登录信息已失效',100200);
+        }
+
+        $tokeninfo = Db::name('token')
+            ->where('code',$token)
+            ->where('user_id',$userId)
+            ->find();
+        if(!$tokeninfo){
+            HelpHander::error('登录信息已失效',100200);
+        }
+
+        // 检查用户是否被禁用
+        $user = Db::name('user')->where('id',$userId)->find();
+        if(!$user || $user['enable'] == 0 || $user['del'] == 1){
+            HelpHander::error('登录信息已失效',100200);
+        }
+
+        // 检查点餐用户是否存在
+        $duser = Db::name('dinner_user')->where('phone',$user['phone'])->where('del',0)->find();
+        if(!$duser || $duser['enable'] != 1){
+            HelpHander::error('未注册点餐系统,请联系管理员',100200);
+        }
+
+        $token = md5($user['id'].'-'.time().rand(1000,9999));
+        $ret = Db::name('dinner_user')->where('id',$duser['id'])->update([
+            'login_time' => date('Y-m-d H:i:s'),
+            'token' => $token
+        ]);
+        if(!$ret){
+            HelpHander::error('登录失败',100200);
+        }
+
+        HelpHander::success(['user_id' => $duser['id'], 'token' => $token]);
+
+    }
+
+    public function updatePwd(){
+        $phone = input('mobile','','trim');
+        $password = input('newPassword','','trim');
+        $code = input('code','','trim');
+        model('User')->forgetPassword($phone,$password,$code);
+        HelpHander::success([],'修改成功');
+    }
+
+}

+ 50 - 0
application/api/controller/v1/Action.php

@@ -0,0 +1,50 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class Action extends Base
+{
+
+    // 列表
+    public function list(){
+        $ret = model('Action')->lists();
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function selectActionLog(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $name = input('name','','trim');
+        $code = input('code','','trim');
+        $startTime = input('startTime','','trim');
+        $endTime = input('endTime','','trim');
+        $actionId = input('actionId/d',0);
+
+        $ret = model('Action')->selectActionLog($page,$size,$name,$code,$actionId,$startTime,$endTime);
+        HelpHander::success($ret);
+    }
+
+    // 导出接口列表
+    public function selectOperationLog(){
+        $name = input('name','','trim');
+        $code = input('code','','trim');
+        $startTime = input('startTime','','trim');
+        $endTime = input('endTime','','trim');
+        $actionId = input('actionId/d',0);
+
+        $ret = model('Action')->selectOperationLog($name,$code,$actionId,$startTime,$endTime);
+        HelpHander::success($ret);
+    }
+
+    // 日志详情
+    public function logInfo(){
+        $id = input('id/d',0);
+        $ret = model('Action')->logInfo($id);
+        HelpHander::success($ret);
+    }
+
+}

+ 61 - 0
application/api/controller/v1/AppIcon.php

@@ -0,0 +1,61 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AppIcon extends Base
+{
+
+    // 新增
+    public function save(){
+        model('AppIcon')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('AppIcon')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AppIcon')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $ret = model('AppIcon')->lists($page,$size);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('AppIcon')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 修改状态
+    public function changeStatus(){
+        $id = input('id/d',0);
+        $enable = input('enable/d',0);
+        model('AppIcon')->changeStatus($id,$enable);
+        HelpHander::success([],'操作成功');
+    }
+
+    //APP常用功能icon列表
+    public function queryUserAllIcon(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $ret = model('AppIcon')->queryUserAllIcon($page,$size,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+}

+ 57 - 0
application/api/controller/v1/AppIconCate.php

@@ -0,0 +1,57 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AppIconCate extends Base
+{
+
+    // 新增
+    public function save(){
+        model('AppIconCate')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('AppIconCate')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AppIconCate')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $ret = model('AppIconCate')->lists();
+        HelpHander::success($ret);
+    }
+
+    // 分组图标详情
+    public function listDetail(){
+        $ret = model('AppIconCate')->listDetail();
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('AppIconCate')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 修改状态
+    public function changeStatus(){
+        $id = input('id/d',0);
+        $enable = input('enable/d',0);
+        model('AppIconCate')->changeStatus($id,$enable);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 63 - 0
application/api/controller/v1/AppMgr.php

@@ -0,0 +1,63 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class AppMgr extends Base
+{
+
+    // 新增
+    public function save(){
+        model('AppMgr')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('AppMgr')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AppMgr')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $type = input('type/d',10);
+        $ret = model('AppMgr')->lists($page,$size,$type);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('AppMgr')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 修改状态
+    public function enableMgr(){
+        $id = input('id/d',0);
+        $enable = input('enable/d',0);
+        model('AppMgr')->changeStatus($id,$enable,$this->orgId);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function newAppMgr(){
+        $ret = model('AppMgr')->appMgr(1);
+        HelpHander::success($ret);
+    }
+
+    public function newIosMgr(){
+        $ret = model('AppMgr')->appMgr(2);
+        $ret = $ret?$ret:null;
+        HelpHander::success($ret);
+    }
+}

+ 293 - 0
application/api/controller/v1/Apply.php

@@ -0,0 +1,293 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class Apply extends Base
+{
+    // 用户流程申请
+    public function save(){
+        model('Apply')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 查询用户审批申请
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('Apply')->info($id,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 我发起的审批
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $status = input('status/d',0);
+        $approvalId = input('approvalId/d',0);
+        $info = input('info','','trim');
+        $startTime = input('startTime','','trim');
+        $endTime = input('endTime','','trim');
+        $ret = model('Apply')->lists($page,$size,$this->userId,$this->orgId,$status,$approvalId,$info,$startTime,$endTime);
+        HelpHander::success($ret);
+    }
+
+    // 我发起的审批流程列表APP
+    public function queryUserApplyList(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $param = input('param','','trim');
+        $ret = model('Apply')->queryUserApplyList($page,$size,$param,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+    // 我审批的流程列表APP
+    public function appMyApplyList(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $param = input('searchInfo','','trim');
+        $type = input('type/d',-1);
+        $ret = model('Apply')->appMyApplyList($page,$size,$param,$type,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 抄送我的审批流列表 APP
+    public function queryCopyUserApply(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $param = input('param','','trim');
+        $status = input('status/d',-1);
+        $ret = model('Apply')->queryCopyUserApply($page,$size,$param,$status,3,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 执行人列表 APP
+    public function queryExecuteList(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $param = input('param','','trim');
+        $status = input('status/d',-1);
+        $ret = model('Apply')->queryCopyUserApply($page,$size,$param,$status,9,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 我审批的流程列表
+    public function userApplyList(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $status = input('status/d',-1);
+        $type = input('type/d',0);
+        $approvalId = input('approvalId/d',0);
+        $info = input('info','','trim');
+        $startTime = input('startTime','','trim');
+        $endTime = input('endTime','','trim');
+        $ret = model('Apply')->userApplyList($page,$size,$this->userId,$this->orgId,$type,$status,$approvalId,$info,$startTime,$endTime);
+        HelpHander::success($ret);
+    }
+
+    // 指定组织下的流程
+    public function queryApplyList(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $status = input('status/d',0);
+        $approvalId = input('approvalId/d',0);
+        $info = input('info','','trim');
+        $startTime = input('startTime','','trim');
+        $endTime = input('endTime','','trim');
+        $ret = model('Apply')->lists($page,$size,0,$this->orgId,$status,$approvalId,$info,$startTime,$endTime);
+        HelpHander::success($ret);
+    }
+
+    //打回上一级
+    public function back(){
+        $id = input('applyRecordId/d',0);
+        model('ApplyRecord')->back($id,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 同意
+    public function audit(){
+        $id = input('applyRecordId/d',0);
+        $content = input('content','','trim');
+        $userList = input('userList','','trim');
+        $formJson = input('formJson','','trim');
+        model('ApplyRecord')->audit($id,$this->userId,$content,$formJson,$userList);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 打回
+    public function toBack(){
+        $applyId = input('applyId/d',0);
+        $content = input('content','','trim');
+        model('ApplyRecord')->toBack($applyId,$this->userId,$content);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 加签
+    public function addSign(){
+        $id = input('applyRecordId/d',0);
+        $addUserId = input('addUserId/d',0);
+        $type = input('type/d',0); // 0=往前加签  1=往后加签
+        model('ApplyRecord')->addSign($id,$this->userId,$addUserId,$type);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 会签
+    public function aggregationApproval(){
+        $id = input('applyRecordId/d',0);
+        $userIds = input('userIds','','trim');
+        if(!$userIds){
+            HelpHander::error('未选择会签人员');
+        }
+        model('ApplyRecord')->aggregationApproval($id,$this->userId,$userIds);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 转交
+    public function transferApply(){
+        $id = input('applyRecordId/d',0);
+        $transferUserId = input('transferUserId/d',0);
+        model('ApplyRecord')->transferApply($id,$this->userId,$transferUserId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 管理员撤销
+    public function updateStatusById(){
+        $applyId = input('applyId/d',0);
+        model('Apply')->undo($applyId,$this->userId,0);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 用户撤销审批
+    public function undo(){
+        $applyId = input('applyId/d',0);
+        model('Apply')->undo($applyId,$this->userId,1);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 用户删除审批
+    public function del(){
+        $applyId = input('id/d',0);
+        model('Apply')->del($applyId,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 关联审批单
+    public function selectApplyListByType(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $type = input('type/d',0);
+        $approvalId = input('approvalId/d',0);
+        $param = input('param','','trim');
+        $ret = model('Apply')->selectApplyListByType($page,$size,$this->userId,$this->orgId,$type,$approvalId,$param);
+        HelpHander::success($ret);
+    }
+
+    // 关联主合同审批单
+    public function selectContractByType(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $type = input('type/d',0);
+        $param = input('param','','trim');
+        $ret = model('Apply')->selectContractByType($page,$size,$this->userId,$this->orgId,$type,$param);
+        HelpHander::success($ret);
+    }
+
+    // 关联未结算清合同审批单
+    public function selectContractFinishByType(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $type = input('type/d',0);
+        $param = input('param','','trim');
+        $ispay = input('ispay/d',1); // 1=付款 2=收款
+        $ret = model('Apply')->selectContractFinishByType($page,$size,$this->userId,$this->orgId,$type,$param,$ispay);
+        HelpHander::success($ret);
+    }
+
+    // 催办
+    public function remindAudit(){
+        $applyId = input('applyId/d',0);
+        model('Apply')->remindAudit($applyId,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 待办事项菜单及数量
+    public function untodoMenu(){
+
+        $count1 = Db::name('apply')
+            ->where('del',0)
+            ->where('status',1)
+            ->where('create_user_id',$this->userId)
+            ->count();
+        $count2 = Db::name('apply_record')
+            ->alias('ar')
+            ->join('apply a','a.id = ar.apply_id')
+            ->where('a.del',0)
+            ->where('ar.type','in',[2,8])
+            ->where('ar.status',0)
+            ->where('ar.del',0)
+            ->where('ar.user_id',$this->userId)
+            ->count();
+        $count3 = Db::name('apply_record')
+            ->alias('ar')
+            ->join('apply a','a.id = ar.apply_id')
+            ->where('a.del',0)
+            ->where('ar.type',3)
+            ->where('ar.status',0)
+            ->where('ar.del',0)
+            ->where('ar.user_id',$this->userId)
+            ->count();
+        $count4 = Db::name('salary_apply_record')
+            ->alias('sar')
+            ->join('salary_record sr','sr.id = sar.salary_record_id and sr.cur_node = sar.salary_apply_id')
+            ->where('sar.user_id',$this->userId)
+            ->where('sr.del',0)
+            ->where('sr.status',0)
+            ->where('sar.del',0)
+            ->count();
+        $count5 = Db::name('important_record')
+            ->alias('ir')
+            ->join('important i','i.id = ir.important_id')
+            ->where('ir.user_id',$this->userId)
+            ->where('i.del',0)
+            ->where('i.status',0)
+            ->where('ir.status','in',[0,1,2])
+            ->count();
+        $count6 = Db::name('work_news_receiver')
+            ->alias('wnr')
+            ->join('work_news wn','wn.id = wnr.work_news_id')
+            ->where('wnr.user_id',$this->userId)
+            ->where('wnr.is_read',0)
+            ->where('wn.status',1)
+            ->count();
+
+        $data = [
+            [
+                'id' => 2,
+                'title' => $count2>0?'待我审批('.$count2.')':'待我审批'
+            ],
+            [
+                'id' => 1,
+                'title' => $count1>0?'我发起的('.$count1.')':'我发起的'
+            ],
+            [
+                'id' => 3,
+                'title' => $count3>0?'抄送我的('.$count3.')':'抄送我的'
+            ],
+            [
+                'id' => 4,
+                'title' => $count4>0?'工资审批('.$count4.')':'工资审批'
+            ],
+            [
+                'id' => 5,
+                'title' => $count5>0?'重要事项办理('.$count5.')':'重要事项办理'
+            ],
+            [
+                'id' => 6,
+                'title' => $count6>0?'工作动态报送('.$count6.')':'工作动态报送'
+            ]
+        ];
+        HelpHander::success($data,'成功');
+    }
+
+}

+ 16 - 0
application/api/controller/v1/ApplyRecord.php

@@ -0,0 +1,16 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class ApplyRecord extends Base
+{
+    // 修改流程记录为已查看
+    public function updateStatusByUId(){
+        $id = input('id/d',0);
+        model('ApplyRecord')->updateStatus($id,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 87 - 0
application/api/controller/v1/Approval.php

@@ -0,0 +1,87 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class Approval extends Base
+{
+    // 新增
+    public function save(){
+        model('Approval')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('Approval')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 列表
+    public function list(){
+        $ret = model('Approval')->lists($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('Approval')->info($id,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('Approval')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 修改状态
+    public function changeStatus(){
+        $id = input('id/d',0);
+        $enable = input('enable/d',0);
+        model('Approval')->changeStatus($id,$enable);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 获取用户
+    public function queryApprovalCateList(){
+        $ret = model('Approval')->queryApprovalCateList($this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 自定义选择聚合接口
+    public function customSelect(){
+        $defaultApi = input('defaultApi/d',0);
+        $lists = [];
+        switch ($defaultApi){
+            case 1: // 会议室
+                $lists = model('MeetingRoom')->all($this->orgId);
+                break;
+            case 2: // 公司
+                $lists = model('Company')->lists($this->orgId);
+                break;
+            case 3: // 项目
+                $lists = model('Program')->allLists($this->orgId);
+                break;
+            case 4: // 印花税
+                $lists = model('StampDuty')->allLists($this->orgId);
+                break;
+            case 5: // 车辆
+                $lists = model('Car')->all($this->orgId);
+                break;
+            case 6: // 预算项目
+                $list = model('Budget')->alllist($this->userId,$this->orgId);
+                $lists = [];
+                foreach ($list as $k=>$v){
+                    foreach ($v['items'] as $kk=>$vv){
+                        $lists[] = $vv;
+                    }
+                }
+                break;
+        }
+        HelpHander::success($lists);
+    }
+}

+ 48 - 0
application/api/controller/v1/ApprovalCate.php

@@ -0,0 +1,48 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class ApprovalCate extends Base
+{
+
+    // 新增
+    public function save(){
+        model('ApprovalCate')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('ApprovalCate')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('ApprovalCate')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $ret = model('ApprovalCate')->lists($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('ApprovalCate')->del($id,$this->orgId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 流程类别和流程数据封装树状结构查询
+    public function approvalCateGroup(){
+        $ret = model('ApprovalCate')->approvalCateGroup($this->orgId);
+        HelpHander::success($ret,'操作成功');
+    }
+
+}

+ 89 - 0
application/api/controller/v1/Article.php

@@ -0,0 +1,89 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class Article extends Base
+{
+
+    // 新增
+    public function save(){
+        model('Article')->add($this->userId,$this->orgId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('Article')->add($this->userId,$this->orgId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('Article')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $enable = input('enable/d',-1);
+        $title = input('title','','trim');
+        $type = input('type/d',0);
+        $ret = model('Article')->lists($page,$size,$this->orgId,$title,$enable,$type);
+        HelpHander::success($ret);
+    }
+
+    // 用户公告列表
+    public function noticeList(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $status = input('status/d',-1);
+        $type = input('type/d',0);
+        $title = input('title','','trim');
+        $ret = model('Article')->userLists($page,$size,$this->userId,$status,$title,$type);
+        HelpHander::success($ret);
+    }
+
+    public function recentNoticeList(){
+        $ret = model('Article')->recentNoticeList($this->userId);
+        HelpHander::success($ret);
+    }
+
+    // 未读状态改为已读
+    public function changeStatus(){
+        $id = input('id/d',0);
+        model('Article')->changeStatus($id,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('Article')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 全部已读
+    public function setAllNoticeRead(){
+        model('Article')->setAllNoticeRead($this->userId,$this->orgId);
+        HelpHander::success([],'操作成功');
+    }
+
+    //查询公告详情
+    public function queryAppDetail(){
+        $id = input('id/d',0);
+        $ret = model('Article')->queryAppDetail($id);
+        HelpHander::success($ret);
+    }
+
+    // 消息列表
+    public function queryNewsList(){
+        $ret = model('Article')->queryNewsList($this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+}

+ 20 - 0
application/api/controller/v1/ArticleLog.php

@@ -0,0 +1,20 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class ArticleLog extends Base
+{
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $status = input('status/d',-1);
+        $articleId = input('articleId/d',0);
+        $ret = model('Article')->noticeLog($page,$size,$articleId,$status);
+        HelpHander::success($ret);
+    }
+
+}

+ 52 - 0
application/api/controller/v1/AssetAdd.php

@@ -0,0 +1,52 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AssetAdd extends Base
+{
+
+    // 新增
+    public function save(){
+        model('AssetAdd')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('AssetAdd')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AssetAdd')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $ret = model('AssetAdd')->lists($page,$size,$title,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 全部列表
+    public function all(){
+        $ret = model('AssetAdd')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('AssetAdd')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 52 - 0
application/api/controller/v1/AssetCate.php

@@ -0,0 +1,52 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AssetCate extends Base
+{
+
+    // 新增
+    public function save(){
+        model('AssetCate')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('AssetCate')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AssetCate')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $ret = model('AssetCate')->lists($page,$size,$title,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 全部列表
+    public function all(){
+        $ret = model('AssetCate')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('AssetCate')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 79 - 0
application/api/controller/v1/AssetCheck.php

@@ -0,0 +1,79 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AssetCheck extends Base
+{
+
+    // 新增
+    public function save(){
+        model('AssetCheck')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AssetCheck')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $status = input('status/d',-1);
+        $ret = model('AssetCheck')->lists($page,$size,$status,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('AssetCheck')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 完成盘点
+    public function finish(){
+        $id = input('id/d',0);
+        model('AssetCheck')->finish($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 盘库物品列表
+    public function items(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $status = input('status/d',-1);
+        $title = input('title','','trim');
+        $checkId = input('checkId/d',0);
+        $ret = model('AssetCheck')->items($page,$size,$checkId,$status,$title);
+        HelpHander::success($ret);
+    }
+
+    // 所有盘库物品列表
+    public function allItems(){
+        $checkId = input('checkId/d',0);
+        $ret = model('AssetCheck')->allItems($checkId);
+        HelpHander::success($ret);
+    }
+
+    // 删除资产
+    public function delItems(){
+        $id = input('id/d',0);
+        model('AssetCheck')->delItems($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 收到盘点
+    public function finishItems(){
+        $id = input('id/d',0);
+        model('AssetCheck')->finishItems($id);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 52 - 0
application/api/controller/v1/AssetClass.php

@@ -0,0 +1,52 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AssetClass extends Base
+{
+
+    // 新增
+    public function save(){
+        model('AssetClass')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('AssetClass')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AssetClass')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $ret = model('AssetClass')->lists($page,$size,$title,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 全部列表
+    public function all(){
+        $ret = model('AssetClass')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('AssetClass')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 24 - 0
application/api/controller/v1/AssetDisposal.php

@@ -0,0 +1,24 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AssetDisposal extends Base
+{
+
+    // 新增
+    public function save(){
+        model('AssetDisposal')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AssetDisposal')->info($id);
+        HelpHander::success($ret);
+    }
+
+}

+ 28 - 0
application/api/controller/v1/AssetExportTemp.php

@@ -0,0 +1,28 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AssetExportTemp extends Base
+{
+    public function save(){
+        model('AssetExportTemp')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 全部列表
+    public function all(){
+        $ret = model('AssetExportTemp')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('AssetExportTemp')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 151 - 0
application/api/controller/v1/AssetItems.php

@@ -0,0 +1,151 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+use think\response\Json;
+
+class AssetItems extends Base
+{
+
+    // 新增
+    public function save(){
+        model('AssetItems')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('AssetItems')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AssetItems')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $ret = model('AssetItems')->lists($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 导出列表
+    public function exportList(){
+//        $title = input('title','','trim');
+//        $cateId = input('cateId/d',0);
+//        $companyId = input('companyId/d',0);
+//        $addId = input('addId/d',0);
+//        $classId = input('classId/d',0);
+//        $enable = input('enable/d',-1);
+        $all = input('all/d',0);
+        $selectData = input('selectData','','trim');
+        $mb = input('mb','','trim');
+        if($all == 0 && !$selectData){
+            HelpHander::error('未选择数据');
+        }
+        if(!$mb){
+            HelpHander::error('参数错误');
+        }
+        $mb = json_decode($mb,true);
+        $flag = 0;
+        foreach ($mb as $k=>$v){
+            if($v['select']){
+                $flag = 1;
+                break;
+            }
+        }
+        if($flag == 0){
+            $this->error('未选择要导出的字段');
+        }
+
+        $ret = model('AssetItems')->exportLists($mb,$selectData,$this->orgId,$all);
+        HelpHander::success($ret);
+    }
+
+    // 资产选择列表
+    public function selectLists(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $cateId = input('cateId/d',0);
+        $companyId = input('companyId/d',0);
+        $addId = input('addId/d',0);
+        $classId = input('classId/d',0);
+        $type = input('type/d',0);
+        $ret = model('AssetItems')->selectlists($page,$size,$title,$cateId,$companyId,$addId,$classId,$this->userId,$this->orgId,$type);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('AssetItems')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 拆分资产
+    public function split(){
+        $id = input('id/d',0);
+        model('AssetItems')->split($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 申领资产列表
+    public function receive(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $start = input('startTime','','trim');
+        $end = input('endTime','','trim');
+        $ret = model('AssetReceive')->lists($page,$size,$title,$start,$end,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 退库列表
+    public function withdraw(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $start = input('startTime','','trim');
+        $end = input('endTime','','trim');
+        $ret = model('AssetWithdraw')->lists($page,$size,$title,$start,$end,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 维修列表
+    public function repair(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $start = input('startTime','','trim');
+        $end = input('endTime','','trim');
+        $ret = model('AssetRepair')->lists($page,$size,$title,$start,$end,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 处置列表
+    public function disposal(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $start = input('startTime','','trim');
+        $end = input('endTime','','trim');
+        $ret = model('AssetDisposal')->lists($page,$size,$title,$start,$end,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 我领取的资产
+    public function myLists(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $ret = model('AssetItems')->myLists($page,$size,$title,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+}

+ 24 - 0
application/api/controller/v1/AssetReceive.php

@@ -0,0 +1,24 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AssetReceive extends Base
+{
+
+    // 新增
+    public function save(){
+        model('AssetReceive')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AssetReceive')->info($id);
+        HelpHander::success($ret);
+    }
+
+}

+ 30 - 0
application/api/controller/v1/AssetRepair.php

@@ -0,0 +1,30 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AssetRepair extends Base
+{
+
+    // 新增
+    public function save(){
+        model('AssetRepair')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 完成维修
+    public function finish(){
+        model('AssetRepair')->finish();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AssetRepair')->info($id);
+        HelpHander::success($ret);
+    }
+
+}

+ 52 - 0
application/api/controller/v1/AssetUnit.php

@@ -0,0 +1,52 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AssetUnit extends Base
+{
+
+    // 新增
+    public function save(){
+        model('AssetUnit')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('AssetUnit')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AssetUnit')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $ret = model('AssetUnit')->lists($page,$size,$title,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 全部列表
+    public function all(){
+        $ret = model('AssetUnit')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('AssetUnit')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 52 - 0
application/api/controller/v1/AssetWay.php

@@ -0,0 +1,52 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AssetWay extends Base
+{
+
+    // 新增
+    public function save(){
+        model('AssetWay')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('AssetWay')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AssetWay')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $ret = model('AssetWay')->lists($page,$size,$title,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 全部列表
+    public function all(){
+        $ret = model('AssetWay')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('AssetWay')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 24 - 0
application/api/controller/v1/AssetWithdraw.php

@@ -0,0 +1,24 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AssetWithdraw extends Base
+{
+
+    // 新增
+    public function save(){
+        model('AssetWithdraw')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AssetWithdraw')->info($id);
+        HelpHander::success($ret);
+    }
+
+}

+ 64 - 0
application/api/controller/v1/AttendanceAddr.php

@@ -0,0 +1,64 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AttendanceAddr extends Base
+{
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $ret = model('AttendanceAddr')->lists($page,$size,$title,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 新增
+    public function save(){
+        model('AttendanceAddr')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('AttendanceAddr')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('AttendanceAddr')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AttendanceAddr')->info($id);
+        HelpHander::success($ret);
+    }
+
+    public function modifyStatus(){
+        $id = input('id/d',0);
+        model('AttendanceAddr')->modifyStatus($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function availableAddrList(){
+        $deviceSn = input('deviceSn','','trim');
+        $lat = input('lat','','trim');
+        $lng = input('lng','','trim');
+        $ret = model('AttendanceAddr')->availableAddrList($deviceSn,$lat,$lng);
+        HelpHander::success($ret);
+    }
+
+    public function all(){
+        $ret = model('AttendanceAddr')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+}

+ 31 - 0
application/api/controller/v1/AttendanceApply.php

@@ -0,0 +1,31 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AttendanceApply extends Base
+{
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $name = input('name','','trim');
+        $wyorgId = input('wyorgId/d',0);
+        $status = input('status/d',-1);
+        $ret = model('WyUserApply')->lists($page,$size,$name,$wyorgId,$status);
+        HelpHander::success($ret);
+    }
+
+    // 处理审核
+    public function deal(){
+        $id = input('id/d',0);
+        $status = input('status/d',0);
+        $remark = input('remark','','trim');
+        model('WyUserApply')->deal($id,$status,$remark);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 51 - 0
application/api/controller/v1/AttendanceClass.php

@@ -0,0 +1,51 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AttendanceClass extends Base
+{
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $name = input('name','','trim');
+        $ret = model('AttendanceClass')->lists($page,$size,$name,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 新增
+    public function save(){
+        model('AttendanceClass')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('AttendanceClass')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('AttendanceClass')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AttendanceClass')->info($id);
+        HelpHander::success($ret);
+    }
+
+    public function all(){
+        $ret = model('AttendanceClass')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+
+}

+ 46 - 0
application/api/controller/v1/AttendanceGroup.php

@@ -0,0 +1,46 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AttendanceGroup extends Base
+{
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $name = input('name','','trim');
+        $ret = model('AttendanceGroup')->lists($page,$size,$name,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 新增
+    public function save(){
+        model('AttendanceGroup')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('AttendanceGroup')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('AttendanceGroup')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AttendanceGroup')->info($id);
+        HelpHander::success($ret);
+    }
+
+}

+ 25 - 0
application/api/controller/v1/AttendanceGroupClass.php

@@ -0,0 +1,25 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AttendanceGroupClass extends Base
+{
+
+    // 列表
+    public function listDuringMonth(){
+        $groupId = input('groupId/d',0);
+        $month = input('month','','trim');
+        $ret = model('AttendanceGroupClass')->listDuringMonth($month,$groupId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 新增
+    public function batchSave(){
+        model('AttendanceGroupClass')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 38 - 0
application/api/controller/v1/AttendanceGroupUser.php

@@ -0,0 +1,38 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AttendanceGroupUser extends Base
+{
+
+    // 列表
+    public function queryGroupUserList(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $name = input('name','','trim');
+        $phone = input('phone','','trim');
+        $code = input('code','','trim');
+        $jobId = input('jobId/d',0);
+        $depId = input('depId/d',0);
+        $ret = model('AttendanceGroupUser')->lists($page,$size,$name,$phone,$code,$jobId,$depId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 新增
+    public function save(){
+        model('AttendanceGroupUser')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    //获取今天要打卡的考勤组
+    public function mygroup(){
+        $day = input('day','','trim');
+        $day = $day?$day:date('Y-m-d');
+        $ret = model('AttendanceGroupUser')->userGroup($this->userId,$this->orgId,$day);
+        HelpHander::success($ret,'操作成功');
+    }
+
+}

+ 41 - 0
application/api/controller/v1/AttendanceLeave.php

@@ -0,0 +1,41 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AttendanceLeave extends Base
+{
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $name = input('name','','trim');
+        $type = input('type/d',0);
+        $ret = model('AttendanceLeave')->lists($page,$size,$name,$type,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    public function userList(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $name = input('name','','trim');
+        $type = input('type/d',0);
+        $uid = input('uid/d',0);
+        $ret = model('AttendanceLeave')->lists($page,$size,$name,$type,$this->orgId,$uid);
+        HelpHander::success($ret);
+    }
+
+    public function leaveRecord(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $startTime = input('startTime','','trim');
+        $endTime = input('endTime','','trim');
+        $uid = input('uId/d',0);
+        $ret = model('AttendanceLeave')->leaveRecord($page,$size,$this->orgId,$uid,$startTime,$endTime);
+        HelpHander::success($ret);
+    }
+
+}

+ 52 - 0
application/api/controller/v1/AttendanceLeaveType.php

@@ -0,0 +1,52 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AttendanceLeaveType extends Base
+{
+
+    // 新增
+    public function save(){
+        model('AttendanceLeaveType')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('AttendanceLeaveType')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('AttendanceLeaveType')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $enable = input('enable','');
+        $ret = model('AttendanceLeaveType')->lists($enable,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('AttendanceLeaveType')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 修改状态
+    public function enable(){
+        $id = input('id/d',0);
+        $enable = input('enable/d',0);
+        model('AttendanceLeaveType')->changeStatus($id,$enable);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 90 - 0
application/api/controller/v1/AttendanceRecord.php

@@ -0,0 +1,90 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AttendanceRecord extends Base
+{
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $name = input('name','','trim');
+        $startTime = input('startTime','','trim');
+        $endTime = input('endTime','','trim');
+        $ret = model('AttendanceRecord')->lists($page,$size,$name,$startTime,$endTime,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+
+    // 手机打卡
+    public function save(){
+        model('AttendanceRecord')->sjsign();
+        HelpHander::success([],'操作成功');
+    }
+
+
+
+    // 绑定设备
+    public function bundleDevice(){
+        $deviceSn = input('deviceSn','','trim');
+        model('AttendanceRecord')->bundleDevice($this->userId,$deviceSn);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 解绑设备
+    public function unBundleDevice(){
+        $uId = input('uId/d',0);
+        model('AttendanceRecord')->unBundleDevice($uId);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function listByStaffId(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $startTime = input('startTime','','trim');
+        $endTime = input('endTime','','trim');
+        $uid = input('staffId/d',0);
+        $ret = model('AttendanceRecord')->listByStaffId($page,$size,$this->orgId,$uid,$startTime,$endTime);
+        HelpHander::success($ret);
+    }
+
+    public function attendanceStatistics(){
+        $month = input('month','','trim');
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $userName = input('userName','','trim');
+        $ret = model('AttendanceRecordResult')->attendanceStatistics($month,$page,$size,$this->orgId,$userName);
+        HelpHander::success($ret);
+    }
+
+    public function changeAttendance(){
+        $data = [
+            "type" => input('type/d',1),
+            "time" => input('time','',''),
+            "min" => input('min/d',0),
+            "id" => input('id/d',0),
+            "cate" => input('cate/d',0),
+            "status" => input('status/d',0)
+        ];
+        if($data['type'] == 2&&$data['min'] <= 0){
+            HelpHander::error('分钟数不能为0');
+        }
+        if(!$data['time']){
+            HelpHander::error('参数错误');
+        }
+        model('AttendanceUserClass')->changeAttendance($data,$this->orgId);
+        HelpHander::success([],'操作成功');
+    }
+    //考勤报表导出
+    public function attendanceExport(){
+        $month = input('month','','trim');
+        $userName = input('userName','','trim');
+        $ret = model('AttendanceRecordResult')->attendanceExport($month,$this->orgId,$userName);
+        HelpHander::success($ret);
+    }
+
+}

+ 19 - 0
application/api/controller/v1/AttendanceRecordResult.php

@@ -0,0 +1,19 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class AttendanceRecordResult extends Base
+{
+
+    // 列表
+    public function situationByMonth(){
+        $month = input('month','','trim');
+        $staffId = input('staffId/d',0);
+        $ret = model('AttendanceRecordResult')->situationByMonth($month,$staffId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+}

+ 47 - 0
application/api/controller/v1/Banner.php

@@ -0,0 +1,47 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class Banner extends Base
+{
+
+    // 新增
+    public function save(){
+        model('Banner')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('Banner')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('Banner')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $type = input('type/d',-1);
+        $title = input('title','','trim');
+        $ret = model('Banner')->lists($page,$size,$type,$title);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('Banner')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 83 - 0
application/api/controller/v1/Budget.php

@@ -0,0 +1,83 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class Budget extends Base
+{
+
+    // 新增
+    public function save(){
+        model('Budget')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('Budget')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('Budget')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $ret = model('Budget')->lists($page,$size,$title,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 全部列表
+    public function all(){
+        $ret = model('Budget')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 全部列表包括预算项
+    public function allItems(){
+        $ret = model('Budget')->allItems($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('Budget')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 发布与取消发布
+    public function changeEnable(){
+        $id = input('id/d',0);
+        $enable = input('enable/d',0);
+        if($id <= 0 || !in_array($enable,[0,1])){
+            HelpHander::error('参数错误');
+        }
+        model('Budget')->changeEnable($id,$enable);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function apply(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $budgetId = input('budgetId/',0);
+        $companyId = input('companyId/',0);
+        $ret = model('BudgetApply')->lists($page,$size,$budgetId,$companyId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 获取用户部门下所有可用的预算项
+    public function alllist(){
+        $ret = model('Budget')->alllist($this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+}

+ 83 - 0
application/api/controller/v1/BudgetDep.php

@@ -0,0 +1,83 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class BudgetDep extends Base
+{
+
+    // 新增
+    public function save(){
+        model('BudgetDep')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('BudgetDep')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 确定预算余额
+    public function confirmRealMoney(){
+        model('BudgetDep')->confirmRealMoney();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 调整预算余额
+    public function updateRealMoney(){
+        model('BudgetDep')->updateRealMoney();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('BudgetDep')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表 type 0=全部 1=本部门
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $type = input('type/d',0);
+        $year = input('year','','trim');
+        $status = input('status/d',-1);
+        $title = input('title','','trim');
+        $budgetId = input('budgetId/d',0);
+        $companyId = input('companyId/d',0);
+        $ret = model('BudgetDep')->lists($page,$size,$type,$year,$status,$title,$budgetId,$companyId,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 获取用户可申请预算的部门
+    public function getUserDep(){
+        $ret = model('BudgetDep')->getUserDep($this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 部门聚合数据
+    public function list2(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $year = input('year','','trim');
+        $title = input('title','','trim');
+        $ret = model('BudgetDep')->lists2($page,$size,$year,$title,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    public function alllist(){
+        $ret = model('BudgetDep')->alllists($this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('BudgetDep')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 25 - 0
application/api/controller/v1/BudgetDepTotal.php

@@ -0,0 +1,25 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class BudgetDepTotal extends Base
+{
+    // 合计
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $budgetId = input('budgetId/',0);
+        $companyId = input('companyId/',0);
+        $ret = model('BudgetDepTotal')->lists($page,$size,$budgetId,$companyId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    public function info(){
+        $id = input('id/d',0);
+        $ret = model('BudgetDepTotal')->info($id);
+        HelpHander::success($ret);
+    }
+
+}

+ 70 - 0
application/api/controller/v1/BudgetItems.php

@@ -0,0 +1,70 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class BudgetItems extends Base
+{
+
+    // 新增
+    public function save(){
+        model('BudgetItems')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('BudgetItems')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('BudgetItems')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $companyId = input('companyId/d',0);
+        $title = input('title','','trim');
+        $ret = model('BudgetItems')->lists($page,$size,$companyId,$title,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 获取最近活动的预算项目
+    public function newlist(){
+        $companyId = input('companyId/d',0);
+        $ret = model('BudgetItems')->newlists($companyId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    public function newBudget(){
+        $ret = model('BudgetItems')->newbudget($this->orgId,$this->userId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('BudgetItems')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 当前可用列表
+    public function curList(){
+        $ret = model('BudgetItems')->curLists($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 获取所有预算项目
+    public function all(){
+        $ret = model('BudgetItems')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+
+}

+ 57 - 0
application/api/controller/v1/BudgetPay.php

@@ -0,0 +1,57 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class BudgetPay extends Base
+{
+
+    // 新增
+    public function save(){
+        model('BudgetPay')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('BudgetPay')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 确定
+    public function confirm(){
+        model('BudgetPay')->confirm($this->orgId,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('BudgetPay')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表 dep 0=全部 1=本部门
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $type = input('type/d',0);
+        $dep = input('dep/d',0);
+        $depName = input('depName','','trim');
+        $userName = input('userName','','trim');
+        $itemName = input('itemName','','trim');
+        $start = input('startTime','','trim');
+        $end = input('endTime','','trim');
+        $ret = model('BudgetPay')->lists($page,$size,$dep,$depName,$userName,$itemName,$type,$start,$end,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('BudgetPay')->del($id,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 71 - 0
application/api/controller/v1/Car.php

@@ -0,0 +1,71 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class Car extends Base
+{
+
+    // 新增
+    public function save(){
+        model('Car')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('Car')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑里程
+    public function recordUpdate(){
+        model('CarRecord')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('Car')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $enable = input('enable/d',-1);
+        $ret = model('Car')->lists($page,$size,$title,$enable,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    public function all(){
+        $ret = model('Car')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('Car')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function record(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $carId = input('carId/d',0);
+        $ret = model('Car')->record($page,$size,$carId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    public function export(){
+        $carId = input('carId/d',0);
+        $ret = model('Car')->export($carId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+}

+ 47 - 0
application/api/controller/v1/Certificate.php

@@ -0,0 +1,47 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class Certificate extends Base
+{
+
+    // 新增
+    public function save(){
+        model('Certificate')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('Certificate')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('Certificate')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $userName = input('userName','','trim');
+        $ret = model('Certificate')->lists($page,$size,$title,$userName);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('Certificate')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 27 - 0
application/api/controller/v1/Common.php

@@ -0,0 +1,27 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\hander\HelpHander;
+use think\Controller;
+use think\Db;
+
+class Common extends Controller
+{
+
+    public function loginBanner(){
+        $lists = Db::name('banner')
+            ->where('type',0)
+            ->where('del',0)
+            ->where('enable',1)
+            ->order('sort asc,id asc')
+            ->select();
+        $lists = $lists?$lists:[];
+        HelpHander::success($lists);
+    }
+
+    public function newAppMgr(){
+        $ret = model('AppMgr')->appMgr(1);
+        HelpHander::success($ret);
+    }
+
+}

+ 16 - 0
application/api/controller/v1/Company.php

@@ -0,0 +1,16 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class Company extends Base
+{
+    // 列表
+    public function list(){
+        $ret = model('Company')->lists($this->orgId);
+        HelpHander::success($ret);
+    }
+
+}

+ 253 - 0
application/api/controller/v1/Contract.php

@@ -0,0 +1,253 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class Contract extends Base
+{
+    // 合同详情
+    public function detail(){
+        $applyId = input('id/d',0);
+        $ret = model('Contract')->info($applyId);
+        HelpHander::success($ret);
+    }
+
+    // 打印合同详情
+    public function detail2(){
+        $applyId1 = input('id1/d',0);
+        $applyId2 = input('id2/d',0);
+        $applyId3 = input('id3/d',0);
+        $lists = [];
+        if($applyId1){
+            $ret1 = model('Contract')->info($applyId1);
+            $lists[] = $ret1;
+        }
+        if($applyId2){
+            $ret2 = model('Contract')->info($applyId2);
+            $lists[] = $ret2;
+        }
+        if($applyId3){
+            $ret3 = model('Contract')->info($applyId3);
+            $lists[] = $ret3;
+        }
+
+        HelpHander::success($lists);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $contractSn = input('contractSn','','trim');
+        $programSn = input('programSn','','trim');
+        $title = input('title','','trim');
+        $ispay = input('ispay/d',0);
+        $programId = input('programId/d',0);
+        $companyId = input('companyId/d',0);
+        $startTime = input('startTime','','trim');
+        $endTime = input('endTime','','trim');
+        $company2 = input('company2','','trim');
+        $ret = model('Contract')->lists($page,$size,$this->userId,$contractSn,$programSn,$title,$ispay,$programId,$companyId,$startTime,$endTime,$company2);
+        HelpHander::success($ret);
+    }
+
+    // 导出列表
+    public function exportList(){
+        $contractSn = input('contractSn','','trim');
+        $programSn = input('programSn','','trim');
+        $title = input('title','','trim');
+        $ispay = input('ispay/d',0);
+        $programId = input('programId/d',0);
+        $companyId = input('companyId/d',0);
+        $startTime = input('startTime','','trim');
+        $endTime = input('endTime','','trim');
+        $company2 = input('company2','','trim');
+        $ret = model('Contract')->exportlists($this->userId,$contractSn,$programSn,$title,$ispay,$programId,$companyId,$startTime,$endTime,$company2);
+        HelpHander::success($ret);
+    }
+
+    // app全部合同列表
+    public function applist(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $ret = model('Contract')->applists($page,$size,$this->userId);
+        HelpHander::success($ret);
+    }
+
+    // 追加合同
+    public function appendlist(){
+        $applyId = input('applyId/d',0);
+        $ret = model('Contract')->appendLists($applyId);
+        HelpHander::success($ret);
+    }
+
+    // 支付或收款记录
+    public function paylist(){
+        $applyId = input('applyId/d',0);
+        $ret = model('ContractPay')->payLists($applyId);
+        HelpHander::success($ret);
+    }
+
+    // 财务支付或收款记录
+    public function paylist2(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $contractSn = input('contractSn','','trim');
+        $fileStatus = input('fileStatus/d',-1);
+        $qrStatus = input('qrStatus/d',-1);
+
+        $ret = model('ContractPay')->payLists2($page,$size,$title,$contractSn,$qrStatus);
+        HelpHander::success($ret);
+    }
+
+    public function payPrint(){
+        $applyId = input('applyId/d',0);
+        $ret = model('ContractPay')->payPrint($applyId);
+        HelpHander::success($ret);
+    }
+
+    public function payConfirm(){
+        $id = input('id/d',0);
+        model('ContractPay')->payConfirm($id,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function payUpdates(){
+        $id = input('id/d',0);
+        $sdFile = input('file','','trim');
+        model('ContractPay')->payupdates($id,$sdFile);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function stampLists(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $contractSn = input('contractSn','','trim');
+        $programSn = input('programSn','','trim');
+        $title = input('title','','trim');
+        $status = input('status/d',-1);
+        $startTime = input('startTime','','trim');
+        $endTime = input('endTime','','trim');
+        $type = input('type/d',0);
+        $companyId = input('companyId/d',0);
+        $sbStatus = input('sbStatus','','trim');
+        $print = input('print','','trim');
+        $ret = model('Contract')->stamplists($page,$size,$contractSn,$programSn,$title,$status,$startTime,$endTime,$type,$companyId,$sbStatus,$print);
+        HelpHander::success($ret);
+    }
+
+    public function stampListsExport(){
+        $contractSn = input('contractSn','','trim');
+        $programSn = input('programSn','','trim');
+        $title = input('title','','trim');
+        $status = input('status/d',-1);
+        $startTime = input('startTime','','trim');
+        $endTime = input('endTime','','trim');
+        $type = input('type/d',0);
+        $companyId = input('companyId/d',0);
+        $sbStatus = input('sbStatus','','trim');
+        $print = input('print','','trim');
+        $ret = model('Contract')->stampListsExport($contractSn,$programSn,$title,$status,$startTime,$endTime,$type,$companyId,$sbStatus,$print);
+        HelpHander::success($ret);
+    }
+
+    public function stampUpdates(){
+        $id = input('id/d',0);
+        $sdFile = input('sdFile','','trim');
+        model('Contract')->stampupdates($id,$sdFile);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function stampConfirm(){
+        $id = input('id/d',0);
+        model('Contract')->stampConfirm($id,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function confirm(){
+        $id = input('id/d',0);
+        model('Contract')->confirm($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function transferred(){
+        $id = input('id/d',0);
+        model('Contract')->transferred($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function appstatis(){
+        $ret = model('Contract')->appstatis();
+        HelpHander::success($ret,'操作成功');
+    }
+
+    // 修改印花税
+    public function modifyStamp(){
+        $contractId = input('contractId/d',0);
+        $sdid = input('sdid/d',0);
+        $money = input('money/f',0);
+        model('Contract')->modifyStamp($contractId,$sdid,$money,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 打回
+    public function backStamp(){
+        $contractId = input('contractId/d',0);
+        $sdReason = input('sdReason','','trim');
+        if(!$sdReason){
+            HelpHander::error('未填写打回原因');
+        }
+        model('Contract')->backStamp($contractId,$sdReason);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function stampLogList(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $contractId = input('contractId/d',0);
+        $ret = model('Contract')->stampLogList($page,$size,$contractId);
+        HelpHander::success($ret);
+    }
+
+    // 合同标记为已打印
+    public function prints(){
+        $applyIds = input('ids','','trim');
+        if($applyIds){
+            Db::name('contract')->where('apply_id','in',explode(',',$applyIds))->setField('print',1);
+        }
+        HelpHander::success([],'操作成功');
+    }
+
+    // 合同标记为已申报
+    public function sbStatus(){
+        $applyId = input('id','','trim');
+        $ret = Db::name('contract')->where('apply_id',$applyId)->setField('sb_status',1);
+        if(!$ret){
+            HelpHander::error('操作失败');
+        }
+        HelpHander::success([],'操作成功');
+    }
+
+    public function renew(){
+        $ret = model('Contract')->renew();
+        HelpHander::success($ret);
+    }
+
+    public function renewConfirm(){
+        $id = input('id','','trim');
+        $renew = input('renew/d',0);
+        $ret = model('Contract')->renewConfirm($id,$renew,$this->userId);
+        if(!$ret){
+            HelpHander::error('操作失败');
+        }
+        HelpHander::success([],'操作成功');
+    }
+
+    public function renewExport(){
+        $ret = model('Contract')->renewExport();
+        HelpHander::success($ret);
+    }
+}

+ 51 - 0
application/api/controller/v1/DelLog.php

@@ -0,0 +1,51 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class DelLog extends Base
+{
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $name = input('name','','trim');
+        $startTime = input('startTime','','trim');
+        $endTime = input('endTime','','trim');
+        $ret = $this->selectActionLog($page,$size,$name,$startTime,$endTime);
+        HelpHander::success($ret);
+    }
+
+    // 日志列表
+    private function selectActionLog($page,$size,$name,$startTime,$endTime){
+        if($name){
+            $map[] = ['ui.name','like','%'.$name.'%'];
+        }
+        if($startTime&&$endTime){
+            $map[] = ['al.create_time','>=',$startTime];
+            $map[] = ['al.create_time','<=',$endTime];
+        }
+
+        $map = !empty($map)?$map:true;
+        $lists = Db::name('del_log')
+            ->alias('al')
+            ->join('user_info ui','ui.user_id = al.user_id')
+            ->where($map)
+            ->page($page,$size)
+            ->field('al.*,ui.name')
+            ->order('al.id desc')
+            ->select();
+        $total = Db::name('del_log')
+            ->alias('al')
+            ->join('user_info ui','ui.user_id = al.user_id')
+            ->where($map)->count();
+        $data = [
+            'total' => $total,
+            'list' => $lists?$lists:[]
+        ];
+        return $data;
+    }
+
+}

+ 84 - 0
application/api/controller/v1/Dep.php

@@ -0,0 +1,84 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class Dep extends Base
+{
+
+    // 新增
+    public function save(){
+        model('Dep')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('Dep')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('Dep')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $ret = model('Dep')->lists($page,$size);
+        HelpHander::success($ret);
+    }
+
+    // 作废部门
+    public function disableDep(){
+        $depId = input('depId/d',0);
+        model('Dep')->disableDep($depId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 启用部门
+    public function toEnableDep(){
+        $depId = input('depId/d',0);
+        model('Dep')->toEnableDep($depId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 指定组织下的部门列表(树状结构)
+    public function queryDepTreeByOrg(){
+        $ret = model('Dep')->queryDepTreeByOrg($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 部门下的部门/组织下的部门
+    public function queryDepListByOrg(){
+        $id = input('id/d',0);
+        $isOrg = input('isOrg/d',0); // 0=组织 1=部门
+        $ret = model('Dep')->queryDepListByOrg($id,$isOrg);
+        HelpHander::success($ret);
+    }
+
+    // 指定组织下的部门列表(树状结构)
+    public function queryDepTree(){
+        $ret = model('Dep')->queryDepTree($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 部门岗位人员树/部门岗位树
+    public function queryDepAndJobTree(){
+        $isDep = input('isDep/d',0); // 0查部门岗位人员,1查部门岗位树
+        $ret = model('Dep')->queryDepAndJobTree($this->orgId,$isDep);
+        HelpHander::success($ret);
+    }
+
+    public function getUserDep(){
+        $uid = input('uid/d',0);
+        $ret = model('Dep')->getUserDep($uid,$this->orgId);
+        HelpHander::success($ret);
+    }
+}

+ 58 - 0
application/api/controller/v1/Dinner.php

@@ -0,0 +1,58 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class Dinner extends Base
+{
+
+    // 新增
+    public function save(){
+        model('Dinner')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('Dinner')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('Dinner')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $enable = input('enable/d',-1);
+        $ret = model('Dinner')->lists($page,$size,$title,$enable);
+        HelpHander::success($ret);
+    }
+
+    public function getlistday(){
+        $day = input('day','','trim');
+        $ret = model('Dinner')->getlistday($day);
+        HelpHander::success($ret);
+    }
+
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('Dinner')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+
+    public function cateList(){
+        $ret = model('DinnerCate')->getList();
+        HelpHander::success($ret);
+    }
+
+}

+ 51 - 0
application/api/controller/v1/DinnerCate.php

@@ -0,0 +1,51 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class DinnerCate extends Base
+{
+
+    // 新增
+    public function save(){
+        model('DinnerCate')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('DinnerCate')->add();
+        HelpHander::success([],'操作成功');
+    }
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('DinnerCate')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $enable = input('enable/d',-1);
+        $ret = model('DinnerCate')->lists($page,$size,$title,$enable);
+        HelpHander::success($ret);
+    }
+
+    public function all(){
+        $ret = model('DinnerCate')->allLists();
+        HelpHander::success($ret);
+    }
+
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('DinnerCate')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+
+}

+ 69 - 0
application/api/controller/v1/DinnerCompany.php

@@ -0,0 +1,69 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class DinnerCompany extends Base
+{
+
+    // 新增
+    public function save(){
+        model('DinnerCompany')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('DinnerCompany')->add();
+        HelpHander::success([],'操作成功');
+    }
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('DinnerCompany')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $enable = input('enable/d',-1);
+        $ret = model('DinnerCompany')->lists($page,$size,$title,$enable);
+        HelpHander::success($ret);
+    }
+
+    public function all(){
+        $ret = model('DinnerCompany')->allLists();
+        HelpHander::success($ret);
+    }
+
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('DinnerCompany')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function applylimit(){
+        $vals = Db::name('config')->where('name','dinner_apply_limit')->value('value');
+        HelpHander::success(['val'=>$vals?$vals:'']);
+    }
+
+    public function aledit(){
+        $val = input('val','','trim');
+        $ret = Db::name('config')
+            ->where('name','dinner_apply_limit')
+            ->update(['value'=>$val,'update_time'=>date('Y-m-d H:i:s')]);
+        if($ret){
+            HelpHander::success([],'操作成功');
+        }else{
+            HelpHander::error('操作失败');
+        }
+    }
+
+
+}

+ 127 - 0
application/api/controller/v1/DinnerOrders.php

@@ -0,0 +1,127 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class DinnerOrders extends Base
+{
+
+    // 列表
+    public function list(){
+        $ret = model('DinnerOrders')->lists();
+        HelpHander::success($ret);
+    }
+
+    public function export(){
+        $ret = model('DinnerOrders')->export();
+        HelpHander::success($ret);
+    }
+
+    public function apply(){
+        $ret = model('DinnerOrders')->applys($this->userId);
+        HelpHander::success($ret);
+    }
+
+    public function applyexport(){
+        $ret = model('DinnerOrders')->applyexport($this->userId);
+        HelpHander::success($ret);
+    }
+
+    public function agree(){
+        $id = input('id/d',0);
+        model('DinnerOrders')->agree($id,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function agreeall(){
+        model('DinnerOrders')->agreeall($this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('DinnerOrders')->del($id,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除订单商品
+    public function delgoods(){
+        $id = input('id/d',0);
+        model('DinnerOrders')->delgoods($id,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 修改商品数量
+    public function editgoods(){
+        $id = input('id/d',0);
+        $nums = input('nums/d',0);
+        model('DinnerOrders')->editgoods($id,$nums,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 添加商品
+    public function addgoods(){
+        $orderId = input('orderId/d',0);
+        $dinnerId = input('dinnerId/d',0);
+        $nums = input('nums/d',0);
+        model('DinnerOrders')->addgoods($orderId,$dinnerId,$nums,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function goods(){
+        $orderId = input('orderId/d',0);
+        $m[] = ['a.order_id','=',$orderId];
+        $goods = Db::name('dinner_order_goods')
+            ->alias('a')
+            ->join('dinner_cate c','c.id = a.cate_id')
+            ->join('dinner e','e.id = a.dinner_id')
+            ->where($m)
+            ->order('a.cate_id asc')
+            ->field('a.*,c.title as cate_title,e.title as dinner_title,c.color')
+            ->select();
+        $goods = $goods?$goods:[];
+        HelpHander::success($goods,'成功');
+    }
+
+    // 配菜表
+    public function pclist(){
+        $ret = model('DinnerOrders')->pclists();
+        HelpHander::success($ret);
+    }
+
+    // 配菜表导出
+    public function pcexport(){
+        $ret = model('DinnerOrders')->pcexport();
+        HelpHander::success($ret);
+    }
+
+    // 财务报表
+    public function finance(){
+        $ret = model('DinnerOrders')->finance();
+        HelpHander::success($ret);
+    }
+
+    // 财务报表
+    public function finexport(){
+        $ret = model('DinnerOrders')->finexport();
+        HelpHander::success($ret);
+    }
+
+    // 公司财务报表
+    public function cfinance(){
+        $ret = model('DinnerOrders')->cfinance($this->userId);
+        HelpHander::success($ret);
+    }
+
+    // 公司财务报表
+    public function cfinexport(){
+        $ret = model('DinnerOrders')->cfinexport($this->userId);
+        HelpHander::success($ret);
+    }
+
+}

+ 41 - 0
application/api/controller/v1/DinnerUser.php

@@ -0,0 +1,41 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class DinnerUser extends Base
+{
+    // 新增
+    public function save(){
+        model('DinnerUser')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('DinnerUser')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('DinnerUser')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('DinnerUser')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 列表
+    public function list(){
+        $ret = model('DinnerUser')->lists();
+        HelpHander::success($ret);
+    }
+
+}

+ 62 - 0
application/api/controller/v1/Document.php

@@ -0,0 +1,62 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class Document extends Base
+{
+
+    // 新增
+    public function save(){
+        model('Document')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('Document')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('Document')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function queryDocumentList(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $cateId = input('cateId/d',0);
+        $title = input('title','','trim');
+        $name = input('name','','trim');
+        $startTime = input('startTime','','trim');
+        $endTime = input('endTime','','trim');
+        $ret = model('Document')->lists($page,$size,$cateId,$title,$name,$startTime,$endTime,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('Document')->del($id,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function updateViews(){
+        $id = input('id/d',0);
+        model('Document')->updateViews($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function queryDocumentByCate(){
+        $cateId = input('cateId/d',0);
+        $title = input('title','','trim');
+        $ret = model('Document')->queryDocumentByCate($cateId,$title,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+}

+ 55 - 0
application/api/controller/v1/DocumentCate.php

@@ -0,0 +1,55 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class DocumentCate extends Base
+{
+
+    // 新增
+    public function save(){
+        model('DocumentCate')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('DocumentCate')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('DocumentCate')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $ret = model('DocumentCate')->lists($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 全部列表
+    public function all(){
+        $ret = model('DocumentCate')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('DocumentCate')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function queryDocumentList(){
+        $title = input('title','','trim');
+        $ret = model('DocumentCate')->queryDocumentList($title,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+}

+ 495 - 0
application/api/controller/v1/Email.php

@@ -0,0 +1,495 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use PHPMailer\PHPMailer\Exception;
+use PHPMailer\PHPMailer\PHPMailer;
+use think\Db;
+use tools\Oaimap;
+
+class Email extends Base
+{
+
+    // 新增
+    public function save(){
+        model('Email')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('Email')->edit();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $status = input('status/d',0);
+        $ret = model('Email')->lists($page,$size,$title,$status,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    public function login(){
+        $email = Db::name('user_email')->where('active',1)->where('user_id',$this->userId)->value('email');
+        if(!$email){
+            HelpHander::error('未设置邮箱账号或邮箱账号被禁用,请联系管理员');
+        }
+        $res = model('Email')->login($email);
+
+        HelpHander::success(['url'=>$res]);
+    }
+
+    public function loginIpmc(){
+        $email = 'ipmc@dr-ipmc.org.cn';
+        $res = model('Email')->login($email);
+
+        HelpHander::success(['url'=>$res]);
+    }
+
+    // 新消息数量
+    public function newMessage(){
+        $email = Db::name('user_email')->where('active',1)->where('user_id',$this->userId)->value('email');
+        if(!$email){
+            HelpHander::success([
+                "count" => 0,
+                "unseenCount" => 0,
+                "uidNext" => 0,
+                "newMessage" => []
+            ]);
+        }
+        $res = model('Email')->newMessage($email);
+
+        HelpHander::success($res);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('Email')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 批量更新通讯录
+    public function batchTel(){
+        set_time_limit(0);
+        ini_set("memory_limit","2048M");
+
+        model('Email')->batchTel();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 获取文件夹列表
+    public function getFolders(){
+        $uemail = $this->checkEmail();
+        $config = config('app.email');
+        $url = $config['host2'].'Email/getFolders';
+        $ret = curl_post($url,['token' => $uemail['token']]);
+        if(!$ret){
+            HelpHander::error('数据获取失败');
+        }
+        $ret = json_decode($ret,true);
+        if($ret['code'] != 0){
+            HelpHander::error($ret['message']);
+        }
+        HelpHander::success($ret['data']);
+    }
+
+    // 获取邮件列表
+    public function getMessages(){
+        $uemail = $this->checkEmail();
+        $data = [
+            'token' => $uemail['token'],
+            'page' => input('page/d',1),
+            'size' => input('size/d',10),
+            'keyword' => input('keyword','','trim'),
+            'folder' => input('folder','INBOX','trim') // 默认是收件箱
+        ];
+        $config = config('app.email');
+        $url = $config['host2'].'Email/getMessages';
+        $ret = curl_post($url,$data);
+        if(!$ret){
+            HelpHander::error('数据获取失败');
+        }
+        $ret = json_decode($ret,true);
+        if($ret['code'] != 0){
+            HelpHander::error($ret['message']);
+        }
+        HelpHander::success($ret['data']);
+    }
+
+    private function checkEmail(){
+        $uemail = Db::name('user_email')->where('user_id',$this->userId)->find();
+        if(!$uemail){
+            HelpHander::error('改用户未设置邮箱');
+        }
+        $uemail['password'] = think_decrypt($uemail['password']);
+        $uemail['name'] = Db::name('user_info')->where('user_id',$this->userId)->value('name');
+
+        $token = think_encrypt(json_encode(['email'=>$uemail['email'],'password'=>$uemail['password']]),'',20);
+        $uemail['token'] = $token;
+        return $uemail;
+    }
+
+    // 发送邮件
+    public function send(){
+        $uemail = $this->checkEmail();
+        $data = [
+            'token' => $uemail['token'],
+            'subject' => input('subject','','trim'),
+            'body' => input('body','','trim'),
+            'to' => input('to','','trim'), // [{"email":"hzd@dr-ipmc.org.cn","name":"hzd"}]
+            'cc' => input('cc','','trim'), // [{"email":"hzd@dr-ipmc.org.cn","name":"hzd"}]
+            'bcc' => input('bcc','','trim'), // [{"email":"hzd@dr-ipmc.org.cn","name":"hzd"}]
+            'attachment' => input('attachment','','trim'),
+            'bookTime' => input('bookTime','','trim'),
+            'priority' => input('priority/d',0),
+            'dnt' => input('dnt/d',0), // 0=不回复 1=回复
+            'messageFolder' => input('messageFolder','','trim'),// 编辑草稿箱时填写
+            'messageUid' => input('messageUid','','trim'), // 编辑草稿箱uid
+            'draftInfo' => input('draftInfo','','trim'), // draftInfo,有值时传,回复、转发 {"type":"reply","uid":1,"folder":"INBOX"}
+            'inReplyTo' => input('inReplyTo','','trim'), // 回复、转发,messageId
+            'references' => input('references','','trim'),// 回复、转发,messageId
+            'dsn' => input('dsn/d',0),// 0=发送成功不回复 1=发送成功回复
+        ];
+        $data['fromName'] = $uemail['name'];
+        $data['fromEmail'] = $uemail['email'];
+        if($data['bookTime'] && strtotime($data['bookTime']) <= time()){
+            HelpHander::error('定时时间不能小于当前时间');
+        }
+        if(!$data['subject']){
+            HelpHander::error('未填写主题');
+        }
+        if(!$data['to']){
+            HelpHander::error('未填写收件人');
+        }
+
+        $config = config('app.email');
+        $url = $config['host2'].'Email/sendMessage';
+        $ret = curl_post($url,$data);
+        if(!$ret){
+            HelpHander::error('数据获取失败');
+        }
+        $ret = json_decode($ret,true);
+        if($ret['code'] != 0){
+            HelpHander::error($ret['message']);
+        }
+        HelpHander::success([],'发送成功');
+    }
+
+    // 保存草稿箱
+    public function saveMessage(){
+        $uemail = $this->checkEmail();
+        $data = [
+            'token' => $uemail['token'],
+            'subject' => input('subject','','trim'),
+            'plain' => input('plain','','trim'),
+            'body' => input('body','','trim'),
+            'to' => input('to','','trim'), // [{"email":"hzd@dr-ipmc.org.cn","name":"hzd"}]
+            'cc' => input('cc','','trim'), // [{"email":"hzd@dr-ipmc.org.cn","name":"hzd"}]
+            'bcc' => input('bcc','','trim'), // [{"email":"hzd@dr-ipmc.org.cn","name":"hzd"}]
+            'attachment' => input('attachment','','trim'),
+            'bookTime' => input('bookTime','','trim'),
+            'priority' => input('priority/d',0),
+            'dnt' => input('dnt/d',0), // 0=不回复 1=回复
+            'messageFolder' => input('messageFolder','','trim'),// 编辑草稿箱时填写
+            'messageUid' => input('messageUid','','trim'), // 编辑草稿箱uid
+            'draftInfo' => input('draftInfo','','trim'), // draftInfo,有值时传,回复、转发  (type-uid-folder reply-1-INBOX)
+            'inReplyTo' => input('inReplyTo','','trim'), // 回复、转发,messageId
+            'references' => input('references','','trim'),// 回复、转发,messageId
+            'dsn' => input('dsn/d',0),// 0=发送成功不回复 1=发送成功回复
+        ];
+
+        $data['fromName'] = $uemail['name'];
+        $data['fromEmail'] = $uemail['email'];
+
+        $config = config('app.email');
+        $url = $config['host2'].'Email/saveMessage';
+        $ret = curl_post($url,$data);
+        if(!$ret){
+            HelpHander::error('数据获取失败');
+        }
+        $ret = json_decode($ret,true);
+        if($ret['code'] != 0){
+            HelpHander::error($ret['message']);
+        }
+        HelpHander::success($ret['data']);
+    }
+
+    public function messageSetSeen(){
+        $uemail = $this->checkEmail();
+        $data = [
+            'token' => $uemail['token'],
+            'setAction' => input('setAction/d',0),
+            'uids' => input('uids','','trim'),
+            'folder' => input('folder','INBOX','trim') // 默认是收件箱
+        ];
+        $config = config('app.email');
+        $url = $config['host2'].'Email/messageSetSeen';
+        $ret = curl_post($url,$data);
+        if(!$ret){
+            HelpHander::error('数据获取失败');
+        }
+        $ret = json_decode($ret,true);
+        if($ret['code'] != 0){
+            HelpHander::error($ret['message']);
+        }
+        HelpHander::success([],'操作成功');
+    }
+
+    public function messageSetSeenToAll(){
+        $uemail = $this->checkEmail();
+        $data = [
+            'token' => $uemail['token'],
+            'setAction' => input('setAction/d',0),
+            'folder' => input('folder','INBOX','trim') // 默认是收件箱
+        ];
+        $config = config('app.email');
+        $url = $config['host2'].'Email/messageSetSeenToAll';
+        $ret = curl_post($url,$data);
+        if(!$ret){
+            HelpHander::error('数据获取失败');
+        }
+        $ret = json_decode($ret,true);
+        if($ret['code'] != 0){
+            HelpHander::error($ret['message']);
+        }
+        HelpHander::success([],'操作成功');
+    }
+
+    public function messageSetFlagged(){
+        $uemail = $this->checkEmail();
+        $data = [
+            'token' => $uemail['token'],
+            'setAction' => input('setAction/d',0),
+            'uids' => input('uids','','trim'),
+            'folder' => input('folder','INBOX','trim') // 默认是收件箱
+        ];
+        $config = config('app.email');
+        $url = $config['host2'].'Email/messageSetFlagged';
+        $ret = curl_post($url,$data);
+        if(!$ret){
+            HelpHander::error('数据获取失败');
+        }
+        $ret = json_decode($ret,true);
+        if($ret['code'] != 0){
+            HelpHander::error($ret['message']);
+        }
+        HelpHander::success([],'操作成功');
+    }
+
+    public function messageDelete(){
+        $uemail = $this->checkEmail();
+        $data = [
+            'token' => $uemail['token'],
+            'uids' => input('uids','','trim'),
+            'folder' => input('folder','INBOX','trim') // 默认是收件箱
+        ];
+        $config = config('app.email');
+        $url = $config['host2'].'Email/messageDelete';
+        $ret = curl_post($url,$data);
+        if(!$ret){
+            HelpHander::error('数据获取失败');
+        }
+        $ret = json_decode($ret,true);
+        if($ret['code'] != 0){
+            HelpHander::error($ret['message']);
+        }
+        HelpHander::success([],'操作成功');
+    }
+
+    public function messageMove(){
+        $uemail = $this->checkEmail();
+        $data = [
+            'token' => $uemail['token'],
+            'uids' => input('uids','','trim'),
+            'fromFolder' => input('fromFolder','INBOX','trim'), // 默认是收件箱
+            'toFolder' => input('toFolder','INBOX','trim') // 默认是收件箱
+        ];
+        $config = config('app.email');
+        $url = $config['host2'].'Email/messageMove';
+        $ret = curl_post($url,$data);
+        if(!$ret){
+            HelpHander::error('数据获取失败');
+        }
+        $ret = json_decode($ret,true);
+        if($ret['code'] != 0){
+            HelpHander::error($ret['message']);
+        }
+        HelpHander::success([],'操作成功');
+    }
+
+    public function folderClear(){
+        $uemail = $this->checkEmail();
+        $data = [
+            'token' => $uemail['token'],
+            'folder' => input('folder','INBOX','trim'), // 默认是收件箱
+        ];
+        $config = config('app.email');
+        $url = $config['host2'].'Email/folderClear';
+        $ret = curl_post($url,$data);
+        if(!$ret){
+            HelpHander::error('数据获取失败');
+        }
+        $ret = json_decode($ret,true);
+        if($ret['code'] != 0){
+            HelpHander::error($ret['message']);
+        }
+        HelpHander::success([],'操作成功');
+    }
+
+    //最近联系人
+    public function recent(){
+        $uemail = $this->checkEmail();
+        $data = [
+            'token' => $uemail['token'],
+        ];
+        $config = config('app.email');
+        $url = $config['host2'].'Email/recent';
+        $ret = curl_post($url,$data);
+        if(!$ret){
+            HelpHander::error('数据获取失败');
+        }
+        $ret = json_decode($ret,true);
+        if($ret['code'] != 0){
+            HelpHander::error($ret['message']);
+        }
+        HelpHander::success($ret['data'],'操作成功');
+    }
+
+    //企业通讯录
+    public function addressBook(){
+        $uemail = $this->checkEmail();
+        $data = [
+            'token' => $uemail['token'],
+        ];
+        $config = config('app.email');
+        $url = $config['host2'].'Email/addressBook';
+        $ret = curl_post($url,$data);
+        if(!$ret){
+            HelpHander::error('数据获取失败');
+        }
+        $ret = json_decode($ret,true);
+        if($ret['code'] != 0){
+            HelpHander::error($ret['message']);
+        }
+        HelpHander::success($ret['data'],'操作成功');
+    }
+
+    public function createEml($data,$from){
+        $date = date('D, d M Y H:i:s');
+        $data['date'] = $date;
+        $altbody = strip_tags($data['body']);
+        $messageId = md5(json_encode($data));
+        $partend = get_rand_num().'.'.time();
+        $part1 = '1_'.$partend;
+        $emlstr = "Mime-Version: 1.0".PHP_EOL;
+        $emlstr .= "Date: ".$date.' +0800'.PHP_EOL;
+        $emlstr .= "Content-Type: multipart/mixed;".PHP_EOL;
+        $emlstr .= " boundary=\"--=_Part_{$part1}\"".PHP_EOL;
+        $emlstr .= "Message-ID: <{$messageId}@localhost>".PHP_EOL;
+        $emlstr .= "X-Mailer: Postfix".PHP_EOL;
+        if($data['book_time']){
+            $emlstr .= "TimedSendDate: 1".PHP_EOL;
+        }
+        $emlstr .= 'From: "=?utf-8?B?'.base64_encode($from['name']).'?=" <'.$from['email'].'>'.PHP_EOL;
+        $tos = json_decode($data['to'],true);
+        $tostr = [];
+        foreach ($tos as $k=>$v){
+            $str = '';
+            if($v['name']){
+                $str .= '"=?utf-8?B?'.base64_encode($v['name']).'?=" <'.$v['email'].'>';
+            }else{
+                $str .= '<'.$v['email'].'>';
+            }
+            $tostr[] = $str;
+        }
+        $emlstr .= 'To: '.implode(',',$tostr).PHP_EOL;
+        $ccs = json_decode($data['cc'],true);
+        if($ccs){
+            $ccstr = [];
+            foreach ($ccs as $k=>$v){
+                $str = '';
+                if($v['name']){
+                    $str .= '"=?utf-8?B?'.base64_encode($v['name']).'?=" <'.$v['email'].'>';
+                }else{
+                    $str .= '<'.$v['email'].'>';
+                }
+                $ccstr[] = $str;
+            }
+            $emlstr .= 'Cc: '.implode(',',$ccstr).PHP_EOL;
+        }
+        $bccs = json_decode($data['bcc'],true);
+        if($bccs){
+            $bccstr = [];
+            foreach ($bccs as $k=>$v){
+                $str = '';
+                if($v['name']){
+                    $str .= '"=?utf-8?B?'.base64_encode($v['name']).'?=" <'.$v['email'].'>';
+                }else{
+                    $str .= '<'.$v['email'].'>';
+                }
+                $bccstr[] = $str;
+            }
+            $emlstr .= 'Bcc: '.implode(',',$bccstr).PHP_EOL;
+        }
+        if($data['dnt'] == 1){
+            $emlstr .= 'Disposition-Notification-To: '.$from['name'].PHP_EOL;
+            $emlstr .= 'X-Confirm-Reading-To: '.$from['name'].PHP_EOL;
+        }
+        if($data['priority'] == 1){
+            $emlstr .= 'X-Priority: 1 (Highest)'.PHP_EOL;
+        }
+        $emlstr .= 'Subject: =?utf-8?B?'.base64_encode($data['subject']).'?='.PHP_EOL;
+        $emlstr .= PHP_EOL.'----=_Part_'.$part1.PHP_EOL;
+
+        $part2 = '2_'.$partend;
+        $emlstr .= "Content-Type: multipart/alternative;".PHP_EOL;
+        $emlstr .= " boundary=\"--=_Part_{$part2}".PHP_EOL;
+        $emlstr .= PHP_EOL.'----=_Part_'.$part2.PHP_EOL;
+        $emlstr .= 'Content-Type: text/plain; charset="utf-8"'.PHP_EOL;
+        $emlstr .= 'Content-Transfer-Encoding: quoted-printable'.PHP_EOL;
+        $emlstr .= PHP_EOL.quoted_printable_encode($altbody).PHP_EOL;
+        $emlstr .= PHP_EOL.'----=_Part_'.$part2.PHP_EOL;
+
+        $emlstr .= 'Content-Type: text/html; charset="utf-8"'.PHP_EOL;
+        $emlstr .= 'Content-Transfer-Encoding: quoted-printable'.PHP_EOL;
+        $emlstr .= PHP_EOL.quoted_printable_encode($data['body']).PHP_EOL;
+        $emlstr .= PHP_EOL.'----=_Part_'.$part2.'--'.PHP_EOL;
+
+        // 附件
+//        $emlstr .= PHP_EOL.'----=_Part_'.$part1.PHP_EOL;
+//        $emlstr .= 'Content-Type: image/png; name="favicon.png"'.PHP_EOL;
+//        $emlstr .= 'Content-Disposition: attachment; filename="favicon.png"'.PHP_EOL;
+//        $emlstr .= 'Content-Transfer-Encoding: base64'.PHP_EOL;
+//        $emlstr .= PHP_EOL.base64_encode(file_get_contents('./favicon.png')).PHP_EOL;
+//        $emlstr .= PHP_EOL.'----=_Part_'.$part1.'--'.PHP_EOL;
+
+
+        file_put_contents('./email/'.date('Ymd_').$messageId.'.eml', $emlstr);
+    }
+
+    // 获取邮件
+    public function getMessageByUid(){
+        $uemail = $this->checkEmail();
+        $data = [
+            'token' => $uemail['token'],
+            'uid' => input('uid','','trim'),
+            'folder' => input('folder','INBOX','trim') // 默认是收件箱
+        ];
+        $config = config('app.email');
+        $url = $config['host2'].'Email/getMessageByUid';
+        $ret = curl_post($url,$data);
+        if(!$ret){
+            HelpHander::error('数据获取失败');
+        }
+        $ret = json_decode($ret,true);
+        if($ret['code'] != 0){
+            HelpHander::error($ret['message']);
+        }
+        HelpHander::success($ret['data']);
+    }
+}

+ 45 - 0
application/api/controller/v1/Feedback.php

@@ -0,0 +1,45 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class Feedback extends Base
+{
+
+    // 新增
+    public function save(){
+        model('Feedback')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('Feedback')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('Feedback')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $ret = model('Feedback')->lists($page,$size);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('Feedback')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 44 - 0
application/api/controller/v1/File.php

@@ -0,0 +1,44 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class File extends Base
+{
+
+    // 新增
+    public function save(){
+        model('File')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('File')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('File')->info($id);
+        HelpHander::success($ret);
+    }
+
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $sn = input('sn','','trim');
+        $source = input('source','','trim');
+        $title = input('title','','trim');
+        $enable = input('enable/d',-1);
+        $swTime = input('swTime','','trim');
+        $ret = model('File')->lists($page,$size,$sn,$source,$title,$enable,$swTime,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+}

+ 46 - 0
application/api/controller/v1/FileRecord.php

@@ -0,0 +1,46 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class FileRecord extends Base
+{
+
+    // 新增
+    public function save(){
+        model('FileRecord')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('FileRecord')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('FileRecord')->info($id);
+        HelpHander::success($ret);
+    }
+
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $name = input('name','','trim');
+        $ret = model('FileRecord')->lists($page,$size,$title,$name,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    public function getLastUser(){
+        $ret = model('FileRecord')->getLastUser();
+        HelpHander::success($ret);
+    }
+    
+}

+ 45 - 0
application/api/controller/v1/FileUserTemp.php

@@ -0,0 +1,45 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class FileUserTemp extends Base
+{
+
+    // 新增
+    public function save(){
+        model('FileUserTemp')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('FileUserTemp')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('FileUserTemp')->info($id);
+        HelpHander::success($ret);
+    }
+
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $ret = model('FileUserTemp')->lists($page,$size,$title,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    public function all(){
+        $ret = model('FileUserTemp')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+    
+}

+ 39 - 0
application/api/controller/v1/FinanceLog.php

@@ -0,0 +1,39 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class FinanceLog extends Base
+{
+
+    // 新增/编辑
+    public function save(){
+        model('FinanceLog')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('FinanceLog')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $day = input('day','','trim');
+        $ret = model('FinanceLog')->lists($page,$size,$day,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('FinanceLog')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 58 - 0
application/api/controller/v1/House.php

@@ -0,0 +1,58 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class House extends Base
+{
+
+    // 新增/编辑
+    public function save(){
+        model('House')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('House')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('House')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $floorId = input('floorId/d',0);
+        $ret = model('House')->lists($page,$size,$title,$this->userId,$this->orgId,$floorId);
+        HelpHander::success($ret);
+    }
+
+    public function all(){
+        $ret = model('House')->all($this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    public function houseList(){
+        $floorId = input('floorId/d',0);
+        $title = input('title','','trim');
+        $ret = model('House')->houseList($floorId,$title,$this->orgId,$this->userId);
+        HelpHander::success($ret);
+    }
+
+    public function houseDetail(){
+        $id = input('id/d',0);
+        $ret = model('House')->houseDetail($id,$this->orgId);
+
+    }
+}

+ 33 - 0
application/api/controller/v1/HouseAuth.php

@@ -0,0 +1,33 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseAuth extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseAuth')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseAuth')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $type = input('type/d',0);
+        $ret = model('HouseAuth')->lists($page,$size,$title,$type,$this->orgId);
+        HelpHander::success($ret);
+    }
+}

+ 64 - 0
application/api/controller/v1/HouseBuilding.php

@@ -0,0 +1,64 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseBuilding extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseBuilding')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseBuilding')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $type = input('type/d',1);
+
+        $ret = model('HouseBuilding')->lists($page,$size,$title,$type,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    public function blist(){
+        $type = input('type/d',1);
+        $title = input('title','','trim');
+        $cate = input('cate/d',1);
+        $ret = model('HouseBuilding')->blist($type,$title,$this->userId,$this->orgId,$cate);
+        HelpHander::success($ret);
+    }
+
+    public function houseTurnList(){
+        $buildingId = input('buildingId/d',0);
+        $title = input('title','','trim');
+        $cate = input('cate/d',0);
+        $ret = model('HouseBuilding')->houseTurnList($this->userId,$this->orgId,$buildingId,$title,$cate);
+        HelpHander::success($ret);
+    }
+
+    public function houseTurnDetails(){
+        $id = input('id/d',0);
+        $ret = model('HouseBuilding')->houseTurnDetails($id);
+        HelpHander::success($ret);
+    }
+
+    public function houseFloor(){
+        $buildingId = input('buildingId/d',0);
+        $ret = model('HouseBuilding')->houseFloor($this->userId,$this->orgId,$buildingId);
+        HelpHander::success($ret);
+    }
+
+
+}

+ 38 - 0
application/api/controller/v1/HouseCate.php

@@ -0,0 +1,38 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseCate extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseCate')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseCate')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $ret = model('HouseCate')->lists($page,$size,$title);
+        HelpHander::success($ret);
+    }
+
+    // 全部列表
+    public function all(){
+        $ret = model('HouseCate')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+}

+ 34 - 0
application/api/controller/v1/HouseCommunity.php

@@ -0,0 +1,34 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseCommunity extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseCommunity')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseCommunity')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $districtId = input('districtId/d',0);
+        $type = input('type/d',1);
+        $ret = model('HouseCommunity')->lists($page,$size,$title,$districtId,$type);
+        HelpHander::success($ret);
+    }
+}

+ 38 - 0
application/api/controller/v1/HouseCompany.php

@@ -0,0 +1,38 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseCompany extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseCompany')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseCompany')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $ret = model('HouseCompany')->lists($page,$size,$title);
+        HelpHander::success($ret);
+    }
+
+    // 全部列表
+    public function all(){
+        $ret = model('HouseCompany')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+}

+ 77 - 0
application/api/controller/v1/HouseContract.php

@@ -0,0 +1,77 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseContract extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseContract')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseContract')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $intro = input('intro','','trim');
+        $sn = input('sn','','trim');
+        $lessee = input('lessee','','trim');
+        $status = input('status','','trim');
+        $ret = model('HouseContract')->lists($page,$size,$intro,$sn,$lessee,$status,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    //未完善合同列表
+    public function list2(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $intro = input('intro','','trim');
+        $sn = input('sn','','trim');
+        $status = input('status','','trim');
+        $ret = model('HouseContract')->lists2($page,$size,$intro,$sn,$status,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    //详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('HouseContract')->info($id);
+        HelpHander::success($ret);
+    }
+
+    //承租房屋列表
+    public function house(){
+        $id = input('id/d',0);
+        $ret = model('HouseContract')->house($id);
+        HelpHander::success($ret);
+    }
+
+    // 终止合同
+    public function stop(){
+        $id = input('id/d',0);
+        model('HouseContract')->stop($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    //列表
+    public function listByHouse(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $houseId = input('houseId/d','','trim');
+        $ret = model('HouseContract')->listByHouse($page,$size,$houseId,$this->userId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+}

+ 33 - 0
application/api/controller/v1/HouseContractDefault.php

@@ -0,0 +1,33 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseContractDefault extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseContractDefault')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseContractDefault')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $intro = input('intro','','trim');
+        $contractId = input('contractId/d',0);
+        $ret = model('HouseContractDefault')->lists($page,$size,$intro,$contractId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+}

+ 58 - 0
application/api/controller/v1/HouseContractPay.php

@@ -0,0 +1,58 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseContractPay extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseContractPay')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseContractPay')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 改变发票状态
+    public function invoice(){
+        $id = input('id/d',0);
+        $invoice = 1;
+        model('HouseContractPay')->changeInvoice($id,$invoice,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $intro = input('intro','','trim');
+        $sn = input('sn','','trim');
+        $contractId = input('contractId/d',0);
+        $ret = model('HouseContractPay')->lists($page,$size,$intro,$contractId,$sn,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    public function jfee(){
+        $id = input('id/d',0);
+        $ret = model('HouseContractPay')->jfee($id);
+        HelpHander::success($ret);
+    }
+
+    public function jfees(){
+        $ids = input('ids','','trim');
+        if(!$ids){
+            HelpHander::error('参数错误');
+        }
+        $ret = model('HouseContractPay')->jfees($ids);
+        HelpHander::success($ret);
+    }
+
+}

+ 47 - 0
application/api/controller/v1/HouseDistrict.php

@@ -0,0 +1,47 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseDistrict extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseDistrict')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseDistrict')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $type = input('type/d',1);
+        $ret = model('HouseDistrict')->lists($page,$size,$title,$this->orgId,$type);
+        HelpHander::success($ret);
+    }
+
+    // 全部列表
+    public function all(){
+        $type = input('type/d',1);
+        $ret = model('HouseDistrict')->all($this->orgId,$type);
+        HelpHander::success($ret);
+    }
+
+    public function listAndChild(){
+        $type = input('type/d',1);
+        $cate = input('cate/d',2);
+        $ret = model('HouseDistrict')->listAndChild($this->orgId,$type,$cate);
+        HelpHander::success($ret);
+    }
+}

+ 32 - 0
application/api/controller/v1/HouseFloor.php

@@ -0,0 +1,32 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseFloor extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseFloor')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseFloor')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $ret = model('HouseFloor')->lists($page,$size,$title,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+}

+ 60 - 0
application/api/controller/v1/HouseFloorInfo.php

@@ -0,0 +1,60 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseFloorInfo extends Base
+{
+    public function floorInfo(){
+        $bulidingInfo=Db::table('house_building')
+                ->field('id,title,type')
+                ->where('org_id',$this->orgId)
+                ->select();
+            if($bulidingInfo){
+                foreach ($bulidingInfo as $k=>$val){
+                    if($val['type']==2){
+                        $trunInfo=Db::table('house_turn')
+                            ->where([
+                                'enable'=>1,
+                                'del'=>0,'status'=>0,
+                                'building_id'=>$val['id'],
+                                'org_id'=>$this->orgId
+                            ])
+                            ->select();
+                        $authInfo=Db::table('house_auth')
+                            ->field('type,ids')
+                            ->where([
+                                'type'=>$val['type'],
+                                'user_id'=>$this->userId,
+                                'org_id'=>$this->orgId
+                            ])
+                            ->find();
+                        $arrayIds=explode(',',$authInfo['ids']);
+                        foreach ($trunInfo as $v){
+                            if(in_array($v['level_id'],$arrayIds)){
+                                $ret=Db::table('house_turn')
+                                    ->where([
+                                        'enable'=>1,
+                                        'del'=>0,
+                                        'status'=>0,
+                                        'building_id'=>$val['id'],
+                                        'org_id'=>$this->orgId
+                                    ])
+                                    ->select();
+                            }else{
+                                $ret= [];
+                            }
+                        }
+                    }
+                }
+            }else{
+                $ret=[];
+            }
+
+                 HelpHander::success($ret);
+
+        }
+
+}

+ 52 - 0
application/api/controller/v1/HouseLabel.php

@@ -0,0 +1,52 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseLabel extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseLabel')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('HouseLabel')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('HouseLabel')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $ret = model('HouseLabel')->lists($page,$size,$title,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 全部列表
+    public function all(){
+        $ret = model('HouseLabel')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseLabel')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 41 - 0
application/api/controller/v1/HouseLessee.php

@@ -0,0 +1,41 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseLessee extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseLessee')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseLessee')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $type = input('type/d',1);
+        $ret = model('HouseLessee')->lists($page,$size,$title,$type,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    //全部列表
+    public function all(){
+        $type = input('type/d',1);
+        $ret = model('HouseLessee')->all($type,$this->orgId);
+        HelpHander::success($ret);
+    }
+}

+ 38 - 0
application/api/controller/v1/HouseLesseeProp.php

@@ -0,0 +1,38 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseLesseeProp extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseLesseeProp')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseLesseeProp')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $ret = model('HouseLesseeProp')->lists($page,$size,$title);
+        HelpHander::success($ret);
+    }
+
+    // 全部列表
+    public function all(){
+        $ret = model('HouseLesseeProp')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+}

+ 40 - 0
application/api/controller/v1/HouseLevel.php

@@ -0,0 +1,40 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseLevel extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseLevel')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseLevel')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $type = input('type/d',1);
+        $ret = model('HouseLevel')->lists($page,$size,$title,$type,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    //列表
+    public function all(){
+        $type = input('type/d',1);
+        $ret = model('HouseLevel')->all($type,$this->orgId);
+        HelpHander::success($ret);
+    }
+}

+ 32 - 0
application/api/controller/v1/HouseMark.php

@@ -0,0 +1,32 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseMark extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseMark')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseMark')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $houseId = input('houseId/d',0);
+        $ret = model('HouseMark')->lists($page,$size,$houseId,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+}

+ 34 - 0
application/api/controller/v1/HouseRepair.php

@@ -0,0 +1,34 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseRepair extends Base
+{
+
+    // 新增/编辑
+    public function save(){
+        model('HouseRepair')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseRepair')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $reason = input('reason','','trim');
+        $houseId = input('houseId/d',0);
+        $ret = model('HouseRepair')->lists($page,$size,$houseId,$reason,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+}

+ 37 - 0
application/api/controller/v1/HouseRight.php

@@ -0,0 +1,37 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseRight extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseRight')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 全部列表
+    public function all(){
+        $ret = model('HouseRight')->all($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseRight')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $ret = model('HouseRight')->lists($page,$size,$title);
+        HelpHander::success($ret);
+    }
+}

+ 37 - 0
application/api/controller/v1/HouseSelect.php

@@ -0,0 +1,37 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseSelect extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseSelect')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseSelect')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $type = input('type/d',0);
+        $ret = model('HouseSelect')->lists($page,$size,$title,$type,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    public function all(){
+        $ret = model('HouseSelect')->all($this->orgId);
+        HelpHander::success($ret,'操作成功');
+    }
+}

+ 95 - 0
application/api/controller/v1/HouseTurn.php

@@ -0,0 +1,95 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class HouseTurn extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseTurn')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('HouseTurn')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('HouseTurn')->info($id);
+        HelpHander::success($ret);
+    }
+
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $status = input('status/d',-1);
+        $enable = input('enable/d',-1);
+        $lessee = input('lessee','','trim');
+        $vacancy = input('vacancy/d',0);
+        $ret = model('HouseTurn')->lists($page,$size,$title,$status,$enable,$lessee,$this->userId,$this->orgId,0,$vacancy);
+        HelpHander::success($ret);
+    }
+
+    //导出列表
+    public function export(){
+        $title = input('title','','trim');
+        $status = input('status/d',-1);
+        $enable = input('enable/d',-1);
+        $lessee = input('lessee','','trim');
+        $vacancy = input('vacancy/d',0);
+        $ret = model('HouseTurn')->export($title,$status,$enable,$lessee,$this->userId,$this->orgId,$vacancy);
+        HelpHander::success($ret);
+    }
+
+    public function uhlist(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $title = input('title','','trim');
+        $status = input('status/d',-1);
+        $lessee = input('lessee','','trim');
+        $startTime = input('startTime','','trim');
+        $endTime = input('endTime','','trim');
+        $ret = model('HouseTurn')->uhlists($page,$size,$title,$status,$lessee,$this->userId,$this->orgId,$startTime,$endTime);
+        HelpHander::success($ret);
+    }
+
+    public function changeStatus(){
+        $id = input('id/d',0);
+        $sImg = input('sImg','','trim');
+        $sRemark = input('sRemark','','trim');
+        if($id <= 0){
+            HelpHander::error('参数错误');
+        }
+        if(!$sImg){
+            HelpHander::error('未上传说明文件');
+        }
+        $ret = model('HouseTurn')->changeStatus($id,$sImg,$sRemark);
+        HelpHander::success($ret);
+    }
+
+    public function changeType(){
+        $id = input('id/d',0);
+        $type = input('type/d',0);
+        if($id <= 0){
+            HelpHander::error('参数错误');
+        }
+
+        $ret = Db::name('house_turn')->where('id',$id)->update(['type' => $type]);
+        halt($ret);exit();
+        if(!$ret){
+            HelpHander::error('操作失败');
+        }
+        HelpHander::success($ret);
+    }
+}

+ 144 - 0
application/api/controller/v1/HouseTurnLessee.php

@@ -0,0 +1,144 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+use think\Exception;
+
+class HouseTurnLessee extends Base
+{
+
+    // 新增
+    public function save(){
+        model('HouseTurnLessee')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    public function updates(){
+        model('HouseTurnLessee')->edit();
+        HelpHander::success([],'操作成功');
+    }
+
+    public function del(){
+        model('HouseTurnLessee')->del();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('HouseTurnLessee')->info($id);
+        HelpHander::success($ret);
+    }
+
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $id = input('id/d',0);
+        $title = input('title','','trim');
+        $ret = model('HouseTurnLessee')->lists($page,$size,$title,$id,$this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 导入入住数据
+    public function import(){
+        $path = input('path','','trim');
+        if(!$path){
+            HelpHander::error('未上传文件');
+        }
+        $path = json_decode($path,true);
+        $file = str_ireplace(request()->domain(),'.',$path[0]['url']) ;
+        $filearr = explode('.',$file);
+        $ext = strtolower($filearr[count($filearr) - 1]);
+        $type = $ext == 'xlsx'?'Xlsx':'Xls';
+        $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($type); //Xls,Xlsx
+        $reader->setReadDataOnly(TRUE);
+        $spreadsheet = $reader->load($file); //载入excel表格
+
+        $worksheet = $spreadsheet->getActiveSheet();
+        $highestRow = $worksheet->getHighestRow(); // 总行数
+        $highestColumn = $worksheet->getHighestColumn(); // 总列数
+        $highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn); // e.g. 5
+
+        $lines = $highestRow - 1;
+        if ($lines <= 0) {
+            HelpHander::error('Excel表格中没有数据');
+        }
+
+        $marrs = [];
+        for ($row = 2; $row <= $highestRow; ++$row) {
+            $data = [
+                'title' => $worksheet->getCellByColumnAndRow(1, $row)->getValue(),
+                'name' => $worksheet->getCellByColumnAndRow(2, $row)->getValue(),
+                'code' => $worksheet->getCellByColumnAndRow(3, $row)->getValue(),
+                'start' => $worksheet->getCellByColumnAndRow(4, $row)->getValue(),
+            ];
+
+            $ret = $this->createLessee($row,$data);
+            if($ret !== true){
+                $marrs[] = $ret;
+            }
+        }
+        HelpHander::success($marrs,'导入成功');
+    }
+
+    private function createLessee($row,$data){
+        if(!$data['title'] || !$data['name'] || !$data['code'] || !$data['start']){
+            return '第'.$row.'行,数据存在为空的值';
+        }
+        // 获取房间并检查是否已入住
+        $turn = Db::name('house_turn_list')
+            ->where('org_id',$this->orgId)
+            ->where('title','like','%'.$data['title'].'%')
+            ->find();
+        if(!$turn){
+            return '第'.$row.'行,数据未找到相对应的房间';
+        }
+        if($turn['cur_lessee_id'] > 0){
+            return '第'.$row.'行,找到相对应房间已有入住人';
+        }
+        // 获取入住人信息并保存入住
+        $lessee = Db::name('house_lessee')
+            ->where('org_id',$this->orgId)
+            ->where('type',2)
+            ->where('del',0)
+            ->where('code',$data['code'])
+            ->find();
+        if(!$lessee){
+            return '第'.$row.'行,未找到相对应的入住人';
+        }
+
+        Db::startTrans();
+        try{
+            $ret = Db::name('house_turn')->where('id',$turn['id'])->update([
+                'cur_lessee_id' => $lessee['id'],
+                'update_time' => date('Y-m-d H:i:s')
+            ]);
+            if(!$ret){
+                \exception('保存失败');
+            }
+
+            $sdata = [
+                'house_turn_id' => $turn['id'],
+                'lessee_id' => $lessee['id'],
+                'start_time' => date('Y-m-d',strtotime($data['start'])),
+                'create_time' => date('Y-m-d H:i:s'),
+                'org_id' => $this->orgId,
+                'status' => 0
+            ];
+            $res = Db::name('house_turn_lessee')->insert($sdata);
+            if(!$res){
+                \exception('保存失败');
+            }
+
+            Db::commit();
+        }catch (Exception $e){
+            Db::rollback();
+            return '第'.$row.'行,数据保存失败';
+        }
+        return true;
+    }
+
+}

+ 45 - 0
application/api/controller/v1/Icons.php

@@ -0,0 +1,45 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class Icons extends Base
+{
+
+    // 新增
+    public function save(){
+        model('Icons')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('Icons')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('Icons')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $ret = model('Icons')->lists($page,$size);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('Icons')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 49 - 0
application/api/controller/v1/Important.php

@@ -0,0 +1,49 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class Important extends Base
+{
+
+    // 新增/编辑
+    public function save(){
+        model('Important')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('Important')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $ret = model('Important')->lists($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 导出
+    public function listExport(){
+        $ret = model('Important')->listExport($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('Important')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 办结
+    public function finish(){
+        $id = input('id/d',0);
+        model('Important')->finish($id);
+        HelpHander::success([],'操作成功');
+    }
+
+}

+ 102 - 0
application/api/controller/v1/ImportantRecord.php

@@ -0,0 +1,102 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class ImportantRecord extends Base
+{
+
+    // 新增/编辑
+    public function save(){
+        model('ImportantRecord')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('ImportantRecord')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $ret = model('ImportantRecord')->lists($this->orgId,$this->userId);
+        HelpHander::success($ret);
+    }
+
+    // 获取下级节点
+    public function getNextList(){
+        $pid = input('pid/d',0);
+        $importantId = input('importantId/d',0);
+        $ret = model('ImportantRecord')->getNextList($importantId,$pid);
+        HelpHander::success($ret);
+    }
+    // 获取所有下级
+    public function getNextAll(){
+        $pid = input('pid/d',0);
+        $importantId = input('importantId/d',0);
+        $ret = model('ImportantRecord')->getNextAll($importantId,$pid);
+        HelpHander::success($ret);
+    }
+
+    // 办结
+    public function finish(){
+        model('ImportantRecord')->finish();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 撤销
+    public function backout(){
+        $id = input('id/d',0);
+        model('ImportantRecord')->backout($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 同意/拒绝办结
+    public function deal(){
+        $id = input('id/d',0);
+        $type = input('type/d',1);
+        model('ImportantRecord')->deal($id,$type,$this->userId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 接受/退回
+    public function confirm(){
+        $id = input('id/d',0);
+        $status = input('status/d',1);
+        if(!in_array($status,[1,3])){
+            HelpHander::error('参数错误');
+        }
+        model('ImportantRecord')->confirm($id,$status);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 操作成功
+    public function tranfer(){
+        $id = input('id/d',0);
+        $toUserId = input('toUserId/d',0);
+        if($toUserId <= 0){
+            HelpHander::error('未选择转交人员');
+        }
+        if($toUserId == $this->userId){
+            HelpHander::error('不能转交给自己');
+        }
+        model('ImportantRecord')->tranfer($id,$this->userId,$toUserId);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 修改进度
+    public function progress(){
+        $id = input('id/d',0);
+        $progress = input('progress/d',0);
+        model('ImportantRecord')->progress($id,$progress);
+        HelpHander::success([],'操作成功');
+    }
+
+    public function unapply(){
+        $ret = model('ImportantRecord')->unapply($this->userId);
+        HelpHander::success($ret);
+    }
+}

+ 38 - 0
application/api/controller/v1/ImportantRecordAnnotation.php

@@ -0,0 +1,38 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+
+class ImportantRecordAnnotation extends Base
+{
+
+    // 新增/编辑
+    public function save(){
+        model('ImportantRecordAnnotation')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('ImportantRecordAnnotation')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $id = input('id/d',0); // 节点记录id
+        $ret = model('ImportantRecord')->lists($id);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('ImportantRecord')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+
+}

+ 79 - 0
application/api/controller/v1/Job.php

@@ -0,0 +1,79 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class Job extends Base
+{
+
+    // 新增
+    public function save(){
+        model('Job')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 编辑
+    public function update(){
+        model('Job')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('Job')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $ret = model('Job')->lists($page,$size);
+        HelpHander::success($ret);
+    }
+
+    // 修改状态
+    public function changeStatus(){
+        $id = input('id/d',0);
+        $enable = input('enable/d',0);
+        model('Job')->changeStatus($id,$enable);
+        HelpHander::success([],'操作成功');
+    }
+
+    // 部门下的岗位
+    public function queryJobByDep(){
+        $depId = input('depId/d',0);
+        $ret = model('Job')->queryJobByDep($depId);
+        HelpHander::success($ret);
+    }
+
+    // 组织下的岗位
+    public function queryJobByOrg(){
+        $ret = model('Job')->queryJobByOrg($this->orgId);
+        HelpHander::success($ret);
+    }
+
+    //查询当前岗位下未分配的人员
+    public function screenUserByJob(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $jobId = input('jobId/d',1);
+        $param = input('param','','trim'); // 姓名/工号
+        $ret = model('Job')->screenUserByJob($page,$size,$jobId,$param);
+        HelpHander::success($ret);
+    }
+
+    //查询当前岗位分配的人员
+    public function queryUserByJob(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $jobId = input('jobId/d',1);
+        $param = input('param','','trim'); // 姓名/工号
+        $ret = model('Job')->queryUserByJob($page,$size,$jobId,$param);
+        HelpHander::success($ret);
+    }
+
+}

+ 45 - 0
application/api/controller/v1/LeaderShip.php

@@ -0,0 +1,45 @@
+<?php
+namespace app\api\controller\v1;
+
+use app\api\controller\Base;
+use app\hander\HelpHander;
+use think\Db;
+
+class LeaderShip extends Base
+{
+
+    // 新增/编辑
+    public function save(){
+        model('LeaderShip')->add();
+        HelpHander::success([],'操作成功');
+    }
+
+    // 详情
+    public function detail(){
+        $id = input('id/d',0);
+        $ret = model('LeaderShip')->info($id);
+        HelpHander::success($ret);
+    }
+
+    // 删除
+    public function del(){
+        $id = input('id/d',0);
+        model('LeaderShip')->del($id);
+        HelpHander::success([],'操作成功');
+    }
+
+    //列表
+    public function list(){
+        $page = input('page/d',1);
+        $size = input('size/d',10);
+        $content= input('content','','trim');
+        $ret = model('LeaderShip')->lists($page,$size,$content,$this->userId);
+        HelpHander::success($ret);
+    }
+
+    public function all(){
+        $ret = model('LeaderShip')->all();
+        HelpHander::success($ret);
+    }
+
+}

+ 0 - 0
application/api/controller/v1/LeaveBj.php


この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません