107b3940742854416bf136c78c99e2abd6ca29cb.svn-base 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135
  1. package api
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "fmt"
  6. "github.com/360EntSecGroup-Skylar/excelize"
  7. "github.com/Anderson-Lu/gofasion/gofasion"
  8. "github.com/gin-gonic/gin"
  9. "github.com/kptyun/KPTCOMM/pkg/app"
  10. "github.com/kptyun/KPTCOMM/pkg/e"
  11. "github.com/kptyun/KPTCOMM/pkg/setting"
  12. "github.com/kptyun/KPTCOMM/routers/restful"
  13. "github.com/tealeg/xlsx"
  14. "github.com/xormplus/xorm"
  15. "io/ioutil"
  16. "net/http"
  17. "os"
  18. "path"
  19. "strconv"
  20. "strings"
  21. )
  22. // @Summary 根据SQL执行得到数据集
  23. // @Tags getData
  24. // @Accept json
  25. // @Produce json
  26. // @Param sql query string true "sql"
  27. // @Success 200 {string} json "{ "code": 200, "data": {}, "msg": "ok" }"
  28. // @Failure 400 {string} json "{"code":400, "data":null,"msg":"请求参数错误"}"
  29. // @Failure 404 {string} json "{ "code": 404, "data":null,"msg":"请求参数错误"}"
  30. // @Router /data/getdata [POST]
  31. func GetData(c *gin.Context) {
  32. appG := app.Gin{C: c}
  33. dataByte, _ := ioutil.ReadAll(c.Request.Body)
  34. fsion := gofasion.NewFasion(string(dataByte))
  35. sqlstr := fsion.Get("sql").ValueStr()
  36. offset := fsion.Get("offset").ValueDefaultInt(0)
  37. pagecount := fsion.Get("pagecount").ValueDefaultInt(0)
  38. returntype := fsion.Get("returntype").ValueDefaultStr("map")
  39. queryData, err := getDataBySql( sqlstr, offset, pagecount,returntype,nil)
  40. if err != nil {
  41. appG.Response(http.StatusOK, e.ERROR, err.Error())
  42. } else {
  43. appG.Response(http.StatusOK, e.SUCCESS, queryData)
  44. }
  45. }
  46. func TestData(c *gin.Context) {
  47. appG := app.Gin{C: c}
  48. dataByte, _ := ioutil.ReadAll(c.Request.Body)
  49. fsion := gofasion.NewFasion(string(dataByte))
  50. sqlstr := fsion.Get("sql").ValueStr()
  51. token := ""
  52. if tempv, exists := c.Get("jwt_username"); exists{
  53. token = tempv.(string)
  54. }
  55. appG.Response(http.StatusOK, e.SUCCESS, "你录入的名字是:"+sqlstr+";token:"+token)
  56. }
  57. // @Summary 根据APISQL表中SQL执行得到数据集
  58. // @Tags GetDataByName
  59. // @Accept json
  60. // @Produce json
  61. // @Param sqlname body string true "sqlname"
  62. // @Param offset body int true "offset"
  63. // @Param pagecount body int true "pagecount"
  64. // @Param returntype body string true "returntype"
  65. // @Success 200 {string} json "{ "code": 200, "data": {}, "msg": "ok" }"
  66. // @Failure 400 {string} json "{"code":400, "data":null,"msg":"请求参数错误"}"
  67. // @Failure 404 {string} json "{ "code": 404, "data":null,"msg":"请求参数错误"}"
  68. // @Router /data/GetDataByName [POST]
  69. func GetDataByName(c *gin.Context) {
  70. appG := app.Gin{C: c}
  71. dataByte, _ := ioutil.ReadAll(c.Request.Body)
  72. fsion := gofasion.NewFasion(string(dataByte))
  73. sqlnamestr := fsion.Get("name").ValueStr()
  74. offset := fsion.Get("offset").ValueDefaultInt(0)
  75. pagecount := fsion.Get("pagecount").ValueDefaultInt(0)
  76. returntype := fsion.Get("returntype").ValueDefaultStr("map")
  77. sql, p := restful.GetSqlByNameDB(sqlnamestr)
  78. if sql != ""{
  79. s_params := make([]interface{}, 0)
  80. if fsion.HasKey("parammaps") {
  81. parammaps := fsion.Get("parammaps")
  82. paramslist := strings.Split(p,",")
  83. if len(paramslist)>0 && p!="" {
  84. for _, value := range paramslist {
  85. if (strings.ToLower(strings.Trim(value," "))=="jwt_username"){
  86. if tempv, exists := c.Get("jwt_username"); exists{
  87. s_params = append(s_params, tempv.(string))
  88. }else{s_params = append(s_params,"")}
  89. }else{
  90. s_params = append(s_params, parammaps.Get(strings.Trim(value," ")).ValueStr())
  91. }
  92. }
  93. }
  94. }else if fsion.HasKey("params") {
  95. params := fsion.Get("params").Array()
  96. for _, v_params := range params {
  97. s_params = append(s_params,v_params.ValueStr())
  98. }
  99. }
  100. if returntype == "xlsx"{
  101. var xlsxfile *xlsx.File
  102. xlsxfile, _ = restful.QueryByXlsx(sql, s_params)
  103. //c.File("c:/dd.xlsx")
  104. c.Header("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
  105. c.Header("Content-Disposition", "attachment; filename="+"Workbook.xlsx")
  106. c.Header("Content-Transfer-Encoding", "binary")
  107. _ = xlsxfile.Write(c.Writer)
  108. } else{
  109. queryData, err := getDataBySql(sql, offset, pagecount,returntype, s_params)
  110. if err != nil {
  111. appG.Response(http.StatusOK, e.ERROR, err.Error())
  112. } else {
  113. appG.Response(http.StatusOK, e.SUCCESS, queryData)
  114. }
  115. }
  116. } else {
  117. appG.Response(http.StatusOK, e.SUCCESS, nil)
  118. }
  119. }
  120. // @Summary 根据APISQL表中SQL执行得到数据集
  121. // @Tags GetDataByNameForm
  122. // @Accept json
  123. // @Produce json
  124. // @Param sqlname body json true "sqlname"
  125. // @Param offset query int true "offset"
  126. // @Param pagecount query int true "pagecount"
  127. // @Param returntype query string true "returntype"
  128. // @Param s formData json true "ss"
  129. // @Success 200 {string} json "{ "code": 200, "data": {}, "msg": "ok" }"
  130. // @Failure 400 {string} json "{"code":400, "data":null,"msg":"请求参数错误"}"
  131. // @Failure 404 {string} json "{ "code": 404, "data":null,"msg":"请求参数错误"}"
  132. // @Router /data/GetDataByNameForm [POST]
  133. func GetDataByNameForm(c *gin.Context) {
  134. appG := app.Gin{C: c}
  135. //sqlnamestr := c.PostForm("measureNumber")
  136. //dataByte, _ := ioutil.ReadAll(c.Request.Body)
  137. //fsion := gofasion.NewFasion(string(dataByte))
  138. //sqlnamestr := fsion.Get("name").ValueStr()
  139. //offset := fsion.Get("offset").ValueInt()
  140. //pagecount := fsion.Get("pagecount").ValueInt()
  141. //returntype := fsion.Get("returntype").ValueStr()
  142. //params := fsion.Get("params").Array()
  143. c.Request.ParseForm()
  144. params := c.Request.Form
  145. offset := 0
  146. pageSize_ := 0
  147. returntype := params.Get("page")
  148. if returntype == ""{
  149. returntype = "0"
  150. }
  151. if tempv, exists := c.Get("jwt_username"); exists{
  152. params.Set("JwtUserName", tempv.(string))
  153. }else{params.Set("JwtUserName", "")}
  154. sqlnamestr := params.Get("name")
  155. s_params := make([]interface{}, 0)
  156. if returntype == "1" {
  157. pageNum, error := strconv.Atoi(params.Get("pageNum"))
  158. if error != nil {
  159. appG.ResponseEq(http.StatusOK, e.ERROR,0, "页码不是整数")
  160. }
  161. pageSize, error := strconv.Atoi(params.Get("pageSize"))
  162. if error != nil {
  163. appG.ResponseEq(http.StatusOK, e.ERROR,0, "每页行数不是整数")
  164. }
  165. pageSize_ = pageSize
  166. offset = pageNum
  167. }
  168. sql, p := restful.GetSqlByNameDB(sqlnamestr)
  169. paramslist := strings.Split(p,",")
  170. if len(paramslist)>0 && p!="" {
  171. for _, value := range paramslist {
  172. s_params = append(s_params, params.Get(strings.Trim(value," ")))
  173. }
  174. }
  175. if sql != ""{
  176. if returntype == "xlsx"{
  177. var xlsxfile *xlsx.File
  178. xlsxfile, _ = restful.QueryByXlsx(sql, s_params)
  179. c.Header("Content-Type", "application/octet-stream")
  180. c.Header("Content-Disposition", "attachment; filename="+sqlnamestr + ".xlsx")
  181. c.Header("Content-Transfer-Encoding", "binary")
  182. _ = xlsxfile.Write(c.Writer)
  183. } else{
  184. queryData, err := getDataBySql(sql, offset, pageSize_, returntype, s_params)
  185. if err != nil {
  186. appG.ResponseEq(http.StatusOK, e.ERROR,1, err.Error())
  187. } else {
  188. appG.ResponseEq(http.StatusOK, e.SUCCESS,0, queryData)
  189. }
  190. }
  191. } else {
  192. appG.ResponseEq(http.StatusOK, e.SUCCESS,0, "后台没有数据接口")
  193. }
  194. }
  195. // @Summary 递归获取所有
  196. // @Tags menu
  197. // @Accept json
  198. // @Produce json
  199. // @Param Ton query string true "Ton"
  200. // @Success 200 {string} json "{ "code": 200, "data": {}, "msg": "ok" }"
  201. // @Router /authdata/GetRoleMenus [GET]
  202. func GetRecuDataByName(c *gin.Context) {
  203. appG := app.Gin{C: c}
  204. dataByte, _ := ioutil.ReadAll(c.Request.Body)
  205. fsion := gofasion.NewFasion(string(dataByte))
  206. sqlnamestr := fsion.Get("name").ValueStr()
  207. parentidname := fsion.Get("idname").ValueStr()
  208. sql, p := restful.GetSqlByNameDB(sqlnamestr)
  209. params := make(map[string]interface{})
  210. s_params := make([]interface{}, 0)
  211. if fsion.HasKey("params") {
  212. for _, v_params := range fsion.Get("params").Array() {
  213. s_params = append(s_params, v_params.ValueStr())
  214. }
  215. params["params"]=s_params
  216. }else {
  217. jparams := fsion.Get("parammaps")
  218. paramslist := strings.Split(p,",")
  219. if len(paramslist)>0 && p!="" {
  220. for _, value := range paramslist {
  221. if (strings.ToLower(strings.Trim(value," "))=="jwt_username"){
  222. if tempv, exists := c.Get("jwt_username"); exists{
  223. params[value] = tempv.(string)
  224. }else{params[value] =""}
  225. }else{
  226. params[value]=jparams.Get(strings.Trim(value," ")).ValueStr()
  227. }
  228. }
  229. }
  230. }
  231. queryData, err := GetRecuData_BySql(sql, p, parentidname, params, fsion.HasKey("params"))
  232. if err != nil {
  233. appG.Response(http.StatusOK, e.ERROR, err.Error())
  234. }
  235. appG.Response(http.StatusOK, e.SUCCESS, queryData)
  236. }
  237. // @Summary 根据APISQL表中SQL执行得到数据集
  238. // @Tags GetDataByNames
  239. // @Accept json
  240. // @Produce json
  241. // @RequestBody sqlname query string true "sqlname"
  242. // @Param offset query int true "offset"
  243. // @Param pagecount query int true "pagecount"
  244. // @Param returntype query string true "returntype"
  245. // @Success 200 {string} json "{ "code": 200, "data": {}, "msg": "ok" }"
  246. // @Failure 400 {string} json "{"code":400, "data":null,"msg":"请求参数错误"}"
  247. // @Failure 404 {string} json "{ "code": 404, "data":null,"msg":"请求参数错误"}"
  248. // @Router /data/GetDataByNames [POST]
  249. func GetDataByNames(c *gin.Context) {
  250. appG := app.Gin{C: c}
  251. dataByte, _ := ioutil.ReadAll(c.Request.Body)
  252. fsion := gofasion.NewFasion(string(dataByte))
  253. sqlParams := fsion.Array()
  254. queryData := make(map[string]interface{})
  255. for _, v := range sqlParams {
  256. fsion2 := gofasion.NewFasion(v.Json())
  257. sql, p := restful.GetSqlByNameDB(fsion2.Get("name").ValueStr())
  258. if sql == "" {
  259. errorm := make(map[string]interface{})
  260. errorm["code"] = e.ERROR
  261. errorm["message"] = "sql没找到"
  262. queryData[fsion2.Get("name").ValueStr()] = errorm
  263. continue
  264. }else if sql != "" {
  265. offset := fsion2.Get("offset").ValueInt()
  266. pagecount := fsion2.Get("pagecount").ValueInt()
  267. returntype := fsion2.Get("returntype").ValueStr()
  268. s_params := make([]interface{}, 0)
  269. if fsion2.HasKey("parammaps") {
  270. parammaps := fsion2.Get("parammaps")
  271. paramslist := strings.Split(p,",")
  272. if len(paramslist)>0 && p!="" {
  273. for _, value := range paramslist {
  274. if (strings.ToLower(strings.Trim(value," "))=="jwt_username"){
  275. if tempv, exists := c.Get("jwt_username"); exists{
  276. s_params = append(s_params, tempv.(string))
  277. }else{s_params = append(s_params,"")}
  278. }else{
  279. s_params = append(s_params, parammaps.Get(strings.Trim(value," ")).ValueStr())
  280. }
  281. }
  282. }
  283. }else if fsion2.HasKey("params") {
  284. params := fsion2.Get("params").Array()
  285. for _, v_params := range params {
  286. s_params = append(s_params,v_params.ValueStr())
  287. }
  288. }
  289. queryData1, err := getDataBySql(sql, offset, pagecount, returntype, s_params)
  290. if err != nil {
  291. errorm := make(map[string]interface{})
  292. errorm["code"] = e.ERROR
  293. errorm["message"] = err.Error()
  294. queryData[fsion2.Get("name").ValueStr()] = errorm
  295. continue
  296. } else {
  297. queryData[fsion2.Get("name").ValueStr()] = queryData1
  298. }
  299. }
  300. }
  301. appG.Response(http.StatusOK, e.SUCCESS, queryData)
  302. }
  303. // @Summary 根据APISQL表中SQL执行得到数据集
  304. // @Tags PostDataByNameForm
  305. // @Accept json
  306. // @Produce json
  307. // @Param sqlname query string true "sqlname"
  308. // @Param offset query int true "offset"
  309. // @Param pagecount query int true "pagecount"
  310. // @Param returntype query string true "returntype"
  311. // @Success 200 {string} json "{ "code": 200, "data": {}, "msg": "ok" }"
  312. // @Failure 400 {string} json "{"code":400, "data":null,"msg":"请求参数错误朱红彬彬"}"
  313. // @Failure 404 {string} json "{ "code": 404, "data":null,"msg":"请求参数错误"}"
  314. // @Router /data/PostDataByNameForm [POST]
  315. func PostDataByNameForm(c *gin.Context) {
  316. appG := app.Gin{C: c}
  317. c.Request.ParseForm()
  318. params := c.Request.Form
  319. sqlnamestr := params.Get("name")
  320. s_params := make([]interface{}, 0)
  321. sql, p := restful.GetSqlByNameDB(sqlnamestr)
  322. paramslist := strings.Split(p,",")
  323. if len(paramslist)>0 {
  324. for _, value := range paramslist {
  325. s_params = append(s_params, params.Get(strings.Trim(value," ")))
  326. }
  327. }
  328. if sql != ""{
  329. queryData, err := execDataBySql(sql, s_params)
  330. if err != nil {
  331. appG.ResponseEq(http.StatusOK, e.ERROR,1, err.Error())
  332. } else {
  333. appG.ResponseEq(http.StatusOK, e.SUCCESS,0, queryData)
  334. }
  335. } else {
  336. appG.ResponseEq(http.StatusOK, e.SUCCESS,0, "后台没有数据接口")
  337. }
  338. }
  339. // @Summary 根据APISQL表中SQL执行得到数据集
  340. // @Tags PostDataByName
  341. // @Accept json
  342. // @Produce json
  343. // @Param sqlname query string true "sqlname"
  344. // @Param offset query int true "offset"
  345. // @Param pagecount query int true "pagecount"
  346. // @Param returntype query string true "returntype"
  347. // @Success 200 {string} json "{ "code": 200, "data": {}, "msg": "ok" }"
  348. // @Failure 400 {string} json "{"code":400, "data":null,"msg":"请求参数错误"}"
  349. // @Failure 404 {string} json "{ "code": 404, "data":null,"msg":"请求参数错误"}"
  350. // @Router /data/PostDataByName [POST]
  351. func PostDataByName(c *gin.Context) {
  352. appG := app.Gin{C: c}
  353. dataByte, _ := ioutil.ReadAll(c.Request.Body)
  354. fsion := gofasion.NewFasion(string(dataByte))
  355. sqlnamestr := fsion.Get("name").ValueStr()
  356. sql, p := restful.GetSqlByNameDB(sqlnamestr)
  357. s_params := make([]interface{}, 0)
  358. if sql != ""{
  359. if fsion.HasKey("parammaps") {
  360. parammaps := fsion.Get("parammaps")
  361. paramslist := strings.Split(p,",")
  362. if len(paramslist)>0 && p != "" {
  363. for _, value := range paramslist {
  364. if (strings.ToLower(strings.Trim(value," "))=="jwt_username"){
  365. if tempv, exists := c.Get("jwt_username"); exists{
  366. s_params = append(s_params, tempv.(string))
  367. }else{s_params = append(s_params,"")}
  368. }else{
  369. s_params = append(s_params, parammaps.Get(strings.Trim(value," ")).ValueStr())
  370. }
  371. }
  372. }
  373. }else if fsion.HasKey("params") {
  374. params := fsion.Get("params").Array()
  375. for _, v_params := range params {
  376. s_params = append(s_params,v_params.ValueStr())
  377. }
  378. }
  379. queryData, err := execDataBySql(sql, s_params)
  380. if err != nil {
  381. appG.Response(http.StatusOK, e.ERROR, err.Error())
  382. } else {
  383. appG.Response(http.StatusOK, e.SUCCESS, queryData)
  384. }
  385. } else {
  386. appG.Response(http.StatusOK, e.SUCCESS, nil)
  387. }
  388. }
  389. // @Summary 根据APISQL表中SQL执行得到数据集
  390. // @Tags ExecDataByConfig
  391. // @Accept json
  392. // @Produce json
  393. // @Param sqlname query string true "sqlname"
  394. // @Param offset query int true "offset"
  395. // @Param pagecount query int true "pagecount"
  396. // @Param returntype query string true "returntype"
  397. // @Success 200 {string} json "{ "code": 200, "data": {}, "msg": "ok" }"
  398. // @Failure 400 {string} json "{"code":400, "data":null,"msg":"请求参数错误"}"
  399. // @Failure 404 {string} json "{ "code": 404, "data":null,"msg":"请求参数错误"}"
  400. // @Router /data/PostDataByName [POST]
  401. func ExecDataByConfig(c *gin.Context) {
  402. appG := app.Gin{C: c}
  403. dataByte, _ := ioutil.ReadAll(c.Request.Body)
  404. tempval_ := make(map[string]interface{})
  405. tempCommon := make(map[string]interface{})
  406. tempval := make([]map[string]interface{},0)
  407. err := json.Unmarshal(dataByte, &tempval_)
  408. if err != nil {
  409. fmt.Println("error:", err)
  410. }else{
  411. if v,ok := tempval_["common"].(map[string]interface{});ok{
  412. tempCommon = v
  413. }
  414. if v,ok := tempval_["data"].([]interface{});ok{
  415. for _, Tvalue := range v{
  416. if v1, ok := Tvalue.(map[string]interface{});ok {
  417. tempval = append(tempval, v1)
  418. }
  419. }
  420. }
  421. tx := restful.Engine.NewSession()
  422. err := tx.Begin()
  423. if err!= nil{
  424. fmt.Println("GetT error:", err)
  425. }
  426. defer func() {
  427. switch {
  428. case err != nil:
  429. fmt.Println("__error:", err)
  430. if tx!= nil {tx.Rollback()}
  431. default:
  432. if tx!= nil {err = tx.Commit()}
  433. }
  434. if tx!= nil {
  435. tx.Close()
  436. }
  437. }()
  438. if err == nil {
  439. if tempv, exists := c.Get("jwt_username"); exists{
  440. tempCommon["jwt_username"] = tempv.(string)
  441. }
  442. for _, paramvalue := range tempval{
  443. if _, ok := paramvalue["resultname"]; !ok {
  444. paramvalue["resultname"] = paramvalue["name"]
  445. }
  446. _, err = ExecDataParam(paramvalue, tempCommon, tempval, nil, nil, tx)
  447. if err != nil {
  448. fmt.Println("ExecDataParam error:", err)
  449. break
  450. }
  451. }
  452. if err == nil{
  453. if tempCommon["returnmap"] != nil && tempCommon["returnmap"]!=""{
  454. appG.Response(http.StatusOK, e.SUCCESS, tempval)
  455. }else{
  456. appG.Response(http.StatusOK, e.SUCCESS, "成功执行!")
  457. }
  458. }else {
  459. appG.Response(http.StatusOK, e.ERROR, err.Error())
  460. }
  461. }
  462. }
  463. if err != nil {
  464. appG.Response(http.StatusOK, e.ERROR, err.Error())
  465. }
  466. }
  467. func interfacetostring(val interface{}) string{
  468. switch val.(type) {
  469. case string:
  470. ss := val.(string)
  471. return ss
  472. break
  473. case int:
  474. ss := val.(int)
  475. return strconv.Itoa(ss)
  476. break
  477. case int64:
  478. ss := val.(int64)
  479. return strconv.FormatInt(ss,10)
  480. break
  481. case float64:
  482. ss := val.(float64)
  483. return strconv.FormatFloat(ss, 'E', -1, 32)
  484. break
  485. }
  486. return ""
  487. }
  488. func getParamValue(parammaps map[string]interface{} ,value string ,ParamMap []map[string]interface{}) string {
  489. if valuestring,ok := parammaps[strings.Trim(value, " ")].(string);ok {
  490. tempstrb := strings.IndexAny(valuestring, "@")
  491. tempstre := strings.IndexAny(valuestring, ".")
  492. if tempstrb>-1 && tempstre>-1{
  493. for _, ParamMapList := range ParamMap {
  494. if v, ok := ParamMapList["resultname"]; ok {
  495. if v==valuestring[tempstrb+1:tempstre]{
  496. if v1, ok := ParamMapList["resultmaps"]; ok {
  497. if newA,ok := v1.([]map[string]interface{}); ok {
  498. return interfacetostring(newA[0][valuestring[tempstre+1:]])
  499. }else if newA,ok := v1.(map[string]interface{}); ok {
  500. return interfacetostring(newA[valuestring[tempstre+1:]])
  501. }
  502. }
  503. }
  504. }
  505. }
  506. }else{
  507. return valuestring
  508. }
  509. }else if valuestring,ok := parammaps[strings.Trim(value, " ")].(float64);ok{
  510. return strconv.FormatInt(int64(valuestring), 10)
  511. }
  512. return ""
  513. }
  514. func getParamValue_(parammaps map[string]interface{} ,value string ,ParamMap map[string]interface{}) string {
  515. if valuestring,ok := parammaps[strings.Trim(value, " ")].(string);ok {
  516. tempstrb := strings.IndexAny(valuestring, "@")
  517. tempstre := strings.IndexAny(valuestring, ".")
  518. if tempstrb>-1 && tempstre>-1{
  519. if v, ok := ParamMap[valuestring[tempstre+1:]];ok{
  520. if s ,ok :=v.(string);ok{
  521. return s
  522. }else if s ,ok :=v.(float64);ok{
  523. return strconv.FormatInt(int64(s), 10)
  524. }
  525. }
  526. }
  527. }
  528. return ""
  529. }
  530. func ExecDataParam(fasion map[string]interface{} , CommonParamMap map[string]interface{},ParamMap []map[string]interface{}, ParentParamMap map[string]interface{}, sameParamMap []map[string]interface{}, tx *xorm.Session)([]map[string]interface{}, error) {
  531. sqlname := fasion["name"].(string)
  532. sqltype := "" //v 校验/s1 查询/sm 查询/e 执行
  533. if v, ok := fasion["type"]; ok {
  534. sqltype = v.(string)
  535. }
  536. sql := ""
  537. p := ""
  538. s_params := make([]interface{}, 0)
  539. if sqltype!= "" {
  540. sql, p = restful.GetSqlByName(sqlname, tx)
  541. //sqlApi, _ := models.GetApisqlByName(sqlname)
  542. if v, ok := fasion["parammaps"].(map[string]interface{}); ok {
  543. paramslist := strings.Split(p, ",")
  544. if len(paramslist) > 0 && p != "" {
  545. for _, value := range paramslist {
  546. ss := ""
  547. if ss == "" && CommonParamMap != nil {
  548. if valuestring,ok := v[strings.Trim(value, " ")].(string);ok{
  549. ss = valuestring
  550. tempstrb := strings.IndexAny(valuestring, "@")
  551. tempstre := strings.IndexAny(valuestring, ".")
  552. if ((tempstre>tempstrb) && (strings.ToLower(valuestring[tempstrb+1:tempstre]) == "common")) {
  553. if CommonParamMap[valuestring[tempstre+1:]] != nil {
  554. ss = CommonParamMap[valuestring[tempstre+1:]].(string)
  555. }
  556. }else{ ss=""}
  557. }
  558. }
  559. if ss == "" && ParentParamMap != nil {
  560. ss = getParamValue_(v, value, ParentParamMap)
  561. }
  562. if ss == "" && sameParamMap != nil {
  563. ss = getParamValue(v, value, sameParamMap)
  564. }
  565. if ss == "" && ParamMap != nil {
  566. ss = getParamValue(v, value, ParamMap)
  567. }
  568. s_params = append(s_params, ss)
  569. }
  570. }
  571. }
  572. }
  573. if sql == "" {
  574. sqltype=""
  575. }
  576. if sqltype=="s1" {
  577. tempValParam, err := restful.QueryByMap(sql, 0, 1, s_params)
  578. if v, ok := tempValParam.(map[string]interface{}); ok{
  579. fasion["resultmaps"]=v["list"].([]map[string]interface{})
  580. }
  581. if err != nil {
  582. return nil, err
  583. }
  584. err = ExitsChildrenParam(fasion, tempValParam , ParamMap, CommonParamMap, tx)
  585. if err != nil {
  586. return nil, err
  587. }
  588. return tempValParam.(map[string]interface{})["list"].([]map[string]interface{}), err
  589. }else if sqltype=="sm" {
  590. tempValParam, err := restful.QueryByMap(sql, 0, 0, s_params)
  591. if v, ok := tempValParam.(map[string]interface{}); ok{
  592. fasion["resultmaps"]=v["list"].([]map[string]interface{})
  593. }else{fmt.Println("sm",tempValParam)}
  594. if err != nil {
  595. return nil, err
  596. }
  597. err = ExitsChildrenParam(fasion, tempValParam , ParamMap, CommonParamMap, tx)
  598. if err != nil {
  599. return nil, err
  600. }
  601. return tempValParam.(map[string]interface{})["list"].([]map[string]interface{}), err
  602. }else if sqltype=="v" {
  603. tempValParam, err := restful.QueryByMap(sql, 0, 1, s_params)
  604. if v, ok := tempValParam.(map[string]interface{}); ok{
  605. fasion["resultmaps"]=v["list"].([]map[string]interface{})
  606. }else{fmt.Println("v",tempValParam)}
  607. if err != nil {
  608. return nil, err
  609. }
  610. if tempValParam.(map[string]interface{})["list"].([]map[string]interface{})[0]["vmsg"]!="" {
  611. return nil, errors.New(tempValParam.(map[string]interface{})["list"].([]map[string]interface{})[0]["vmsg"].(string))
  612. }
  613. }else if sqltype=="e" {
  614. tempVal_arrary := make([]map[string]interface{},0)
  615. tempVal_map := make(map[string]interface{})
  616. tempValParam, err := restful.ExecQueryT(sql, s_params, tx)
  617. if err==nil{
  618. fasion["resultmaps"] = tempValParam.(map[string]interface{})
  619. tempVal_map["result"] = tempValParam.(map[string]interface{})["result"]
  620. tempVal_map["LastInsertId"] = tempValParam.(map[string]interface{})["LastInsertId"]
  621. tempVal_arrary = append(tempVal_arrary,tempVal_map)
  622. return tempVal_arrary, err
  623. }
  624. return nil, err
  625. }else {
  626. if tempValParam,ok := fasion["resultmaps"].(map[string]interface{});ok{
  627. err := ExitsChildrenParam(fasion,tempValParam , ParamMap, CommonParamMap, tx)
  628. if err != nil {
  629. return nil, err
  630. }
  631. return nil, err
  632. }
  633. }
  634. return nil ,nil
  635. }
  636. func ExitsChildrenParam(fasion map[string]interface{} , tempValParam interface{}, ParamMap []map[string]interface{},commonParam map[string]interface{}, tx *xorm.Session) error{
  637. var err error
  638. subarray, ok := fasion["children"]
  639. if ok {
  640. for _,v := range tempValParam.(map[string]interface{})["list"].([]interface{}) { //遍历父集有多少行数据
  641. tempVal_arrary := make([]map[string]interface{},0)
  642. for _, subarrayvalue := range subarray.([]interface{}) { //遍历所有执行命令
  643. tempVal_ := make(map[string]interface{})
  644. if _, ok := subarrayvalue.(map[string]interface{})["resultname"]; !ok {
  645. tempVal_["resultname"]= subarrayvalue.(map[string]interface{})["name"]
  646. }else {
  647. tempVal_["resultname"]= subarrayvalue.(map[string]interface{})["resultname"]
  648. }
  649. tempVal_["resultmaps"], err = ExecDataParam(subarrayvalue.(map[string]interface{}),commonParam, ParamMap, v.(map[string]interface{}),tempVal_arrary, tx) //递归调用执行
  650. if err!= nil {
  651. return err
  652. }
  653. tempVal_arrary = append(tempVal_arrary, tempVal_)
  654. }
  655. v.(map[string]interface{})["children"] = tempVal_arrary
  656. }
  657. }
  658. return nil
  659. }
  660. // @Summary 删除图片
  661. // @Tags RemovePicByName
  662. // @Accept json
  663. // @Produce json
  664. // @Param sqlname query string true "sqlname"
  665. // @Param offset query int true "offset"
  666. // @Param pagecount query int true "pagecount"
  667. // @Param returntype query string true "returntype"
  668. // @Success 200 {string} json "{ "code": 200, "data": {}, "msg": "ok" }"
  669. // @Failure 400 {string} json "{"code":400, "data":null,"msg":"请求参数错误"}"
  670. // @Failure 404 {string} json "{ "code": 404, "data":null,"msg":"请求参数错误"}"
  671. // @Router /data/PostDataByName [POST]
  672. func RemovePicByName(c *gin.Context) {
  673. appG := app.Gin{C: c}
  674. dataByte, _ := ioutil.ReadAll(c.Request.Body)
  675. fsion := gofasion.NewFasion(string(dataByte))
  676. sqlnamestr := fsion.Get("name").ValueStr()
  677. picname := fsion.Get("picname").ValueStr()
  678. sql, _ := restful.GetSqlByNameDB(sqlnamestr)
  679. params := fsion.Get("params").Array()
  680. s_params := make([]interface{}, 0)
  681. for _, v_params := range params {
  682. s_params = append(s_params,v_params.ValueStr())
  683. }
  684. if sql != ""{
  685. queryData, err := execDataBySql(sql, s_params)
  686. if (picname != ""){
  687. // Destination
  688. distPath := path.Join(setting.CurrentPath, setting.AppSetting.ImageSavePath, picname)
  689. err := os.Remove(distPath) //删除文件test.txt
  690. if err != nil {
  691. //如果删除失败则输出 file remove Error!
  692. fmt.Println("file remove Error!")
  693. //输出错误详细信息
  694. fmt.Printf("%s", err)
  695. } else {
  696. //如果删除成功则输出 file remove OK!
  697. fmt.Print("file remove OK!")
  698. }
  699. distPath = path.Join(setting.CurrentPath, setting.AppSetting.ThumbnailSavePath, picname)
  700. err = os.Remove(distPath) //删除文件test.txt
  701. if err != nil {
  702. //如果删除失败则输出 file remove Error!
  703. fmt.Println("file remove Error!")
  704. //输出错误详细信息
  705. fmt.Printf("%s", err)
  706. } else {
  707. //如果删除成功则输出 file remove OK!
  708. fmt.Print("file remove OK!")
  709. }
  710. }
  711. if err != nil {
  712. appG.Response(http.StatusOK, e.ERROR, err.Error())
  713. } else {
  714. appG.Response(http.StatusOK, e.SUCCESS, queryData)
  715. }
  716. } else {
  717. appG.Response(http.StatusOK, e.SUCCESS, nil)
  718. }
  719. }
  720. // @Summary 删除文件
  721. // @Tags RemoveFileByName
  722. // @Accept json
  723. // @Produce json
  724. // @Param sqlname query string true "sqlname"
  725. // @Param offset query int true "offset"
  726. // @Param pagecount query int true "pagecount"
  727. // @Param returntype query string true "returntype"
  728. // @Success 200 {string} json "{ "code": 200, "data": {}, "msg": "ok" }"
  729. // @Failure 400 {string} json "{"code":400, "data":null,"msg":"请求参数错误"}"
  730. // @Failure 404 {string} json "{ "code": 404, "data":null,"msg":"请求参数错误"}"
  731. // @Router /data/PostDataByName [POST]
  732. func RemoveFileByName(c *gin.Context) {
  733. appG := app.Gin{C: c}
  734. dataByte, _ := ioutil.ReadAll(c.Request.Body)
  735. fsion := gofasion.NewFasion(string(dataByte))
  736. sqlnamestr := fsion.Get("name").ValueStr()
  737. filename := fsion.Get("filename").ValueStr()
  738. sql, _ := restful.GetSqlByNameDB(sqlnamestr)
  739. params := fsion.Get("params").Array()
  740. s_params := make([]interface{}, 0)
  741. for _, v_params := range params {
  742. s_params = append(s_params,v_params.ValueStr())
  743. }
  744. if sql != ""{
  745. queryData, err := execDataBySql(sql, s_params)
  746. if (filename != ""){
  747. // Destination
  748. distPath := path.Join(setting.CurrentPath, setting.AppSetting.FileSavePath, filename)
  749. err := os.Remove(distPath) //删除文件test.txt
  750. if err != nil {
  751. //如果删除失败则输出 file remove Error!
  752. fmt.Println("file remove Error!")
  753. //输出错误详细信息
  754. fmt.Printf("%s", err)
  755. } else {
  756. //如果删除成功则输出 file remove OK!
  757. fmt.Print("file remove OK!")
  758. }
  759. }
  760. if err != nil {
  761. appG.Response(http.StatusOK, e.ERROR, err.Error())
  762. } else {
  763. appG.Response(http.StatusOK, e.SUCCESS, queryData)
  764. }
  765. } else {
  766. appG.Response(http.StatusOK, e.SUCCESS, nil)
  767. }
  768. }
  769. // @Summary 根据APISQL表中SQL执行得到数据集
  770. // @Tags PostDataByName
  771. // @Accept json
  772. // @Produce json
  773. // @Param sqlname query string true "sqlname"
  774. // @Param offset query int true "offset"
  775. // @Param pagecount query int true "pagecount"
  776. // @Param returntype query string true "returntype"
  777. // @Success 200 {string} json "{ "code": 200, "data": {}, "msg": "ok" }"
  778. // @Failure 400 {string} json "{"code":400, "data":null,"msg":"请求参数错误"}"
  779. // @Failure 404 {string} json "{ "code": 404, "data":null,"msg":"请求参数错误"}"
  780. // @Router /data/PostDataByName [POST]
  781. func UpdateDataRelation(c *gin.Context) {
  782. appG := app.Gin{C: c}
  783. dataByte, _ := ioutil.ReadAll(c.Request.Body)
  784. fsion := gofasion.NewFasion(string(dataByte))
  785. tablename := fsion.Get("name").ValueStr()
  786. dataname := fsion.Get("dataname").ValueStr()
  787. datavalue := fsion.Get("datavalue").ValueStr()
  788. valuename := fsion.Get("valuename").ValueStr()
  789. values := fsion.Get("values").Array()
  790. insertSqlstr := "insert into "+tablename +"( "+dataname+"," + valuename +") select DISTINCT ?, ? from "+tablename +
  791. " where ? not in (select "+ valuename + " from "+tablename +" where " + dataname + " = ?)"
  792. d_params := make([]interface{}, 4)
  793. d_params[0] = datavalue
  794. s_params := ""
  795. for _, v_values := range values {
  796. d_params[1] = v_values.ValueStr()
  797. if s_params == "" {
  798. s_params = v_values.ValueStr()
  799. } else {
  800. s_params = s_params+ ","+v_values.ValueStr()
  801. }
  802. d_params[2] = d_params[1]
  803. d_params[3] = d_params[0]
  804. _, err := execDataBySql(insertSqlstr, d_params)
  805. if err != nil {
  806. appG.Response(http.StatusOK, e.ERROR, err.Error())
  807. break
  808. }
  809. }
  810. deleteSqlstr := "delete from " + tablename + " " +
  811. " where " + dataname + " = "+ datavalue +" and "+ valuename + " not in (" + s_params + ")"
  812. queryData, err := execDataBySql(deleteSqlstr, nil )
  813. if err != nil {
  814. appG.Response(http.StatusOK, e.ERROR, err.Error())
  815. } else if err == nil {
  816. appG.Response(http.StatusOK, e.SUCCESS, queryData)
  817. }
  818. }
  819. // @Summary 根据APISQL表中SQL执行得到数据集
  820. // @Tags PostDatasByName
  821. // @Accept json
  822. // @Produce json
  823. // @Param sqlname query string true "sqlname"
  824. // @Param offset query int true "offset"
  825. // @Param pagecount query int true "pagecount"
  826. // @Param returntype query string true "returntype"
  827. // @Success 200 {string} json "{ "code": 200, "data": {}, "msg": "ok" }"
  828. // @Failure 400 {string} json "{"code":400, "data":null,"msg":"请求参数错误"}"
  829. // @Failure 404 {string} json "{ "code": 404, "data":null,"msg":"请求参数错误"}"
  830. // @Router /data/PostDatasByName [POST]
  831. func PostDataByNames(c *gin.Context) {
  832. appG := app.Gin{C: c}
  833. dataByte, _ := ioutil.ReadAll(c.Request.Body)
  834. fsion := gofasion.NewFasion(string(dataByte))
  835. sqlParams := fsion.Array()
  836. queryData := make(map[string]interface{})
  837. for _, v := range sqlParams {
  838. fsion2 := gofasion.NewFasion(v.Json())
  839. sql, p := restful.GetSqlByNameDB(fsion2.Get("name").ValueStr())
  840. if sql == "" {
  841. errorm := make(map[string]interface{})
  842. errorm["code"] = e.ERROR
  843. errorm["message"] = "sql没有找到"
  844. errorm["param"] = ""
  845. queryData[fsion2.Get("name").ValueStr()] = errorm
  846. continue
  847. }else if sql != ""{
  848. s_params := make([]interface{}, 0)
  849. if fsion2.HasKey("parammaps") {
  850. parammaps := fsion2.Get("parammaps")
  851. paramslist := strings.Split(p,",")
  852. if len(paramslist)>0 && p !="" {
  853. for _, value := range paramslist {
  854. if (strings.ToLower(strings.Trim(value," "))=="jwt_username"){
  855. if tempv, exists := c.Get("jwt_username"); exists{
  856. s_params = append(s_params, tempv.(string))
  857. }else{s_params = append(s_params,"")}
  858. }else{
  859. s_params = append(s_params, parammaps.Get(strings.Trim(value," ")).ValueStr())
  860. }
  861. }
  862. }
  863. }else if fsion2.HasKey("params") {
  864. params := fsion2.Get("params").Array()
  865. for _, v_params := range params {
  866. s_params = append(s_params,v_params.ValueStr())
  867. }
  868. }
  869. _, err := execDataBySql(sql, s_params)
  870. if err != nil {
  871. errorm := make(map[string]interface{})
  872. errorm["code"] = e.ERROR
  873. errorm["message"] = err.Error()
  874. errorm["param"] = s_params
  875. queryData[fsion2.Get("name").ValueStr()] = errorm
  876. continue
  877. } else {
  878. errorm := make(map[string]interface{})
  879. errorm["code"] = e.SUCCESS
  880. errorm["message"] = "success"
  881. queryData[fsion2.Get("name").ValueStr()] = errorm
  882. continue
  883. }
  884. } else {
  885. errorm := make(map[string]interface{})
  886. errorm["code"] = e.ERROR
  887. errorm["message"] = "NO SQL"
  888. errorm["param"] = ""
  889. queryData[fsion2.Get("name").ValueStr()] = errorm
  890. }
  891. }
  892. appG.Response(http.StatusOK, e.SUCCESS, queryData)
  893. }
  894. func getDataBySql(sqlstr string, offset, pagecount int,returntype string,params []interface{}) (interface{}, error){
  895. if offset>0 {offset=offset-1}
  896. if returntype=="list" {
  897. queryData, err := restful.QueryByList(sqlstr,offset,pagecount, params)
  898. return queryData, err
  899. } else if returntype=="listlist" {
  900. queryData, err := restful.QueryByListList(sqlstr, offset, pagecount, params)
  901. return queryData, err
  902. } else {
  903. queryData, err := restful.QueryByMap(sqlstr, offset, pagecount, params)
  904. return queryData, err
  905. }
  906. }
  907. func GetRecuData_BySql(sql string, Params string, idname string, thisParams map[string]interface{},isList bool) (interface{}, error){
  908. paramslist := strings.Split(Params,",")
  909. s_params := make([]interface{}, 0)
  910. if isList {
  911. for _, v_params := range thisParams["params"].([]interface{}) {
  912. s_params = append(s_params, v_params)
  913. }
  914. } else {
  915. paramslist := strings.Split(Params,",")
  916. if len(paramslist)>0 && Params!="" {
  917. for _, value := range paramslist {
  918. s_params = append(s_params, thisParams[strings.Trim(value," ")])
  919. }
  920. }
  921. }
  922. queryData, err := restful.QueryByMapMenu(sql, 0, 0, s_params)
  923. for _, queryData_ := range queryData {
  924. if v,ok := queryData_["haschildren"];(ok && v.(int64)>0) || !ok {
  925. if isList {
  926. thisParams["params"].([]interface{})[len(thisParams["params"].([]interface{}))-1] = queryData_[idname].(interface{})
  927. } else {
  928. thisParams[idname] = queryData_[idname].(interface{})
  929. if len(paramslist) > 0 && Params != "" {
  930. s_params = make([]interface{}, 0)
  931. for _, value := range paramslist {
  932. s_params = append(s_params, thisParams[strings.Trim(value, " ")])
  933. }
  934. }
  935. }
  936. queryData_["children"], _ = GetRecuData_BySql(sql, Params, idname, thisParams, isList)
  937. }else {
  938. }
  939. }
  940. return queryData, err
  941. }
  942. func execDataBySql(sqlstr string,params []interface{}) (interface{}, error){
  943. queryData, err := restful.ExecQuery(sqlstr, params)
  944. return queryData, err
  945. }
  946. func ExecDataBySql(sqlstr string,params []interface{}) (interface{}, error){
  947. queryData, err := restful.ExecQuery(sqlstr, params)
  948. return queryData, err
  949. }
  950. // @Summary 导入excel文件到数据库,excel第一行作为参数
  951. // @Tags ImportExcel
  952. // @Accept json
  953. // @Produce json
  954. // @Param file query string true "文件名"
  955. // @Param name header string true "执行sql的名字"
  956. // @Success 200 {string} json "{ "code": 200, "data": {}, "msg": "ok" }"
  957. // @Failure 400 {string} json "{"code":400, "data":null,"msg":"请求参数错误"}"
  958. // @Failure 404 {string} json "{ "code": 404, "data":null,"msg":"请求参数错误"}"
  959. // @Router /data/ImportExcel [POST]
  960. func ImportExcel(c *gin.Context) {
  961. appG := app.Gin{C: c}
  962. inputdata := ""
  963. c.Request.ParseForm()
  964. params := c.Request.Form
  965. file, _, err := c.Request.FormFile("file")
  966. if err != nil {
  967. appG.Response(http.StatusOK, e.ERROR, err)
  968. return
  969. }
  970. sqlnamestr := params.Get("name")
  971. sheetname := params.Get("sheetname")
  972. importParams := params.Get("importParams")
  973. sql, _ := restful.GetSqlByNameDB(sqlnamestr)
  974. paramslist := strings.Split(importParams,",")
  975. queryData := make([]interface{}, 0)
  976. xlsx1, err := excelize.OpenReader(file)
  977. if err != nil {
  978. fmt.Println(err)
  979. return
  980. }
  981. ok := 0
  982. error := 0;
  983. rows,_ := xlsx1.GetRows(sheetname)
  984. for i, row := range rows {
  985. fmt.Print(i, "\t")
  986. if i > 0 {
  987. if len(paramslist)>0 {
  988. s_params := make([]interface{}, 0)
  989. entry := make(map[string]interface{})
  990. outentry := make(map[string]interface{})
  991. inputdata = ""
  992. for _, value := range paramslist {
  993. if(strings.ToLower(strings.Trim(value," "))=="jwt_username"){
  994. if tempv, exists := c.Get("jwt_username"); exists{
  995. s_params = append(s_params, tempv.(string))
  996. }else{s_params = append(s_params,"")}
  997. }else{
  998. for j, colCell := range rows[0] {
  999. if strings.Trim(value," ") == colCell {
  1000. for k, colCell1 := range row {
  1001. if j==k{
  1002. entry[colCell] = colCell1
  1003. inputdata = inputdata + colCell+":"+colCell1+";"
  1004. }
  1005. }
  1006. }
  1007. }
  1008. s_params = append(s_params, entry[strings.Trim(value," ")])
  1009. }
  1010. }
  1011. outentry["input"]=inputdata
  1012. // returnmsg, err := execDataBySql(sqlApi.Sqlstr, s_params)
  1013. returnmsg, err := getDataBySql(sql, 0,0,"4", s_params)
  1014. returnmsgmap, _ := returnmsg.(map[string]interface{})
  1015. returnmsgmap1, _ := returnmsgmap["list"].([]map[string]interface{})
  1016. if err != nil{
  1017. outentry["error_msg"] = err
  1018. error++
  1019. queryData = append(queryData, outentry)
  1020. }else if (len(returnmsgmap1)>0) && (returnmsgmap1[0]["msg"] == "success"){
  1021. ok ++
  1022. }else {
  1023. outentry["error_msg"] = returnmsgmap1[0]["msg"]
  1024. error++
  1025. queryData = append(queryData, outentry)
  1026. }
  1027. }
  1028. }
  1029. }
  1030. data := make(map[string]interface{})
  1031. data["result"] = queryData
  1032. data["success"] = ok
  1033. data["err_count"] = error
  1034. appG.Response(http.StatusOK, e.SUCCESS, data)
  1035. }