report_author.go 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta_gn/eta_api/models"
  5. "eta_gn/eta_api/utils"
  6. "github.com/rdlucklib/rdluck_tools/paging"
  7. "strings"
  8. "time"
  9. )
  10. type ReportAuthorController struct {
  11. BaseAuthController
  12. }
  13. type ReportAuthorCommonController struct {
  14. BaseCommonController
  15. }
  16. // @router /author [get]
  17. func (this *ReportAuthorController) Author() {
  18. br := new(models.BaseResponse).Init()
  19. defer func() {
  20. this.Data["json"] = br
  21. this.ServeJSON()
  22. }()
  23. authorType := this.GetString("AuthorType", "1")
  24. pageSize, _ := this.GetInt("PageSize")
  25. currentIndex, _ := this.GetInt("CurrentIndex")
  26. keyword := this.GetString("Keyword")
  27. var startSize int
  28. if pageSize <= 0 {
  29. pageSize = utils.PageSize50
  30. }
  31. if currentIndex <= 0 {
  32. currentIndex = 1
  33. }
  34. startSize = utils.StartIndex(currentIndex, pageSize)
  35. var condition string
  36. var pars []interface{}
  37. condition += ` AND author_type = ? `
  38. pars = append(pars, authorType)
  39. if keyword != `` {
  40. condition += ` AND report_author like ? `
  41. pars = append(pars, utils.GetLikeKeyword(keyword))
  42. }
  43. total, items, err := models.GetReportAuthorList(condition, pars, startSize, pageSize)
  44. if err != nil {
  45. br.Msg = "获取失败!"
  46. br.ErrMsg = "获取失败,Err:" + err.Error()
  47. return
  48. }
  49. page := paging.GetPaging(currentIndex, pageSize, total)
  50. resp := models.ReportAuthorResp{
  51. List: items,
  52. Paging: page,
  53. }
  54. br.Ret = 200
  55. br.Success = true
  56. br.Msg = "获取成功"
  57. br.Data = resp
  58. }
  59. // @router /author/add [post]
  60. func (this *ReportAuthorController) AddAuthor() {
  61. br := new(models.BaseResponse).Init()
  62. defer func() {
  63. this.Data["json"] = br
  64. this.ServeJSON()
  65. }()
  66. var req models.AddReportAuthorReq
  67. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  68. if err != nil {
  69. br.Msg = "参数解析异常!"
  70. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  71. return
  72. }
  73. authorName := strings.TrimSuffix(req.Author, " ")
  74. authorName = strings.TrimPrefix(authorName, " ")
  75. if authorName == `` {
  76. br.Msg = "请输入名称"
  77. br.ErrMsg = "请输入名称"
  78. br.IsSendEmail = false
  79. return
  80. }
  81. if req.AuthorType != 1 && req.AuthorType != 2 {
  82. br.Msg = "请选择类型"
  83. br.ErrMsg = "请选择类型"
  84. br.IsSendEmail = false
  85. return
  86. }
  87. item, err := models.GetReportAuthorByAuthor(authorName, req.AuthorType)
  88. if err != nil && !utils.IsErrNoRow(err) {
  89. br.Msg = "获取数据异常!"
  90. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  91. return
  92. }
  93. if item != nil && item.Id > 0 {
  94. br.Msg = "已存在该作者"
  95. br.ErrMsg = "已存在该作者"
  96. br.IsSendEmail = false
  97. return
  98. }
  99. item = &models.ReportAuthor{
  100. Id: 0,
  101. ReportAuthor: req.Author,
  102. AuthorType: req.AuthorType,
  103. Enable: 1,
  104. IsDelete: 0,
  105. CreateTime: time.Now(),
  106. ModifyTime: time.Now(),
  107. }
  108. authorId, err := models.AddReportAuthor(item)
  109. if err != nil {
  110. br.Msg = "添加作者失败!"
  111. br.ErrMsg = "添加作者失败,Err:" + err.Error()
  112. return
  113. }
  114. item.Id = int(authorId)
  115. br.Ret = 200
  116. br.Success = true
  117. br.IsAddLog = true
  118. br.Msg = "添加成功"
  119. }
  120. // @router /author/edit [post]
  121. func (this *ReportAuthorController) EditAuthor() {
  122. br := new(models.BaseResponse).Init()
  123. defer func() {
  124. this.Data["json"] = br
  125. this.ServeJSON()
  126. }()
  127. var req models.AddReportAuthorReq
  128. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  129. if err != nil {
  130. br.Msg = "参数解析异常!"
  131. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  132. return
  133. }
  134. authorName := strings.TrimSuffix(req.Author, " ")
  135. authorName = strings.TrimPrefix(authorName, " ")
  136. otherItem, err := models.GetReportAuthorByAuthorAndId(authorName, req.AuthorType, req.Id)
  137. if err != nil && !utils.IsErrNoRow(err) {
  138. br.Msg = "获取数据异常!"
  139. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  140. return
  141. }
  142. if otherItem != nil && otherItem.Id > 0 {
  143. br.Msg = "已存在该作者名称,请重新输入"
  144. br.ErrMsg = "已存在该作者名称,请重新输入"
  145. br.IsSendEmail = false
  146. return
  147. }
  148. item, err := models.GetReportAuthorById(req.Id)
  149. if err != nil && !utils.IsErrNoRow(err) {
  150. br.Msg = "获取数据异常!"
  151. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  152. return
  153. }
  154. if item == nil {
  155. br.Msg = "不存在该作者"
  156. br.ErrMsg = "不存在该作者"
  157. br.IsSendEmail = false
  158. return
  159. }
  160. oldAuthorName := item.ReportAuthor
  161. item.ReportAuthor = authorName
  162. item.ModifyTime = time.Now()
  163. err = item.Update([]string{"ReportAuthor", "ModifyTime"})
  164. if err != nil {
  165. br.Msg = "编辑作者失败!"
  166. br.ErrMsg = "编辑作者失败,Err:" + err.Error()
  167. return
  168. }
  169. {
  170. var condition string
  171. var pars []interface{}
  172. var count int
  173. condition = " AND author = ? "
  174. pars = append(pars, oldAuthorName)
  175. count, err = models.ModifyReportAuthor(condition, pars, authorName)
  176. if err != nil && !utils.IsErrNoRow(err) {
  177. br.Msg = "获取数据异常!"
  178. br.ErrMsg = "获取是否存在该作者的报告数据异常,Err:" + err.Error()
  179. return
  180. }
  181. if count > 0 {
  182. br.Msg = "该作者名称有关联报告,不可删除"
  183. br.ErrMsg = "该作者名称有关联报告,不可删除"
  184. br.IsSendEmail = false
  185. return
  186. }
  187. }
  188. br.Ret = 200
  189. br.Success = true
  190. br.IsAddLog = true
  191. br.Msg = "编辑成功"
  192. }
  193. // @router /author/enable [post]
  194. func (this *ReportAuthorController) EnableAuthor() {
  195. br := new(models.BaseResponse).Init()
  196. defer func() {
  197. this.Data["json"] = br
  198. this.ServeJSON()
  199. }()
  200. var req models.EnableReportAuthorReq
  201. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  202. if err != nil {
  203. br.Msg = "参数解析异常!"
  204. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  205. return
  206. }
  207. item, err := models.GetReportAuthorById(req.Id)
  208. if err != nil && !utils.IsErrNoRow(err) {
  209. br.Msg = "获取数据异常!"
  210. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  211. return
  212. }
  213. if item == nil {
  214. br.Msg = "不存在该作者"
  215. br.ErrMsg = "不存在该作者"
  216. br.IsSendEmail = false
  217. return
  218. }
  219. {
  220. var condition string
  221. var pars []interface{}
  222. condition = " AND author_type = ?"
  223. pars = append(pars, item.AuthorType)
  224. total, err := models.GetReportAuthorCount(condition, pars)
  225. if err != nil && !utils.IsErrNoRow(err) {
  226. br.Msg = "获取数据异常!"
  227. br.ErrMsg = "获取剩余作者数据异常,Err:" + err.Error()
  228. return
  229. }
  230. if total <= 1 {
  231. br.Msg = "该作者名称为最后一个,不可禁用"
  232. br.ErrMsg = "该作者名称为最后一个,不可禁用"
  233. br.IsSendEmail = false
  234. return
  235. }
  236. }
  237. item.Enable = req.EnableType
  238. item.ModifyTime = time.Now()
  239. err = item.Update([]string{"Enable", "ModifyTime"})
  240. if err != nil {
  241. br.Msg = "操作失败!"
  242. br.ErrMsg = "操作失败,Err:" + err.Error()
  243. return
  244. }
  245. br.Ret = 200
  246. br.Success = true
  247. br.IsAddLog = true
  248. br.Msg = "编辑成功"
  249. }
  250. // @router /author/delete [post]
  251. func (this *ReportAuthorController) DeleteAuthor() {
  252. br := new(models.BaseResponse).Init()
  253. defer func() {
  254. this.Data["json"] = br
  255. this.ServeJSON()
  256. }()
  257. var req models.DeleteReportAuthorReq
  258. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  259. if err != nil {
  260. br.Msg = "参数解析异常!"
  261. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  262. return
  263. }
  264. item, err := models.GetReportAuthorById(req.Id)
  265. if err != nil && !utils.IsErrNoRow(err) {
  266. br.Msg = "获取数据异常!"
  267. br.ErrMsg = "获取数据异常,Err:" + err.Error()
  268. return
  269. }
  270. if item == nil {
  271. br.Msg = "不存在该作者"
  272. br.ErrMsg = "不存在该作者"
  273. br.IsSendEmail = false
  274. return
  275. }
  276. {
  277. var condition string
  278. var pars []interface{}
  279. condition = " AND author_type = ?"
  280. pars = append(pars, item.AuthorType)
  281. total, err := models.GetReportAuthorCount(condition, pars)
  282. if err != nil && !utils.IsErrNoRow(err) {
  283. br.Msg = "获取数据异常!"
  284. br.ErrMsg = "获取剩余作者数据异常,Err:" + err.Error()
  285. return
  286. }
  287. if total <= 1 {
  288. br.Msg = "该作者名称为最后一个,不可删除"
  289. br.ErrMsg = "该作者名称为最后一个,不可删除"
  290. br.IsSendEmail = false
  291. return
  292. }
  293. }
  294. {
  295. var condition string
  296. var pars []interface{}
  297. var count int
  298. condition = " AND author = ? "
  299. pars = append(pars, item.ReportAuthor)
  300. count, err = models.GetReportListCount(condition, pars)
  301. if err != nil && !utils.IsErrNoRow(err) {
  302. br.Msg = "获取数据异常!"
  303. br.ErrMsg = "获取是否存在该作者的报告数据异常,Err:" + err.Error()
  304. return
  305. }
  306. if count > 0 {
  307. br.Msg = "该作者名称有关联报告,不可删除"
  308. br.ErrMsg = "该作者名称有关联报告,不可删除"
  309. br.IsSendEmail = false
  310. return
  311. }
  312. }
  313. item.IsDelete = 1
  314. item.ModifyTime = time.Now()
  315. err = item.Update([]string{"IsDelete", "ModifyTime"})
  316. if err != nil {
  317. br.Msg = "操作失败!"
  318. br.ErrMsg = "操作失败,Err:" + err.Error()
  319. return
  320. }
  321. br.Ret = 200
  322. br.Success = true
  323. br.IsAddLog = true
  324. br.Msg = "删除成功"
  325. }