license_info_models.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485
  1. package models
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "log"
  6. "time"
  7. "xugu_license/internal/global"
  8. )
  9. type OALicenseInfo struct {
  10. LicInfo TargetOALicenseInfo
  11. GenrateInfo LicenseGenerateInfo
  12. }
  13. type TargetOALicenseInfo struct {
  14. ID sql.NullInt32 `json:"id"` // 自增主键,从1开始,每次递增1
  15. OAId sql.NullInt64 `json:"OA_Id"`
  16. UniqueID sql.NullString `json:"unique_id"` // 每行数据的唯一值ID,理论上有oa的REQUESTID就可以了
  17. OARequestID sql.NullInt64 `json:"oa_request_id"` // oa里的申请单请求ID,假设唯一标识
  18. OARequestName sql.NullString `json:"oa_request_name"` // 请求名称
  19. OARequestNameNew sql.NullString `json:"oa_request_name_new"` // 新请求名称
  20. OARequestNameHTMLNew sql.NullString `json:"oa_request_name_html_new"` // 新请求名称(HTML格式)
  21. OAGLXMID sql.NullInt64 `json:"oa_glxm_id"` // 关联项目ID
  22. OAGLXMName sql.NullString `json:"oa_glxm_name"` // 关联项目
  23. OASQSJ sql.NullString `json:"oa_sqsj"` // 申请时间
  24. OASalespersonName sql.NullString `json:"oa_salesperson_name"` // 销售人员名称
  25. OAXSJSYX sql.NullString `json:"oa_xsjsyx"` // 销售邮箱
  26. OAOperationsPersonName sql.NullString `json:"oa_operations_person_name"` // 运维人员名称
  27. OAJFJSYX sql.NullString `json:"oa_jfjsyx"` // 运维邮箱
  28. OASYDW sql.NullString `json:"oa_sydw"` // 使用单位
  29. OAXMXXMS sql.NullString `json:"oa_xmxxms"` // 项目详细描述
  30. OAJDS sql.NullInt64 `json:"oa_jds"` // 节点数
  31. OANodeCount sql.NullInt64 `json:"oa_node_count"` // 总节点数
  32. OAProductCode sql.NullString `json:"oa_product_code"` // 产品编号
  33. OAProductName sql.NullString `json:"oa_product_name"` // 产品名称
  34. OAProductVersion sql.NullString `json:"oa_product_version"` // 产品版本
  35. OACPU sql.NullString `json:"oa_cpu"` // CPU 信息
  36. OAOperatingSystem sql.NullString `json:"oa_operating_system"` // 操作系统信息
  37. OAMainMAC sql.NullString `json:"oa_main_mac"` // 主 MAC 地址
  38. OASecondMAC sql.NullString `json:"oa_second_mac"` // 副 MAC 地址
  39. OACreationDate sql.NullString `json:"oa_creation_date"` // 创建日期
  40. OACreationTime sql.NullString `json:"oa_creation_time"` // 创建时间
  41. OALastOperateDate sql.NullString `json:"oa_last_operate_date"` // 最后操作日期
  42. OALastOperateTime sql.NullString `json:"oa_last_operate_time"` // 最后操作时间
  43. CaptureTime sql.NullTime `json:"capture_time"` // 抓取时间,用于记录数据抓取的时间
  44. DelTime sql.NullTime `json:"del_Time"` //该行的删除时间
  45. LastOperateTime sql.NullTime `json:"LAST_OPERATE_TIME"` // 该表的行最后操作时间,非oa表中的最后操作时间'
  46. }
  47. type LicenseGenerateInfo struct {
  48. ID sql.NullInt32 `json:"id"` // 自增主键,从1开始,每次递增1
  49. OAId sql.NullInt32 `json:"OA_Id"`
  50. LicenseUniqueID sql.NullString `json:"license_unique_id"` // LicenseApplication表的唯一值ID
  51. LicenseFlage sql.NullString `json:"license_flage"` // License分发状态
  52. Lic1 sql.NullString `json:"lic1"` // 主License
  53. Lic2 sql.NullString `json:"lic2"` // 副License
  54. CreatorGenerate sql.NullTime `json:"creator_generate"` // 生成时间
  55. }
  56. // 获取多个或单个license信息,或者指定某个用户能查询到的所有license信息
  57. func GetOALicenseInfo(page int, pageSize int, permission string, licUniqueID string, userUniqueID string, OA_REQUESTID string) (*[]OALicenseInfo, int, error) {
  58. //offset := (page - 1) * pageSize
  59. // 查询总记录数
  60. // var total int
  61. // err := global.XuguDB.QueryRow(`SELECT COUNT(*) FROM target_OA_license WHERE del_Time IS NULL`).Scan(&total)
  62. // if err != nil {
  63. // return nil, 0, fmt.Errorf("GetOALicenseInfocount query error: %v", err)
  64. // }
  65. switch {
  66. // 根据LicUniqueID查询指定页的数据
  67. case licUniqueID != "":
  68. data, err := getSingleLicInfoByUniqueID(licUniqueID)
  69. if err != nil {
  70. return nil, 0, fmt.Errorf("getOAlicInfoToUniqueID query error: %v", err)
  71. }
  72. return &[]OALicenseInfo{*data}, 1, nil
  73. // 根据userUniqueID查询指定页的数据 未完成
  74. case userUniqueID != "":
  75. data, err := getLicInfoByUserUniqueID(userUniqueID, pageSize, page)
  76. if err != nil {
  77. return nil, 0, fmt.Errorf("getOAlicInfoToUniqueID query error: %v", err)
  78. }
  79. return data, 1, nil
  80. //case permission == "read_license":
  81. //读取所有的lic信息
  82. case permission == "read_all_license":
  83. data, total, err := getAllLicInfo(pageSize, page)
  84. if err != nil {
  85. return nil, 0, fmt.Errorf("getOAlicInfoToUniqueID query error: %v", err)
  86. }
  87. return data, total, nil
  88. //读取所有
  89. case OA_REQUESTID != "":
  90. data, err := getLicInfoByOA_REQUESTID(OA_REQUESTID)
  91. if err != nil {
  92. return nil, 0, fmt.Errorf("getOAlicInfoToUniqueID query error: %v", err)
  93. }
  94. return data, len(*data), nil
  95. }
  96. return nil, 0, fmt.Errorf("getOAlicInfoToUniqueID 没有指定查询条件")
  97. }
  98. func getAllLicInfo(limit int, offset int) (*[]OALicenseInfo, int, error) {
  99. fmt.Println("getAllLicInfo", limit, offset)
  100. total := 0
  101. err := global.XuguDB.QueryRow(`
  102. SELECT COUNT(*) from (SELECT OA_REQUESTID AS RequestCount
  103. FROM TARGET_OA_LICENSE
  104. where Del_Time IS NULL
  105. GROUP BY OA_REQUESTID
  106. )
  107. HAVING COUNT(*) > 1;`).Scan(&total)
  108. if err != nil {
  109. return nil, 0, fmt.Errorf("count query error: %v", err)
  110. }
  111. sql := `
  112. SELECT *
  113. FROM SYSDBA.TARGET_OA_LICENSE tl
  114. INNER JOIN
  115. License_generate_Info li
  116. ON
  117. tl.Unique_ID = li.License_UniqueID
  118. WHERE OA_REQUESTID IN(
  119. SELECT OA_REQUESTID FROM (
  120. SELECT OA_REQUESTID ,rownum AS a FROM (SELECT DISTINCT OA_REQUESTID FROM TARGET_OA_LICENSE) a) s
  121. WHERE a BETWEEN ? AND ?)
  122. AND tl.del_Time IS NULL
  123. `
  124. rows, err := global.XuguDB.Query(sql, limit, offset)
  125. if err != nil {
  126. global.Logger.Errorln(" getAllLicInfo rows not found ", err.Error())
  127. return nil, 0, fmt.Errorf("getAllLicInfo query error: %v", err)
  128. }
  129. defer rows.Close()
  130. var results []OALicenseInfo
  131. for rows.Next() {
  132. var info OALicenseInfo
  133. err := rows.Scan(
  134. &info.LicInfo.ID, &info.LicInfo.UniqueID, &info.LicInfo.OAId, &info.LicInfo.OARequestID,
  135. &info.LicInfo.OARequestName, &info.LicInfo.OARequestNameNew, &info.LicInfo.OARequestNameHTMLNew,
  136. &info.LicInfo.OAGLXMID, &info.LicInfo.OAGLXMName,
  137. &info.LicInfo.OASQSJ, &info.LicInfo.OASalespersonName, &info.LicInfo.OAXSJSYX,
  138. &info.LicInfo.OAOperationsPersonName, &info.LicInfo.OAJFJSYX, &info.LicInfo.OASYDW,
  139. &info.LicInfo.OAXMXXMS, &info.LicInfo.OAJDS, &info.LicInfo.OANodeCount,
  140. &info.LicInfo.OAProductCode, &info.LicInfo.OAProductName, &info.LicInfo.OAProductVersion,
  141. &info.LicInfo.OACPU, &info.LicInfo.OAOperatingSystem, &info.LicInfo.OAMainMAC,
  142. &info.LicInfo.OASecondMAC, &info.LicInfo.OACreationDate, &info.LicInfo.OACreationTime,
  143. &info.LicInfo.OALastOperateDate, &info.LicInfo.OALastOperateTime, &info.LicInfo.CaptureTime,
  144. &info.LicInfo.DelTime, &info.LicInfo.LastOperateTime,
  145. &info.GenrateInfo.ID, &info.GenrateInfo.OAId, &info.GenrateInfo.LicenseUniqueID, &info.GenrateInfo.LicenseFlage,
  146. &info.GenrateInfo.Lic1, &info.GenrateInfo.Lic2, &info.GenrateInfo.CreatorGenerate,
  147. )
  148. if err != nil {
  149. global.Logger.Errorln(" getAllLicInfo scan error: ", err.Error())
  150. return nil, 0, fmt.Errorf("getAllLicInfo scan error: %v", err)
  151. }
  152. results = append(results, info)
  153. }
  154. // 打印结果或进一步处理
  155. // for _, result := range results {
  156. // fmt.Println(result)
  157. // }
  158. return &results, total, nil
  159. }
  160. func getSingleLicInfoByUniqueID(unique_ID string) (*OALicenseInfo, error) {
  161. sql := `
  162. SELECT
  163. la.ID, la.Unique_ID, la.OA_ID, la.OA_REQUESTID, la.OA_REQUESTNAME, la.OA_REQUESTNAMENEW,
  164. la.OA_REQUESTNAMEHTMLNEW, la.OA_GLXMID ,la.OA_GLXMNAME ,la.OA_SQSJ, la.OA_SALESPERSONNAME, la.OA_XSJSYX,
  165. la.OA_OPERATIONSPERSONNAME, la.OA_JFJSYX, la.OA_SYDW, la.OA_XMXXMS, la.OA_JDS,
  166. la.OA_NODECOUNT, la.OA_PRODUCTCODE, la.OA_PRODUCTNAME, la.OA_PRODUCTVERSION,
  167. la.OA_CPU, la.OA_OPERATINGSYSTEM, la.OA_MAINMAC, la.OA_SECONDMAC, la.OA_CREATIONDATE,
  168. la.OA_CREATIONTIME, la.OA_LASTOPERATEDATE, la.OA_LASTOPERATETIME, la.capture_Time,
  169. la.del_Time, la.LAST_OPERATE_TIME,
  170. li.ID AS License_ID, li.OA_ID, li.License_UniqueID, li.License_Flage, li.lic1, li.lic2, li.Creator_generate
  171. FROM
  172. target_OA_license la
  173. INNER JOIN
  174. License_generate_Info li
  175. ON
  176. la.Unique_ID = li.License_UniqueID
  177. WHERE
  178. la.del_Time IS NULL
  179. AND
  180. la.Unique_ID = ?`
  181. rows, err := global.XuguDB.Query(sql, unique_ID)
  182. if err != nil {
  183. global.Logger.Errorln("getOAlicInfoToUniqueID 数据查询失败: ", err.Error())
  184. return nil, fmt.Errorf("getOAlicInfoToUniqueID 数据查询失败: %v", err)
  185. }
  186. defer rows.Close()
  187. var info OALicenseInfo
  188. rows.Next()
  189. err = rows.Scan(
  190. &info.LicInfo.ID, &info.LicInfo.UniqueID, &info.LicInfo.OAId, &info.LicInfo.OARequestID,
  191. &info.LicInfo.OARequestName, &info.LicInfo.OARequestNameNew, &info.LicInfo.OARequestNameHTMLNew,
  192. &info.LicInfo.OAGLXMID, &info.LicInfo.OAGLXMName,
  193. &info.LicInfo.OASQSJ, &info.LicInfo.OASalespersonName, &info.LicInfo.OAXSJSYX,
  194. &info.LicInfo.OAOperationsPersonName, &info.LicInfo.OAJFJSYX, &info.LicInfo.OASYDW,
  195. &info.LicInfo.OAXMXXMS, &info.LicInfo.OAJDS, &info.LicInfo.OANodeCount,
  196. &info.LicInfo.OAProductCode, &info.LicInfo.OAProductName, &info.LicInfo.OAProductVersion,
  197. &info.LicInfo.OACPU, &info.LicInfo.OAOperatingSystem, &info.LicInfo.OAMainMAC,
  198. &info.LicInfo.OASecondMAC, &info.LicInfo.OACreationDate, &info.LicInfo.OACreationTime,
  199. &info.LicInfo.OALastOperateDate, &info.LicInfo.OALastOperateTime, &info.LicInfo.CaptureTime,
  200. &info.LicInfo.DelTime, &info.LicInfo.LastOperateTime,
  201. &info.GenrateInfo.ID, &info.GenrateInfo.OAId, &info.GenrateInfo.LicenseUniqueID, &info.GenrateInfo.LicenseFlage,
  202. &info.GenrateInfo.Lic1, &info.GenrateInfo.Lic2, &info.GenrateInfo.CreatorGenerate,
  203. )
  204. if err != nil {
  205. log.Fatal(err)
  206. }
  207. return &info, nil
  208. }
  209. func getLicInfoByUserUniqueID(userUniqueID string, limit int, offset int) (*[]OALicenseInfo, error) {
  210. sql := `
  211. SELECT la.ID, la.Unique_ID, la.OA_REQUESTID, la.OA_REQUESTNAME, la.OA_REQUESTNAMENEW,
  212. la.OA_REQUESTNAMEHTMLNEW,
  213. la.OA_GLXMID ,la.OA_GLXMNAME,
  214. la.OA_SQSJ, la.OA_SALESPERSONNAME, la.OA_XSJSYX,
  215. la.OA_OPERATIONSPERSONNAME, la.OA_JFJSYX, la.OA_SYDW, la.OA_XMXXMS, la.OA_JDS,
  216. la.OA_NODECOUNT, la.OA_PRODUCTCODE, la.OA_PRODUCTNAME, la.OA_PRODUCTVERSION,
  217. la.OA_CPU, la.OA_OPERATINGSYSTEM, la.OA_MAINMAC, la.OA_SECONDMAC, la.OA_CREATIONDATE,
  218. la.OA_CREATIONTIME, la.OA_LASTOPERATEDATE, la.OA_LASTOPERATETIME, la.capture_Time,
  219. la.del_Time, la.LAST_OPERATE_TIME,
  220. li.ID AS License_ID, li.License_UniqueID, li.License_Flage, li.lic1, li.lic2, li.Creator_generate
  221. FROM SYSDBA.TARGET_OA_LICENSE la
  222. INNER JOIN
  223. License_generate_Info li
  224. ON
  225. la.Unique_ID = li.License_UniqueID
  226. INNER JOIN
  227. LICENSERECORDTOUSER LU
  228. ON
  229. la.UNIQUE_ID = lu.LICENSE_UNIQUEID
  230. AND lu.USER_UNIQUEID = ?
  231. WHERE OA_REQUESTID IN(
  232. SELECT OA_REQUESTID FROM (
  233. SELECT OA_REQUESTID ,rownum AS a FROM (SELECT DISTINCT OA_REQUESTID FROM LICENSERECORDTOUSER) a) s
  234. WHERE a BETWEEN ? AND ?)
  235. AND la.del_Time IS NULL
  236. `
  237. rows, err := global.XuguDB.Query(sql, userUniqueID, limit, offset)
  238. if err != nil {
  239. global.Logger.Errorln(" getAllLicInfo rows not found ", err.Error())
  240. return nil, fmt.Errorf("getAllLicInfo query error: %v", err)
  241. }
  242. defer rows.Close()
  243. var results []OALicenseInfo
  244. for rows.Next() {
  245. var info OALicenseInfo
  246. err := rows.Scan(
  247. &info.LicInfo.ID, &info.LicInfo.UniqueID, &info.LicInfo.OARequestID,
  248. &info.LicInfo.OARequestName, &info.LicInfo.OARequestNameNew, &info.LicInfo.OARequestNameHTMLNew,
  249. &info.LicInfo.OAGLXMID, &info.LicInfo.OAGLXMName,
  250. &info.LicInfo.OASQSJ, &info.LicInfo.OASalespersonName, &info.LicInfo.OAXSJSYX,
  251. &info.LicInfo.OAOperationsPersonName, &info.LicInfo.OAJFJSYX, &info.LicInfo.OASYDW,
  252. &info.LicInfo.OAXMXXMS, &info.LicInfo.OAJDS, &info.LicInfo.OANodeCount,
  253. &info.LicInfo.OAProductCode, &info.LicInfo.OAProductName, &info.LicInfo.OAProductVersion,
  254. &info.LicInfo.OACPU, &info.LicInfo.OAOperatingSystem, &info.LicInfo.OAMainMAC,
  255. &info.LicInfo.OASecondMAC, &info.LicInfo.OACreationDate, &info.LicInfo.OACreationTime,
  256. &info.LicInfo.OALastOperateDate, &info.LicInfo.OALastOperateTime, &info.LicInfo.CaptureTime,
  257. &info.LicInfo.DelTime, &info.LicInfo.LastOperateTime,
  258. &info.GenrateInfo.ID, &info.GenrateInfo.LicenseUniqueID, &info.GenrateInfo.LicenseFlage,
  259. &info.GenrateInfo.Lic1, &info.GenrateInfo.Lic2, &info.GenrateInfo.CreatorGenerate,
  260. )
  261. if err != nil {
  262. global.Logger.Errorln(" getAllLicInfo scan error: ", err.Error())
  263. return nil, fmt.Errorf("getAllLicInfo scan error: %v", err)
  264. }
  265. results = append(results, info)
  266. }
  267. // 打印结果或进一步处理
  268. for _, result := range results {
  269. fmt.Println(result)
  270. }
  271. return &results, nil
  272. }
  273. func getLicInfoByOA_REQUESTID(unique_ID string) (*[]OALicenseInfo, error) {
  274. sql := `
  275. SELECT
  276. la.ID, la.Unique_ID, la.OA_ID, la.OA_REQUESTID, la.OA_REQUESTNAME, la.OA_REQUESTNAMENEW,
  277. la.OA_REQUESTNAMEHTMLNEW, la.OA_GLXMID ,la.OA_GLXMNAME ,la.OA_SQSJ, la.OA_SALESPERSONNAME, la.OA_XSJSYX,
  278. la.OA_OPERATIONSPERSONNAME, la.OA_JFJSYX, la.OA_SYDW, la.OA_XMXXMS, la.OA_JDS,
  279. la.OA_NODECOUNT, la.OA_PRODUCTCODE, la.OA_PRODUCTNAME, la.OA_PRODUCTVERSION,
  280. la.OA_CPU, la.OA_OPERATINGSYSTEM, la.OA_MAINMAC, la.OA_SECONDMAC, la.OA_CREATIONDATE,
  281. la.OA_CREATIONTIME, la.OA_LASTOPERATEDATE, la.OA_LASTOPERATETIME, la.capture_Time,
  282. la.del_Time, la.LAST_OPERATE_TIME,
  283. li.ID AS License_ID, li.OA_ID, li.License_UniqueID, li.License_Flage, li.lic1, li.lic2, li.Creator_generate
  284. FROM
  285. target_OA_license la
  286. INNER JOIN
  287. License_generate_Info li
  288. ON
  289. la.Unique_ID = li.License_UniqueID
  290. WHERE
  291. la.del_Time IS NULL
  292. AND
  293. la.OA_REQUESTID = ?`
  294. rows, err := global.XuguDB.Query(sql, unique_ID)
  295. if err != nil {
  296. global.Logger.Errorln("getLicInfoByOAUniqueID 数据查询失败: ", err.Error())
  297. return nil, fmt.Errorf("getLicInfoByOAUniqueID 数据查询失败: %v", err)
  298. }
  299. defer rows.Close()
  300. var rest []OALicenseInfo
  301. for rows.Next() {
  302. var info OALicenseInfo
  303. err = rows.Scan(
  304. &info.LicInfo.ID, &info.LicInfo.UniqueID, &info.LicInfo.OAId, &info.LicInfo.OARequestID,
  305. &info.LicInfo.OARequestName, &info.LicInfo.OARequestNameNew, &info.LicInfo.OARequestNameHTMLNew,
  306. &info.LicInfo.OAGLXMID, &info.LicInfo.OAGLXMName,
  307. &info.LicInfo.OASQSJ, &info.LicInfo.OASalespersonName, &info.LicInfo.OAXSJSYX,
  308. &info.LicInfo.OAOperationsPersonName, &info.LicInfo.OAJFJSYX, &info.LicInfo.OASYDW,
  309. &info.LicInfo.OAXMXXMS, &info.LicInfo.OAJDS, &info.LicInfo.OANodeCount,
  310. &info.LicInfo.OAProductCode, &info.LicInfo.OAProductName, &info.LicInfo.OAProductVersion,
  311. &info.LicInfo.OACPU, &info.LicInfo.OAOperatingSystem, &info.LicInfo.OAMainMAC,
  312. &info.LicInfo.OASecondMAC, &info.LicInfo.OACreationDate, &info.LicInfo.OACreationTime,
  313. &info.LicInfo.OALastOperateDate, &info.LicInfo.OALastOperateTime, &info.LicInfo.CaptureTime,
  314. &info.LicInfo.DelTime, &info.LicInfo.LastOperateTime,
  315. &info.GenrateInfo.ID, &info.GenrateInfo.OAId, &info.GenrateInfo.LicenseUniqueID, &info.GenrateInfo.LicenseFlage,
  316. &info.GenrateInfo.Lic1, &info.GenrateInfo.Lic2, &info.GenrateInfo.CreatorGenerate,
  317. )
  318. if err != nil {
  319. log.Fatal(err)
  320. }
  321. rest = append(rest, info)
  322. }
  323. return &rest, nil
  324. }
  325. // 插入生成好的lic1,2的信息
  326. func UpdateOALicenseStr(uniqueID string, lic1 []byte, lic2 []byte) error {
  327. tx, err := global.XuguDB.Begin()
  328. if err != nil {
  329. global.Logger.Errorln("begin transaction失败: ", err.Error())
  330. return fmt.Errorf("begin transaction: %v", err)
  331. }
  332. defer func() {
  333. if err != nil {
  334. tx.Rollback()
  335. } else {
  336. err = tx.Commit()
  337. }
  338. }()
  339. //插入 LicenseInfo 表
  340. if lic2 == nil {
  341. _, err = tx.Exec(`
  342. UPDATE License_generate_Info SET License_Flage = ? ,lic1 = ?,Creator_generate =? WHERE License_UniqueID = ?
  343. `,
  344. "已生成", string(lic1), time.Now(), uniqueID)
  345. } else {
  346. _, err = tx.Exec(`
  347. UPDATE License_generate_Info SET License_Flage = ? ,lic1 = ?,lic2 = ?,Creator_generate =? WHERE License_UniqueID = ?
  348. `,
  349. "已生成", string(lic1), string(lic2), time.Now(), uniqueID)
  350. }
  351. if err != nil {
  352. global.Logger.Errorln("插入lic1 ,2 失败: ", err.Error())
  353. return err
  354. }
  355. return nil
  356. }
  357. // 修改一行前端可改的license信息
  358. func UpdatelicenseInfoRow(license OALicenseInfo) error {
  359. tx, err := global.XuguDB.Begin()
  360. if err != nil {
  361. return fmt.Errorf("begin transaction: %v", err)
  362. }
  363. defer func() {
  364. if err != nil {
  365. tx.Rollback()
  366. } else {
  367. err = tx.Commit()
  368. }
  369. }()
  370. _, err = tx.Exec(`
  371. UPDATE target_OA_license SET OA_REQUESTNAME =? ,OA_CREATIONDATE =? ,OA_GLXMNAME = ? ,
  372. OA_SALESPERSONNAME = ? , OA_XSJSYX = ? , OA_OPERATIONSPERSONNAME = ? , OA_JFJSYX = ? , OA_JDS = ? ,
  373. OA_SYDW = ? , OA_PRODUCTNAME = ? , OA_PRODUCTVERSION = ? , OA_NODECOUNT = ?
  374. WHERE Unique_ID =?;
  375. `, license.LicInfo.OARequestName.String, license.LicInfo.OACreationDate.String, license.LicInfo.OAGLXMName.String,
  376. license.LicInfo.OASalespersonName.String, license.LicInfo.OAXSJSYX.String, license.LicInfo.OAOperationsPersonName.String, license.LicInfo.OAJFJSYX.String, license.LicInfo.OAJDS.Int64,
  377. license.LicInfo.OASYDW.String, license.LicInfo.OAProductName.String, license.LicInfo.OAProductVersion.String, license.LicInfo.OANodeCount.Int64, license.LicInfo.UniqueID.String)
  378. if err != nil {
  379. global.Logger.Errorln("UpdatelicenseInfoRow失败 ", err.Error())
  380. return err
  381. }
  382. return nil
  383. }
  384. // 修改一行LICENSE_GENERATE_INFO信息
  385. func UpdatelicenseGenerateInfoRow(license OALicenseInfo) error {
  386. tx, err := global.XuguDB.Begin()
  387. if err != nil {
  388. return fmt.Errorf("begin transaction: %v", err)
  389. }
  390. defer func() {
  391. if err != nil {
  392. tx.Rollback()
  393. } else {
  394. err = tx.Commit()
  395. }
  396. }()
  397. _, err = tx.Exec(`
  398. UPDATE LICENSE_GENERATE_INFO SET LICENSE_FLAGE =? ,LIC1 =? ,LIC2 = ? ,
  399. CREATOR_GENERATE = ?
  400. WHERE LICENSE_UNIQUEID =?;
  401. `, "已失效", nil, nil, time.Now(), license.LicInfo.UniqueID.String)
  402. if err != nil {
  403. global.Logger.Errorln("UpdatelicenseInfoRow失败 ", err.Error())
  404. return err
  405. }
  406. return nil
  407. }
  408. // 删除LicenseApplication和LicenseInfo表中的数据
  409. func DelLicenseInfoRow(uniqueID string) error {
  410. fmt.Println("UniqueID12313", uniqueID)
  411. tx, err := global.XuguDB.Begin()
  412. if err != nil {
  413. return fmt.Errorf("begin transaction: %v", err)
  414. }
  415. defer func() {
  416. if err != nil {
  417. tx.Rollback()
  418. } else {
  419. err = tx.Commit()
  420. }
  421. }()
  422. // "update LicenseApplication set DelTime = ? where UniqueID = ?",
  423. //DELETE FROM LicenseInfo WHERE LicenseApplicationUniqueID = ?
  424. // _, err = tx.Exec("DELETE FROM LicenseInfo WHERE LicenseApplicationUniqueID = ?", uniqueID)
  425. // if err != nil {
  426. // return err
  427. // }
  428. // _, err = tx.Exec("DELETE FROM LicenseApplication WHERE UniqueID = ?", uniqueID)
  429. // if err != nil {
  430. // return err
  431. // }
  432. _, err = tx.Exec("UPDATE target_OA_license SET Del_Time = ? WHERE Unique_ID = ?", time.Now(), uniqueID)
  433. if err != nil {
  434. return err
  435. }
  436. return nil
  437. }