OOContactsInfoDB.swift 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. //
  2. // OOContantsInfoDB.swift
  3. // O2Platform
  4. //
  5. // Created by 刘振兴 on 2018/5/10.
  6. // Copyright © 2018年 zoneland. All rights reserved.
  7. //
  8. import UIKit
  9. import FMDB
  10. final class OOContactsInfoDB: NSObject {
  11. static let shareInstance = OOContactsInfoDB()
  12. var queue:FMDatabaseQueue?
  13. private func _createDB() {
  14. var path = "\(NSHomeDirectory())/Documents/O2"
  15. if createPath(path) {
  16. path = path + "/OOAppsInfo.db"
  17. O2Logger.debug("OOAppsInfoDBWithPath:\(path)")
  18. queue = FMDatabaseQueue(path: path)
  19. let sql = "create table IF NOT EXISTS `OOContactPrivates` ( `id` TEXT NOT NULL, `distinguishedName` TEXT NOT NULL, `employee` TEXT, `genderType` TEXT, `lastLoginAddress` TEXT, `lastLoginClient` TEXT, `lastLoginTime` TEXT, `mail` TEXT, `mobile` TEXT, `name` TEXT, `changePasswordTime` TEXT, `superior` TEXT, `signature` TEXT, `pinyin` TEXT, `pinyinInitial` TEXT, `qq` TEXT, `unique` TEXT, `updateTime` TEXT, `weixin` TEXT, `officePhone` TEXT, `boardDate` TEXT, `birthday` TEXT, `orderNumber` INTEGER , `ownerid` TEXT NOT NULL)"
  20. queue?.inDatabase({ (db) in
  21. db?.executeUpdate(sql, withArgumentsIn: nil)
  22. })
  23. }
  24. }
  25. func dropTable() {
  26. if queue == nil {
  27. _createDB()
  28. dropTable()
  29. }
  30. let sql = "DROP TABLE IF EXISTS `OOContactPrivates`"
  31. queue?.inDatabase({ (db) in
  32. db?.executeUpdate(sql, withArgumentsIn: nil)
  33. })
  34. }
  35. func insertData(_ person:PersonV2,_ ownerid:String) {
  36. if queue == nil {
  37. _createDB()
  38. insertData(person,ownerid)
  39. }
  40. let sSql = "select count(*) from `OOContactPrivates` where `id` = \(String(describing: person.id!)) and `ownerid` = '\(ownerid)'"
  41. let sql = "insert into `OOContactPrivates`(`id`,`distinguishedName`,`employee`,`genderType`,`lastLoginAddress`,`lastLoginClient`,`lastLoginTime`,`mail`,`mobile`,`name`,`changePasswordTime`,`superior`,`signature`,`pinyin`,`pinyinInitial`,`qq`,`unique`,`updateTime`,`weixin`,`officePhone`,`boardDate`,`birthday`,`orderNumber`,`ownerid`) values ('\(String(describing: person.id!))','\(String(describing: person.distinguishedName!))','\(String(describing: person.employee ?? ""))','\(String(describing: person.genderType ?? ""))','\(String(describing: person.lastLoginAddress ?? ""))','\(String(describing: person.lastLoginClient ?? ""))','\(String(describing: person.lastLoginTime ?? ""))','\(String(describing: person.mail ?? ""))','\(String(describing: person.mobile ?? ""))','\(String(describing: person.name ?? ""))','\(String(describing: person.changePasswordTime ?? ""))','\(String(describing: person.superior ?? ""))','\(String(describing: person.signature ?? ""))','\(String(describing: person.pinyin ?? ""))','\(String(describing: person.pinyinInitial ?? ""))','\(String(describing: person.qq ?? ""))','\(String(describing: person.unique ?? ""))','\(String(describing: person.updateTime ?? ""))','\(String(describing: person.weixin ?? ""))','\(String(describing: person.officePhone ?? ""))','\(String(describing: person.boardDate ?? ""))','\(String(describing: person.birthday ?? ""))',\(String(describing: person.orderNumber ?? 0)),'\(ownerid)')"
  42. var isUpdate = false
  43. queue?.inDatabase({ (db) in
  44. let resultSet = db?.executeQuery(sSql, withArgumentsIn: nil)
  45. if let _ = (resultSet?.next()) {
  46. isUpdate = true
  47. }else{
  48. db?.executeUpdate(sql, withArgumentsIn: nil)
  49. }
  50. })
  51. if isUpdate == true {
  52. updateData(person,ownerid)
  53. }
  54. }
  55. func updateData(_ person:PersonV2,_ ownerid:String){
  56. }
  57. func isCollect(_ person:PersonV2,_ ownerid:String) -> Bool{
  58. if queue == nil {
  59. _createDB()
  60. return isCollect(person, ownerid)
  61. }
  62. var returnValue = false
  63. let sql = "SELECT COUNT(*) FROM `OOContactPrivates` WHERE `id` = '\(String(describing: person.id!))' AND `ownerid` = '\(ownerid)' "
  64. queue?.inDatabase({ (db) in
  65. let resultSet = db?.executeQuery(sql, withArgumentsIn: nil)
  66. if let _ = (resultSet?.next()) {
  67. returnValue = true
  68. }else{
  69. returnValue = false
  70. }
  71. })
  72. return returnValue
  73. }
  74. func deleteData(_ person:PersonV2,_ ownerid:String){
  75. if queue == nil {
  76. _createDB()
  77. deleteData(person,ownerid)
  78. }
  79. let sql = "delete from `OOContactPrivates` where `id` = '\(String(describing: person.id!))' and `ownerid` = '\(ownerid)'"
  80. queue?.inDatabase({ (db) in
  81. db?.executeUpdate(sql, withArgumentsIn: nil)
  82. })
  83. }
  84. func queryData(_ ownerid:String) -> [PersonV2] {
  85. if queue == nil {
  86. _createDB()
  87. let _ = queryData(ownerid)
  88. }
  89. var persons:[PersonV2] = []
  90. let sql = "SELECT * FROM `OOContactPrivates` WHERE `ownerid` = '\(ownerid)'"
  91. queue?.inDatabase({ (db) in
  92. let resultSet = db?.executeQuery(sql, withArgumentsIn: nil)
  93. while (resultSet?.next())! {
  94. let p = PersonV2()
  95. p.id = resultSet?.string(forColumn: "id")
  96. p.name = resultSet?.string(forColumn: "name")
  97. p.changePasswordTime = resultSet?.string(forColumn: "changePasswordTime")
  98. p.distinguishedName = resultSet?.string(forColumn: "distinguishedName")
  99. p.employee = resultSet?.string(forColumn: "employee")
  100. p.genderType = resultSet?.string(forColumn: "genderType")
  101. p.lastLoginAddress = resultSet?.string(forColumn: "lastLoginAddress")
  102. p.lastLoginClient = resultSet?.string(forColumn: "lastLoginClient")
  103. p.lastLoginTime = resultSet?.string(forColumn: "lastLoginTime")
  104. p.mail = resultSet?.string(forColumn: "mail")
  105. p.mobile = resultSet?.string(forColumn: "mobile")
  106. p.orderNumber = Int(resultSet?.int(forColumn: "orderNumber") ?? 0)
  107. p.superior = resultSet?.string(forColumn: "superior")
  108. p.signature = resultSet?.string(forColumn: "pinyin")
  109. p.pinyin = resultSet?.string(forColumn: "id")
  110. p.pinyinInitial = resultSet?.string(forColumn: "pinyinInitial")
  111. p.qq = resultSet?.string(forColumn: "qq")
  112. p.unique = resultSet?.string(forColumn: "unique")
  113. p.updateTime = resultSet?.string(forColumn: "updateTime")
  114. p.officePhone = resultSet?.string(forColumn: "officePhone")
  115. p.boardDate = resultSet?.string(forColumn: "boardDate")
  116. p.birthday = resultSet?.string(forColumn: "birthday")
  117. p.ownerid = resultSet?.string(forColumn: "ownerid")
  118. persons.append(p)
  119. }
  120. })
  121. return persons
  122. }
  123. // MARK: - private func
  124. private func createPath(_ path: String) -> Bool {
  125. var isDir: ObjCBool = ObjCBool(false)
  126. if FileManager.default.fileExists(atPath: path, isDirectory: &isDir) && isDir.boolValue {
  127. return true
  128. } else {
  129. try! FileManager.default.createDirectory(atPath: path, withIntermediateDirectories: true, attributes: nil)
  130. return true
  131. }
  132. }
  133. }