report.go 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "hongze/hz_crm_api/models"
  5. "hongze/hz_crm_api/utils"
  6. "strings"
  7. "time"
  8. )
  9. // ReportController 报告
  10. type ReportController struct {
  11. BaseAuthController
  12. }
  13. // GetDayWeekReportChapterTypeList
  14. // @Title 获取晨报周报章节类型列表
  15. // @Description 获取晨报周报章节类型列表
  16. // @Param StopType query string true "停更类型 stop; disable;"
  17. // @Success 200 {object} models.ReportListResp
  18. // @router /getDayWeekReportChapterTypeList [get]
  19. func (this *ReportController) GetDayWeekReportChapterTypeList() {
  20. br := new(models.BaseResponse).Init()
  21. defer func() {
  22. this.Data["json"] = br
  23. this.ServeJSON()
  24. }()
  25. sysUser := this.SysUser
  26. if sysUser == nil {
  27. br.Msg = "请登录"
  28. br.ErrMsg = "请登录,SysUser Is Empty"
  29. br.Ret = 408
  30. return
  31. }
  32. var condition string
  33. var pars []interface{}
  34. // 停更类型
  35. stopType := this.GetString("StopType")
  36. switch stopType {
  37. case "", "stop":
  38. condition += ` AND enabled = ? `
  39. pars = append(pars, 1)
  40. case "disable":
  41. default:
  42. br.Msg = "停更类型异常"
  43. br.IsSendEmail = false
  44. return
  45. }
  46. dayList := make([]*models.ReportChapterType, 0)
  47. weekList := make([]*models.ReportChapterType, 0)
  48. // 晨报
  49. {
  50. tmpCondition := condition
  51. tmpPars := pars
  52. // 报告类型
  53. tmpCondition += ` AND research_type = ? `
  54. tmpPars = append(tmpPars, "day")
  55. list, err := models.GetAllReportChapterTypeList(tmpCondition, tmpPars)
  56. if err != nil {
  57. br.Msg = "获取报告章节类型列表失败"
  58. br.ErrMsg = "获取报告章节类型列表失败, Err: " + err.Error()
  59. return
  60. }
  61. nowTime := time.Now()
  62. for _, v := range list {
  63. if v.IsSet == 1 {
  64. endTime, _ := time.Parse(utils.FormatDate, v.PauseEndTime)
  65. if nowTime.After(endTime.AddDate(0, 0, 1)) { //设置过期了已经
  66. v.IsSet = 0
  67. v.PauseStartTime = ``
  68. v.PauseEndTime = ``
  69. }
  70. }
  71. dayList = append(dayList, v)
  72. }
  73. }
  74. // 周报
  75. {
  76. tmpCondition := condition
  77. tmpPars := pars
  78. // 报告类型
  79. tmpCondition += ` AND research_type = ? `
  80. tmpPars = append(tmpPars, "week")
  81. list, err := models.GetAllReportChapterTypeList(tmpCondition, tmpPars)
  82. if err != nil {
  83. br.Msg = "获取报告章节类型列表失败"
  84. br.ErrMsg = "获取报告章节类型列表失败, Err: " + err.Error()
  85. return
  86. }
  87. nowTime := time.Now()
  88. for _, v := range list {
  89. if v.IsSet == 1 {
  90. endTime, _ := time.Parse(utils.FormatDate, v.PauseEndTime)
  91. if nowTime.After(endTime.AddDate(0, 0, 1)) { //设置过期了已经
  92. v.IsSet = 0
  93. v.PauseStartTime = ``
  94. v.PauseEndTime = ``
  95. }
  96. }
  97. weekList = append(weekList, v)
  98. }
  99. }
  100. resp := models.UpdateReportChapterTypeResp{
  101. Day: dayList,
  102. Week: weekList,
  103. }
  104. br.Ret = 200
  105. br.Success = true
  106. br.Msg = "获取成功"
  107. br.Data = resp
  108. }
  109. // @Title 获取晨报周报的更新暂停时间
  110. // @Description 获取晨报周报的更新暂停时间
  111. // @Success 200 {object} models.ReportListResp
  112. // @router /getDayWeekReportPauseTime [get]
  113. func (this *ReportController) GetDayWeekReportPauseTime() {
  114. br := new(models.BaseResponse).Init()
  115. defer func() {
  116. this.Data["json"] = br
  117. this.ServeJSON()
  118. }()
  119. sysUser := this.SysUser
  120. if sysUser == nil {
  121. br.Msg = "请登录"
  122. br.ErrMsg = "请登录,SysUser Is Empty"
  123. br.Ret = 408
  124. return
  125. }
  126. list, err := models.GetDayWeekReportPauseTimeList()
  127. if err != nil {
  128. br.Msg = "获取晨报周报的更新暂停时间失败"
  129. br.ErrMsg = "获取晨报周报的更新暂停时间失败, Err: " + err.Error()
  130. return
  131. }
  132. br.Ret = 200
  133. br.Success = true
  134. br.Msg = "获取成功"
  135. br.Data = list
  136. }
  137. // SetDayWeekReportUpdateRule
  138. // @Title 设置晨报周报的更新规则
  139. // @Description 设置晨报周报的更新规则
  140. // @Param request body models.SetDayWeekReportUpdateRuleReq true "type json string"
  141. // @Success 200 string "操作成功"
  142. // @router /setDayWeekReportUpdateRule [post]
  143. func (this *ReportController) SetDayWeekReportUpdateRule() {
  144. br := new(models.BaseResponse).Init()
  145. defer func() {
  146. this.Data["json"] = br
  147. this.ServeJSON()
  148. }()
  149. sysUser := this.SysUser
  150. if sysUser == nil {
  151. br.Msg = "请登录"
  152. br.ErrMsg = "请登录,SysUser Is Empty"
  153. br.Ret = 408
  154. return
  155. }
  156. var req models.SetDayWeekReportUpdateRuleReq
  157. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  158. if err != nil {
  159. br.Msg = "参数解析异常!"
  160. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  161. return
  162. }
  163. researchType := req.ResearchType
  164. if researchType == "" {
  165. br.Msg = "报告类型不能为空"
  166. return
  167. }
  168. // 设置章节类型的暂停时间
  169. if err := models.SetDayWeekReportUpdateRule(researchType, req.List); err != nil {
  170. br.Msg = "设置暂停时间失败"
  171. br.ErrMsg = "设置暂停时间失败, Err: " + err.Error()
  172. return
  173. }
  174. br.Ret = 200
  175. br.Success = true
  176. br.Msg = "操作成功"
  177. }
  178. // SetDayWeekReportEnableRule
  179. // @Title 设置晨报周报的永久暂停更新规则
  180. // @Description 设置晨报周报的永久暂停更新规则
  181. // @Param request body models.SetDayWeekReportEnableUpdateRuleReq true "type json string"
  182. // @Success 200 string "操作成功"
  183. // @router /setDayWeekReportEnableUpdateRule [post]
  184. func (this *ReportController) SetDayWeekReportEnableRule() {
  185. br := new(models.BaseResponse).Init()
  186. defer func() {
  187. this.Data["json"] = br
  188. this.ServeJSON()
  189. }()
  190. sysUser := this.SysUser
  191. if sysUser == nil {
  192. br.Msg = "请登录"
  193. br.ErrMsg = "请登录,SysUser Is Empty"
  194. br.Ret = 408
  195. return
  196. }
  197. var req models.SetDayWeekReportEnableUpdateRuleReq
  198. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  199. if err != nil {
  200. br.Msg = "参数解析异常!"
  201. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  202. return
  203. }
  204. dayReportChapterTypeIdList := strings.Split(req.DayReportChapterTypeId, ",")
  205. weekReportChapterTypeIdList := strings.Split(req.WeekReportChapterTypeId, ",")
  206. //if len(reportChapterTypeIdList) <= 0 {
  207. // br.Msg = "报告类型选择异常"
  208. // br.IsSendEmail = false
  209. // return
  210. //}
  211. // 设置章节类型的禁用状态
  212. if err := models.SetDayWeekReportEnableUpdateRule(dayReportChapterTypeIdList, weekReportChapterTypeIdList); err != nil {
  213. br.Msg = "设置永久停更失败"
  214. br.ErrMsg = "设置永久停更失败, Err: " + err.Error()
  215. return
  216. }
  217. br.Ret = 200
  218. br.Success = true
  219. br.Msg = "操作成功"
  220. }
  221. // GetStopDayWeekReportChapterTypeList
  222. // @Title 获取暂停更新的晨报周报章节类型列表
  223. // @Description 获取暂停更新的晨报周报章节类型列表
  224. // @Success 200 {object} models.ReportListResp
  225. // @router /getStopDayWeekReportChapterTypeList [get]
  226. func (this *ReportController) GetStopDayWeekReportChapterTypeList() {
  227. br := new(models.BaseResponse).Init()
  228. defer func() {
  229. this.Data["json"] = br
  230. this.ServeJSON()
  231. }()
  232. sysUser := this.SysUser
  233. if sysUser == nil {
  234. br.Msg = "请登录"
  235. br.ErrMsg = "请登录,SysUser Is Empty"
  236. br.Ret = 408
  237. return
  238. }
  239. stopDay := make([]*models.ReportChapterType, 0)
  240. stopWeek := make([]*models.ReportChapterType, 0)
  241. disableDay := make([]*models.ReportChapterType, 0)
  242. disableWeek := make([]*models.ReportChapterType, 0)
  243. stopList, err := models.GetStopUpdateReportChapterTypeListByResearchType()
  244. if err != nil {
  245. br.Msg = "获取暂停更新报告章节类型列表失败"
  246. br.ErrMsg = "获取暂停更新报告章节类型列表失败, Err: " + err.Error()
  247. return
  248. }
  249. for _, v := range stopList {
  250. if v.ResearchType == "day" {
  251. stopDay = append(stopDay, v)
  252. } else {
  253. stopWeek = append(stopWeek, v)
  254. }
  255. }
  256. disableList, err := models.GetDisableUpdateReportChapterTypeListByResearchType()
  257. if err != nil {
  258. br.Msg = "获取停止更新报告章节类型列表失败"
  259. br.ErrMsg = "获取停止更新报告章节类型列表失败, Err: " + err.Error()
  260. return
  261. }
  262. for _, v := range disableList {
  263. if v.ResearchType == "day" {
  264. disableDay = append(disableDay, v)
  265. } else {
  266. disableWeek = append(disableWeek, v)
  267. }
  268. }
  269. resp := models.StopUpdateReportChapterTypeResp{
  270. StopDay: stopDay,
  271. StopWeek: stopWeek,
  272. DisableDay: disableDay,
  273. DisableWeek: disableWeek,
  274. }
  275. br.Ret = 200
  276. br.Success = true
  277. br.Msg = "获取成功"
  278. br.Data = resp
  279. }