OALicenseInfo_controllers.go 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681
  1. package controllers
  2. import (
  3. "fmt"
  4. "net/http"
  5. "sort"
  6. "strconv"
  7. "strings"
  8. "xugu_license/internal/api"
  9. "xugu_license/internal/global"
  10. middlewares "xugu_license/internal/middleware"
  11. "xugu_license/internal/models"
  12. "xugu_license/internal/module/capture"
  13. "xugu_license/internal/services"
  14. "xugu_license/internal/utils"
  15. "github.com/gin-gonic/gin"
  16. "github.com/pkg/errors"
  17. )
  18. func getLoginInfo(c *gin.Context) (*middlewares.UserAuthInfo, error) {
  19. //获取当前登录用户信息
  20. userAny, exists := c.Get("userInfo")
  21. if !exists {
  22. global.Logger.Errorln("GetLicenseInfo: 用户信息不存在")
  23. return nil, errors.New("GetLicenseInfo: 用户信息不存在")
  24. // c.JSON(http.StatusUnauthorized, gin.H{"error": "用户信息不存在"})
  25. // c.Abort()
  26. }
  27. userInfo := userAny.(*middlewares.UserAuthInfo)
  28. return userInfo, nil
  29. }
  30. func GetSingleLicenseInfoController(c *gin.Context) {
  31. // userInfo, err := getLoginInfo(c)
  32. // if err != nil {
  33. // c.JSON(http.StatusUnauthorized, gin.H{"error": "用户信息不存在"})
  34. // c.Abort()
  35. // }
  36. //获取请求参数
  37. page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
  38. pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10"))
  39. LicUniqueID := c.DefaultQuery("LicUniqueID", "10")
  40. //获取指定的license信息
  41. applications, total, err := models.GetOALicenseInfo(page, pageSize, "", LicUniqueID, "", "")
  42. if err != nil {
  43. global.Logger.Errorln("指定UniqueID查询错误:", err.Error())
  44. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("指定UniqueID查询错误: ", err.Error())})
  45. return
  46. }
  47. c.JSON(http.StatusOK, gin.H{
  48. "data": *applications,
  49. "page": 1,
  50. "pageSize": 1,
  51. "total": total,
  52. })
  53. }
  54. // func GetAllLicenseInfoControllerToDb(c *gin.Context) {
  55. // // userInfo, err := getLoginInfo(c)
  56. // // if err != nil {
  57. // // c.JSON(http.StatusUnauthorized, gin.H{"error": "用户信息不存在"})
  58. // // c.Abort()
  59. // // }
  60. // //获取请求参数
  61. // page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
  62. // pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10"))
  63. // //获取指定的license信息
  64. // applications, total, err := models.GetOALicenseInfo(page, pageSize, "read_all_license", "", "", "")
  65. // if err != nil {
  66. // global.Logger.Errorln("read_all_license查询错误:", err.Error())
  67. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("read_all_license查询错误: ", err.Error())})
  68. // return
  69. // }
  70. // var datas []api.AllLicenseInfoResponse
  71. // for _, v := range *applications {
  72. // data := api.AllLicenseInfoResponse{
  73. // UniqueID: utils.ToString(v.LicInfo.UniqueID),
  74. // OARequestID: utils.ToInt64(v.LicInfo.OARequestID),
  75. // OARequestName: utils.ToString(v.LicInfo.OARequestName),
  76. // OARequestNameNew: utils.ToString(v.LicInfo.OARequestNameNew),
  77. // OARequestNameHTMLNew: utils.ToString(v.LicInfo.OARequestNameHTMLNew),
  78. // OAGLXMId: utils.ToInt64(v.LicInfo.OAGLXMID),
  79. // OAGLXMName: utils.ToString(v.LicInfo.OAGLXMName),
  80. // OASQSJ: utils.ToTimeString(v.LicInfo.OASQSJ),
  81. // OASalespersonName: utils.ToString(v.LicInfo.OASalespersonName),
  82. // OAXSJSYX: utils.ToString(v.LicInfo.OAXSJSYX),
  83. // OAOperationsPersonName: utils.ToString(v.LicInfo.OAOperationsPersonName),
  84. // OAJFJSYX: utils.ToString(v.LicInfo.OAJFJSYX),
  85. // OASYDW: utils.ToString(v.LicInfo.OASYDW),
  86. // OAXMXXMS: utils.ToString(v.LicInfo.OAXMXXMS),
  87. // OAJDS: utils.ToInt64(v.LicInfo.OAJDS),
  88. // OANodeCount: utils.ToInt64(v.LicInfo.OANodeCount),
  89. // OAProductCode: utils.ToString(v.LicInfo.OAProductCode),
  90. // OAProductName: utils.ToString(v.LicInfo.OAProductName),
  91. // OAProductVersion: utils.ToString(v.LicInfo.OAProductVersion),
  92. // OACPU: utils.ToString(v.LicInfo.OACPU),
  93. // OAOperatingSystem: utils.ToString(v.LicInfo.OAOperatingSystem),
  94. // OAMainMAC: utils.ToString(v.LicInfo.OAMainMAC),
  95. // OASecondMAC: utils.ToString(v.LicInfo.OASecondMAC),
  96. // OACreationDate: utils.ToString(v.LicInfo.OACreationDate),
  97. // OACreationTime: utils.ToString(v.LicInfo.OACreationTime),
  98. // OALastOperateDate: utils.ToString(v.LicInfo.OALastOperateDate),
  99. // OALastOperateTime: utils.ToString(v.LicInfo.OALastOperateTime),
  100. // CaptureTime: utils.ToTimeString(v.LicInfo.CaptureTime),
  101. // DelTime: utils.ToTimeString(v.LicInfo.DelTime),
  102. // LastOperateTime: utils.ToTimeString(v.LicInfo.LastOperateTime),
  103. // LicenseUniqueID: utils.ToString(v.GenrateInfo.LicenseUniqueID),
  104. // LicenseFlage: utils.ToString(v.GenrateInfo.LicenseFlage),
  105. // Lic1: utils.ToString(v.GenrateInfo.Lic1),
  106. // Lic2: utils.ToString(v.GenrateInfo.Lic2),
  107. // CreatorGenerate: utils.ToTimeString(v.GenrateInfo.CreatorGenerate),
  108. // }
  109. // datas = append(datas, data)
  110. // }
  111. // c.JSON(http.StatusOK, gin.H{
  112. // "data": datas,
  113. // "page": page,
  114. // "pageSize": pageSize,
  115. // "total": total,
  116. // })
  117. // }
  118. func GetAllLicenseInfoController(c *gin.Context) {
  119. //获取请求参数
  120. page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
  121. pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10"))
  122. //获取用户信息和权限
  123. userInfo, err := getLoginInfo(c)
  124. if err != nil {
  125. c.JSON(http.StatusUnauthorized, gin.H{"error": "用户信息不存在"})
  126. c.Abort()
  127. }
  128. // if t := userInfo.Permission[middlewares.ReadAllLicense]; t == middlewares.ReadAllLicense {
  129. // }
  130. var datas [][]api.AllLicenseInfoResponse
  131. var Total int
  132. // 初始化存储 `OARequestID` 相同的 `ApiLicenseInfoTemp` 列表的 map
  133. oaRequestIDMap := make(map[int64][]api.AllLicenseInfoResponse)
  134. if userInfo.Permission[middlewares.ReadAllLicense] == middlewares.ReadAllLicense {
  135. datas1, total, err := models.GetOALicenseInfo(pageSize, page, "read_all_license", "", "", "")
  136. if err != nil {
  137. global.Logger.Errorln("error", err.Error())
  138. c.JSON(http.StatusNotFound, gin.H{"error": err.Error()})
  139. return
  140. }
  141. Total = total
  142. //var ApiLicenseInfoTemp []api.AllLicenseInfoResponse
  143. for _, data := range *datas1 {
  144. ApiLicenseInfo := api.AllLicenseInfoResponse{
  145. UniqueID: utils.ToString(data.LicInfo.UniqueID),
  146. OAId: utils.ToInt64(data.LicInfo.OAId),
  147. OARequestID: utils.ToInt64(data.LicInfo.OARequestID),
  148. OARequestName: utils.ToString(data.LicInfo.OARequestName),
  149. OARequestNameNew: utils.ToString(data.LicInfo.OARequestNameNew),
  150. OARequestNameHTMLNew: utils.ToString(data.LicInfo.OARequestNameHTMLNew),
  151. OAGLXMId: utils.ToInt64(data.LicInfo.OAGLXMID),
  152. OAGLXMName: utils.ToString(data.LicInfo.OAGLXMName),
  153. OASQSJ: utils.ToString(data.LicInfo.OASQSJ),
  154. OASalespersonName: utils.ToString(data.LicInfo.OASalespersonName),
  155. OAXSJSYX: utils.ToString(data.LicInfo.OAXSJSYX),
  156. OAOperationsPersonName: utils.ToString(data.LicInfo.OAOperationsPersonName),
  157. OAJFJSYX: utils.ToString(data.LicInfo.OAJFJSYX),
  158. OASYDW: utils.ToString(data.LicInfo.OASYDW),
  159. OAXMXXMS: utils.ToString(data.LicInfo.OAXMXXMS),
  160. OAJDS: utils.ToInt64(data.LicInfo.OAJDS),
  161. OANodeCount: utils.ToInt64(data.LicInfo.OANodeCount),
  162. OAProductCode: utils.ToString(data.LicInfo.OAProductCode),
  163. OAProductName: utils.ToString(data.LicInfo.OAProductName),
  164. OAProductVersion: utils.ToString(data.LicInfo.OAProductVersion),
  165. OACPU: utils.ToString(data.LicInfo.OACPU),
  166. OAOperatingSystem: utils.ToString(data.LicInfo.OAOperatingSystem),
  167. OAMainMAC: utils.ToString(data.LicInfo.OAMainMAC),
  168. OASecondMAC: utils.ToString(data.LicInfo.OASecondMAC),
  169. OACreationDate: utils.ToString(data.LicInfo.OACreationDate),
  170. OACreationTime: utils.ToString(data.LicInfo.OACreationTime),
  171. OALastOperateDate: utils.ToString(data.LicInfo.OALastOperateDate),
  172. OALastOperateTime: utils.ToString(data.LicInfo.OALastOperateTime),
  173. CaptureTime: utils.ToTimeString(data.LicInfo.CaptureTime),
  174. DelTime: utils.ToTimeString(data.LicInfo.DelTime),
  175. LastOperateTime: utils.ToTimeString(data.LicInfo.LastOperateTime),
  176. LicenseFlage: utils.ToString(data.GenrateInfo.LicenseFlage),
  177. Lic1: utils.ToString(data.GenrateInfo.Lic1),
  178. Lic2: utils.ToString(data.GenrateInfo.Lic2),
  179. CreatorGenerate: utils.ToTimeString(data.GenrateInfo.CreatorGenerate),
  180. }
  181. // 将 `ApiLicenseInfo` 添加到 `OARequestID` 对应的数组中
  182. oaRequestID := utils.ToInt64(data.LicInfo.OARequestID)
  183. oaRequestIDMap[oaRequestID] = append(oaRequestIDMap[oaRequestID], ApiLicenseInfo)
  184. }
  185. } else if userInfo.Permission[middlewares.ReadLicense] == middlewares.ReadLicense {
  186. datas1, total, err := models.GetOALicenseInfo(pageSize, page, "", "", userInfo.UniqueID, "")
  187. if err != nil {
  188. global.Logger.Errorln("error", err.Error())
  189. c.JSON(http.StatusNotFound, gin.H{"error": err.Error()})
  190. return
  191. }
  192. Total = total
  193. //var ApiLicenseInfoTemp []api.AllLicenseInfoResponse
  194. for _, data := range *datas1 {
  195. ApiLicenseInfo := api.AllLicenseInfoResponse{
  196. UniqueID: utils.ToString(data.LicInfo.UniqueID),
  197. OARequestID: utils.ToInt64(data.LicInfo.OARequestID),
  198. OARequestName: utils.ToString(data.LicInfo.OARequestName),
  199. OARequestNameNew: utils.ToString(data.LicInfo.OARequestNameNew),
  200. OARequestNameHTMLNew: utils.ToString(data.LicInfo.OARequestNameHTMLNew),
  201. OAGLXMId: utils.ToInt64(data.LicInfo.OAGLXMID),
  202. OAGLXMName: utils.ToString(data.LicInfo.OAGLXMName),
  203. OASQSJ: utils.ToString(data.LicInfo.OASQSJ),
  204. OASalespersonName: utils.ToString(data.LicInfo.OASalespersonName),
  205. OAXSJSYX: utils.ToString(data.LicInfo.OAXSJSYX),
  206. OAOperationsPersonName: utils.ToString(data.LicInfo.OAOperationsPersonName),
  207. OAJFJSYX: utils.ToString(data.LicInfo.OAJFJSYX),
  208. OASYDW: utils.ToString(data.LicInfo.OASYDW),
  209. OAXMXXMS: utils.ToString(data.LicInfo.OAXMXXMS),
  210. OAJDS: utils.ToInt64(data.LicInfo.OAJDS),
  211. OANodeCount: utils.ToInt64(data.LicInfo.OANodeCount),
  212. OAProductCode: utils.ToString(data.LicInfo.OAProductCode),
  213. OAProductName: utils.ToString(data.LicInfo.OAProductName),
  214. OAProductVersion: utils.ToString(data.LicInfo.OAProductVersion),
  215. OACPU: utils.ToString(data.LicInfo.OACPU),
  216. OAOperatingSystem: utils.ToString(data.LicInfo.OAOperatingSystem),
  217. OAMainMAC: utils.ToString(data.LicInfo.OAMainMAC),
  218. OASecondMAC: utils.ToString(data.LicInfo.OASecondMAC),
  219. OACreationDate: utils.ToString(data.LicInfo.OACreationDate),
  220. OACreationTime: utils.ToString(data.LicInfo.OACreationTime),
  221. OALastOperateDate: utils.ToString(data.LicInfo.OALastOperateDate),
  222. OALastOperateTime: utils.ToString(data.LicInfo.OALastOperateTime),
  223. CaptureTime: utils.ToTimeString(data.LicInfo.CaptureTime),
  224. DelTime: utils.ToTimeString(data.LicInfo.DelTime),
  225. LastOperateTime: utils.ToTimeString(data.LicInfo.LastOperateTime),
  226. LicenseFlage: utils.ToString(data.GenrateInfo.LicenseFlage),
  227. Lic1: utils.ToString(data.GenrateInfo.Lic1),
  228. Lic2: utils.ToString(data.GenrateInfo.Lic2),
  229. CreatorGenerate: utils.ToTimeString(data.GenrateInfo.CreatorGenerate),
  230. }
  231. // 将 `ApiLicenseInfo` 添加到 `OARequestID` 对应的数组中
  232. oaRequestID := utils.ToInt64(data.LicInfo.OARequestID)
  233. oaRequestIDMap[oaRequestID] = append(oaRequestIDMap[oaRequestID], ApiLicenseInfo)
  234. }
  235. }
  236. //获取指定的license缓存信息
  237. //data, err := global.LicCache.GetPaginatedData(page, pageSize)
  238. //返回[][]data 的方式
  239. // var datas [][]api.AllLicenseInfoResponse
  240. // for _, lic := range data {
  241. // var dataTemp []api.AllLicenseInfoResponse
  242. // for _, v := range lic {
  243. // data := api.AllLicenseInfoResponse{
  244. // UniqueID: v.UniqueID.String,
  245. // OARequestID: v.OARequestID.Int64,
  246. // OARequestName: utils.ToString(v.OARequestName),
  247. // OARequestNameNew: utils.ToString(v.OARequestNameNew),
  248. // OARequestNameHTMLNew: utils.ToString(v.OARequestNameHTMLNew),
  249. // OAGLXMId: utils.ToInt64(v.OAGLXMId),
  250. // OAGLXMName: utils.ToString(v.OAGLXMName),
  251. // OASQSJ: utils.ToTimeString(v.OASQSJ),
  252. // OASalespersonName: utils.ToString(v.OASalespersonName),
  253. // OAXSJSYX: utils.ToString(v.OAXSJSYX),
  254. // OAOperationsPersonName: utils.ToString(v.OAOperationsPersonName),
  255. // OAJFJSYX: utils.ToString(v.OAJFJSYX),
  256. // OASYDW: utils.ToString(v.OASYDW),
  257. // OAXMXXMS: utils.ToString(v.OAXMXXMS),
  258. // OAJDS: utils.ToInt64(v.OAJDS),
  259. // OANodeCount: utils.ToInt64(v.OANodeCount),
  260. // OAProductCode: utils.ToString(v.OAProductCode),
  261. // OAProductName: utils.ToString(v.OAProductName),
  262. // OAProductVersion: utils.ToString(v.OAProductVersion),
  263. // OACPU: utils.ToString(v.OACPU),
  264. // OAOperatingSystem: utils.ToString(v.OAOperatingSystem),
  265. // OAMainMAC: utils.ToString(v.OAMainMAC),
  266. // OASecondMAC: utils.ToString(v.OASecondMAC),
  267. // OACreationDate: utils.ToString(v.OACreationDate),
  268. // OACreationTime: utils.ToString(v.OACreationTime),
  269. // OALastOperateDate: utils.ToString(v.OALastOperateDate),
  270. // OALastOperateTime: utils.ToString(v.OALastOperateTime),
  271. // CaptureTime: utils.ToTimeString(v.CaptureTime),
  272. // DelTime: utils.ToTimeString(v.DelTime),
  273. // LastOperateTime: utils.ToTimeString(v.LastOperateTime),
  274. // LicenseUniqueID: utils.ToString(v.LicenseUniqueID),
  275. // LicenseFlage: utils.ToString(v.LicenseFlage),
  276. // Lic1: utils.ToString(v.Lic1),
  277. // Lic2: utils.ToString(v.Lic2),
  278. // CreatorGenerate: utils.ToString(v.CreatorGenerate),
  279. // }
  280. // dataTemp = append(dataTemp, data)
  281. // }
  282. // datas = append(datas, dataTemp)
  283. // }
  284. // 将 `oaRequestIDMap` 中的所有 `ApiLicenseInfoTemp` 列表添加到 `datas` 中
  285. for _, apiLicenseInfoTemp := range oaRequestIDMap {
  286. datas = append(datas, apiLicenseInfoTemp)
  287. }
  288. // 对 datas 的第一维进行排序
  289. // sort.Slice(datas, func(i, j int) bool {
  290. // // 假设你需要根据每个数组第一个元素的 OACreationDate 和 OACreationTime 来排序
  291. // if datas[i][0].OACreationDate == datas[j][0].OACreationDate {
  292. // return datas[i][0].OACreationTime > datas[j][0].OACreationTime
  293. // }
  294. // return datas[i][0].OACreationDate > datas[j][0].OACreationDate
  295. // })
  296. // 对 datas 的第一维进行排序
  297. sort.Slice(datas, func(i, j int) bool {
  298. // 先按 OACreationDate 和 OACreationTime 排序
  299. if datas[i][0].OACreationDate == datas[j][0].OACreationDate {
  300. if datas[i][0].OACreationTime == datas[j][0].OACreationTime {
  301. // 如果 OACreationDate 和 OACreationTime 相同,则按 OARequestID 从大到小排序
  302. return datas[i][0].OARequestID > datas[j][0].OARequestID
  303. }
  304. return datas[i][0].OACreationTime > datas[j][0].OACreationTime
  305. }
  306. return datas[i][0].OACreationDate > datas[j][0].OACreationDate
  307. })
  308. c.JSON(http.StatusOK, gin.H{
  309. "data": datas,
  310. "page": page,
  311. "pageSize": pageSize,
  312. "total": Total,
  313. })
  314. }
  315. func GenerateOALicenseStrController(c *gin.Context) {
  316. var request api.GenerateLicenseStrRequest
  317. if err := c.ShouldBindJSON(&request); err != nil {
  318. global.Logger.Errorln("解析request失败 : ", err.Error())
  319. c.JSON(400, gin.H{
  320. "error": fmt.Sprintf("解析请求失败: ", err.Error()),
  321. })
  322. return
  323. }
  324. err := services.GenerateOALicenseStrServices(request)
  325. if err != nil {
  326. c.JSON(http.StatusOK, gin.H{
  327. "error": fmt.Sprintf("生成错误: ", err.Error()),
  328. })
  329. return
  330. }
  331. c.JSON(http.StatusOK, gin.H{
  332. "success": true,
  333. "message": "License生成成功!",
  334. })
  335. // applications, _, err := models.GetOALicenseInfo(0, 1, "", request.UniqueID, "")
  336. // if err != nil {
  337. // global.Logger.Errorln("LicenseInfo数据查询失败: ", err.Error())
  338. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
  339. // return
  340. // }
  341. // pj := license.ProjectInfo{
  342. // ProjectName: utils.ToString((*applications)[0].LicInfo.OAProductName),
  343. // UserName: utils.ToString((*applications)[0].LicInfo.OAProductVersion),
  344. // UserAddr: "未填写",
  345. // SerialNumber: "未填写",
  346. // }
  347. // ei := license.EnvironmentInfo{
  348. // CpuSN: "未填写",
  349. // BaseboardSN: "未填写",
  350. // MacAddr: utils.ToString((*applications)[0].LicInfo.OAMainMAC),
  351. // DiskID: "未填写",
  352. // IPAddr: "未填写",
  353. // }
  354. // LicType := utils.SwitchLicenseType(utils.ToString((*applications)[0].LicInfo.OAProductName))
  355. // lI := license.LicenseInfo{
  356. // GenDate: "2024-07-15",
  357. // ExpireDate: "9999-12-31",
  358. // LicenseType: LicType,
  359. // LicenseVersion: 1,
  360. // HardType: 3,
  361. // }
  362. //这里调用的是license模块中的生成license的方法
  363. // res := true
  364. // if res {
  365. // //生成副主节点license
  366. // if (*applications)[0].LicInfo.OASecondMAC.String != "" {
  367. // // var licStr2 []byte
  368. // // ei.MacAddr = applications[0].SecondaryMasterMacAddress
  369. // // licStr2 = license.GenerateLicense(pj, ei, lI)
  370. // err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"))
  371. // } else {
  372. // //fmt.Println("licStr licStr2", licStr, licStr2)
  373. // //插入到数据库
  374. // err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"), nil)
  375. // }
  376. // } else {
  377. // licStr := license.GenerateLicense(pj, ei, lI)
  378. // //生成副主节点license
  379. // if (*applications)[0].LicInfo.OASecondMAC.String != "" {
  380. // var licStr2 []byte
  381. // ei.MacAddr = (*applications)[0].LicInfo.OASecondMAC.String
  382. // licStr2 = license.GenerateLicense(pj, ei, lI)
  383. // err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), licStr, licStr2)
  384. // } else {
  385. // //插入到数据库
  386. // err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), licStr, nil)
  387. // }
  388. // }
  389. // if err != nil {
  390. // fmt.Println(err)
  391. // if err := c.ShouldBindJSON(&request); err != nil {
  392. // c.JSON(400, gin.H{
  393. // "error": err.Error(),
  394. // })
  395. // return
  396. // }
  397. // }
  398. // if err != nil {
  399. // fmt.Println(err)
  400. // if err := c.ShouldBindJSON(&request); err != nil {
  401. // global.Logger.Errorln("LicenseInfo数据查询失败: ", err.Error())
  402. // c.JSON(400, gin.H{
  403. // "error": fmt.Sprintf("数据查询失败: ", err.Error()),
  404. // })
  405. // return
  406. // }
  407. // }
  408. //xlsx.ExcelToMail(lic, licStr, licStr2)
  409. }
  410. // func CheckDistributeOALicenseToOaDbController(c *gin.Context) {
  411. // var CheckDisLicense struct {
  412. // LicUniqueID string `json:"lic_unique_id"`
  413. // }
  414. // var request CheckDisLicense
  415. // if err := c.ShouldBindJSON(&request); err != nil {
  416. // global.Logger.Errorln("license分发请求解析失败 %s", err.Error())
  417. // c.JSON(400, gin.H{
  418. // "error": fmt.Sprintf("license分发请求解析失败 %s", err.Error()),
  419. // })
  420. // return
  421. // }
  422. // //检测该数据是否与oa库数据库一致
  423. // OALicenseInfo, err := models.CheckLicenseInfoInOADB((*applications)[0].LicInfo.ID)
  424. // if err != nil {
  425. // global.Logger.Errorln("LicenseInfo数据对比oa库 查询失败: ", err.Error())
  426. // // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
  427. // return errors.Errorf("LicenseInfo数据对比oa库 查询失败 %v", err.Error())
  428. // }
  429. // checkTemp := CompareOALicenseInfo(&(*applications)[0], OALicenseInfo)
  430. // //如果不一致,则修改源数据
  431. // }
  432. /*
  433. 对单条lic或是申请单的处理
  434. 检测lic是否以及分发过给用户
  435. */
  436. func DistributeOALicenseController(c *gin.Context) {
  437. //判断是否发邮件
  438. //数据库查询license信息
  439. var request api.DistributeLicenseRequest
  440. if err := c.ShouldBindJSON(&request); err != nil {
  441. global.Logger.Errorln("license分发请求解析失败 %s", err.Error())
  442. c.JSON(400, gin.H{
  443. "error": fmt.Sprintf("license分发请求解析失败 %s", err.Error()),
  444. })
  445. return
  446. }
  447. EmailArray := strings.Split(request.Emails, ",")
  448. err, existUsers := services.DistributeOALicenseServices(request.OperatorUniqueID, request.OaRequestId, request.UserUniqueIDs, request.UserAccounts, request.UserNames, EmailArray)
  449. if err != nil {
  450. global.Logger.Errorln("license分发失败 %s", err.Error())
  451. c.JSON(400, gin.H{
  452. "error": fmt.Sprintf("license分发失败 %s", err.Error()),
  453. })
  454. return
  455. }
  456. if existUsers != nil {
  457. global.Logger.Errorf("license分发失败,以下用户已经分发过 %s")
  458. c.JSON(400, gin.H{
  459. "error": fmt.Sprintf("以下用户已经分发过 %s", existUsers),
  460. })
  461. return
  462. }
  463. c.JSON(http.StatusOK, gin.H{
  464. "success": true,
  465. "data": "分发成功!",
  466. })
  467. }
  468. // 获取分发历史
  469. func GetlicenseRecordInfo(c *gin.Context) {
  470. // type licenseRecordInfoRequest struct {
  471. // UniqueID string `json:"uniqueID"`
  472. // Id int `json:"id"`
  473. // }
  474. var request api.GetDistributeHistoryRequest
  475. if err := c.ShouldBindJSON(&request); err != nil {
  476. global.Logger.Errorln("解析请求失败 ", err.Error())
  477. c.JSON(400, gin.H{
  478. "error": fmt.Sprintf("解析请求失败: ", err.Error()),
  479. })
  480. return
  481. }
  482. LicUers, err := models.GetlicenseRecordByUser(request.OaRequestId, request.UniqueID)
  483. if err != nil {
  484. global.Logger.Errorln("数据查询失败 ", err.Error())
  485. c.JSON(400, gin.H{
  486. "error": fmt.Sprintf("数据查询失败: ", err.Error()),
  487. })
  488. return
  489. }
  490. LicEmails, err := models.GetlicenseRecordByEmail(request.OaRequestId, request.UniqueID)
  491. if err != nil {
  492. global.Logger.Errorln("数据查询失败 ", err.Error())
  493. c.JSON(400, gin.H{
  494. "error": fmt.Sprintf("数据查询失败: ", err.Error()),
  495. })
  496. return
  497. }
  498. licR := models.LicenseRecord{
  499. LicenseRecordToUser: LicUers,
  500. LicenseRecordToEmails: LicEmails,
  501. }
  502. fmt.Println("分发历史applications", licR)
  503. c.JSON(http.StatusOK, gin.H{
  504. "success": true,
  505. "data": licR,
  506. })
  507. }
  508. // 更新license信息
  509. func UpdateLicense(c *gin.Context) {
  510. var license api.UpdateLicenseInfoRequest
  511. // 绑定JSON数据到License结构体
  512. if err := c.ShouldBindJSON(&license); err != nil {
  513. c.JSON(http.StatusBadRequest, gin.H{
  514. "success": false,
  515. "error": err.Error(),
  516. })
  517. return
  518. }
  519. // fmt.Printf(" license.ApplicationDate: %#v ", license)
  520. err := models.UpdatelicenseInfoRow(models.OALicenseInfo{
  521. LicInfo: models.TargetOALicenseInfo{
  522. UniqueID: utils.StringToNullString(license.UniqueID),
  523. OARequestName: utils.StringToNullString(license.Creator),
  524. OACreationDate: utils.StringToNullString(license.ApplicationDate),
  525. OAGLXMName: utils.StringToNullString(license.AssociatedProject),
  526. OANodeCount: utils.IntToNullInt64(license.NodeCount),
  527. OASalespersonName: utils.StringToNullString(license.SalesPerson),
  528. OAOperationsPersonName: utils.StringToNullString(license.SupportPerson),
  529. OAXSJSYX: utils.StringToNullString(license.SalesEmail),
  530. OAJFJSYX: utils.StringToNullString(license.SupportEmail),
  531. OAJDS: utils.IntToNullInt64(license.TotalNodes),
  532. OAProductName: utils.StringToNullString(license.ProductName),
  533. OAProductVersion: utils.StringToNullString(license.Version),
  534. OASYDW: utils.StringToNullString(license.Company),
  535. },
  536. })
  537. if err != nil {
  538. global.Logger.Errorln("数据插入失败 ", err.Error())
  539. c.JSON(http.StatusBadRequest, gin.H{"success": false, "error": fmt.Sprintf("数据插入失败: ", err.Error())})
  540. return
  541. }
  542. //刷新缓存
  543. // layout := "2006-01-02 15:04:05"
  544. // startTime, _ := time.Parse(layout, "2023-07-30 14:00:00")
  545. // endTime, _ := time.Parse(layout, "2023-08-26 16:00:00")
  546. // if err := global.LicCache.RefreshCache(global.XuguDB, startTime, endTime, 0, 20); err != nil {
  547. // global.Logger.Errorln("LicenseInfo数据刷新缓存失败: ", err.Error())
  548. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据刷新缓存失败: ", err.Error())})
  549. // return
  550. // }
  551. c.JSON(http.StatusOK, gin.H{
  552. "success": true,
  553. })
  554. }
  555. // 删除一行lincese信息
  556. func DelLicenseInfoRow(c *gin.Context) {
  557. // 解析 JSON 请求体
  558. var request UniqueIDRequest
  559. if err := c.ShouldBindJSON(&request); err != nil {
  560. c.JSON(400, gin.H{
  561. "error": err.Error(),
  562. })
  563. return
  564. }
  565. err := models.DelLicenseInfoRow(request.UniqueID)
  566. if err != nil {
  567. global.Logger.Errorln("删除一行License信息失败 ", err.Error())
  568. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("删除失败: ", err.Error())})
  569. return
  570. }
  571. //刷新缓存
  572. // layout := "2006-01-02 15:04:05"
  573. // startTime, _ := time.Parse(layout, "2023-07-30 14:00:00")
  574. // endTime, _ := time.Parse(layout, "2023-08-26 16:00:00")
  575. // if err := global.LicCache.RefreshCache(global.XuguDB, startTime, endTime, 0, 20); err != nil {
  576. // global.Logger.Errorln("LicenseInfo数据刷新缓存失败: ", err.Error())
  577. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据刷新缓存失败: ", err.Error())})
  578. // return
  579. // }
  580. c.JSON(http.StatusOK, gin.H{
  581. "success": true,
  582. "data": "删除成功",
  583. })
  584. }
  585. // 主动抓取一次license信息到支撑库
  586. func CaptureLicenseOnceToDb(c *gin.Context) {
  587. if err := capture.CaptureOnce(global.OaDB, global.XuguDB); err != nil {
  588. global.Logger.Errorln("主动抓取license信息到支撑库失败: ", err.Error())
  589. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("主动抓取license信息数据失败: %s", err.Error())})
  590. return
  591. }
  592. c.JSON(http.StatusOK, gin.H{
  593. "success": true,
  594. })
  595. }
  596. func SearchLicInfoToDb(c *gin.Context) {
  597. // var request string
  598. // if err := c.ShouldBindJSON(&request); err != nil {
  599. // c.JSON(400, gin.H{
  600. // "error": err.Error(),
  601. // })
  602. // return
  603. // }
  604. request := c.Param("data")
  605. if datas, err := models.SearchLicInfoToDb(request); err != nil {
  606. global.Logger.Errorln("搜索license信息失败: ", err.Error())
  607. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("搜索license信息失败失败: %s", err.Error())})
  608. return
  609. } else {
  610. c.JSON(http.StatusOK, gin.H{
  611. "success": true,
  612. "data": datas,
  613. })
  614. }
  615. }