calendar.go 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. package roadshow
  2. import (
  3. "encoding/json"
  4. "github.com/rdlucklib/rdluck_tools/paging"
  5. "hongze/hongze_mobile_admin/controllers"
  6. "hongze/hongze_mobile_admin/models"
  7. "hongze/hongze_mobile_admin/models/roadshow"
  8. "hongze/hongze_mobile_admin/services"
  9. "hongze/hongze_mobile_admin/utils"
  10. "strconv"
  11. "strings"
  12. "time"
  13. )
  14. //日历
  15. type CalendarController struct {
  16. controllers.BaseAuth
  17. }
  18. // CalendarList
  19. // @Title 我的日历列表
  20. // @Description 我的日历列表接口
  21. // @Param PageSize query int true "每页数据条数"
  22. // @Param CurrentIndex query int true "当前页页码,从1开始"
  23. // @Param Status query int true "1:待接受,2:包含,已接受,已拒绝,已删除"
  24. // @Success 200 {object} roadshow.CalendarListResp
  25. // @router /calendar/list [get]
  26. func (this *CalendarController) CalendarList() {
  27. adminItem := this.AdminWx
  28. status, _ := this.GetInt("Status")
  29. pageSize, _ := this.GetInt("PageSize")
  30. currentIndex, _ := this.GetInt("CurrentIndex")
  31. var total int
  32. page := paging.GetPaging(currentIndex, pageSize, total)
  33. var startSize int
  34. if pageSize <= 0 {
  35. pageSize = utils.PageSize10
  36. }
  37. if currentIndex <= 0 {
  38. currentIndex = 1
  39. }
  40. startSize = paging.StartIndex(currentIndex, pageSize)
  41. var condition string
  42. var pars []interface{}
  43. condition += ` AND b.researcher_id=?`
  44. pars = append(pars, adminItem.AdminId)
  45. if status == 1 {
  46. condition += ` AND b.status=?`
  47. pars = append(pars, 1)
  48. } else {
  49. condition += ` AND b.status IN(2,3,4)`
  50. }
  51. resp := new(roadshow.CalendarListResp)
  52. total, err := roadshow.GetCalendarListCount(condition, pars)
  53. if err != nil && err.Error() != utils.ErrNoRow() {
  54. this.FailWithMessage("获取信息失败!", "获取数据总数失败,GetCalendarListCount,Err:"+err.Error())
  55. return
  56. }
  57. page = paging.GetPaging(currentIndex, pageSize, total)
  58. dataList, err := roadshow.GetCalendarList(condition, pars, startSize, pageSize)
  59. if err != nil {
  60. this.FailWithMessage("获取信息失败!", "获取数据失败,GetCalendarList,Err:"+err.Error())
  61. return
  62. }
  63. resp.Paging = page
  64. resp.List = dataList
  65. this.OkDetailed(resp, "获取成功")
  66. }
  67. // Accept
  68. // @Description 接受路演活动接口
  69. // @Param request body roadshow.AcceptReq true "type json string"
  70. // @Success Ret=200 保存成功
  71. // @router /accept [post]
  72. func (this *CalendarController) Accept() {
  73. //adminItem:=this.AdminWx
  74. var req roadshow.AcceptReq
  75. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  76. if err != nil {
  77. this.FailWithMessage("参数解析失败!", "参数解析失败,Err:"+err.Error())
  78. return
  79. }
  80. if req.RsCalendarId <= 0 || req.RsCalendarResearcherId <= 0 {
  81. this.FailWithMessage("参数错误!", "RsCalendarId 或 RsCalendarResearcherId 小于等于0:")
  82. return
  83. }
  84. _, err = roadshow.GetRsCalendarById(req.RsCalendarId)
  85. if err != nil {
  86. this.FailWithMessage("获取数据失败!", "GetRsCalendarById Err:"+err.Error())
  87. return
  88. }
  89. rsCalendarResearcher, err := roadshow.GetRsCalendarResearcherById(req.RsCalendarResearcherId)
  90. if err != nil {
  91. this.FailWithMessage("获取数据失败!", "GetRsCalendarResearcherById Err:"+err.Error())
  92. return
  93. }
  94. if rsCalendarResearcher.Status == 2 {
  95. this.FailWithMessage("已接受,不可重复操作!", "")
  96. return
  97. } else if rsCalendarResearcher.Status == 3 {
  98. this.FailWithMessage("已拒绝,不可进行接受操作!", "")
  99. return
  100. } else if rsCalendarResearcher.Status == 4 {
  101. this.FailWithMessage("已删除,不可进行接受操作!", "")
  102. return
  103. } else if rsCalendarResearcher.Status == 5 {
  104. this.FailWithMessage("已撤回,不可进行接受操作!", "")
  105. return
  106. }
  107. whereParams := make(map[string]interface{})
  108. updateParams := make(map[string]interface{})
  109. whereParams["rs_calendar_researcher_id"] = req.RsCalendarResearcherId
  110. whereParams["rs_calendar_id"] = req.RsCalendarId
  111. updateParams["status"] = 2
  112. updateParams["modify_time"] = time.Now()
  113. err = roadshow.UpdateCalendarResearcher(whereParams, updateParams)
  114. if err != nil {
  115. this.FailWithMessage("获取数据失败!", "UpdateCalendarResearcher Err:"+err.Error())
  116. return
  117. }
  118. this.OkDetailed(nil, "保存成功")
  119. }
  120. // @Title 拒绝路演活动接口
  121. // @Description 拒绝路演活动接口
  122. // @Param request body roadshow.RefuseReq true "type json string"
  123. // @Success Ret=200 保存成功
  124. // @router /refuse [post]
  125. func (this *CalendarController) Refuse() {
  126. //adminItem:=this.AdminWx
  127. var req roadshow.RefuseReq
  128. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  129. if err != nil {
  130. this.FailWithMessage("参数解析失败!", "参数解析失败,Err:"+err.Error())
  131. return
  132. }
  133. if req.RsCalendarId <= 0 || req.RsCalendarResearcherId <= 0 {
  134. this.FailWithMessage("参数错误!", "参数错误!RsCalendarId:"+strconv.Itoa(req.RsCalendarId)+";RsCalendarResearcherId:"+strconv.Itoa(req.RsCalendarResearcherId))
  135. return
  136. }
  137. _, err = roadshow.GetRsCalendarById(req.RsCalendarId)
  138. if err != nil {
  139. this.FailWithMessage("获取数据失败!", "GetRsCalendarById,Err:"+err.Error())
  140. return
  141. }
  142. rsCalendarResearcher, err := roadshow.GetRsCalendarResearcherById(req.RsCalendarResearcherId)
  143. if err != nil {
  144. this.FailWithMessage("获取数据失败!", "GetRsCalendarResearcherById,Err:"+err.Error())
  145. return
  146. }
  147. if rsCalendarResearcher.Status == 2 {
  148. this.FailWithMessage("已接受,不可进行拒绝操作!", "")
  149. return
  150. } else if rsCalendarResearcher.Status == 3 {
  151. this.FailWithMessage("已拒绝,不可进行重复操作!", "")
  152. return
  153. } else if rsCalendarResearcher.Status == 4 {
  154. this.FailWithMessage("已删除,不可进行拒绝操作!", "")
  155. return
  156. } else if rsCalendarResearcher.Status == 5 {
  157. this.FailWithMessage("已撤回,不可进行拒绝操作!", "")
  158. return
  159. }
  160. whereParams := make(map[string]interface{})
  161. updateParams := make(map[string]interface{})
  162. whereParams["rs_calendar_researcher_id"] = req.RsCalendarResearcherId
  163. whereParams["rs_calendar_id"] = req.RsCalendarId
  164. updateParams["status"] = 3
  165. updateParams["refuse_reason"] = req.RefuseReason
  166. updateParams["refuse_time"] = time.Now()
  167. updateParams["modify_time"] = time.Now()
  168. err = roadshow.UpdateCalendarResearcher(whereParams, updateParams)
  169. if err != nil {
  170. this.FailWithMessage("保存失败", "保存失败!UpdateCalendarResearcher:"+err.Error())
  171. return
  172. }
  173. this.OkDetailed(nil, "保存成功")
  174. }
  175. // @Title 日历详情
  176. // @Description 日历详情接口
  177. // @Param RsCalendarId query int true "路演活动id"
  178. // @Param RsCalendarResearcherId query int true "活动研究员id"
  179. // @Success 200 {object} roadshow.CalendarDetailResp
  180. // @router /calendar/detail [get]
  181. func (this *CalendarController) CalendarDetail() {
  182. //adminItem:=this.AdminWx
  183. //roleTypeCode := adminItem.RoleTypeCode
  184. rsCalendarId, _ := this.GetInt("RsCalendarId")
  185. rsCalendarResearcherId, _ := this.GetInt("RsCalendarResearcherId")
  186. if rsCalendarId <= 0 || rsCalendarResearcherId <= 0 {
  187. this.FailWithMessage("参数错误", "rsCalendarId 或 rsCalendarResearcherId")
  188. return
  189. }
  190. calendarItem, err := roadshow.GetRsCalendarById(rsCalendarId)
  191. if err != nil {
  192. this.FailWithMessage("获取数据失败", "获取数据失败!GetRsCalendarById:"+err.Error())
  193. return
  194. }
  195. rsCalendarResearcherItem, err := roadshow.GetRsCalendarResearcherById(rsCalendarResearcherId)
  196. if err != nil {
  197. this.FailWithMessage("获取数据失败", "获取数据失败!GetRsCalendarResearcherById:"+err.Error())
  198. return
  199. }
  200. companyDetailView := new(roadshow.CompanyDetailView)
  201. if calendarItem != nil && calendarItem.CompanyId > 0 {
  202. companyId := calendarItem.CompanyId
  203. companyProductItem, err := models.GetCompanyProductByCompanyIdAndProductId(companyId, 1)
  204. if err != nil {
  205. this.FailWithMessage("获取数据失败", "获取数据失败!GetRsCalendarResearcherById:"+err.Error())
  206. return
  207. }
  208. permissionList, err := models.GetCompanyProductReportPermissionList(companyId, 1)
  209. if err != nil {
  210. this.FailWithMessage("搜索客户权限失败", "搜索客户权限失败!GetRsCalendarResearcherById:"+err.Error())
  211. return
  212. }
  213. var permissionArr []string
  214. for _, v := range permissionList {
  215. permissionArr = append(permissionArr, v.PermissionName)
  216. }
  217. readMap, err := services.GetFiccCountUserViewHistoryByCompanyIds(strconv.Itoa(companyId))
  218. if err != nil {
  219. this.FailWithMessage("获取阅读次数失败", "获取阅读次数失败!GetRsCalendarResearcherById:"+err.Error())
  220. return
  221. }
  222. readNum, ok := readMap[companyId]
  223. if !ok {
  224. readNum = 0
  225. }
  226. companyDetailView.CompanyId = companyProductItem.CompanyId
  227. companyDetailView.CompanyName = companyProductItem.CompanyName
  228. companyDetailView.Status = companyProductItem.Status
  229. companyDetailView.IndustryId = companyProductItem.IndustryId
  230. companyDetailView.IndustryName = companyProductItem.IndustryName
  231. companyDetailView.PermissionName = strings.Join(permissionArr, "/")
  232. companyDetailView.ReportReadTotal = readNum //ficc报告-累计阅读次数
  233. }
  234. resp := new(roadshow.CalendarDetailResp)
  235. resp.RsCalendarItem = calendarItem
  236. resp.RsCalendarResearcherItem = rsCalendarResearcherItem
  237. resp.CompanyDetail = companyDetailView
  238. this.OkDetailed(resp, "获取成功")
  239. }