apiController.go 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622
  1. package controllers
  2. /*
  3. 核心控制器
  4. 所有api均通过该控制器进行业务分发
  5. 请求路由由router.go自动注册,通过在控制器中的方法注释注册为路由
  6. */
  7. import (
  8. "encoding/json"
  9. "fmt"
  10. "os"
  11. "path/filepath"
  12. "regexp"
  13. "rtzh_elec_temperature/conf"
  14. "rtzh_elec_temperature/db"
  15. "rtzh_elec_temperature/global"
  16. "rtzh_elec_temperature/tools"
  17. "runtime"
  18. "strconv"
  19. "strings"
  20. "time"
  21. "rtzh_elec_temperature/models/bo"
  22. "github.com/astaxie/beego/context"
  23. //"github.com/astaxie/beego/orm"
  24. //"github.com/astaxie/beego/session"
  25. //"github.com/satori/go.uuid"
  26. "github.com/patrickmn/go-cache"
  27. )
  28. //var GlobalSessions *session.Manager
  29. //基础功能服务
  30. type ApiController struct {
  31. BaseController
  32. }
  33. func (this *ApiController) Prepare() {
  34. fmt.Println(this.Data["RouterPattern"].(string))
  35. }
  36. func init() {
  37. global.GoCahce = cache.New(5*time.Minute, 60*time.Second)
  38. //GlobalSessions, _ = session.NewManager("memory", `{"cookieName":"gosessionid","gclifetime":300}`)
  39. //go GlobalSessions.GC()
  40. }
  41. // 语音文件播放
  42. // @Summary 语音文件播放
  43. // @Description 语音文件播放。仅支持windows系统。
  44. // @Tags api
  45. // @Accept x-www-form-urlencoded
  46. // @Produce json
  47. // @Param filename query string true "语音/录音文件名。需要将文件已上传到系统指定目录。"
  48. // @Success 200 {object} ApiOK 成功
  49. // @Success 200 {object} ApiError 错误
  50. // @Failure 500 status 失败
  51. // @router /playWav [get]
  52. func (c *ApiController) PlayWav() {
  53. filename := c.GetString("filename", "")
  54. buf := make([]byte, 4096)
  55. n, _ := c.Ctx.Request.Body.Read(buf)
  56. if filename == "" && n > 0 {
  57. jsondata := map[string]string{}
  58. json.Unmarshal(buf[0:n], &jsondata)
  59. filename = jsondata["filename"]
  60. }
  61. if filename != "" {
  62. dir, _ := filepath.Abs(filepath.Dir(os.Args[0]))
  63. fmt.Println(dir)
  64. //a := bo.Mp3Entry{Source: dir + "\\pc\\" + filename}
  65. //a.PlayWav()
  66. }
  67. c.Data["json"] = map[string]interface{}{"result": "1", "success": true}
  68. c.ServeJSON()
  69. }
  70. // 获取当前系统的版本号
  71. // @Summary 获取当前系统的版本号
  72. // @Description 获取当前系统的版本号
  73. // @Tags api
  74. // @Accept x-www-form-urlencoded
  75. // @Produce json
  76. // @Success 200 {object} ApiOK 成功
  77. // @Success 200 {object} ApiError 错误
  78. // @Failure 500 status 失败
  79. // @router /getVersion [get]
  80. func (c *ApiController) GetVersion() {
  81. exename := conf.GlobalConfig["appid"]
  82. if string(runtime.GOOS) == "windows" {
  83. exename = exename + ".exe"
  84. }
  85. f, err1 := os.Open(exename)
  86. if err1 != nil {
  87. fmt.Println(tools.NowTime()+":", err1.Error())
  88. c.Data["json"] = c.WarpError("获取版本号失败")
  89. c.ServeJSON()
  90. return
  91. }
  92. fi, err2 := f.Stat()
  93. if err2 != nil {
  94. fmt.Println(tools.NowTime()+":", err2.Error())
  95. c.Data["json"] = c.WarpError("获取版本号失败")
  96. c.ServeJSON()
  97. return
  98. }
  99. data := fi.ModTime().Format("20060102-15")
  100. c.Data["json"] = c.WarpOK(data)
  101. c.ServeJSON()
  102. }
  103. func (c *ApiController) CheckSeesion() bool {
  104. userid := c.Ctx.Input.Session("userid")
  105. r := c.GetSession(userid)
  106. if r == nil || r == "" {
  107. return false
  108. }
  109. return true
  110. }
  111. func (c *ApiController) GetUserToken() string {
  112. Authorization := c.Ctx.Request.Header.Get("Authorization")
  113. fmt.Println("Authorization:" + Authorization)
  114. if Authorization == "" {
  115. return ""
  116. }
  117. return strings.TrimLeft(Authorization, "Bearer ")
  118. }
  119. // 心跳保活
  120. // @Summary 心跳保活
  121. // @Description 心跳保活。特殊应用场景下用于token自动续期。
  122. // @Tags api
  123. // @Accept x-www-form-urlencoded
  124. // @Produce json
  125. // @Success 200 {object} ApiOK 成功
  126. // @Success 200 {object} ApiError 错误
  127. // @Failure 500 status 失败
  128. // @router /keep-alive [post]
  129. func (c *ApiController) KeepAlive() {
  130. c.Data["json"] = "ok"
  131. c.ServeJSON()
  132. }
  133. // 用户登出
  134. // @Summary 用户登出
  135. // @Description 用户登出。集成变电框架时,无需调用此接口。
  136. // @Tags api
  137. // @Accept x-www-form-urlencoded
  138. // @Produce json
  139. // @Param sessionid query string true "登录用户的token"
  140. // @Success 200 {object} ApiOK 成功
  141. // @Success 200 {object} ApiError 错误
  142. // @Failure 500 status 失败
  143. // @router /logout [post]
  144. func (c *ApiController) Logout() {
  145. sessionid := c.GetString("sessionid", "")
  146. bo.RemoveSession(sessionid)
  147. delete(bo.CacheUserByToken, sessionid)
  148. c.Data["json"] = "ok"
  149. c.ServeJSON()
  150. }
  151. //获取当前登录用户信息
  152. func GetCurrentUser(ctx *context.Context) (obj map[string]interface{}) {
  153. token := ctx.Request.Header.Get("Authorization")
  154. if token == "" {
  155. return nil
  156. }
  157. token = strings.ReplaceAll(strings.ReplaceAll(token, "Bearer ", ""), " ", "")
  158. usr, _ := bo.GetUserInfoByToken(token)
  159. return usr
  160. }
  161. // 用户登录
  162. // @Summary 用户登录
  163. // @Description 用户登录。集成变电框架时,无需调用此接口。
  164. // @Tags api
  165. // @Accept x-www-form-urlencoded
  166. // @Produce json
  167. // @Param login_account query string true "用户帐号"
  168. // @Param pwd query string true "用户密码"
  169. // @Success 200 {object} ApiOK 成功
  170. // @Success 200 {object} ApiError 错误
  171. // @Failure 500 status 失败
  172. // @router /login [post]
  173. func (c *ApiController) Login() {
  174. username := c.GetString("login_account", "")
  175. password := c.GetString("pwd", "")
  176. if password == "" {
  177. c.Data["json"] = c.WarpError("密码不能为空")
  178. } else if username == "" {
  179. c.Data["json"] = c.WarpError("帐号不能为空")
  180. } else {
  181. //由变电框架app负责登录
  182. }
  183. c.ServeJSON()
  184. }
  185. // @router /saveUser [post]
  186. func (c *ApiController) SaveUser() {
  187. name := c.GetString("name", "")
  188. reg := regexp.MustCompile(`(#|\?|%|,)`)
  189. if len(reg.FindAllString(name, -1)) > 0 {
  190. c.Data["json"] = c.WarpError("名称不能包含特殊字符:#?%,")
  191. c.ServeJSON()
  192. return
  193. }
  194. var err error
  195. id, _ := strconv.Atoi(c.GetString("id", "0"))
  196. memo := c.GetString("memo", "")
  197. account := c.GetString("account", "")
  198. pwd := c.GetString("pwd", "")
  199. obj := bo.T_data_user{Id: id, Name: name, Memo: memo, Account: account, Pwd: pwd}
  200. obj.Createtime = strings.Trim(tools.NowTime(), " ")
  201. userid, err2 := strconv.Atoi(c.GetUserToken())
  202. if err2 != nil {
  203. c.Ctx.ResponseWriter.WriteHeader(401) //token获取失败或无效时,直接返回401
  204. return
  205. }
  206. obj.Createuser = userid
  207. insertId, err := bo.SaveUser(obj, c.GetCurrentUserInfo())
  208. //tmp, _ := json.Marshal(obj)
  209. //fmt.Println(string(tmp))
  210. if err != nil {
  211. c.Data["json"] = c.WarpError(err.Error())
  212. } else {
  213. c.Data["json"] = c.WarpOK(insertId)
  214. }
  215. c.ServeJSON()
  216. }
  217. // @router /getUser [post,get]
  218. func (c *ApiController) GetUser() {
  219. var id = 0
  220. id, _ = strconv.Atoi(c.GetString("id", "0"))
  221. param := tools.ParseFormParam(c.Ctx.Request.Form)
  222. obj := bo.T_data_user{Id: id}
  223. datalist, err := bo.QueryUserList(param, obj, c.GetCurrentUserInfo())
  224. if err != nil {
  225. c.Data["json"] = c.WarpError(err.Error())
  226. } else {
  227. c.Data["json"] = c.WarpPageOk(datalist["meta"].(map[string]interface{}), datalist["data"])
  228. }
  229. c.ServeJSON()
  230. }
  231. // @router /createuser [post]
  232. func (c *ApiController) CreateUser() {
  233. parameter := map[string]interface{}{}
  234. parameter["userid"] = c.GetString("userid", "0")
  235. parameter["role"] = c.GetString("role", "")
  236. parameter["username"] = c.GetString("username", "")
  237. parameter["account"] = c.GetString("account", "")
  238. parameter["password"] = c.GetString("password", "")
  239. parameter["memo"] = c.GetString("memo", "")
  240. status, err := bo.CreateUser(parameter)
  241. tools.CheckErr(err)
  242. if err != nil {
  243. c.Data["json"] = c.WarpError(err.Error())
  244. } else {
  245. c.Data["json"] = c.WarpOK(status)
  246. }
  247. c.ServeJSON()
  248. }
  249. // 删除指定用户
  250. // @Summary 删除指定用户
  251. // @Description 删除指定用户。谨慎操作!
  252. // @Tags api
  253. // @Accept x-www-form-urlencoded
  254. // @Produce json
  255. // @Param id query string true "用户ID"
  256. // @Success 200 {object} ApiOK 成功
  257. // @Success 200 {object} ApiError 错误
  258. // @Failure 500 status 失败
  259. // @router /deleteUser [post]
  260. func (c *ApiController) DelUser() {
  261. datalist, err := bo.DelUser(c.GetString("id"), c.GetCurrentUserInfo())
  262. if err != nil {
  263. c.Data["json"] = c.WarpError(err.Error())
  264. } else {
  265. c.Data["json"] = c.WarpOK(datalist)
  266. }
  267. c.ServeJSON()
  268. }
  269. // 修改当前用户密码
  270. // @Summary 修改当前用户密码
  271. // @Description 修改当前用户密码。一般用于用户修改自己的密码。
  272. // @Tags api
  273. // @Accept x-www-form-urlencoded
  274. // @Produce json
  275. // @Param newpwd query string true "新密码。需满足系统当前采用的密码规则"
  276. // @Success 200 {object} ApiOK 成功
  277. // @Success 200 {object} ApiError 错误
  278. // @Failure 500 status 失败
  279. // @router /resetUserPwd [post]
  280. func (c *ApiController) ResetUserPwd() {
  281. var id = 0
  282. id, _ = strconv.Atoi(c.GetString("id", "0"))
  283. if id > 0 {
  284. pwd := c.GetString("newpwd")
  285. if pwd == "" {
  286. c.Data["json"] = c.WarpError("密码不能为空")
  287. } else {
  288. obj := bo.T_data_user{Id: id, Pwd: pwd}
  289. obj.Createtime = strings.Trim(tools.NowTime(), " ")
  290. userid, err2 := strconv.Atoi(c.GetUserToken())
  291. if err2 != nil {
  292. c.Ctx.ResponseWriter.WriteHeader(401) //token获取失败或无效时,直接返回401
  293. return
  294. }
  295. obj.Createuser = userid
  296. _, err := bo.SavePwd(obj, c.GetCurrentUserInfo())
  297. if err != nil {
  298. c.Data["json"] = c.WarpError(err.Error())
  299. } else {
  300. c.Data["json"] = c.WarpOK(id)
  301. }
  302. }
  303. } else {
  304. c.Data["json"] = c.WarpError("无效的用户ID")
  305. }
  306. c.ServeJSON()
  307. }
  308. // @router /getUserPrivList [get]
  309. func (c *ApiController) GetUserPrivListUser() {
  310. var id = 0
  311. id, _ = strconv.Atoi(c.GetString("id", "0"))
  312. obj := bo.T_data_user_func{Userid: id}
  313. datalist, err := bo.QueryUserPrivList(obj, c.GetCurrentUserInfo())
  314. if err != nil {
  315. c.Data["json"] = c.WarpError(err.Error())
  316. } else {
  317. c.Data["json"] = c.WarpOK(datalist["data"])
  318. }
  319. c.ServeJSON()
  320. }
  321. // @router /saveUserPrivList [post]
  322. func (c *ApiController) SaveUserPrivList() {
  323. uid, _ := strconv.Atoi(c.GetString("id", "0"))
  324. privids := c.GetString("privids")
  325. datalist, err := bo.SaveUserPrivList(uid, privids, c.GetCurrentUserInfo())
  326. if err != nil {
  327. c.Data["json"] = c.WarpError(err.Error())
  328. } else {
  329. c.Data["json"] = c.WarpOK(datalist)
  330. }
  331. c.ServeJSON()
  332. }
  333. // @router /searchUserInfo [get]
  334. func (c *ApiController) SearchUserInfo() {
  335. c.ServeJSON()
  336. }
  337. // 获取角色可访问的功能资源
  338. // @Summary 查询角色与功能资源可访问关系
  339. // @Description 查询角色与功能资源可访问关系。
  340. // @Tags api
  341. // @Accept x-www-form-urlencoded
  342. // @Produce json
  343. // @Param roleid query string true "角色ID"
  344. // @Success 200 {object} ApiOK 成功
  345. // @Success 200 {object} ApiError 错误
  346. // @Failure 500 status 失败
  347. // @router /getRoleFuncList [get]
  348. func (c *ApiController) GetRoleFuncList() {
  349. roleid := c.GetString("roleid", "")
  350. if roleid == "" {
  351. c.Data["json"] = c.WarpError("角色ID不能为空")
  352. c.ServeJSON()
  353. return
  354. }
  355. roleidint, _ := strconv.Atoi(roleid)
  356. datalist, err := bo.GetRoleFunc(roleidint)
  357. if err != nil {
  358. c.Data["json"] = c.WarpError(err.Error())
  359. } else {
  360. c.Data["json"] = c.WarpOK(datalist)
  361. }
  362. c.ServeJSON()
  363. }
  364. // 保存角色可访问的功能资源
  365. // @Summary 保存角色与功能资源可访问关系
  366. // @Description 保存角色与功能资源可访问关系。
  367. // @Tags api
  368. // @Accept x-www-form-urlencoded
  369. // @Produce json
  370. // @Param roleid query string true "角色ID"
  371. // @Param funcids query string true "资源功能编号ID。多个ID使用半角逗号分隔"
  372. // @Success 200 {object} ApiOK 成功
  373. // @Success 200 {object} ApiError 错误
  374. // @Failure 500 status 失败
  375. // @router /saveRoleFunc [post]
  376. func (c *ApiController) SaveRoleFunc() {
  377. roleid := c.GetString("roleid", "")
  378. if roleid == "" {
  379. c.Data["json"] = c.WarpError("角色ID不能为空")
  380. c.ServeJSON()
  381. return
  382. }
  383. funcids := c.GetString("funcids", "")
  384. tmpAry := strings.Split(funcids, ",")
  385. roleidint, _ := strconv.Atoi(roleid)
  386. err := bo.SaveRoleFunc(roleidint, tmpAry, c.GetCurrentUserInfo())
  387. if err != nil {
  388. c.Data["json"] = c.WarpError(err.Error())
  389. } else {
  390. c.Data["json"] = c.WarpOK("")
  391. }
  392. c.ServeJSON()
  393. }
  394. // 物理清除指定数据表的数据
  395. // @Summary 物理清除指定数据表的数据
  396. // @Description 物理清除指定数据表的数据。数据为物理删除,谨慎调用!
  397. // @Tags api
  398. // @Accept x-www-form-urlencoded
  399. // @Produce json
  400. // @Param dtype query string true "表名称。"
  401. // @Param day query string fasle "需要数据保留的最近天数。默认为7天"
  402. // @Success 200 {object} ApiOK 成功
  403. // @Success 200 {object} ApiError 错误
  404. // @Failure 500 status 失败
  405. // @router /clearData [post]
  406. func (c *ApiController) ClearData() {
  407. dtype := c.GetString("dtype", "")
  408. day, _ := c.GetInt("day", 7)
  409. if dtype == "" {
  410. c.Data["json"] = c.WarpError("清除的目标数据表不能为空")
  411. c.ServeJSON()
  412. return
  413. }
  414. _, err := bo.ClearData(dtype, day)
  415. if err != nil {
  416. c.Data["json"] = c.WarpError(err.Error())
  417. } else {
  418. c.Data["json"] = c.WarpOK("")
  419. }
  420. c.ServeJSON()
  421. }
  422. // 查询系统操作日志
  423. // @Summary 查询系统操作日志
  424. // @Description 查询系统操作日志。
  425. // @Tags api
  426. // @Accept x-www-form-urlencoded
  427. // @Produce json
  428. // @Param startdate query string false "查询的开始时间。格式为:yyyy-mm-dd HH:mi:ss。默认为当前天的0点"
  429. // @Param enddate query string false "查询的结束时间。格式为:yyyy-mm-dd HH:mi:ss。默认为当前天的23:59:59"
  430. // @Param description query string false "查询的日志内容。模糊匹配。"
  431. // @Param success query string false "日志操作结果。仅支持0或1。"
  432. // @Param logtype query string false "查询的日志操作类型。仅支持系统字典代码log_opttype定义的code值。"
  433. // @Param audittype query string false "查询的日志审计类型。仅支持系统字典代码log_audittype定义的code值。"
  434. // @Param eventtype query string false "查询的事件类型。仅支持系统字典代码eventtype定义的code值。"
  435. // @Param eventlevel query string false "查询的事件等级。仅支持系统字典代码eventlevel定义的code值。"
  436. // @Param pageindex query int false "当前分页页码.默认为第1页"
  437. // @Param pagesize query int false "当前每页记录数。默认为20"
  438. // @Success 200 {object} ApiOK 成功
  439. // @Success 200 {object} ApiError 错误
  440. // @Failure 500 status 失败
  441. // @router /getSyslogList [get]
  442. func (c *ApiController) GetSysLog() {
  443. pageIndex, _ := c.GetInt("pageindex", 1)
  444. pageSize, _ := c.GetInt("pagesize", 20)
  445. con := map[string]string{}
  446. con["enddate"] = c.GetString("enddate", "")
  447. con["startdate"] = c.GetString("startdate", "")
  448. con["description"] = c.GetString("description", "")
  449. con["success"] = c.GetString("success", "")
  450. con["logtype"] = c.GetString("logtype", "")
  451. con["audittype"] = c.GetString("audittype", "")
  452. con["eventtype"] = c.GetString("eventtype", "")
  453. con["eventlevel"] = c.GetString("eventlevel", "")
  454. userinfo := c.GetCurrentUserInfo()
  455. syslog := new(bo.SystemLog)
  456. syslog.UserInfo = userinfo
  457. tableData, number, err := syslog.SearchLogList(con, pageIndex, pageSize)
  458. if err != nil {
  459. c.Data["json"] = c.ResultError(err.Error())
  460. } else {
  461. c.Data["json"] = c.ResultOK(tableData, number)
  462. }
  463. c.ServeJSON()
  464. }
  465. // 获取系统参数定义
  466. // @Summary 获取系统参数定义
  467. // @Description 获取系统参数定义。
  468. // @Tags api
  469. // @Accept x-www-form-urlencoded
  470. // @Produce json
  471. // @Param name query string false "系统参数代码名称。为空时获取所有参数定义。"
  472. // @Success 200 {object} ApiOK 成功
  473. // @Success 200 {object} ApiError 错误
  474. // @Failure 500 status 失败
  475. // @router /getSysParamList [get]
  476. func (c *ApiController) GetSystemParam() {
  477. param_name := c.GetString("name")
  478. obj := bo.Global_sys_param{Param_name: param_name}
  479. datalist, err := bo.GetSysParamList(obj, c.GetCurrentUserInfo())
  480. db.CheckErr(err)
  481. c.Data["json"] = c.WarpOK(datalist)
  482. c.ServeJSON()
  483. }
  484. // 保存系统参数定义
  485. // @Summary 保存系统参数定义
  486. // @Description 保存系统参数定义。
  487. // @Tags api
  488. // @Accept x-www-form-urlencoded
  489. // @Produce json
  490. // @Param param_name query string true "系统参数代码名称"
  491. // @Param param_value query string true "系统参数值"
  492. // @Param param_memo query string false "系统参数描述"
  493. // @Success 200 {object} ApiOK 成功
  494. // @Success 200 {object} ApiError 错误
  495. // @Failure 500 status 失败
  496. // @router /saveSysParam [post]
  497. func (c *ApiController) SaveSystemParam() {
  498. param_name := c.GetString("param_name")
  499. param_value := c.GetString("param_value")
  500. param_memo := c.GetString("param_memo")
  501. obj := bo.Global_sys_param{Param_name: param_name, Param_memo: param_memo, Param_value: param_value}
  502. datalist, err := bo.SaveSysParam(obj)
  503. db.CheckErr(err)
  504. c.Data["json"] = c.WarpOK(datalist)
  505. c.ServeJSON()
  506. }
  507. // 获取系统常量字典码定义
  508. // @Summary 获取系统常量字典码定义
  509. // @Description 获取系统常量字典码定义。
  510. // @Tags api
  511. // @Accept x-www-form-urlencoded
  512. // @Produce json
  513. // @Param pcode query string false "根据指定代码获取其级子码定义"
  514. // @Param code query string false "根据指定代码的定义"
  515. // @Param pageindex query int false "当前分页页码.默认为第1页"
  516. // @Param pagesize query int false "当前每页记录数。默认为20"
  517. // @Success 200 {object} ApiOK 成功
  518. // @Success 200 {object} ApiError 错误
  519. // @Failure 500 status 失败
  520. // @router /getGlobalCode [get]
  521. func (c *ApiController) GetGlobalCode() {
  522. param := tools.ParseFormParam(c.Ctx.Request.Form)
  523. param["pcode"] = c.GetString("pcode", "")
  524. param["code"] = c.GetString("code", "")
  525. param["pageindex"] = c.GetString("pageindex", "1")
  526. param["pagesize"] = c.GetString("pagesize", "20")
  527. obj := new(bo.Global)
  528. tableData, _, err := obj.QueryGlobalCodeList(param)
  529. if err != nil {
  530. c.Data["json"] = c.WarpError(err.Error())
  531. } else {
  532. c.Data["json"] = c.WarpOK(tableData)
  533. }
  534. c.ServeJSON()
  535. }
  536. // 保存系统常量字典码定义
  537. // @Summary 保存系统常量字典码定义
  538. // @Description 保存系统常量字典码定义。如果code已在存在,将对已有定义进行更新。
  539. // @Tags api
  540. // @Accept x-www-form-urlencoded
  541. // @Produce json
  542. // @Param name query string true "当前字典名称或者描述"
  543. // @Param code query string true "当前字典编码"
  544. // @Param parentcode query string true "当前字典编码的上级编码"
  545. // @Success 200 {object} ApiOK 成功
  546. // @Success 200 {object} ApiError 错误
  547. // @Failure 500 status 失败
  548. // @router /saveGlobalcode [post]
  549. func (c *ApiController) SaveGlobalCode() {
  550. name := c.GetString("name")
  551. parentcode := c.GetString("parentcode")
  552. code := c.GetString("code")
  553. id, _ := strconv.Atoi(c.GetString("id", "0"))
  554. obj := bo.Global_const_code{Id: id, Code: code, Parentcode: parentcode, Name: name}
  555. datalist, err := bo.SaveGlobalCode(obj)
  556. if err != nil {
  557. c.Data["json"] = c.WarpError(err.Error())
  558. } else {
  559. c.Data["json"] = c.WarpOK(datalist)
  560. }
  561. c.ServeJSON()
  562. }
  563. // 删除系统常量字典码定义
  564. // @Summary 删除系统常量字典码定义
  565. // @Description 删除系统常量字典码定义。如果指定代码有下级代码将会一并删除
  566. // @Tags api
  567. // @Accept x-www-form-urlencoded
  568. // @Produce json
  569. // @Param code query string true "需要删除的字典编码"
  570. // @Success 200 {object} ApiOK 成功
  571. // @Success 200 {object} ApiError 错误
  572. // @Failure 500 status 失败
  573. // @router /deleteGlobalcode [post]
  574. func (c *ApiController) DelGlobalCode() {
  575. code := c.GetString("code")
  576. id, _ := strconv.Atoi(c.GetString("id", "0"))
  577. obj := bo.Global_const_code{Code: code, Id: id}
  578. datalist, err := bo.DeleteGlobalCode(obj, c.GetCurrentUserInfo())
  579. if err != nil {
  580. c.Data["json"] = c.WarpError(err.Error())
  581. } else {
  582. c.Data["json"] = c.WarpOK(datalist)
  583. }
  584. c.ServeJSON()
  585. }