api_management.go 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581
  1. package v1_0
  2. import (
  3. "adm-gateway/errors"
  4. param_v1 "adm-gateway/param/v1"
  5. "adm-gateway/pb"
  6. v1 "adm-gateway/pb/v1"
  7. "fmt"
  8. "net/http"
  9. "github.com/gin-gonic/gin"
  10. "git.getensh.com/common/gopkgsv2/logger"
  11. "git.getensh.com/common/gopkgsv2/tasker/httptasker"
  12. "git.getensh.com/common/gopkgsv2/util"
  13. "go.uber.org/zap"
  14. )
  15. // API管理表 t_adm_api_management
  16. // APIList godoc
  17. // @Summary API管理
  18. // @Description API管理
  19. // @Tags api_management,v1.0
  20. // @Accept json
  21. // @Produce json
  22. // @Param token header string true "jwt token"
  23. // @Param api_no query string false "API编号"
  24. // @Param desc query string false "描述"
  25. // @Param page query int32 false "页码"
  26. // @Param page_size query int32 false "每页数量,默认10"
  27. // @Success 200 {object} param_v1.GetAPIListResponse
  28. // @Failure 500 {object} base.HTTPError
  29. // @Router /api/v1.0/api [get]
  30. func (c *Controller) APIList(ctx *gin.Context) {
  31. // 解析参数
  32. req := &param_v1.GetAPIListRequest{}
  33. parseParamTask := func() error {
  34. err := util.ShouldBind(ctx, nil, nil, &req.GetAPIListQuery, nil)
  35. if err != nil {
  36. logger.Error("func",
  37. zap.String("call", "util.ShouldBind"),
  38. zap.String("error", err.Error()))
  39. return errors.ParamsError
  40. }
  41. return nil
  42. }
  43. // 业务处理
  44. handleServiceTask := func() error {
  45. // 响应数据
  46. resp := &param_v1.GetAPIListResponse{}
  47. r := v1.APIListRequest{
  48. ApiNo: req.ApiNo,
  49. Desc: req.Desc,
  50. Page: req.Page,
  51. PageSize: req.PageSize,
  52. }
  53. reply, err := pb.Management.APIList(ctx.Request.Context(), &r)
  54. if err != nil {
  55. s, _ := json.MarshalToString(r)
  56. logger.Error("func",
  57. zap.String("call", "pb.management.APIList"),
  58. zap.String("params", s),
  59. zap.String("error", err.Error()))
  60. return errors.ErrorTransForm(err)
  61. }
  62. if reply.List == nil {
  63. reply.List = make([]*v1.APIList, 0)
  64. }
  65. resp.Data = reply
  66. ctx.JSON(http.StatusOK, resp)
  67. return nil
  68. }
  69. // 执行任务
  70. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  71. }
  72. // CheckAPI godoc
  73. // @Summary 查看API
  74. // @Description 查看API
  75. // @Tags api_management,v1.0
  76. // @Accept json
  77. // @Produce json
  78. // @Param token header string true "jwt token"
  79. // @Param api_id query int64 true "API id"
  80. // @Success 200 {object} param_v1.GetCheckAPIResponse
  81. // @Failure 500 {object} base.HTTPError
  82. // @Router /api/v1.0/api/check [get]
  83. func (c *Controller) CheckAPI(ctx *gin.Context) {
  84. // 解析参数
  85. req := &param_v1.GetCheckAPIRequest{}
  86. parseParamTask := func() error {
  87. err := util.ShouldBind(ctx, nil, nil, &req.GetCheckAPIQuery, nil)
  88. if err != nil {
  89. logger.Error("func",
  90. zap.String("call", "util.ShouldBind"),
  91. zap.String("error", err.Error()))
  92. return errors.ParamsError
  93. }
  94. return nil
  95. }
  96. // 业务处理
  97. handleServiceTask := func() error {
  98. // 响应数据
  99. resp := &param_v1.GetCheckAPIResponse{}
  100. r := v1.CheckAPIRequest{
  101. ApiId: req.ApiId,
  102. }
  103. reply, err := pb.Management.CheckAPI(ctx.Request.Context(), &r)
  104. if err != nil {
  105. s, _ := json.MarshalToString(r)
  106. logger.Error("func",
  107. zap.String("call", "pb.management.CheckAPI"),
  108. zap.String("params", s),
  109. zap.String("error", err.Error()))
  110. return errors.ErrorTransForm(err)
  111. }
  112. resp.Data = reply
  113. ctx.JSON(http.StatusOK, resp)
  114. return nil
  115. }
  116. // 执行任务
  117. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  118. }
  119. // DeleteAPI godoc
  120. // @Summary 删除API
  121. // @Description 删除API
  122. // @Tags api_management,v1.0
  123. // @Accept json
  124. // @Produce json
  125. // @Param token header string true "jwt token"
  126. // @Param api_id path int64 true "API id"
  127. // @Success 200 {object} param_v1.GetDeleteAPIResponse
  128. // @Failure 500 {object} base.HTTPError
  129. // @Router /api/v1.0/api/delete/{api_id} [delete]
  130. func (c *Controller) DeleteAPI(ctx *gin.Context) {
  131. // 解析参数
  132. req := &param_v1.GetDeleteAPIRequest{}
  133. parseParamTask := func() error {
  134. err := util.ShouldBind(ctx, nil, &req.GetDeleteAPIPath, nil, nil)
  135. if err != nil {
  136. logger.Error("func",
  137. zap.String("call", "util.ShouldBind"),
  138. zap.String("error", err.Error()))
  139. return errors.ParamsError
  140. }
  141. return nil
  142. }
  143. // 业务处理
  144. handleServiceTask := func() error {
  145. // 响应数据
  146. resp := &param_v1.GetDeleteAPIResponse{}
  147. r := v1.DeleteAPIRequest{
  148. ApiId: req.ApiId,
  149. }
  150. _, err := pb.Management.DeleteAPI(ctx.Request.Context(), &r)
  151. if err != nil {
  152. s, _ := json.MarshalToString(r)
  153. logger.Error("func",
  154. zap.String("call", "pb.management.DeleteAPI"),
  155. zap.String("params", s),
  156. zap.String("error", err.Error()))
  157. return errors.ErrorTransForm(err)
  158. }
  159. ctx.JSON(http.StatusOK, resp)
  160. return nil
  161. }
  162. // 执行任务
  163. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  164. }
  165. // 密钥管理表 t_adm_key_management
  166. // KeyList godoc
  167. // @Summary 密钥管理
  168. // @Description 密钥管理
  169. // @Tags api_management,v1.0
  170. // @Accept json
  171. // @Produce json
  172. // @Param token header string true "jwt token"
  173. // @Param key query string false "密钥"
  174. // @Param desc query string false "描述"
  175. // @Param page query int32 false "页码"
  176. // @Param page_size query int32 false "每页数量,默认10"
  177. // @Success 200 {object} param_v1.GetKeyListResponse
  178. // @Failure 500 {object} base.HTTPError
  179. // @Router /api/v1.0/api/key [get]
  180. func (c *Controller) KeyList(ctx *gin.Context) {
  181. // 解析参数
  182. req := &param_v1.GetKeyListRequest{}
  183. parseParamTask := func() error {
  184. err := util.ShouldBind(ctx, nil, nil, &req.GetKeyListQuery, nil)
  185. if err != nil {
  186. logger.Error("func",
  187. zap.String("call", "util.ShouldBind"),
  188. zap.String("error", err.Error()))
  189. return errors.ParamsError
  190. }
  191. return nil
  192. }
  193. // 业务处理
  194. handleServiceTask := func() error {
  195. // 响应数据
  196. resp := &param_v1.GetKeyListResponse{}
  197. r := v1.KeyListRequest{
  198. Key: req.Key,
  199. Desc: req.Desc,
  200. Page: req.Page,
  201. PageSize: req.PageSize,
  202. }
  203. reply, err := pb.Management.KeyList(ctx.Request.Context(), &r)
  204. if err != nil {
  205. s, _ := json.MarshalToString(r)
  206. logger.Error("func",
  207. zap.String("call", "pb.management.KeyList"),
  208. zap.String("params", s),
  209. zap.String("error", err.Error()))
  210. return errors.ErrorTransForm(err)
  211. }
  212. if reply.List == nil {
  213. reply.List = make([]*v1.KeyList, 0)
  214. }
  215. resp.Data = reply
  216. ctx.JSON(http.StatusOK, resp)
  217. return nil
  218. }
  219. // 执行任务
  220. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  221. }
  222. // CreateKey godoc
  223. // @Summary 新增密钥
  224. // @Description 新增密钥
  225. // @Tags api_management,v1.0
  226. // @Accept json
  227. // @Produce json
  228. // @Param token header string true "jwt token"
  229. // @Param body body param_v1.CreateKeyBody true "body"
  230. // @Success 200 {object} param_v1.CreateKeyResponse
  231. // @Failure 500 {object} base.HTTPError
  232. // @Router /api/v1.0/api/key/create [post]
  233. func (c *Controller) CreateKey(ctx *gin.Context) {
  234. // 解析参数
  235. req := &param_v1.CreateKeyRequest{}
  236. parseParamTask := func() error {
  237. err := util.ShouldBind(ctx, nil, nil, nil, &req.CreateKeyBody)
  238. if err != nil {
  239. logger.Error("func",
  240. zap.String("call", "util.ShouldBind"),
  241. zap.String("error", err.Error()))
  242. return errors.ParamsError
  243. }
  244. return nil
  245. }
  246. // 业务处理
  247. handleServiceTask := func() error {
  248. // 响应数据
  249. resp := &param_v1.CreateKeyResponse{}
  250. r := v1.CreateKeyRequest{
  251. Desc: req.Desc,
  252. }
  253. _, err := pb.Management.CreateKey(ctx.Request.Context(), &r)
  254. if err != nil {
  255. s, _ := json.MarshalToString(r)
  256. logger.Error("func",
  257. zap.String("call", "pb.management.CreateKey"),
  258. zap.String("params", s),
  259. zap.String("error", err.Error()))
  260. return errors.ErrorTransForm(err)
  261. }
  262. ctx.JSON(http.StatusOK, resp)
  263. return nil
  264. }
  265. // 执行任务
  266. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  267. }
  268. // DeleteKey godoc
  269. // @Summary 删除key
  270. // @Description 删除key
  271. // @Tags api_management,v1.0
  272. // @Accept json
  273. // @Produce json
  274. // @Param token header string true "jwt token"
  275. // @Param key path string true "密钥"
  276. // @Success 200 {object} param_v1.DeleteKeyResponse
  277. // @Failure 500 {object} base.HTTPError
  278. // @Router /api/v1.0/api/delete/key/{key} [delete]
  279. func (c *Controller) DeleteKey(ctx *gin.Context) {
  280. // 解析参数
  281. req := &param_v1.DeleteKeyRequest{}
  282. parseParamTask := func() error {
  283. err := util.ShouldBind(ctx, nil, &req.DeleteKeyPath, nil, nil)
  284. if err != nil {
  285. logger.Error("func",
  286. zap.String("call", "util.ShouldBind"),
  287. zap.String("error", err.Error()))
  288. return errors.ParamsError
  289. }
  290. return nil
  291. }
  292. // 业务处理
  293. handleServiceTask := func() error {
  294. // 响应数据
  295. resp := &param_v1.DeleteKeyResponse{}
  296. r := v1.DeleteKeyRequest{
  297. Key: req.Key,
  298. }
  299. _, err := pb.Management.DeleteKey(ctx.Request.Context(), &r)
  300. if err != nil {
  301. s, _ := json.MarshalToString(r)
  302. logger.Error("func",
  303. zap.String("call", "pb.management.DeleteKey"),
  304. zap.String("params", s),
  305. zap.String("error", err.Error()))
  306. return errors.ErrorTransForm(err)
  307. }
  308. ctx.JSON(http.StatusOK, resp)
  309. return nil
  310. }
  311. // 执行任务
  312. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  313. }
  314. // AllAPI godoc
  315. // @Summary API列表
  316. // @Description API列表
  317. // @Tags api_management,v1.0
  318. // @Accept json
  319. // @Produce json
  320. // @Param token header string true "jwt token"
  321. // @Param all_api query string false "API"
  322. // @Success 200 {object} param_v1.AllAPIResponse
  323. // @Failure 500 {object} base.HTTPError
  324. // @Router /api/v1.0/api/search/all_api [get]
  325. func (c *Controller) AllAPI(ctx *gin.Context) {
  326. // 解析参数
  327. req := &param_v1.AllAPIRequest{}
  328. parseParamTask := func() error {
  329. err := util.ShouldBind(ctx, nil, nil, &req.AllAPIQuery, nil)
  330. if err != nil {
  331. logger.Error("func",
  332. zap.String("call", "util.ShouldBind"),
  333. zap.String("error", err.Error()))
  334. return errors.ParamsError
  335. }
  336. return nil
  337. }
  338. // 业务处理
  339. handleServiceTask := func() error {
  340. // 响应数据
  341. resp := &param_v1.AllAPIResponse{}
  342. r := v1.AllAPIRequest{
  343. AllApi: req.AllAPI,
  344. }
  345. reply, err := pb.Management.AllAPI(ctx.Request.Context(), &r)
  346. if err != nil {
  347. s, _ := json.MarshalToString(r)
  348. logger.Error("func",
  349. zap.String("call", "pb.management.AllAPI"),
  350. zap.String("params", s),
  351. zap.String("error", err.Error()))
  352. return errors.ErrorTransForm(err)
  353. }
  354. resp.Data = reply
  355. ctx.JSON(http.StatusOK, resp)
  356. return nil
  357. }
  358. // 执行任务
  359. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  360. }
  361. // AllKey godoc
  362. // @Summary 密钥列表
  363. // @Description 密钥列表
  364. // @Tags api_management,v1.0
  365. // @Accept json
  366. // @Produce json
  367. // @Param token header string true "jwt token"
  368. // @Param all_key query string false "密钥"
  369. // @Success 200 {object} param_v1.AllKeyResponse
  370. // @Failure 500 {object} base.HTTPError
  371. // @Router /api/v1.0/api/search/all_key [get]
  372. func (c *Controller) AllKey(ctx *gin.Context) {
  373. // 解析参数
  374. req := &param_v1.AllKeyRequest{}
  375. parseParamTask := func() error {
  376. err := util.ShouldBind(ctx, nil, nil, &req.AllKeyQuery, nil)
  377. if err != nil {
  378. logger.Error("func",
  379. zap.String("call", "util.ShouldBind"),
  380. zap.String("error", err.Error()))
  381. return errors.ParamsError
  382. }
  383. return nil
  384. }
  385. // 业务处理
  386. handleServiceTask := func() error {
  387. // 响应数据
  388. resp := &param_v1.AllKeyResponse{}
  389. r := v1.AllKeyRequest{
  390. AllKey: req.AllKey,
  391. }
  392. reply, err := pb.Management.AllKey(ctx.Request.Context(), &r)
  393. if err != nil {
  394. s, _ := json.MarshalToString(r)
  395. logger.Error("func",
  396. zap.String("call", "pb.management.AllKey"),
  397. zap.String("params", s),
  398. zap.String("error", err.Error()))
  399. return errors.ErrorTransForm(err)
  400. }
  401. resp.Data = reply.List
  402. if resp.Data == nil {
  403. resp.Data = make([]string, 0)
  404. }
  405. ctx.JSON(http.StatusOK, resp)
  406. return nil
  407. }
  408. // 执行任务
  409. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  410. }
  411. // UseAPI godoc
  412. // @Summary API查询
  413. // @Description API查询
  414. // @Tags api_management,v1.0
  415. // @Accept json
  416. // @Produce json
  417. // @Param token header string true "jwt token"
  418. // @Param api_id query int64 false "API id"
  419. // @Success 200 {object} param_v1.UseAPIResponse
  420. // @Failure 500 {object} base.HTTPError
  421. // @Router /api/v1.0/api/use_key [get]
  422. func (c *Controller) UseAPI(ctx *gin.Context) {
  423. // 解析参数
  424. req := &param_v1.UseAPIRequest{}
  425. parseParamTask := func() error {
  426. err := util.ShouldBind(ctx, nil, nil, &req.UseAPIQuery, nil)
  427. if err != nil {
  428. logger.Error("func",
  429. zap.String("call", "util.ShouldBind"),
  430. zap.String("error", err.Error()))
  431. return errors.ParamsError
  432. }
  433. return nil
  434. }
  435. // 业务处理
  436. handleServiceTask := func() error {
  437. // 响应数据
  438. resp := &param_v1.UseAPIResponse{}
  439. r := v1.UseAPIRequest{
  440. ApiId: req.ApiId,
  441. }
  442. reply, err := pb.Management.UseAPI(ctx.Request.Context(), &r)
  443. if err != nil {
  444. s, _ := json.MarshalToString(r)
  445. logger.Error("func",
  446. zap.String("call", "pb.management.UseAPI"),
  447. zap.String("params", s),
  448. zap.String("error", err.Error()))
  449. return errors.ErrorTransForm(err)
  450. }
  451. resp.Data = reply
  452. ctx.JSON(http.StatusOK, resp)
  453. return nil
  454. }
  455. // 执行任务
  456. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  457. }
  458. // UpdateAPI godoc
  459. // @Summary 更新API信息
  460. // @Description 更新API信息
  461. // @Tags api_management,v1.0
  462. // @Accept json
  463. // @Produce json
  464. // @Param token header string true "jwt token"
  465. // @Param body body param_v1.UpdateAPIBody true "body"
  466. // @Success 200 {object} param_v1.UpdateAPIResponse
  467. // @Failure 500 {object} base.HTTPError
  468. // @Router /api/v1.0/api/update_api [put]
  469. func (c *Controller) UpdateAPI(ctx *gin.Context) {
  470. // 解析参数
  471. req := &param_v1.UpdateAPIRequest{}
  472. parseParamTask := func() error {
  473. err := util.ShouldBind(ctx, nil, nil, nil, &req.UpdateAPIBody)
  474. if err != nil {
  475. logger.Error("func",
  476. zap.String("call", "util.ShouldBind"),
  477. zap.String("error", err.Error()))
  478. return errors.ParamsError
  479. }
  480. return nil
  481. }
  482. fmt.Println("1111111111")
  483. // 业务处理
  484. handleServiceTask := func() error {
  485. // 响应数据
  486. resp := &param_v1.UpdateAPIResponse{}
  487. r := v1.UpdateAPIRequest{
  488. Api: req.Api,
  489. Params: req.Param,
  490. Data: req.Data,
  491. }
  492. fmt.Println("2222222222")
  493. _, err := pb.Management.UpdateAPI(ctx.Request.Context(), &r)
  494. if err != nil {
  495. s, _ := json.MarshalToString(r)
  496. logger.Error("func",
  497. zap.String("call", "pb.management.UpdateAPI"),
  498. zap.String("params", s),
  499. zap.String("error", err.Error()))
  500. return errors.ErrorTransForm(err)
  501. }
  502. ctx.JSON(http.StatusOK, resp)
  503. return nil
  504. }
  505. // 执行任务
  506. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  507. }