OALicenseInfo_controllers.go 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711
  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, isCheck := 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. if isCheck {
  332. c.JSON(http.StatusOK, gin.H{
  333. "error": fmt.Sprintf("该条信息校验不一致,请刷新页面: "),
  334. })
  335. return
  336. }
  337. c.JSON(http.StatusOK, gin.H{
  338. "success": true,
  339. "message": "License生成成功!",
  340. })
  341. // applications, _, err := models.GetOALicenseInfo(0, 1, "", request.UniqueID, "")
  342. // if err != nil {
  343. // global.Logger.Errorln("LicenseInfo数据查询失败: ", err.Error())
  344. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
  345. // return
  346. // }
  347. // pj := license.ProjectInfo{
  348. // ProjectName: utils.ToString((*applications)[0].LicInfo.OAProductName),
  349. // UserName: utils.ToString((*applications)[0].LicInfo.OAProductVersion),
  350. // UserAddr: "未填写",
  351. // SerialNumber: "未填写",
  352. // }
  353. // ei := license.EnvironmentInfo{
  354. // CpuSN: "未填写",
  355. // BaseboardSN: "未填写",
  356. // MacAddr: utils.ToString((*applications)[0].LicInfo.OAMainMAC),
  357. // DiskID: "未填写",
  358. // IPAddr: "未填写",
  359. // }
  360. // LicType := utils.SwitchLicenseType(utils.ToString((*applications)[0].LicInfo.OAProductName))
  361. // lI := license.LicenseInfo{
  362. // GenDate: "2024-07-15",
  363. // ExpireDate: "9999-12-31",
  364. // LicenseType: LicType,
  365. // LicenseVersion: 1,
  366. // HardType: 3,
  367. // }
  368. //这里调用的是license模块中的生成license的方法
  369. // res := true
  370. // if res {
  371. // //生成副主节点license
  372. // if (*applications)[0].LicInfo.OASecondMAC.String != "" {
  373. // // var licStr2 []byte
  374. // // ei.MacAddr = applications[0].SecondaryMasterMacAddress
  375. // // licStr2 = license.GenerateLicense(pj, ei, lI)
  376. // err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"))
  377. // } else {
  378. // //fmt.Println("licStr licStr2", licStr, licStr2)
  379. // //插入到数据库
  380. // err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"), nil)
  381. // }
  382. // } else {
  383. // licStr := license.GenerateLicense(pj, ei, lI)
  384. // //生成副主节点license
  385. // if (*applications)[0].LicInfo.OASecondMAC.String != "" {
  386. // var licStr2 []byte
  387. // ei.MacAddr = (*applications)[0].LicInfo.OASecondMAC.String
  388. // licStr2 = license.GenerateLicense(pj, ei, lI)
  389. // err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), licStr, licStr2)
  390. // } else {
  391. // //插入到数据库
  392. // err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), licStr, nil)
  393. // }
  394. // }
  395. // if err != nil {
  396. // fmt.Println(err)
  397. // if err := c.ShouldBindJSON(&request); err != nil {
  398. // c.JSON(400, gin.H{
  399. // "error": err.Error(),
  400. // })
  401. // return
  402. // }
  403. // }
  404. // if err != nil {
  405. // fmt.Println(err)
  406. // if err := c.ShouldBindJSON(&request); err != nil {
  407. // global.Logger.Errorln("LicenseInfo数据查询失败: ", err.Error())
  408. // c.JSON(400, gin.H{
  409. // "error": fmt.Sprintf("数据查询失败: ", err.Error()),
  410. // })
  411. // return
  412. // }
  413. // }
  414. //xlsx.ExcelToMail(lic, licStr, licStr2)
  415. }
  416. // func CheckDistributeOALicenseToOaDbController(c *gin.Context) {
  417. // var CheckDisLicense struct {
  418. // LicUniqueID string `json:"lic_unique_id"`
  419. // }
  420. // var request CheckDisLicense
  421. // if err := c.ShouldBindJSON(&request); err != nil {
  422. // global.Logger.Errorln("license分发请求解析失败 %s", err.Error())
  423. // c.JSON(400, gin.H{
  424. // "error": fmt.Sprintf("license分发请求解析失败 %s", err.Error()),
  425. // })
  426. // return
  427. // }
  428. // //检测该数据是否与oa库数据库一致
  429. // OALicenseInfo, err := models.CheckLicenseInfoInOADB((*applications)[0].LicInfo.ID)
  430. // if err != nil {
  431. // global.Logger.Errorln("LicenseInfo数据对比oa库 查询失败: ", err.Error())
  432. // // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
  433. // return errors.Errorf("LicenseInfo数据对比oa库 查询失败 %v", err.Error())
  434. // }
  435. // checkTemp := CompareOALicenseInfo(&(*applications)[0], OALicenseInfo)
  436. // //如果不一致,则修改源数据
  437. // }
  438. /*
  439. 对单条lic或是申请单的处理
  440. 检测lic是否以及分发过给用户
  441. */
  442. func DistributeOALicenseController(c *gin.Context) {
  443. //判断是否发邮件
  444. //数据库查询license信息
  445. var request api.DistributeLicenseRequest
  446. if err := c.ShouldBindJSON(&request); err != nil {
  447. global.Logger.Errorln("license分发请求解析失败 %s", err.Error())
  448. c.JSON(400, gin.H{
  449. "error": fmt.Sprintf("license分发请求解析失败 %s", err.Error()),
  450. })
  451. return
  452. }
  453. EmailArray := strings.Split(request.Emails, ",")
  454. err, existUsers := services.DistributeOALicenseServices(request.OperatorUniqueID, request.OaRequestId, request.UserUniqueIDs, request.UserAccounts, request.UserNames, EmailArray)
  455. if err != nil {
  456. global.Logger.Errorln("license分发失败 %s", err.Error())
  457. c.JSON(400, gin.H{
  458. "error": fmt.Sprintf("license分发失败 %s", err.Error()),
  459. })
  460. return
  461. }
  462. if existUsers != nil {
  463. global.Logger.Errorf("license分发失败,以下用户已经分发过 %s")
  464. c.JSON(400, gin.H{
  465. "error": fmt.Sprintf("以下用户已经分发过 %s", existUsers),
  466. })
  467. return
  468. }
  469. c.JSON(http.StatusOK, gin.H{
  470. "success": true,
  471. "data": "分发成功!",
  472. })
  473. }
  474. // 获取分发历史
  475. func GetlicenseRecordInfo(c *gin.Context) {
  476. // type licenseRecordInfoRequest struct {
  477. // UniqueID string `json:"uniqueID"`
  478. // Id int `json:"id"`
  479. // }
  480. var request api.GetDistributeHistoryRequest
  481. if err := c.ShouldBindJSON(&request); err != nil {
  482. global.Logger.Errorln("解析请求失败 ", err.Error())
  483. c.JSON(400, gin.H{
  484. "error": fmt.Sprintf("解析请求失败: ", err.Error()),
  485. })
  486. return
  487. }
  488. LicUers, err := models.GetlicenseRecordByUser(request.OaRequestId, request.UniqueID)
  489. if err != nil {
  490. global.Logger.Errorln("数据查询失败 ", err.Error())
  491. c.JSON(400, gin.H{
  492. "error": fmt.Sprintf("数据查询失败: ", err.Error()),
  493. })
  494. return
  495. }
  496. LicEmails, err := models.GetlicenseRecordByEmail(request.OaRequestId, request.UniqueID)
  497. if err != nil {
  498. global.Logger.Errorln("数据查询失败 ", err.Error())
  499. c.JSON(400, gin.H{
  500. "error": fmt.Sprintf("数据查询失败: ", err.Error()),
  501. })
  502. return
  503. }
  504. licR := models.LicenseRecord{
  505. LicenseRecordToUser: LicUers,
  506. LicenseRecordToEmails: LicEmails,
  507. }
  508. fmt.Println("分发历史applications", licR)
  509. c.JSON(http.StatusOK, gin.H{
  510. "success": true,
  511. "data": licR,
  512. })
  513. }
  514. // 更新license信息
  515. func UpdateLicense(c *gin.Context) {
  516. var license api.UpdateLicenseInfoRequest
  517. // 绑定JSON数据到License结构体
  518. if err := c.ShouldBindJSON(&license); err != nil {
  519. c.JSON(http.StatusBadRequest, gin.H{
  520. "success": false,
  521. "error": err.Error(),
  522. })
  523. return
  524. }
  525. // fmt.Printf(" license.ApplicationDate: %#v ", license)
  526. err := models.UpdatelicenseInfoRow(models.OALicenseInfo{
  527. LicInfo: models.TargetOALicenseInfo{
  528. UniqueID: utils.StringToNullString(license.UniqueID),
  529. OARequestName: utils.StringToNullString(license.Creator),
  530. OACreationDate: utils.StringToNullString(license.ApplicationDate),
  531. OAGLXMName: utils.StringToNullString(license.AssociatedProject),
  532. OANodeCount: utils.IntToNullInt64(license.NodeCount),
  533. OASalespersonName: utils.StringToNullString(license.SalesPerson),
  534. OAOperationsPersonName: utils.StringToNullString(license.SupportPerson),
  535. OAXSJSYX: utils.StringToNullString(license.SalesEmail),
  536. OAJFJSYX: utils.StringToNullString(license.SupportEmail),
  537. OAJDS: utils.IntToNullInt64(license.TotalNodes),
  538. OAProductName: utils.StringToNullString(license.ProductName),
  539. OAProductVersion: utils.StringToNullString(license.Version),
  540. OASYDW: utils.StringToNullString(license.Company),
  541. },
  542. })
  543. if err != nil {
  544. global.Logger.Errorln("数据插入失败 ", err.Error())
  545. c.JSON(http.StatusBadRequest, gin.H{"success": false, "error": fmt.Sprintf("数据插入失败: ", err.Error())})
  546. return
  547. }
  548. //刷新缓存
  549. // layout := "2006-01-02 15:04:05"
  550. // startTime, _ := time.Parse(layout, "2023-07-30 14:00:00")
  551. // endTime, _ := time.Parse(layout, "2023-08-26 16:00:00")
  552. // if err := global.LicCache.RefreshCache(global.XuguDB, startTime, endTime, 0, 20); err != nil {
  553. // global.Logger.Errorln("LicenseInfo数据刷新缓存失败: ", err.Error())
  554. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据刷新缓存失败: ", err.Error())})
  555. // return
  556. // }
  557. c.JSON(http.StatusOK, gin.H{
  558. "success": true,
  559. })
  560. }
  561. // 删除一行lincese信息
  562. func DelLicenseInfoRow(c *gin.Context) {
  563. // 解析 JSON 请求体
  564. var request UniqueIDRequest
  565. if err := c.ShouldBindJSON(&request); err != nil {
  566. c.JSON(400, gin.H{
  567. "error": err.Error(),
  568. })
  569. return
  570. }
  571. err := models.DelLicenseInfoRow(request.UniqueID)
  572. if err != nil {
  573. global.Logger.Errorln("删除一行License信息失败 ", err.Error())
  574. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("删除失败: ", err.Error())})
  575. return
  576. }
  577. //刷新缓存
  578. // layout := "2006-01-02 15:04:05"
  579. // startTime, _ := time.Parse(layout, "2023-07-30 14:00:00")
  580. // endTime, _ := time.Parse(layout, "2023-08-26 16:00:00")
  581. // if err := global.LicCache.RefreshCache(global.XuguDB, startTime, endTime, 0, 20); err != nil {
  582. // global.Logger.Errorln("LicenseInfo数据刷新缓存失败: ", err.Error())
  583. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据刷新缓存失败: ", err.Error())})
  584. // return
  585. // }
  586. c.JSON(http.StatusOK, gin.H{
  587. "success": true,
  588. "data": "删除成功",
  589. })
  590. }
  591. // 主动抓取一次license信息到支撑库
  592. func CaptureLicenseOnceToDb(c *gin.Context) {
  593. if err := capture.CaptureOnce(global.OaDB, global.XuguDB); err != nil {
  594. global.Logger.Errorln("主动抓取license信息到支撑库失败: ", err.Error())
  595. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("主动抓取license信息数据失败: %s", err.Error())})
  596. return
  597. }
  598. c.JSON(http.StatusOK, gin.H{
  599. "success": true,
  600. })
  601. }
  602. func GetDistributeButtenCheckController(c *gin.Context) {
  603. //获取oa申请单号
  604. name := c.Query("oa_request_id")
  605. //查询oa单号的每一行license信息
  606. err, isCheck := services.GetDistributeButtenCheckService(name)
  607. if err != nil {
  608. c.JSON(http.StatusOK, gin.H{
  609. "error": fmt.Sprintf("生成错误: ", err.Error()),
  610. })
  611. return
  612. }
  613. if isCheck {
  614. c.JSON(http.StatusOK, gin.H{
  615. "error": fmt.Sprintf("该条信息校验不一致,请刷新页面: "),
  616. })
  617. return
  618. }
  619. c.JSON(http.StatusOK, gin.H{
  620. "success": true,
  621. "message": "License校验成功!",
  622. })
  623. }
  624. func SearchLicInfoToDb(c *gin.Context) {
  625. // var request string
  626. // if err := c.ShouldBindJSON(&request); err != nil {
  627. // c.JSON(400, gin.H{
  628. // "error": err.Error(),
  629. // })
  630. // return
  631. // }
  632. request := c.Param("data")
  633. if datas, err := models.SearchLicInfoToDb(request); err != nil {
  634. global.Logger.Errorln("搜索license信息失败: ", err.Error())
  635. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("搜索license信息失败失败: %s", err.Error())})
  636. return
  637. } else {
  638. c.JSON(http.StatusOK, gin.H{
  639. "success": true,
  640. "data": datas,
  641. })
  642. }
  643. }