data_management.go 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937
  1. package v1_0
  2. import (
  3. "adm-gateway/errors"
  4. param_v1 "adm-gateway/param/v1"
  5. "adm-gateway/parser"
  6. "adm-gateway/pb"
  7. v1 "adm-gateway/pb/v1"
  8. "fmt"
  9. "net/http"
  10. "strings"
  11. "git.getensh.com/common/gopkgsv2/id"
  12. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  13. "github.com/gin-gonic/gin"
  14. "git.getensh.com/common/gopkgsv2/logger"
  15. "git.getensh.com/common/gopkgsv2/tasker/httptasker"
  16. "git.getensh.com/common/gopkgsv2/util"
  17. "go.uber.org/zap"
  18. )
  19. // 1. 数据管理表 t_adm_data_management
  20. // DataList godoc
  21. // @Summary 数据管理
  22. // @Description 数据管理
  23. // @Tags data_management,v1.0
  24. // @Accept json
  25. // @Produce json
  26. // @Param token header string true "jwt token"
  27. // @Param table_name query string false "表名"
  28. // @Param desc query string false "描述"
  29. // @Param level query string false "所属层"
  30. // @Param page query int32 false "页码"
  31. // @Param page_size query int32 false "每页数量,默认10"
  32. // @Success 200 {object} param_v1.GetDataListResponse
  33. // @Failure 500 {object} base.HTTPError
  34. // @Router /api/v1.0/data_management [get]
  35. func (c *Controller) DataList(ctx *gin.Context) {
  36. // 解析参数
  37. req := &param_v1.GetDataListRequest{}
  38. parseParamTask := func() error {
  39. err := util.ShouldBind(ctx, nil, nil, &req.GetDataListQuery, nil)
  40. if err != nil {
  41. logger.Error("func",
  42. zap.String("call", "util.ShouldBind"),
  43. zap.String("error", err.Error()))
  44. return errors.ParamsError
  45. }
  46. return nil
  47. }
  48. // 业务处理
  49. handleServiceTask := func() error {
  50. // 响应数据
  51. resp := &param_v1.GetDataListResponse{}
  52. r := v1.DataListRequest{
  53. TableName: req.TableName,
  54. Desc: req.Desc,
  55. Level: req.Level,
  56. Page: req.Page,
  57. PageSize: req.PageSize,
  58. }
  59. reply, err := pb.Management.DataList(ctx.Request.Context(), &r)
  60. if err != nil {
  61. s, _ := json.MarshalToString(r)
  62. logger.Error("func",
  63. zap.String("call", "pb.management.DataList"),
  64. zap.String("params", s),
  65. zap.String("error", err.Error()))
  66. return errors.ErrorTransForm(err)
  67. }
  68. if reply.List == nil {
  69. reply.List = make([]*v1.DataList, 0)
  70. }
  71. resp.Data = reply
  72. ctx.JSON(http.StatusOK, resp)
  73. return nil
  74. }
  75. // 执行任务
  76. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  77. }
  78. // SearchData godoc
  79. // @Summary 模糊搜索
  80. // @Description 模糊搜索
  81. // @Tags data_management,v1.0
  82. // @Accept json
  83. // @Produce json
  84. // @Param token header string true "jwt token"
  85. // @Param table_name query string false "表名"
  86. // @Success 200 {object} param_v1.SearchDataResponse
  87. // @Failure 500 {object} base.HTTPError
  88. // @Router /api/v1.0/data_management/search [get]
  89. func (c *Controller) SearchData(ctx *gin.Context) {
  90. // 解析参数
  91. req := &param_v1.SearchDataRequest{}
  92. parseParamTask := func() error {
  93. err := util.ShouldBind(ctx, nil, nil, &req.SearchDataQuery, nil)
  94. if err != nil {
  95. logger.Error("func",
  96. zap.String("call", "util.ShouldBind"),
  97. zap.String("error", err.Error()))
  98. return errors.ParamsError
  99. }
  100. return nil
  101. }
  102. // 业务处理
  103. handleServiceTask := func() error {
  104. // 响应数据
  105. resp := &param_v1.SearchDataResponse{}
  106. r := v1.SearchDataRequest{
  107. TableName: req.TableName,
  108. }
  109. reply, err := pb.Management.SearchData(ctx.Request.Context(), &r)
  110. if err != nil {
  111. s, _ := json.MarshalToString(r)
  112. logger.Error("func",
  113. zap.String("call", "pb.management.SearchData"),
  114. zap.String("params", s),
  115. zap.String("error", err.Error()))
  116. return errors.ErrorTransForm(err)
  117. }
  118. if reply.List == nil {
  119. reply.List = make([]*v1.SearchData, 0)
  120. }
  121. resp.Data = reply
  122. ctx.JSON(http.StatusOK, resp)
  123. return nil
  124. }
  125. // 执行任务
  126. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  127. }
  128. // SearchLevel godoc
  129. // @Summary 所属层搜索
  130. // @Description 所属层搜索
  131. // @Tags data_management,v1.0
  132. // @Accept json
  133. // @Produce json
  134. // @Param token header string true "jwt token"
  135. // @Param level query string false "所属层"
  136. // @Success 200 {object} param_v1.SearchLevelResponse
  137. // @Failure 500 {object} base.HTTPError
  138. // @Router /api/v1.0/data_management/search_level [get]
  139. func (c *Controller) SearchLevel(ctx *gin.Context) {
  140. // 解析参数
  141. req := &param_v1.SearchLevelRequest{}
  142. parseParamTask := func() error {
  143. err := util.ShouldBind(ctx, nil, nil, &req.SearchLevelQuery, nil)
  144. if err != nil {
  145. logger.Error("func",
  146. zap.String("call", "util.ShouldBind"),
  147. zap.String("error", err.Error()))
  148. return errors.ParamsError
  149. }
  150. return nil
  151. }
  152. // 业务处理
  153. handleServiceTask := func() error {
  154. // 响应数据
  155. resp := &param_v1.SearchLevelResponse{}
  156. r := v1.SearchLevelRequest{
  157. Level: req.Level,
  158. }
  159. reply, err := pb.Management.SearchLevel(ctx.Request.Context(), &r)
  160. if err != nil {
  161. s, _ := json.MarshalToString(r)
  162. logger.Error("func",
  163. zap.String("call", "pb.management.SearchLevel"),
  164. zap.String("params", s),
  165. zap.String("error", err.Error()))
  166. return errors.ErrorTransForm(err)
  167. }
  168. resp.Data = reply.List
  169. if resp.Data == nil {
  170. resp.Data = make([]string, 0)
  171. }
  172. ctx.JSON(http.StatusOK, resp)
  173. return nil
  174. }
  175. // 执行任务
  176. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  177. }
  178. // 2.数据关系表 t_adm_task_data_relation
  179. // Relation godoc
  180. // @Summary 任务关系
  181. // @Description 任务关系
  182. // @Tags data_management,v1.0
  183. // @Accept json
  184. // @Produce json
  185. // @Param token header string true "jwt token"
  186. // @Param source_code query string false "数据源"
  187. // @Success 200 {object} param_v1.GetRelationResponse
  188. // @Failure 500 {object} base.HTTPError
  189. // @Router /api/v1.0/data_management/relation [get]
  190. func (c *Controller) Relation(ctx *gin.Context) {
  191. // 解析参数
  192. req := &param_v1.GetRelationRequest{}
  193. parseParamTask := func() error {
  194. err := util.ShouldBind(ctx, nil, nil, &req.GetRelationQuery, nil)
  195. if err != nil {
  196. logger.Error("func",
  197. zap.String("call", "util.ShouldBind"),
  198. zap.String("error", err.Error()))
  199. return errors.ParamsError
  200. }
  201. return nil
  202. }
  203. // 业务处理
  204. handleServiceTask := func() error {
  205. // 响应数据
  206. resp := &param_v1.GetRelationResponse{}
  207. r := v1.RelationRequest{
  208. SourceCode: req.SourceCode,
  209. }
  210. reply, err := pb.Management.Relation(ctx.Request.Context(), &r)
  211. if err != nil {
  212. s, _ := json.MarshalToString(r)
  213. logger.Error("func",
  214. zap.String("call", "pb.management.Relation"),
  215. zap.String("params", s),
  216. zap.String("error", err.Error()))
  217. return errors.ErrorTransForm(err)
  218. }
  219. if reply.List == nil {
  220. reply.List = make([]*v1.Relation, 0)
  221. }
  222. resp.Data = reply
  223. ctx.JSON(http.StatusOK, resp)
  224. return nil
  225. }
  226. // 执行任务
  227. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  228. }
  229. // Switch godoc
  230. // @Summary 任务开关
  231. // @Description 任务开关
  232. // @Tags data_management,v1.0
  233. // @Accept json
  234. // @Produce json
  235. // @Param token header string true "jwt token"
  236. // @Param body body param_v1.GetSwitchBody true "body"
  237. // @Success 200 {object} param_v1.GetSwitchResponse
  238. // @Failure 500 {object} base.HTTPError
  239. // @Router /api/v1.0/data_management/relation/ [put]
  240. func (c *Controller) Switch(ctx *gin.Context) {
  241. // 解析参数
  242. req := &param_v1.GetSwitchRequest{}
  243. parseParamTask := func() error {
  244. err := util.ShouldBind(ctx, nil, nil, nil, &req.GetSwitchBody)
  245. if err != nil {
  246. logger.Error("func",
  247. zap.String("call", "util.ShouldBind"),
  248. zap.String("error", err.Error()))
  249. return errors.ParamsError
  250. }
  251. return nil
  252. }
  253. // 业务处理
  254. handleServiceTask := func() error {
  255. // 响应数据
  256. resp := &param_v1.GetSwitchResponse{}
  257. //resp.Code = 0
  258. //resp.Message = "成功"
  259. r := v1.SwitchRequest{
  260. TaskId: req.TaskId,
  261. IsOn: req.IsOn,
  262. }
  263. _, err := pb.Management.Switch(ctx.Request.Context(), &r)
  264. if err != nil {
  265. s, _ := json.MarshalToString(r)
  266. logger.Error("func",
  267. zap.String("call", "pb.management.Switch"),
  268. zap.String("params", s),
  269. zap.String("error", err.Error()))
  270. return errors.ErrorTransForm(err)
  271. }
  272. ctx.JSON(http.StatusOK, resp)
  273. return nil
  274. }
  275. // 执行任务
  276. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  277. }
  278. // 3.任务管理表 t_adm_tasks_management
  279. // TaskList godoc
  280. // @Summary 任务管理
  281. // @Description 任务管理
  282. // @Tags task_management,v1.0
  283. // @Accept json
  284. // @Produce json
  285. // @Param token header string true "jwt token"
  286. // @Param task_name query string false "任务名"
  287. // @Param desc query string false "描述"
  288. // @Param page query int32 false "页码"
  289. // @Param page_size query int32 false "每页数量,默认10"
  290. // @Success 200 {object} param_v1.GetTaskListResponse
  291. // @Failure 500 {object} base.HTTPError
  292. // @Router /api/v1.0/task_management [get]
  293. func (c *Controller) TaskList(ctx *gin.Context) {
  294. // 解析参数
  295. req := &param_v1.GetTaskListRequest{}
  296. parseParamTask := func() error {
  297. err := util.ShouldBind(ctx, nil, nil, &req.GetTaskListQuery, nil)
  298. if err != nil {
  299. logger.Error("func",
  300. zap.String("call", "util.ShouldBind"),
  301. zap.String("error", err.Error()))
  302. return errors.ParamsError
  303. }
  304. return nil
  305. }
  306. // 业务处理
  307. handleServiceTask := func() error {
  308. // 响应数据
  309. resp := &param_v1.GetTaskListResponse{}
  310. r := v1.TaskListRequest{
  311. TaskName: req.TaskName,
  312. Desc: req.Desc,
  313. Page: req.Page,
  314. PageSize: req.PageSize,
  315. }
  316. reply, err := pb.Management.TaskList(ctx.Request.Context(), &r)
  317. if err != nil {
  318. s, _ := json.MarshalToString(r)
  319. logger.Error("func",
  320. zap.String("call", "pb.management.TaskList"),
  321. zap.String("params", s),
  322. zap.String("error", err.Error()))
  323. return errors.ErrorTransForm(err)
  324. }
  325. if reply.List == nil {
  326. reply.List = make([]*v1.TaskList, 0)
  327. }
  328. resp.Data = reply
  329. ctx.JSON(http.StatusOK, resp)
  330. return nil
  331. }
  332. // 执行任务
  333. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  334. }
  335. // SearchTask godoc
  336. // @Summary 模糊搜索
  337. // @Description 模糊搜索
  338. // @Tags task_management,v1.0
  339. // @Accept json
  340. // @Produce json
  341. // @Param token header string true "jwt token"
  342. // @Param task_name query string false "任务名"
  343. // @Success 200 {object} param_v1.SearchTaskResponse
  344. // @Failure 500 {object} base.HTTPError
  345. // @Router /api/v1.0/task_management/search [get]
  346. func (c *Controller) SearchTask(ctx *gin.Context) {
  347. // 解析参数
  348. req := &param_v1.SearchTaskRequest{}
  349. parseParamTask := func() error {
  350. err := util.ShouldBind(ctx, nil, nil, &req.SearchTaskQuery, nil)
  351. if err != nil {
  352. logger.Error("func",
  353. zap.String("call", "util.ShouldBind"),
  354. zap.String("error", err.Error()))
  355. return errors.ParamsError
  356. }
  357. return nil
  358. }
  359. // 业务处理
  360. handleServiceTask := func() error {
  361. // 响应数据
  362. resp := &param_v1.SearchTaskResponse{}
  363. r := v1.SearchTaskRequest{
  364. TaskName: req.TaskName,
  365. }
  366. reply, err := pb.Management.SearchTask(ctx.Request.Context(), &r)
  367. if err != nil {
  368. s, _ := json.MarshalToString(r)
  369. logger.Error("func",
  370. zap.String("call", "pb.management.SearchData"),
  371. zap.String("params", s),
  372. zap.String("error", err.Error()))
  373. return errors.ErrorTransForm(err)
  374. }
  375. if reply.List == nil {
  376. reply.List = make([]*v1.SearchTask, 0)
  377. }
  378. resp.Data = reply
  379. ctx.JSON(http.StatusOK, resp)
  380. return nil
  381. }
  382. // 执行任务
  383. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  384. }
  385. // 4.依赖表 t_adm_task_dependency
  386. // Dependency godoc
  387. // @Summary 依赖表
  388. // @Description 依赖表
  389. // @Tags task_management,v1.0
  390. // @Accept json
  391. // @Produce json
  392. // @Param token header string true "jwt token"
  393. // @Param task_id query int64 false "任务id"
  394. // @Param type query int32 true "源表或依赖表"
  395. // @Success 200 {object} param_v1.GetDependencyResponse
  396. // @Failure 500 {object} base.HTTPError
  397. // @Router /api/v1.0/task_management/dependency [get]
  398. func (c *Controller) Dependency(ctx *gin.Context) {
  399. // 解析参数
  400. req := &param_v1.GetDependencyRequest{}
  401. parseParamTask := func() error {
  402. err := util.ShouldBind(ctx, nil, nil, &req.GetDependencyQuery, nil)
  403. if err != nil {
  404. logger.Error("func",
  405. zap.String("call", "util.ShouldBind"),
  406. zap.String("error", err.Error()))
  407. return errors.ParamsError
  408. }
  409. return nil
  410. }
  411. // 业务处理
  412. handleServiceTask := func() error {
  413. // 响应数据
  414. resp := &param_v1.GetDependencyResponse{}
  415. r := v1.DependencyRequest{
  416. TaskId: req.TaskId,
  417. Type: req.Type,
  418. }
  419. reply, err := pb.Management.Dependency(ctx.Request.Context(), &r)
  420. if err != nil {
  421. s, _ := json.MarshalToString(r)
  422. logger.Error("func",
  423. zap.String("call", "pb.management.Dependency"),
  424. zap.String("params", s),
  425. zap.String("error", err.Error()))
  426. return errors.ErrorTransForm(err)
  427. }
  428. if reply.List == nil {
  429. reply.List = make([]*v1.Dependency, 0)
  430. }
  431. resp.Data = reply
  432. ctx.JSON(http.StatusOK, resp)
  433. return nil
  434. }
  435. // 执行任务
  436. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  437. }
  438. // DataSourceRelation godoc
  439. // @Summary 血缘关系
  440. // @Description 血缘关系
  441. // @Tags task_management,v1.0
  442. // @Accept json
  443. // @Produce json
  444. // @Param token header string true "jwt token"
  445. // @Param task_id query int64 false "任务id"
  446. // @Param source_code query string false "source code"
  447. // @Success 200 {object} param_v1.GetDataSourceRelationResponse
  448. // @Failure 500 {object} base.HTTPError
  449. // @Router /api/v1.0/task_management/relation [get]
  450. func (c *Controller) DataSourceRelation(ctx *gin.Context) {
  451. // 解析参数
  452. req := &param_v1.GetDataSourceRelationRequest{}
  453. parseParamTask := func() error {
  454. err := util.ShouldBind(ctx, nil, nil, &req.GetDataSourceRelationQuery, nil)
  455. if err != nil {
  456. logger.Error("func",
  457. zap.String("call", "util.ShouldBind"),
  458. zap.String("error", err.Error()))
  459. return errors.ParamsError
  460. }
  461. return nil
  462. }
  463. // 业务处理
  464. handleServiceTask := func() error {
  465. // 响应数据
  466. resp := &param_v1.GetDataSourceRelationResponse{}
  467. r := v1.DataSourceRelationRequest{
  468. TaskId: req.TaskId,
  469. SourceCode: req.SourceCode,
  470. }
  471. reply, err := pb.Management.DataSourceRelation(ctx.Request.Context(), &r)
  472. if err != nil {
  473. s, _ := json.MarshalToString(r)
  474. logger.Error("func",
  475. zap.String("call", "pb.management.DataSourceRelation"),
  476. zap.String("params", s),
  477. zap.String("error", err.Error()))
  478. return errors.ErrorTransForm(err)
  479. }
  480. resp.Data = reply
  481. ctx.JSON(http.StatusOK, resp)
  482. return nil
  483. }
  484. // 执行任务
  485. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  486. }
  487. // 手动任务列表 t_adm_offline_task
  488. // ManualTask godoc
  489. // @Summary 手动任务
  490. // @Description 手动任务
  491. // @Tags manualTask,v1.0
  492. // @Accept json
  493. // @Produce json
  494. // @Param token header string true "jwt token"
  495. // @Param source query string false "源表"
  496. // @Param task_name query string false "任务"
  497. // @Param manual_task_name query string false "手动任务名"
  498. // @Param time1 query int64 false "时间1"
  499. // @Param time2 query int64 false "时间2"
  500. // @Param page query int32 false "页码"
  501. // @Param page_size query int32 false "每页数量,默认10"
  502. // @Success 200 {object} param_v1.GetManualTaskResponse
  503. // @Failure 500 {object} base.HTTPError
  504. // @Router /api/v1.0/manual_task [get]
  505. func (c *Controller) ManualTask(ctx *gin.Context) {
  506. // 解析参数
  507. req := &param_v1.GetManualTaskRequest{}
  508. parseParamTask := func() error {
  509. err := util.ShouldBind(ctx, nil, nil, &req.GetManualTaskQuery, nil)
  510. if err != nil {
  511. logger.Error("func",
  512. zap.String("call", "util.ShouldBind"),
  513. zap.String("error", err.Error()))
  514. return errors.ParamsError
  515. }
  516. return nil
  517. }
  518. // 业务处理
  519. handleServiceTask := func() error {
  520. // 响应数据
  521. resp := &param_v1.GetManualTaskResponse{}
  522. r := v1.ManualTaskRequest{
  523. Source: req.Source,
  524. TaskName: req.TaskName,
  525. ManualTaskName: req.ManualTaskName,
  526. Time1: req.Time1,
  527. Time2: req.Time2,
  528. Page: req.Page,
  529. PageSize: req.PageSize,
  530. }
  531. reply, err := pb.Management.ManualTask(ctx.Request.Context(), &r)
  532. if err != nil {
  533. s, _ := json.MarshalToString(r)
  534. logger.Error("func",
  535. zap.String("call", "pb.management.ManualTask"),
  536. zap.String("params", s),
  537. zap.String("error", err.Error()))
  538. return errors.ErrorTransForm(err)
  539. }
  540. if reply.List == nil {
  541. reply.List = make([]*v1.ManualTask, 0)
  542. }
  543. resp.Data = reply
  544. ctx.JSON(http.StatusOK, resp)
  545. return nil
  546. }
  547. // 执行任务
  548. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  549. }
  550. // Source godoc
  551. // @Summary 源表搜索
  552. // @Description 源表搜索
  553. // @Tags manualTask,v1.0
  554. // @Accept json
  555. // @Produce json
  556. // @Param token header string true "jwt token"
  557. // @Param source_name query string false "源表"
  558. // @Success 200 {object} param_v1.SourceResponse
  559. // @Failure 500 {object} base.HTTPError
  560. // @Router /api/v1.0/manual_task/source [get]
  561. func (c *Controller) Source(ctx *gin.Context) {
  562. // 解析参数
  563. req := &param_v1.SourceRequest{}
  564. parseParamTask := func() error {
  565. err := util.ShouldBind(ctx, nil, nil, &req.SourceQuery, nil)
  566. if err != nil {
  567. logger.Error("func",
  568. zap.String("call", "util.ShouldBind"),
  569. zap.String("error", err.Error()))
  570. return errors.ParamsError
  571. }
  572. return nil
  573. }
  574. // 业务处理
  575. handleServiceTask := func() error {
  576. // 响应数据
  577. resp := &param_v1.SourceResponse{}
  578. r := v1.SourceRequest{
  579. SourceName: req.SourceName,
  580. }
  581. reply, err := pb.Management.Source(ctx.Request.Context(), &r)
  582. if err != nil {
  583. s, _ := json.MarshalToString(r)
  584. logger.Error("func",
  585. zap.String("call", "pb.management.Source"),
  586. zap.String("params", s),
  587. zap.String("error", err.Error()))
  588. return errors.ErrorTransForm(err)
  589. }
  590. if reply.List == nil {
  591. reply.List = make([]*v1.Source, 0)
  592. }
  593. resp.Data = reply
  594. ctx.JSON(http.StatusOK, resp)
  595. return nil
  596. }
  597. // 执行任务
  598. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  599. }
  600. // Task godoc
  601. // @Summary 任务列表
  602. // @Description 任务列表
  603. // @Tags manualTask,v1.0
  604. // @Accept json
  605. // @Produce json
  606. // @Param token header string true "jwt token"
  607. // @Param source_request query string false "源表名"
  608. // @Success 200 {object} param_v1.TaskResponse
  609. // @Failure 500 {object} base.HTTPError
  610. // @Router /api/v1.0/manual_task/task [get]
  611. func (c *Controller) Task(ctx *gin.Context) {
  612. // 解析参数
  613. req := &param_v1.TaskRequest{}
  614. parseParamTask := func() error {
  615. err := util.ShouldBind(ctx, nil, nil, &req.TaskQuery, nil)
  616. if err != nil {
  617. logger.Error("func",
  618. zap.String("call", "util.ShouldBind"),
  619. zap.String("error", err.Error()))
  620. return errors.ParamsError
  621. }
  622. return nil
  623. }
  624. // 业务处理
  625. handleServiceTask := func() error {
  626. // 响应数据
  627. resp := &param_v1.TaskResponse{}
  628. r := v1.TaskRequest{
  629. SourceRequest: req.SourceRequest,
  630. }
  631. reply, err := pb.Management.Task(ctx.Request.Context(), &r)
  632. if err != nil {
  633. s, _ := json.MarshalToString(r)
  634. logger.Error("func",
  635. zap.String("call", "pb.management.Task"),
  636. zap.String("params", s),
  637. zap.String("error", err.Error()))
  638. return errors.ErrorTransForm(err)
  639. }
  640. if reply.List == nil {
  641. reply.List = make([]*v1.Task, 0)
  642. }
  643. resp.Data = reply
  644. ctx.JSON(http.StatusOK, resp)
  645. return nil
  646. }
  647. // 执行任务
  648. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  649. }
  650. // Create godoc
  651. // @Summary 创建手动任务
  652. // @Description 创建手动任务
  653. // @Tags manualTask,v1.0
  654. // @Accept json
  655. // @Produce json
  656. // @Param token header string true "jwt token"
  657. // @Param body body param_v1.CreateBody true "body"
  658. // @Success 200 {object} param_v1.CreateResponse
  659. // @Failure 500 {object} base.HTTPError
  660. // @Router /api/v1.0/manual_task/create [post]
  661. func (c *Controller) Create(ctx *gin.Context) {
  662. // 解析参数
  663. req := &param_v1.CreateRequest{}
  664. parseParamTask := func() error {
  665. err := util.ShouldBind(ctx, nil, nil, nil, &req.CreateBody)
  666. if err != nil {
  667. logger.Error("func",
  668. zap.String("call", "util.ShouldBind"),
  669. zap.String("error", err.Error()))
  670. return errors.ParamsError
  671. }
  672. return nil
  673. }
  674. // 业务处理
  675. handleServiceTask := func() error {
  676. // 响应数据
  677. resp := &param_v1.CreateResponse{}
  678. r := v1.CreateRequest{
  679. TaskName: req.TaskName,
  680. Type: req.Type,
  681. Source: req.Source,
  682. Sql: req.Sql,
  683. TaskIds: req.TaskIds,
  684. }
  685. _, err := pb.Management.Create(ctx.Request.Context(), &r)
  686. if err != nil {
  687. s, _ := json.MarshalToString(r)
  688. logger.Error("func",
  689. zap.String("call", "pb.management.Create"),
  690. zap.String("params", s),
  691. zap.String("error", err.Error()))
  692. return errors.ErrorTransForm(err)
  693. }
  694. ctx.JSON(http.StatusOK, resp)
  695. return nil
  696. }
  697. // 执行任务
  698. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  699. }
  700. // UploadFile godoc
  701. // @Summary 上传文件创建
  702. // @Description 上传文件创建
  703. // @Tags manualTask,v1.0
  704. // @Accept json
  705. // @Produce json
  706. // @Param token header string true "jwt token"
  707. // @Param file formData file true "上传文件"
  708. // @Param task_name formData string true "手动任务"
  709. // @Success 200 {string} param_v1.UploadFileResponse
  710. // @Failure 500 {object} base.HTTPError
  711. // @Router /api/v1.0/manual_task/create/upload [post]
  712. func (c *Controller) UploadFile(ctx *gin.Context) {
  713. // 业务处理
  714. uploadFileTask := func() error {
  715. // 上传文件 得到url
  716. file, err := ctx.FormFile("file")
  717. if err != nil {
  718. return errors.SystemError
  719. }
  720. if strings.Index(file.Filename, "xlsx") == -1 && strings.Index(file.Filename, "xlx") == -1 {
  721. return errors.FileTypeError
  722. }
  723. id, _ := id.GetUniqueID()
  724. fileName := fmt.Sprintf("file-upload-%s-%d.xlsx", ctx.PostForm("task_name"), id)
  725. resp := &param_v1.UploadFileResponse{}
  726. r := v1.UploadFileRequest{
  727. TaskName: ctx.PostForm("task_name"),
  728. }
  729. reply, err := pb.Management.UploadFile(ctx.Request.Context(), &r)
  730. if err != nil {
  731. s, _ := json.MarshalToString(r)
  732. logger.Error("func",
  733. zap.String("call", "pb.management.UploadFile"),
  734. zap.String("params", s),
  735. zap.String("error", err.Error()))
  736. return errors.ErrorTransForm(err)
  737. }
  738. client, err := oss.New(
  739. parser.Conf.Oss.EndPoint,
  740. parser.Conf.Oss.AccessKey,
  741. parser.Conf.Oss.AccessSecret,
  742. )
  743. if err != nil {
  744. return err
  745. }
  746. bucket, err := client.Bucket(parser.Conf.Oss.Bucket)
  747. if err != nil {
  748. return err
  749. }
  750. reader, _ := file.Open()
  751. err = bucket.PutObject(fileName, reader)
  752. if err != nil {
  753. return err
  754. }
  755. reply.Url = "https://" + parser.Conf.Oss.Bucket + "." + parser.Conf.Oss.EndPoint + "/" + fileName
  756. resp.Data = reply
  757. ctx.JSON(http.StatusOK, resp)
  758. return nil
  759. }
  760. // 执行任务
  761. httptasker.Exec(ctx, uploadFileTask)
  762. }
  763. // TableStruct godoc
  764. // @Summary 查看表结构
  765. // @Description 查看表结构
  766. // @Tags data_management,v1.0
  767. // @Accept json
  768. // @Produce json
  769. // @Param token header string true "jwt token"
  770. // @Param table_name query string false "表名"
  771. // @Success 200 {object} param_v1.TableStructResponse
  772. // @Failure 500 {object} base.HTTPError
  773. // @Router /api/v1.0/data_management/table_struct [get]
  774. func (c *Controller) TableStruct(ctx *gin.Context) {
  775. // 解析参数
  776. req := &param_v1.TableStructRequest{}
  777. parseParamTask := func() error {
  778. err := util.ShouldBind(ctx, nil, nil, &req.TableStructQuery, nil)
  779. if err != nil {
  780. logger.Error("func",
  781. zap.String("call", "util.ShouldBind"),
  782. zap.String("error", err.Error()))
  783. return errors.ParamsError
  784. }
  785. return nil
  786. }
  787. // 业务处理
  788. handleServiceTask := func() error {
  789. // 响应数据
  790. resp := &param_v1.TableStructResponse{}
  791. r := v1.TableStructRequest{
  792. TableName: req.TableName,
  793. }
  794. reply, err := pb.Management.TableStruct(ctx.Request.Context(), &r)
  795. if err != nil {
  796. s, _ := json.MarshalToString(r)
  797. logger.Error("func",
  798. zap.String("call", "pb.management.TableStruct"),
  799. zap.String("params", s),
  800. zap.String("error", err.Error()))
  801. return errors.ErrorTransForm(err)
  802. }
  803. if reply.List == nil {
  804. reply.List = make([]*v1.TableStruct, 0)
  805. }
  806. resp.Data = reply
  807. ctx.JSON(http.StatusOK, resp)
  808. return nil
  809. }
  810. // 执行任务
  811. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  812. }