calendar_researcher_question.go 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. package roadshow
  2. import (
  3. "context"
  4. "github.com/beego/beego/v2/client/orm"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. "time"
  7. )
  8. type RsCalendarResearcherQuestion struct {
  9. RsCalendarResearcherQuestionId int `orm:"column(rs_calendar_researcher_question_id);pk"`
  10. RsCalendarId int `description:"路演日历ID"`
  11. RsCalendarResearcherId int `description:"路演研究员记录ID"`
  12. QuestionContent string `description:"提问内容"`
  13. ReplyContent string `description:"回复内容"`
  14. CreateTime time.Time `description:"创建时间"`
  15. ModifyTime time.Time `description:"更新时间"`
  16. }
  17. type RoadShowQuestionSaveReq struct {
  18. RsCalendarId int `description:"路演ID"`
  19. RsCalendarResearcherId int `description:"路演研究员记录ID"`
  20. CompanyIndustry string `description:"客户行业"`
  21. CompanyClassify string `description:"客户分类"`
  22. QuestionList []*RsCalendarResearcherQuestionSaveReq `description:"问答列表"`
  23. }
  24. type RsCalendarResearcherQuestionSaveReq struct {
  25. QuestionContent string `description:"提问内容"`
  26. ReplyContent string `description:"回复内容"`
  27. }
  28. func RoadShowQuestionSave(req *RoadShowQuestionSaveReq) (err error) {
  29. o := orm.NewOrm()
  30. tx, err := o.BeginWithCtx(context.Background())
  31. if err != nil {
  32. return err
  33. }
  34. defer func() {
  35. if err != nil {
  36. tx.Rollback()
  37. } else {
  38. tx.Commit()
  39. }
  40. }()
  41. sql := ` UPDATE rs_calendar_researcher SET company_industry = ?,company_classify = ?,question_status=1 WHERE rs_calendar_researcher_id = ? `
  42. _, err = tx.Raw(sql, req.CompanyIndustry, req.CompanyClassify, req.RsCalendarResearcherId).Exec()
  43. if err != nil {
  44. return err
  45. }
  46. list := make([]*RsCalendarResearcherQuestion, 0)
  47. for _, v := range req.QuestionList {
  48. item := new(RsCalendarResearcherQuestion)
  49. item.RsCalendarId = req.RsCalendarId
  50. item.RsCalendarResearcherId = req.RsCalendarResearcherId
  51. item.QuestionContent = v.QuestionContent
  52. item.ReplyContent = v.ReplyContent
  53. item.ModifyTime = time.Now()
  54. item.CreateTime = time.Now()
  55. list = append(list, item)
  56. }
  57. _, err = tx.InsertMulti(len(list), &list)
  58. return err
  59. }
  60. type RsCalendarResearcherQuestionView struct {
  61. RsCalendarResearcherQuestionId int `orm:"column(rs_calendar_researcher_question_id);pk"`
  62. RsCalendarId int `description:"路演日历ID"`
  63. RsCalendarResearcherId int `description:"路演研究员记录ID"`
  64. QuestionContent string `description:"提问内容"`
  65. ReplyContent string `description:"回复内容"`
  66. ResearcherId int `description:"研究员ID"`
  67. ResearcherName string `description:"研究员名称"`
  68. CreateTime string `description:"创建时间"`
  69. ModifyTime string `description:"更新时间"`
  70. }
  71. func GetRoadShowQuestionList(condition string, pars []interface{}) (item []*RsCalendarResearcherQuestionView, err error) {
  72. o := orm.NewOrm()
  73. sql := `SELECT a.*,b.researcher_id,b.researcher_name FROM rs_calendar_researcher_question AS a
  74. LEFT JOIN rs_calendar_researcher AS b ON a.rs_calendar_researcher_id=b.rs_calendar_researcher_id
  75. WHERE 1=1 `
  76. if condition != "" {
  77. sql += condition
  78. }
  79. sql += ` ORDER BY a.create_time DESC `
  80. _, err = o.Raw(sql, pars).QueryRows(&item)
  81. return
  82. }
  83. type QuestionSummary struct {
  84. RsCalendarId int `orm:"column(rs_calendar_id);pk"`
  85. SysUserId int `description:"创建人id"`
  86. SysUserRealName string `description:"创建人名称"`
  87. ActivityType string `description:"活动类型"`
  88. RoadshowType string `description:"路演形式"`
  89. RoadshowPlatform string `description:"路演平台"`
  90. CompanyId int `description:"客户id"`
  91. CompanyName string `description:"客户名称"`
  92. RsCalendarResearcherId int `description:"活动研究员id"`
  93. ResearcherId string `description:"研究员id"`
  94. ResearcherName string `description:"研究员名称"`
  95. StartDate string `description:"开始日期"`
  96. EndDate string `description:"结束日期"`
  97. StartTime string `description:"开始时间"`
  98. EndTime string `description:"结束时间"`
  99. StartWeek string `description:"开始日期对应周"`
  100. EndWeek string `description:"结束日期对应周"`
  101. Status int `description:"状态:1:待接受,2:已接受,3:已拒绝,4:已删除,5:已撤回,6:已结束"`
  102. RefuseReason string `description:"拒绝理由"`
  103. RefuseTime string `description:"拒绝时间"`
  104. DeleteReason string `description:"删除原因"`
  105. Province string `description:"省"`
  106. ProvinceCode string `description:"省编码"`
  107. City string `description:"市"`
  108. CityCode string `description:"市编码"`
  109. District string `description:"区"`
  110. Theme string `description:"会议主题"`
  111. CooperationName string `description:"合作方名称"`
  112. ActivityCategory string `description:"活动类别"`
  113. Source int `description:"来源,0:自系统,1:上海方的"`
  114. Title string `description:"日历展示标题"`
  115. CompanyStatus string `description:"新增客户状态"`
  116. UnionCode string `description:"公开会议联合编码"`
  117. EnglishCompany int `description:"是否为英文客户: 0-否; 1-是"`
  118. EnglishCountry string `description:"英文客户-国家"`
  119. EnglishViewTotal int `description:"英文客户-累计点击量"`
  120. SubmitButton bool `description:"提交按钮是否展示"`
  121. ViewButton bool `description:"查看按钮是否展示"`
  122. EditButton bool `description:"修改按钮是否展示"`
  123. CompanyIndustry string `description:"客户行业"`
  124. CompanyClassify string `description:"客户分类"`
  125. QuestionStatus int `description:"问答状态:0-未填写;1-已填写"`
  126. QuestionMsgStatus int `description:"问答模板消息:0-未发送;1-已发送"`
  127. }
  128. type QuestionSummaryListResp struct {
  129. Paging *paging.PagingItem
  130. List []*QuestionSummary
  131. }
  132. func GetQuestionSummaryListCount(condition string, pars []interface{}) (count int, err error) {
  133. o := orm.NewOrm()
  134. sql := `SELECT COUNT(1) AS count FROM(SELECT COUNT(1) AS count
  135. FROM rs_calendar AS a
  136. INNER JOIN rs_calendar_researcher AS b ON a.rs_calendar_id=b.rs_calendar_id
  137. WHERE 1=1 `
  138. if condition != "" {
  139. sql += condition
  140. }
  141. sql += ` GROUP BY a.rs_calendar_id ) AS t `
  142. err = o.Raw(sql, pars).QueryRow(&count)
  143. return
  144. }
  145. func GetQuestionSummaryList(condition string, pars []interface{}, startSize, pageSize int) (list []*QuestionSummary, err error) {
  146. o := orm.NewOrm()
  147. sql := ` SELECT a.rs_calendar_id,a.activity_type,a.roadshow_type,a.activity_category,a.roadshow_platform,b.create_time,a.district,
  148. b.modify_time,GROUP_CONCAT(b.researcher_id ORDER BY researcher_sort ASC) AS researcher_id,GROUP_CONCAT(b.researcher_name ORDER BY researcher_sort ASC) AS researcher_name,
  149. b.rs_calendar_researcher_id,b.start_date,
  150. b.end_date,b.start_time,b.end_time,b.start_week,b.end_week,b.status,b.refuse_reason,b.refuse_time,
  151. b.delete_reason,a.sys_user_real_name,a.city,a.province,a.company_name,a.company_id,
  152. a.cooperation_name,a.theme,a.activity_category,a.english_company,
  153. b.question_status,b.question_msg_status,
  154. GROUP_CONCAT(b.company_industry) AS company_industry,
  155. GROUP_CONCAT(b.company_classify) AS company_classify
  156. FROM rs_calendar AS a
  157. INNER JOIN rs_calendar_researcher AS b ON a.rs_calendar_id=b.rs_calendar_id
  158. WHERE 1=1
  159. `
  160. if condition != "" {
  161. sql += condition
  162. }
  163. sql += ` GROUP BY a.rs_calendar_id
  164. ORDER BY b.create_time DESC LIMIT ?,? `
  165. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
  166. return
  167. }
  168. func GetQuestionSummaryExport(condition string, pars []interface{}) (list []*QuestionSummary, err error) {
  169. o := orm.NewOrm()
  170. sql := ` SELECT a.rs_calendar_id,a.activity_type,a.roadshow_type,a.activity_category,a.roadshow_platform,b.create_time,a.district,
  171. b.modify_time,GROUP_CONCAT(b.researcher_id ORDER BY researcher_sort ASC) AS researcher_id,GROUP_CONCAT(b.researcher_name ORDER BY researcher_sort ASC) AS researcher_name,
  172. b.rs_calendar_researcher_id,b.start_date,
  173. b.end_date,b.start_time,b.end_time,b.start_week,b.end_week,b.status,b.refuse_reason,b.refuse_time,
  174. b.delete_reason,a.sys_user_real_name,a.city,a.province,a.company_name,a.company_id,
  175. a.cooperation_name,a.theme,a.activity_category,a.english_company,
  176. b.question_status,b.question_msg_status,
  177. GROUP_CONCAT(b.company_industry) AS company_industry,
  178. GROUP_CONCAT(b.company_classify) AS company_classify
  179. FROM rs_calendar AS a
  180. INNER JOIN rs_calendar_researcher AS b ON a.rs_calendar_id=b.rs_calendar_id
  181. WHERE 1=1
  182. `
  183. if condition != "" {
  184. sql += condition
  185. }
  186. sql += ` GROUP BY a.rs_calendar_id
  187. ORDER BY b.create_time DESC `
  188. _, err = o.Raw(sql, pars).QueryRows(&list)
  189. return
  190. }