OALicenseInfo_controllers.go 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961
  1. package controllers
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "net/http"
  6. "sort"
  7. "strconv"
  8. "strings"
  9. "xugu_license/internal/api"
  10. "xugu_license/internal/global"
  11. middlewares "xugu_license/internal/middleware"
  12. "xugu_license/internal/models"
  13. "xugu_license/internal/module/capture"
  14. "xugu_license/internal/module/email"
  15. "xugu_license/internal/utils"
  16. "github.com/gin-gonic/gin"
  17. "github.com/pkg/errors"
  18. )
  19. func getLoginInfo(c *gin.Context) (*middlewares.UserAuthInfo, error) {
  20. //获取当前登录用户信息
  21. userAny, exists := c.Get("userInfo")
  22. if !exists {
  23. global.Logger.Errorln("GetLicenseInfo: 用户信息不存在")
  24. return nil, errors.New("GetLicenseInfo: 用户信息不存在")
  25. // c.JSON(http.StatusUnauthorized, gin.H{"error": "用户信息不存在"})
  26. // c.Abort()
  27. }
  28. userInfo := userAny.(*middlewares.UserAuthInfo)
  29. return userInfo, nil
  30. }
  31. func GetSingleLicenseInfoController(c *gin.Context) {
  32. // userInfo, err := getLoginInfo(c)
  33. // if err != nil {
  34. // c.JSON(http.StatusUnauthorized, gin.H{"error": "用户信息不存在"})
  35. // c.Abort()
  36. // }
  37. //获取请求参数
  38. page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
  39. pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10"))
  40. LicUniqueID := c.DefaultQuery("LicUniqueID", "10")
  41. //获取指定的license信息
  42. applications, total, err := models.GetOALicenseInfo(page, pageSize, "", LicUniqueID, "", "")
  43. if err != nil {
  44. global.Logger.Errorln("指定UniqueID查询错误:", err.Error())
  45. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("指定UniqueID查询错误: ", err.Error())})
  46. return
  47. }
  48. c.JSON(http.StatusOK, gin.H{
  49. "data": *applications,
  50. "page": 1,
  51. "pageSize": 1,
  52. "total": total,
  53. })
  54. }
  55. // func GetAllLicenseInfoControllerToDb(c *gin.Context) {
  56. // // userInfo, err := getLoginInfo(c)
  57. // // if err != nil {
  58. // // c.JSON(http.StatusUnauthorized, gin.H{"error": "用户信息不存在"})
  59. // // c.Abort()
  60. // // }
  61. // //获取请求参数
  62. // page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
  63. // pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10"))
  64. // //获取指定的license信息
  65. // applications, total, err := models.GetOALicenseInfo(page, pageSize, "read_all_license", "", "", "")
  66. // if err != nil {
  67. // global.Logger.Errorln("read_all_license查询错误:", err.Error())
  68. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("read_all_license查询错误: ", err.Error())})
  69. // return
  70. // }
  71. // var datas []api.AllLicenseInfoResponse
  72. // for _, v := range *applications {
  73. // data := api.AllLicenseInfoResponse{
  74. // UniqueID: utils.ToString(v.LicInfo.UniqueID),
  75. // OARequestID: utils.ToInt64(v.LicInfo.OARequestID),
  76. // OARequestName: utils.ToString(v.LicInfo.OARequestName),
  77. // OARequestNameNew: utils.ToString(v.LicInfo.OARequestNameNew),
  78. // OARequestNameHTMLNew: utils.ToString(v.LicInfo.OARequestNameHTMLNew),
  79. // OAGLXMId: utils.ToInt64(v.LicInfo.OAGLXMID),
  80. // OAGLXMName: utils.ToString(v.LicInfo.OAGLXMName),
  81. // OASQSJ: utils.ToTimeString(v.LicInfo.OASQSJ),
  82. // OASalespersonName: utils.ToString(v.LicInfo.OASalespersonName),
  83. // OAXSJSYX: utils.ToString(v.LicInfo.OAXSJSYX),
  84. // OAOperationsPersonName: utils.ToString(v.LicInfo.OAOperationsPersonName),
  85. // OAJFJSYX: utils.ToString(v.LicInfo.OAJFJSYX),
  86. // OASYDW: utils.ToString(v.LicInfo.OASYDW),
  87. // OAXMXXMS: utils.ToString(v.LicInfo.OAXMXXMS),
  88. // OAJDS: utils.ToInt64(v.LicInfo.OAJDS),
  89. // OANodeCount: utils.ToInt64(v.LicInfo.OANodeCount),
  90. // OAProductCode: utils.ToString(v.LicInfo.OAProductCode),
  91. // OAProductName: utils.ToString(v.LicInfo.OAProductName),
  92. // OAProductVersion: utils.ToString(v.LicInfo.OAProductVersion),
  93. // OACPU: utils.ToString(v.LicInfo.OACPU),
  94. // OAOperatingSystem: utils.ToString(v.LicInfo.OAOperatingSystem),
  95. // OAMainMAC: utils.ToString(v.LicInfo.OAMainMAC),
  96. // OASecondMAC: utils.ToString(v.LicInfo.OASecondMAC),
  97. // OACreationDate: utils.ToString(v.LicInfo.OACreationDate),
  98. // OACreationTime: utils.ToString(v.LicInfo.OACreationTime),
  99. // OALastOperateDate: utils.ToString(v.LicInfo.OALastOperateDate),
  100. // OALastOperateTime: utils.ToString(v.LicInfo.OALastOperateTime),
  101. // CaptureTime: utils.ToTimeString(v.LicInfo.CaptureTime),
  102. // DelTime: utils.ToTimeString(v.LicInfo.DelTime),
  103. // LastOperateTime: utils.ToTimeString(v.LicInfo.LastOperateTime),
  104. // LicenseUniqueID: utils.ToString(v.GenrateInfo.LicenseUniqueID),
  105. // LicenseFlage: utils.ToString(v.GenrateInfo.LicenseFlage),
  106. // Lic1: utils.ToString(v.GenrateInfo.Lic1),
  107. // Lic2: utils.ToString(v.GenrateInfo.Lic2),
  108. // CreatorGenerate: utils.ToTimeString(v.GenrateInfo.CreatorGenerate),
  109. // }
  110. // datas = append(datas, data)
  111. // }
  112. // c.JSON(http.StatusOK, gin.H{
  113. // "data": datas,
  114. // "page": page,
  115. // "pageSize": pageSize,
  116. // "total": total,
  117. // })
  118. // }
  119. func GetAllLicenseInfoController(c *gin.Context) {
  120. //获取请求参数
  121. page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
  122. pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10"))
  123. //获取用户信息和权限
  124. userInfo, err := getLoginInfo(c)
  125. if err != nil {
  126. c.JSON(http.StatusUnauthorized, gin.H{"error": "用户信息不存在"})
  127. c.Abort()
  128. }
  129. // if t := userInfo.Permission[middlewares.ReadAllLicense]; t == middlewares.ReadAllLicense {
  130. // }
  131. var datas [][]api.AllLicenseInfoResponse
  132. var Total int
  133. // 初始化存储 `OARequestID` 相同的 `ApiLicenseInfoTemp` 列表的 map
  134. oaRequestIDMap := make(map[int64][]api.AllLicenseInfoResponse)
  135. if userInfo.Permission[middlewares.ReadAllLicense] == middlewares.ReadAllLicense {
  136. datas1, total, err := models.GetOALicenseInfo(pageSize, page, "read_all_license", "", "", "")
  137. if err != nil {
  138. global.Logger.Errorln("error", err.Error())
  139. c.JSON(http.StatusNotFound, gin.H{"error": err.Error()})
  140. return
  141. }
  142. Total = total
  143. //var ApiLicenseInfoTemp []api.AllLicenseInfoResponse
  144. for _, data := range *datas1 {
  145. ApiLicenseInfo := api.AllLicenseInfoResponse{
  146. UniqueID: utils.ToString(data.LicInfo.UniqueID),
  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. c.JSON(http.StatusOK, gin.H{
  297. "data": datas,
  298. "page": page,
  299. "pageSize": pageSize,
  300. "total": Total,
  301. })
  302. }
  303. func GenerateOALicenseStrController(c *gin.Context) {
  304. var request api.GenerateLicenseStrRequest
  305. if err := c.ShouldBindJSON(&request); err != nil {
  306. global.Logger.Errorln("解析request失败 : ", err.Error())
  307. c.JSON(400, gin.H{
  308. "error": fmt.Sprintf("解析请求失败: ", err.Error()),
  309. })
  310. return
  311. }
  312. //生成单独的license
  313. if request.UniqueID != "" {
  314. if err := generateLicenseStrSub(request.UniqueID); err != nil {
  315. global.Logger.Errorf("请联系管理员, LicenseInfo%v生成失败: %v\n", request.UniqueID, err.Error())
  316. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("请联系管理员, LicenseInfo%v生成失败: %v", request.UniqueID, err.Error())})
  317. return
  318. }
  319. } else if request.OARequestId != "" {
  320. //一个OARequestId会有多条数据UniqueID
  321. OALics, _, err := models.GetOALicenseInfo(0, 0, "", "", "", request.OARequestId)
  322. if err != nil || OALics == nil {
  323. global.Logger.Errorln("LicenseInfo数据查询失败: ", err.Error())
  324. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
  325. return
  326. }
  327. //生成license,已生成的不管
  328. for _, v := range *OALics {
  329. if v.GenrateInfo.LicenseFlage.String == "未生成" {
  330. err := generateLicenseStrSub(utils.ToString(v.LicInfo.UniqueID))
  331. if err != nil {
  332. global.Logger.Errorf("请联系管理员, LicenseInfo%v生成失败: %v\n", v.LicInfo.UniqueID, err.Error())
  333. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("请联系管理员, LicenseInfo%v生成失败: %v", v.LicInfo.UniqueID, err.Error())})
  334. return
  335. }
  336. }
  337. }
  338. } else {
  339. global.Logger.Errorln("未指定明确License行 ")
  340. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("未指定明确License行 ")})
  341. return
  342. }
  343. //刷新缓存
  344. // layout := "2006-01-02 15:04:05"
  345. // startTime, _ := time.Parse(layout, "2023-07-30 14:00:00")
  346. // endTime, _ := time.Parse(layout, "2023-08-26 16:00:00")
  347. // if err := global.LicCache.RefreshCache(global.XuguDB, startTime, endTime, 0, 20); err != nil {
  348. // global.Logger.Errorln("LicenseInfo数据刷新缓存失败: ", err.Error())
  349. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据刷新缓存失败: ", err.Error())})
  350. // return
  351. // }
  352. // fmt.Printf("LicenseInfo数据刷新缓存成功 %#v\n", global.LicCache.GetData())
  353. // applications, _, err := models.GetOALicenseInfo(0, 1, "", request.UniqueID, "")
  354. // if err != nil {
  355. // global.Logger.Errorln("LicenseInfo数据查询失败: ", err.Error())
  356. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
  357. // return
  358. // }
  359. // pj := license.ProjectInfo{
  360. // ProjectName: utils.ToString((*applications)[0].LicInfo.OAProductName),
  361. // UserName: utils.ToString((*applications)[0].LicInfo.OAProductVersion),
  362. // UserAddr: "未填写",
  363. // SerialNumber: "未填写",
  364. // }
  365. // ei := license.EnvironmentInfo{
  366. // CpuSN: "未填写",
  367. // BaseboardSN: "未填写",
  368. // MacAddr: utils.ToString((*applications)[0].LicInfo.OAMainMAC),
  369. // DiskID: "未填写",
  370. // IPAddr: "未填写",
  371. // }
  372. // LicType := utils.SwitchLicenseType(utils.ToString((*applications)[0].LicInfo.OAProductName))
  373. // lI := license.LicenseInfo{
  374. // GenDate: "2024-07-15",
  375. // ExpireDate: "9999-12-31",
  376. // LicenseType: LicType,
  377. // LicenseVersion: 1,
  378. // HardType: 3,
  379. // }
  380. //这里调用的是license模块中的生成license的方法
  381. // res := true
  382. // if res {
  383. // //生成副主节点license
  384. // if (*applications)[0].LicInfo.OASecondMAC.String != "" {
  385. // // var licStr2 []byte
  386. // // ei.MacAddr = applications[0].SecondaryMasterMacAddress
  387. // // licStr2 = license.GenerateLicense(pj, ei, lI)
  388. // err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"))
  389. // } else {
  390. // //fmt.Println("licStr licStr2", licStr, licStr2)
  391. // //插入到数据库
  392. // err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"), nil)
  393. // }
  394. // } else {
  395. // licStr := license.GenerateLicense(pj, ei, lI)
  396. // //生成副主节点license
  397. // if (*applications)[0].LicInfo.OASecondMAC.String != "" {
  398. // var licStr2 []byte
  399. // ei.MacAddr = (*applications)[0].LicInfo.OASecondMAC.String
  400. // licStr2 = license.GenerateLicense(pj, ei, lI)
  401. // err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), licStr, licStr2)
  402. // } else {
  403. // //插入到数据库
  404. // err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), licStr, nil)
  405. // }
  406. // }
  407. // if err != nil {
  408. // fmt.Println(err)
  409. // if err := c.ShouldBindJSON(&request); err != nil {
  410. // c.JSON(400, gin.H{
  411. // "error": err.Error(),
  412. // })
  413. // return
  414. // }
  415. // }
  416. // if err != nil {
  417. // fmt.Println(err)
  418. // if err := c.ShouldBindJSON(&request); err != nil {
  419. // global.Logger.Errorln("LicenseInfo数据查询失败: ", err.Error())
  420. // c.JSON(400, gin.H{
  421. // "error": fmt.Sprintf("数据查询失败: ", err.Error()),
  422. // })
  423. // return
  424. // }
  425. // }
  426. c.JSON(http.StatusOK, gin.H{
  427. "success": true,
  428. "message": "License生成成功!",
  429. })
  430. //xlsx.ExcelToMail(lic, licStr, licStr2)
  431. }
  432. func generateLicenseStrSub(UniqueID string) error {
  433. var applications *[]models.OALicenseInfo
  434. var err error
  435. if UniqueID != "" {
  436. applications, _, err = models.GetOALicenseInfo(0, 1, "", UniqueID, "", "")
  437. if err != nil {
  438. global.Logger.Errorln("LicenseInfo数据查询失败: ", err.Error())
  439. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
  440. return errors.Errorf("LicenseInfo数据查询失败:: %v", err.Error())
  441. }
  442. }
  443. // (*applications)[0].LicInfo.UniqueID.String = ""
  444. // (*applications)[0].LicInfo.UniqueID.Valid = false
  445. // (*applications)[0].GenrateInfo.LicenseUniqueID.String = ""
  446. // (*applications)[0].GenrateInfo.LicenseUniqueID.Valid = false
  447. fmt.Printf("applications%#v\n", applications)
  448. //检测该数据是否与oa库数据库一致
  449. isCheck, err := models.CheckLicenseInfoInOADB(&(*applications)[0].LicInfo)
  450. if err != nil {
  451. global.Logger.Errorln("LicenseInfo数据对比oa库 查询失败: ", err.Error())
  452. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
  453. return errors.Errorf("LicenseInfo数据对比oa库 查询失败 %v", err.Error())
  454. }
  455. if !isCheck {
  456. global.Logger.Errorln("LicenseInfo数据对比oa库 不一致")
  457. return errors.Errorf("LicenseInfo数据对比oa库 数据不一致 \n")
  458. }
  459. //checkTemp := CompareOALicenseInfo(&(*applications)[0], OALicenseInfo)
  460. //如果不一致,则修改源数据
  461. // if checkTemp != true {
  462. // global.Logger.Errorln("LicenseInfo数据对比oa库 不一致")
  463. // // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
  464. // OALicenseInfo.LicInfo.UniqueID = (*applications)[0].LicInfo.UniqueID
  465. // if err := models.UpdatelicenseInfoRow(*OALicenseInfo); err != nil {
  466. // global.Logger.Errorln("LicenseInfo数据对比oa库 不一致,更新数据库失败: ", err.Error())
  467. // return errors.Errorf("LicenseInfo数据对比oa库 不一致,更新数据库失败:%v", err.Error())
  468. // }
  469. // //刷新缓存
  470. // layout := "2006-01-02 15:04:05"
  471. // startTime, _ := time.Parse(layout, "2023-07-30 14:00:00")
  472. // endTime, _ := time.Parse(layout, "2023-08-26 16:00:00")
  473. // if err := global.LicCache.RefreshCache(global.XuguDB, startTime, endTime, 0, 20); err != nil {
  474. // global.Logger.Errorln("LicenseInfo数据刷新缓存失败: ", err.Error())
  475. // return errors.Errorf("LicenseInfo数据刷新缓存失败:")
  476. // }
  477. // return errors.Errorf("LicenseInfo数据对比oa库 不一致,清刷新页面")
  478. //}
  479. // pj := license.ProjectInfo{
  480. // ProjectName: utils.ToString((*applications)[0].LicInfo.OAProductName),
  481. // UserName: utils.ToString((*applications)[0].LicInfo.OAProductVersion),
  482. // UserAddr: "未填写",
  483. // SerialNumber: "未填写",
  484. // }
  485. // ei := license.EnvironmentInfo{
  486. // CpuSN: "未填写",
  487. // BaseboardSN: "未填写",
  488. // MacAddr: utils.ToString((*applications)[0].LicInfo.OAMainMAC),
  489. // DiskID: "未填写",
  490. // IPAddr: "未填写",
  491. // }
  492. // LicType := utils.SwitchLicenseType(utils.ToString((*applications)[0].LicInfo.OAProductName))
  493. // lI := license.LicenseInfo{
  494. // GenDate: "2024-07-15",
  495. // ExpireDate: "9999-12-31",
  496. // LicenseType: LicType,
  497. // LicenseVersion: 1,
  498. // HardType: 3,
  499. // }
  500. //生成副主节点license
  501. if applications == nil {
  502. global.Logger.Errorln("LicenseInfo数据生成失败 ,数据查询为空 ")
  503. //c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("LicenseInfo数据生成失败 ,数据查询为空: ", err.Error())})
  504. return errors.Errorf("LicenseInfo数据生成失败 ,数据查询为空 ")
  505. }
  506. if (*applications)[0].LicInfo.OASecondMAC.String != "" {
  507. // var licStr2 []byte
  508. // ei.MacAddr = applications[0].SecondaryMasterMacAddress
  509. // licStr2 = license.GenerateLicense(pj, ei, lI)
  510. err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"))
  511. if err != nil {
  512. global.Logger.Errorln("LicenseInfo生成插入失败: ", err.Error())
  513. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
  514. return errors.Errorf("LicenseInfo生成插入失败:: ", err.Error())
  515. }
  516. } else {
  517. //fmt.Println("licStr licStr2", licStr, licStr2)
  518. //插入到数据库
  519. err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"), nil)
  520. if err != nil {
  521. global.Logger.Errorln("LicenseInfo2生成插入失败: ", err.Error())
  522. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
  523. return errors.Errorf("LicenseInfo2生成插入失败:: ", err.Error())
  524. }
  525. }
  526. return nil
  527. }
  528. // func CheckDistributeOALicenseToOaDbController(c *gin.Context) {
  529. // var CheckDisLicense struct {
  530. // LicUniqueID string `json:"lic_unique_id"`
  531. // }
  532. // var request CheckDisLicense
  533. // if err := c.ShouldBindJSON(&request); err != nil {
  534. // global.Logger.Errorln("license分发请求解析失败 %s", err.Error())
  535. // c.JSON(400, gin.H{
  536. // "error": fmt.Sprintf("license分发请求解析失败 %s", err.Error()),
  537. // })
  538. // return
  539. // }
  540. // //检测该数据是否与oa库数据库一致
  541. // OALicenseInfo, err := models.CheckLicenseInfoInOADB((*applications)[0].LicInfo.ID)
  542. // if err != nil {
  543. // global.Logger.Errorln("LicenseInfo数据对比oa库 查询失败: ", err.Error())
  544. // // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
  545. // return errors.Errorf("LicenseInfo数据对比oa库 查询失败 %v", err.Error())
  546. // }
  547. // checkTemp := CompareOALicenseInfo(&(*applications)[0], OALicenseInfo)
  548. // //如果不一致,则修改源数据
  549. // }
  550. /*
  551. 对单条lic或是申请单的处理
  552. 检测lic是否以及分发过给用户
  553. */
  554. func DistributeOALicenseController(c *gin.Context) {
  555. //判断是否发邮件
  556. //数据库查询license信息
  557. var request api.DistributeLicenseRequest
  558. if err := c.ShouldBindJSON(&request); err != nil {
  559. global.Logger.Errorln("license分发请求解析失败 %s", err.Error())
  560. c.JSON(400, gin.H{
  561. "error": fmt.Sprintf("license分发请求解析失败 %s", err.Error()),
  562. })
  563. return
  564. }
  565. var licToUser []string
  566. if request.OaRequestId != "" {
  567. //获取该license申请单的所有子信息
  568. datas, _, err := models.GetOALicenseInfo(0, 0, "", "", "", request.OaRequestId)
  569. if err != nil {
  570. global.Logger.Errorln("license分发请求查询license申请单的所有子信息失败 %s", err.Error())
  571. c.JSON(400, gin.H{
  572. "error": fmt.Sprintf("license分发请求解析失败 %s", err.Error()),
  573. })
  574. return
  575. }
  576. for _, oaLicInfo := range *datas {
  577. users, err := checkDistributeToUser(&oaLicInfo, request.UserUniqueIDs, request.UserNames)
  578. if err != nil {
  579. global.Logger.Errorln("license分发请求检测是否已发放给用户失败 %s", err.Error())
  580. c.JSON(400, gin.H{
  581. "error": fmt.Sprintf("license分发请求解析失败 %s", err.Error()),
  582. })
  583. return
  584. }
  585. if len(users) != 0 {
  586. c.JSON(400, gin.H{
  587. "success": false,
  588. "error": fmt.Sprintf("该license已经分发给了该用户: %s\n", licToUser),
  589. })
  590. return
  591. }
  592. }
  593. } else if request.LicenseUniqueID != "" {
  594. //查询该license是否已经分发给了该用户
  595. for i, v := range request.UserUniqueIDs {
  596. fmt.Println("request.UserUniqueIDs", request.LicenseUniqueID, v)
  597. if isTurn, err := models.CheckLicenseToUser(request.LicenseUniqueID, v); err != nil {
  598. global.Logger.Errorln("该license查询是否分发给用户失败 ", v, err.Error())
  599. c.JSON(400, gin.H{
  600. "success": false,
  601. "error": fmt.Sprintf("该license查询是否分发给用户失败: %s", v, err.Error()),
  602. })
  603. return
  604. } else if isTurn {
  605. global.Logger.Info("该license已经分发给了该用户 ", v)
  606. licToUser = append(licToUser, request.UserNames[i])
  607. }
  608. }
  609. }
  610. applications, _, err := models.GetOALicenseInfo(1, 1, "", request.LicenseUniqueID, "", "")
  611. if err != nil {
  612. c.JSON(http.StatusBadRequest, gin.H{"success": false,
  613. "error": err.Error()})
  614. return
  615. }
  616. //如果lic1为空则报错
  617. if (*applications)[0].GenrateInfo.Lic1.String == "" {
  618. global.Logger.Errorln("license未生成 ")
  619. c.JSON(http.StatusBadRequest, gin.H{"success": false,
  620. "error": "license未生成"})
  621. return
  622. }
  623. //邮箱不空则发送
  624. var EmailArray []string
  625. if request.Emails != "" {
  626. fmt.Println("request.Emails", request.Emails)
  627. EmailArray = strings.Split(request.Emails, ",")
  628. fmt.Println("EmailArray", EmailArray)
  629. em, err := email.BuildEmail(&(*applications)[0], EmailArray, (*applications)[0].GenrateInfo.Lic1.String, (*applications)[0].GenrateInfo.Lic2.String)
  630. if err != nil {
  631. global.Logger.Errorln("邮件生成失败", err.Error())
  632. c.JSON(400, gin.H{
  633. "success": false,
  634. "error": fmt.Sprintf("邮件生成失败: ", err.Error()),
  635. })
  636. return
  637. }
  638. err = email.SendEmail(em)
  639. if err != nil {
  640. global.Logger.Errorln("邮件发送失败", err.Error())
  641. c.JSON(400, gin.H{
  642. "success": false,
  643. "error": fmt.Sprintf("邮件发送失败: ", err.Error()),
  644. })
  645. return
  646. }
  647. }
  648. for i, v := range request.UserUniqueIDs {
  649. err = models.InsertlicenseRecordByUserRow((*applications)[0].LicInfo.UniqueID.String, v, request.UserAccounts[i], request.OperatorUniqueID)
  650. if err != nil {
  651. global.Logger.Errorln("数据库插入失败: ", err.Error())
  652. c.JSON(400, gin.H{
  653. "success": false,
  654. "error": fmt.Sprintf("插入失败: ", err.Error()),
  655. })
  656. return
  657. }
  658. }
  659. if len(EmailArray) != 0 {
  660. for _, v := range EmailArray {
  661. err = models.InsertlicenseRecordByEmailRow((*applications)[0].LicInfo.UniqueID.String, v, request.OperatorUniqueID)
  662. if err != nil {
  663. global.Logger.Errorln("数据库插入失败: ", err.Error())
  664. c.JSON(400, gin.H{
  665. "error": fmt.Sprintf("插入失败: ", err.Error()),
  666. })
  667. return
  668. }
  669. }
  670. }
  671. //刷新缓存
  672. // layout := "2006-01-02 15:04:05"
  673. // startTime, _ := time.Parse(layout, "2023-07-30 14:00:00")
  674. // endTime, _ := time.Parse(layout, "2023-08-26 16:00:00")
  675. // if err := global.LicCache.RefreshCache(global.XuguDB, startTime, endTime, 0, 20); err != nil {
  676. // global.Logger.Errorln("LicenseInfo数据刷新缓存失败: ", err.Error())
  677. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据刷新缓存失败: ", err.Error())})
  678. // return
  679. // }
  680. c.JSON(http.StatusOK, gin.H{
  681. "success": true,
  682. "data": "分发成功!",
  683. })
  684. }
  685. // 获取分发历史
  686. func GetlicenseRecordInfo(c *gin.Context) {
  687. // type licenseRecordInfoRequest struct {
  688. // UniqueID string `json:"uniqueID"`
  689. // Id int `json:"id"`
  690. // }
  691. var request api.GetDistributeHistoryRequest
  692. if err := c.ShouldBindJSON(&request); err != nil {
  693. global.Logger.Errorln("解析请求失败 ", err.Error())
  694. c.JSON(400, gin.H{
  695. "error": fmt.Sprintf("解析请求失败: ", err.Error()),
  696. })
  697. return
  698. }
  699. LicUers, err := models.GetlicenseRecordByUser(request.UniqueID)
  700. if err != nil {
  701. global.Logger.Errorln("数据查询失败 ", err.Error())
  702. c.JSON(400, gin.H{
  703. "error": fmt.Sprintf("数据查询失败: ", err.Error()),
  704. })
  705. return
  706. }
  707. LicEmails, err := models.GetlicenseRecordByEmail(request.UniqueID)
  708. if err != nil {
  709. global.Logger.Errorln("数据查询失败 ", err.Error())
  710. c.JSON(400, gin.H{
  711. "error": fmt.Sprintf("数据查询失败: ", err.Error()),
  712. })
  713. return
  714. }
  715. licR := models.LicenseRecord{
  716. LicenseRecordToUser: LicUers,
  717. LicenseRecordToEmails: LicEmails,
  718. }
  719. fmt.Println("分发历史applications", licR)
  720. c.JSON(http.StatusOK, gin.H{
  721. "success": true,
  722. "data": licR,
  723. })
  724. }
  725. // 更新license信息
  726. func UpdateLicense(c *gin.Context) {
  727. var license api.UpdateLicenseInfoRequest
  728. // 绑定JSON数据到License结构体
  729. if err := c.ShouldBindJSON(&license); err != nil {
  730. c.JSON(http.StatusBadRequest, gin.H{
  731. "success": false,
  732. "error": err.Error(),
  733. })
  734. return
  735. }
  736. // fmt.Printf(" license.ApplicationDate: %#v ", license)
  737. err := models.UpdatelicenseInfoRow(models.OALicenseInfo{
  738. LicInfo: models.TargetOALicenseInfo{
  739. UniqueID: sql.NullString{
  740. String: license.UniqueID,
  741. Valid: true, // 因为你有一个有效的字符串,所以设置为 true
  742. },
  743. OARequestName: sql.NullString{
  744. String: license.Creator,
  745. Valid: true, // 因为你有一个有效的字符串,所以设置为 true
  746. },
  747. OACreationDate: sql.NullString{
  748. String: license.ApplicationDate,
  749. Valid: true, // 因为你有一个有效的字符串,所以设置为 true
  750. },
  751. OAGLXMName: sql.NullString{
  752. String: license.AssociatedProject,
  753. Valid: true, // 因为你有一个有效的字符串,所以设置为 true
  754. },
  755. OANodeCount: sql.NullInt64{
  756. Int64: license.NodeCount,
  757. Valid: true, // 因为你有一个有效的字符串,所以设置为 true
  758. },
  759. OASalespersonName: sql.NullString{
  760. String: license.SalesPerson,
  761. Valid: true, // 因为你有一个有效的字符串,所以设置为 true
  762. },
  763. OAOperationsPersonName: sql.NullString{
  764. String: license.SupportPerson,
  765. Valid: true, // 因为你有一个有效的字符串,所以设置为 true
  766. },
  767. OAXSJSYX: sql.NullString{
  768. String: license.SalesEmail,
  769. Valid: true, // 因为你有一个有效的字符串,所以设置为 true
  770. },
  771. OAJFJSYX: sql.NullString{
  772. String: license.SupportEmail,
  773. Valid: true, // 因为你有一个有效的字符串,所以设置为 true
  774. },
  775. OAJDS: sql.NullInt64{
  776. Int64: license.TotalNodes,
  777. Valid: true, // 因为你有一个有效的字符串,所以设置为 true
  778. },
  779. OAProductName: sql.NullString{
  780. String: license.ProductName,
  781. Valid: true, // 因为你有一个有效的字符串,所以设置为 true
  782. },
  783. OAProductVersion: sql.NullString{
  784. String: license.Version,
  785. Valid: true, // 因为你有一个有效的字符串,所以设置为 true
  786. },
  787. OASYDW: sql.NullString{
  788. String: license.Company,
  789. Valid: true, // 因为你有一个有效的字符串,所以设置为 true
  790. },
  791. },
  792. })
  793. if err != nil {
  794. global.Logger.Errorln("数据插入失败 ", err.Error())
  795. c.JSON(http.StatusBadRequest, gin.H{"success": false, "error": fmt.Sprintf("数据插入失败: ", err.Error())})
  796. return
  797. }
  798. //刷新缓存
  799. // layout := "2006-01-02 15:04:05"
  800. // startTime, _ := time.Parse(layout, "2023-07-30 14:00:00")
  801. // endTime, _ := time.Parse(layout, "2023-08-26 16:00:00")
  802. // if err := global.LicCache.RefreshCache(global.XuguDB, startTime, endTime, 0, 20); err != nil {
  803. // global.Logger.Errorln("LicenseInfo数据刷新缓存失败: ", err.Error())
  804. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据刷新缓存失败: ", err.Error())})
  805. // return
  806. // }
  807. c.JSON(http.StatusOK, gin.H{
  808. "success": true,
  809. })
  810. }
  811. // 删除一行lincese信息
  812. func DelLicenseInfoRow(c *gin.Context) {
  813. // 解析 JSON 请求体
  814. var request UniqueIDRequest
  815. if err := c.ShouldBindJSON(&request); err != nil {
  816. c.JSON(400, gin.H{
  817. "error": err.Error(),
  818. })
  819. return
  820. }
  821. err := models.DelLicenseInfoRow(request.UniqueID)
  822. if err != nil {
  823. global.Logger.Errorln("删除一行License信息失败 ", err.Error())
  824. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("删除失败: ", err.Error())})
  825. return
  826. }
  827. //刷新缓存
  828. // layout := "2006-01-02 15:04:05"
  829. // startTime, _ := time.Parse(layout, "2023-07-30 14:00:00")
  830. // endTime, _ := time.Parse(layout, "2023-08-26 16:00:00")
  831. // if err := global.LicCache.RefreshCache(global.XuguDB, startTime, endTime, 0, 20); err != nil {
  832. // global.Logger.Errorln("LicenseInfo数据刷新缓存失败: ", err.Error())
  833. // c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据刷新缓存失败: ", err.Error())})
  834. // return
  835. // }
  836. c.JSON(http.StatusOK, gin.H{
  837. "success": true,
  838. "data": "删除成功",
  839. })
  840. }
  841. // 主动抓取一次license信息到支撑库
  842. func CaptureLicenseOnceToDb(c *gin.Context) {
  843. if err := capture.CaptureOnce(global.OaDB, global.XuguDB); err != nil {
  844. global.Logger.Errorln("主动抓取license信息到支撑库失败: ", err.Error())
  845. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("主动抓取license信息数据失败: %s", err.Error())})
  846. return
  847. }
  848. c.JSON(http.StatusOK, gin.H{
  849. "success": true,
  850. })
  851. }
  852. func SearchLicInfoToDb(c *gin.Context) {
  853. // var request string
  854. // if err := c.ShouldBindJSON(&request); err != nil {
  855. // c.JSON(400, gin.H{
  856. // "error": err.Error(),
  857. // })
  858. // return
  859. // }
  860. request := c.Param("data")
  861. if datas, err := models.SearchLicInfoToDb(request); err != nil {
  862. global.Logger.Errorln("搜索license信息失败: ", err.Error())
  863. c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("搜索license信息失败失败: %s", err.Error())})
  864. return
  865. } else {
  866. c.JSON(http.StatusOK, gin.H{
  867. "success": true,
  868. "data": datas,
  869. })
  870. }
  871. }