calendar.go 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993
  1. package roadshow
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. "hongze/hz_crm_api/models/company"
  7. "hongze/hz_crm_api/models/system"
  8. "hongze/hz_crm_api/utils"
  9. "strings"
  10. "time"
  11. )
  12. type AddActivityReq struct {
  13. ActivityType string `description:"活动类型"`
  14. RoadshowType string `description:"路演形式"`
  15. RoadshowPlatform string `description:"路演平台"`
  16. CompanyId int `description:"客户id"`
  17. CompanyName string `description:"客户名称"`
  18. Province string `description:"省"`
  19. ProvinceCode string `description:"省编码"`
  20. City string `description:"市"`
  21. CityCode string `description:"市编码"`
  22. District string `description:"区"`
  23. Theme string `description:"会议主题"`
  24. CooperationName string `description:"合作方名称"`
  25. ActivityCategory string `description:"活动类别"`
  26. ResearcherList []*CalendarResearcher
  27. EnglishCompany int `description:"是否为英文客户"`
  28. }
  29. type CalendarResearcher struct {
  30. ResearcherId int `description:"研究员id"`
  31. ResearcherName string `description:"研究员名称"`
  32. StartDate string `description:"开始日期"`
  33. EndDate string `description:"结束日期"`
  34. StartTime string `description:"开始时间"`
  35. EndTime string `description:"结束时间"`
  36. StartWeek string `description:"开始日期对应周"`
  37. EndWeek string `description:"结束日期对应周"`
  38. }
  39. type RsCalendar struct {
  40. RsCalendarId int `orm:"column(rs_calendar_id);pk"`
  41. SysUserId int `description:"创建人id"`
  42. SysUserRealName string `description:"创建人名称"`
  43. ActivityType string `description:"活动类型"`
  44. RoadshowType string `description:"路演形式"`
  45. RoadshowPlatform string `description:"路演平台"`
  46. CompanyId int `description:"客户id"`
  47. CompanyName string `description:"客户名称"`
  48. Province string `description:"省"`
  49. ProvinceCode string `description:"省编码"`
  50. City string `description:"市"`
  51. CityCode string `description:"市编码"`
  52. District string `description:"区"`
  53. Theme string `description:"会议主题"`
  54. CooperationName string `description:"合作方名称"`
  55. Title string `description:"展示在日历的标题"`
  56. Source int8 `description:"来源,0:自系统,1:上海方的"`
  57. CreateTime time.Time
  58. ModifyTime time.Time
  59. ActivityCategory string `description:"活动类别"`
  60. IsSynced int `description:"是否与上海同步 0:未同步 1:已同步"`
  61. UnionCode string `description:"公开会议联合编码"`
  62. EnglishCompany int `description:"是否为英文客户: 0-否; 1-是"`
  63. }
  64. type RsCalendarResearcher struct {
  65. RsCalendarResearcherId int `orm:"column(rs_calendar_researcher_id);pk"`
  66. RsCalendarId int `description:"日历活动id"`
  67. ResearcherId int `description:"研究员id"`
  68. ResearcherName string `description:"研究员名称"`
  69. StartDate string `description:"开始日期"`
  70. EndDate string `description:"结束日期"`
  71. StartTime string `description:"开始时间"`
  72. EndTime string `description:"结束时间"`
  73. StartWeek string `description:"开始日期对应周"`
  74. EndWeek string `description:"结束日期对应周"`
  75. CreateTime time.Time
  76. ModifyTime time.Time
  77. Status int `description:"状态:1:待接受,2:已接受,3:已拒绝,4:已删除,5:已撤回,6:已结束"`
  78. RefuseReason string `description:"拒绝理由"`
  79. RefuseTime time.Time `description:"拒绝时间"`
  80. DeleteReason string `description:"删除理由"`
  81. DeleteTime time.Time `description:"删除时间"`
  82. ApproveTime time.Time `description:"接受时间"`
  83. IsSynced int `description:"是否与上海同步 0:未同步 1:已同步"`
  84. ResearcherSort int `description:"研究员新增排序"`
  85. UnionCode string `description:"公开会议联合编码"`
  86. }
  87. func GetRsCalendarById(rsCalendarId int) (item *RsCalendar, err error) {
  88. o := orm.NewOrm()
  89. sql := `SELECT * FROM rs_calendar WHERE rs_calendar_id=? `
  90. err = o.Raw(sql, rsCalendarId).QueryRow(&item)
  91. return
  92. }
  93. func GetRsCalendarResearcherById(rsCalendarResearcherId int) (item *RsCalendarResearcher, err error) {
  94. o := orm.NewOrm()
  95. sql := `SELECT * FROM rs_calendar_researcher WHERE rs_calendar_researcher_id=? `
  96. err = o.Raw(sql, rsCalendarResearcherId).QueryRow(&item)
  97. return
  98. }
  99. // Update 更新路演用户信息
  100. func (item *RsCalendarResearcher) Update(cols []string) (err error) {
  101. o := orm.NewOrm()
  102. _, err = o.Update(item, cols...)
  103. return
  104. }
  105. func GetRsCalendarResearcherListById(rsCalendarId int) (item []*RsCalendarResearcher, err error) {
  106. o := orm.NewOrm()
  107. sql := `SELECT * FROM rs_calendar_researcher WHERE rs_calendar_id=? `
  108. _, err = o.Raw(sql, rsCalendarId).QueryRows(&item)
  109. return
  110. }
  111. func GetRsCalendarResearcherListByCalendarResearcherId(rsCalendarResearcherId int) (item []*RsCalendarResearcher, err error) {
  112. o := orm.NewOrm()
  113. sql := `SELECT * FROM rs_calendar_researcher WHERE rs_calendar_researcher_id=? `
  114. _, err = o.Raw(sql, rsCalendarResearcherId).QueryRows(&item)
  115. return
  116. }
  117. // 添加RsCalendar
  118. func AddRsCalendar(item *RsCalendar) (lastId int64, err error) {
  119. o := orm.NewOrm()
  120. lastId, err = o.Insert(item)
  121. return
  122. }
  123. // 添加RsCalendarResearcher
  124. func AddRsCalendarResearcher(item *RsCalendarResearcher) (lastId int64, err error) {
  125. o := orm.NewOrm()
  126. lastId, err = o.Insert(item)
  127. return
  128. }
  129. // 添加RsCalendarResearcher
  130. func AddRsCalendarResearcherFromSH(item *RsCalendarResearcher) (bool bool, id int64, err error) {
  131. o := orm.NewOrm()
  132. bool, id, err = o.ReadOrCreate(item, "rs_calendar_id")
  133. return
  134. }
  135. type Researcher struct {
  136. AdminId int `description:"研究员id"`
  137. RealName string `description:"研究员名称"`
  138. GroupId int `description:"分组id"`
  139. GroupName string `description:"分组名称"`
  140. RoleTypeCode string `description:"角色编码"`
  141. }
  142. type ResearcherIds struct {
  143. AdminIds string `description:"研究员id"`
  144. }
  145. type ResearcherGroup struct {
  146. GroupId int `description:"分组id"`
  147. GroupName string `description:"分组名称"`
  148. AdminId int `description:"研究员id"`
  149. RealName string `description:"研究员名称"`
  150. RoleTypeCode string `description:"角色编码"`
  151. ResearcherList []*ResearcherGroup
  152. }
  153. func GetResearcherGroup() (list []*ResearcherGroup, err error) {
  154. o := orm.NewOrm()
  155. sql := ` SELECT group_id,group_name FROM admin AS a
  156. WHERE a.role_type_code IN('researcher','ficc_researcher','ficc_admin')
  157. AND a.enabled=1
  158. AND a.group_id>0
  159. AND a.group_name<>'无'
  160. GROUP BY a.group_id
  161. ORDER BY a.group_id ASC `
  162. _, err = o.Raw(sql).QueryRows(&list)
  163. return
  164. }
  165. func GetResearcher() (list []*ResearcherGroup, err error) {
  166. o := orm.NewOrm()
  167. sql := ` SELECT * FROM admin AS a
  168. WHERE a.role_type_code IN('researcher','rai_researcher','ficc_researcher','ficc_admin')
  169. AND a.enabled=1 AND a.real_name<>'于菲' `
  170. _, err = o.Raw(sql).QueryRows(&list)
  171. return
  172. }
  173. func GetChoiceResearcher(adminIds string) (list []*Researcher, err error) {
  174. o := orm.NewOrm()
  175. sql := ` SELECT * FROM admin WHERE admin_id IN ( ` + adminIds + ` ); `
  176. _, err = o.Raw(sql).QueryRows(&list)
  177. return
  178. }
  179. // GetResearcherV2 获取研究员列表(冻结的也要)
  180. func GetResearcherV2() (list []*ResearcherGroup, err error) {
  181. o := orm.NewOrm()
  182. sql := ` SELECT * FROM admin AS a
  183. WHERE a.role_type_code IN('researcher','rai_researcher','ficc_researcher','ficc_admin')
  184. AND a.enabled=1 and admin_id !=92 `
  185. _, err = o.Raw(sql).QueryRows(&list)
  186. return
  187. }
  188. // GetSellerGroup 获取销售分组
  189. func GetSellerGroup() (list []*ResearcherGroup, err error) {
  190. o := orm.NewOrm()
  191. sql := ` SELECT group_id,group_name FROM admin AS a
  192. WHERE a.role_type_code IN('ficc_seller','ficc_group')
  193. AND a.enabled=1
  194. AND a.group_id>0
  195. AND a.group_name<>'无'
  196. GROUP BY a.group_id
  197. ORDER BY a.group_id ASC `
  198. _, err = o.Raw(sql).QueryRows(&list)
  199. return
  200. }
  201. // GetSellerList 获取销售列表(冻结的也要)
  202. func GetSellerList(roleTypeCode string, groupIds string) (list []*Researcher, err error) {
  203. o := orm.NewOrm()
  204. sql := ` SELECT * FROM admin AS a
  205. WHERE a.role_type_code IN ` + roleTypeCode + `
  206. AND a.enabled=1 `
  207. if groupIds != "" {
  208. sql += "and group_id in " + groupIds
  209. }
  210. _, err = o.Raw(sql).QueryRows(&list)
  211. return
  212. }
  213. // GetRaiSellerList 获取权益销售列表(冻结的也要)
  214. func GetRaiSellerList(roleTypeCode string, groupIds string) (list []*Researcher, err error) {
  215. o := orm.NewOrm()
  216. sql := ` SELECT * FROM admin AS a
  217. WHERE a.role_type_code IN ` + roleTypeCode + `
  218. AND a.enabled=1 `
  219. if groupIds != "" {
  220. sql += "and group_id in " + groupIds
  221. }
  222. _, err = o.Raw(sql).QueryRows(&list)
  223. return
  224. }
  225. type CalendarListView struct {
  226. RsCalendarId int `orm:"column(rs_calendar_id);pk"`
  227. SysUserId int `description:"创建人id"`
  228. SysUserRealName string `description:"创建人名称"`
  229. ActivityType string `description:"活动类型"`
  230. RoadshowType string `description:"路演形式"`
  231. RoadshowPlatform string `description:"路演平台"`
  232. CompanyId int `description:"客户id"`
  233. CompanyName string `description:"客户名称"`
  234. RsCalendarResearcherId int `description:"活动研究员id"`
  235. ResearcherId string `description:"研究员id"`
  236. ResearcherName string `description:"研究员名称"`
  237. StartDate string `description:"开始日期"`
  238. EndDate string `description:"结束日期"`
  239. StartTime string `description:"开始时间"`
  240. EndTime string `description:"结束时间"`
  241. StartWeek string `description:"开始日期对应周"`
  242. EndWeek string `description:"结束日期对应周"`
  243. CreateTime string
  244. ModifyTime string
  245. Status int `description:"状态:1:待接受,2:已接受,3:已拒绝,4:已删除,5:已撤回,6:已结束"`
  246. RefuseReason string `description:"拒绝理由"`
  247. RefuseTime string `description:"拒绝时间"`
  248. DeleteReason string `description:"删除原因"`
  249. Province string `description:"省"`
  250. ProvinceCode string `description:"省编码"`
  251. City string `description:"市"`
  252. CityCode string `description:"市编码"`
  253. District string `description:"区"`
  254. Theme string `description:"会议主题"`
  255. CooperationName string `description:"合作方名称"`
  256. ActivityCategory string `description:"活动类别"`
  257. Source int `description:"来源,0:自系统,1:上海方的"`
  258. Title string `description:"日历展示标题"`
  259. CompanyStatus string `description:"新增客户状态"`
  260. UnionCode string `description:"公开会议联合编码"`
  261. EnglishCompany int `description:"是否为英文客户: 0-否; 1-是"`
  262. EnglishCountry string `description:"英文客户-国家"`
  263. EnglishViewTotal int `description:"英文客户-累计点击量"`
  264. SubmitButton bool `description:"提交按钮是否展示"`
  265. ViewButton bool `description:"查看按钮是否展示"`
  266. }
  267. type CalendarListResp struct {
  268. Paging *paging.PagingItem
  269. List []*CalendarListView
  270. }
  271. func GetCalendarListCount(condition string, pars []interface{}, calendarType int) (count int, err error) {
  272. o := orm.NewOrm()
  273. if calendarType == 3 || calendarType == 4 {
  274. sql := `SELECT COUNT(1) AS count FROM(SELECT COUNT(1) AS count
  275. FROM rs_calendar AS a
  276. INNER JOIN rs_calendar_researcher AS b ON a.rs_calendar_id=b.rs_calendar_id
  277. WHERE 1=1 `
  278. if condition != "" {
  279. sql += condition
  280. }
  281. sql += ` GROUP BY a.rs_calendar_id ) AS t `
  282. err = o.Raw(sql, pars).QueryRow(&count)
  283. } else {
  284. sql := `SELECT COUNT(1) AS count FROM rs_calendar AS a
  285. INNER JOIN rs_calendar_researcher AS b ON a.rs_calendar_id=b.rs_calendar_id
  286. WHERE 1=1 `
  287. if condition != "" {
  288. sql += condition
  289. }
  290. err = o.Raw(sql, pars).QueryRow(&count)
  291. }
  292. return
  293. }
  294. func GetCalendarList(condition string, pars []interface{}, startSize, pageSize, calendarType int) (list []*CalendarListView, err error) {
  295. o := orm.NewOrm()
  296. if calendarType == 3 || calendarType == 4 {
  297. sql := ` SELECT a.rs_calendar_id,a.activity_type,a.roadshow_type,a.activity_category,a.roadshow_platform,b.create_time,a.district,
  298. 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,
  299. b.rs_calendar_researcher_id,b.start_date,
  300. b.end_date,b.start_time,b.end_time,b.start_week,b.end_week,b.status,b.refuse_reason,b.refuse_time,
  301. b.delete_reason,a.sys_user_real_name,a.city,a.province,a.company_name,a.company_id,
  302. a.cooperation_name,a.theme,a.activity_category,a.english_company
  303. FROM rs_calendar AS a
  304. INNER JOIN rs_calendar_researcher AS b ON a.rs_calendar_id=b.rs_calendar_id
  305. WHERE 1=1
  306. `
  307. if condition != "" {
  308. sql += condition
  309. }
  310. if calendarType == 1 {
  311. sql += ` GROUP BY a.rs_calendar_id
  312. ORDER BY b.create_time ASC LIMIT ?,? `
  313. } else {
  314. sql += ` GROUP BY a.rs_calendar_id
  315. ORDER BY b.create_time DESC LIMIT ?,? `
  316. }
  317. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
  318. } else {
  319. sql := `SELECT a.rs_calendar_id,a.activity_type,a.roadshow_type,a.activity_category,a.roadshow_platform,b.create_time,a.district,a.sys_user_id,
  320. b.modify_time,b.researcher_id,b.researcher_name,
  321. b.rs_calendar_researcher_id,b.start_date,
  322. b.end_date,b.start_time,b.end_time,b.start_week,b.end_week,b.status,b.refuse_reason,b.refuse_time,
  323. b.delete_reason,a.sys_user_real_name,a.city,a.province,a.company_name,a.company_id,a.cooperation_name,a.theme,a.activity_category,a.english_company
  324. FROM rs_calendar AS a
  325. INNER JOIN rs_calendar_researcher AS b ON a.rs_calendar_id=b.rs_calendar_id
  326. WHERE 1=1 `
  327. if condition != "" {
  328. sql += condition
  329. }
  330. if calendarType == 1 {
  331. sql += ` ORDER BY b.create_time ASC LIMIT ?,? `
  332. } else {
  333. sql += ` ORDER BY b.create_time DESC LIMIT ?,? `
  334. }
  335. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
  336. }
  337. return
  338. }
  339. type AcceptReq struct {
  340. RsCalendarId int `description:"日历活动id"`
  341. RsCalendarResearcherId int `description:"活动研究员id"`
  342. }
  343. type DeleteReq struct {
  344. RsCalendarId int `description:"日历活动id"`
  345. RsCalendarResearcherId int `description:"活动研究员id"`
  346. DeleteReason string `description:"删除原因"`
  347. }
  348. type RefuseReq struct {
  349. RsCalendarId int `description:"日历活动id"`
  350. RsCalendarResearcherId int `description:"活动研究员id"`
  351. RefuseReason string `description:"拒绝原因"`
  352. }
  353. // 更新
  354. func UpdateCalendarResearcher(where, updateParams map[string]interface{}) error {
  355. o := orm.NewOrm()
  356. ptrStructOrTableName := "rs_calendar_researcher"
  357. qs := o.QueryTable(ptrStructOrTableName)
  358. for expr, exprV := range where {
  359. qs = qs.Filter(expr, exprV)
  360. }
  361. _, err := qs.Update(updateParams)
  362. return err
  363. }
  364. // 更新
  365. func UpdateCalendarResearcherFromSH(item *RsCalendarResearcher) error {
  366. o := orm.NewOrm()
  367. _, err := o.Update(item, "")
  368. return err
  369. }
  370. type AddMattersReq struct {
  371. StartDate string `description:"开始日期"`
  372. EndDate string `description:"结束日期"`
  373. StartTime string `description:"开始时间"`
  374. EndTime string `description:"结束时间"`
  375. StartWeek string `description:"开始日期周"`
  376. EndWeek string `description:"结束日期周"`
  377. MatterContent string `description:"事项内容"`
  378. }
  379. type RsMatters struct {
  380. RsMattersId int `orm:"column(rs_matters_id);pk"`
  381. SysUserId int `description:"添加事项人id"`
  382. SysUserRealName string `description:"创建人姓名"`
  383. StartDate string `description:"开始日期"`
  384. EndDate string `description:"结束日期"`
  385. StartTime string `description:"开始时间"`
  386. EndTime string `description:"结束时间"`
  387. StartWeek string `description:"开始日期周"`
  388. EndWeek string `description:"结束日期周"`
  389. MatterContent string `description:"事项内容"`
  390. Status int8 `description:"状态:1:进行中,6:已结束"`
  391. CreateTime time.Time `description:"创建时间"`
  392. ModifyTime time.Time `description:"修改时间"`
  393. IsSynced int `description:"是否与上海同步 0:未同步 1:已同步"`
  394. EditReason string `description:"修改原因"`
  395. IsSeller int `description:"是否为销售事项: 0-否; 1-是"`
  396. }
  397. // 添加RsCalendarResearcher
  398. func AddRsMatters(item *RsMatters) (id int64, err error) {
  399. o := orm.NewOrm()
  400. id, err = o.Insert(item)
  401. return
  402. }
  403. type UpdateMattersReq struct {
  404. RsMattersId int `orm:"column(rs_matters_id);pk"`
  405. StartDate string `description:"开始日期"`
  406. EndDate string `description:"结束日期"`
  407. StartTime string `description:"开始时间"`
  408. EndTime string `description:"结束时间"`
  409. StartWeek string `description:"开始日期周"`
  410. EndWeek string `description:"结束日期周"`
  411. MatterContent string `description:"事项内容"`
  412. EditReason string `description:"修改原因"`
  413. }
  414. // 更新
  415. func UpdateRsMatters(where, updateParams map[string]interface{}) error {
  416. o := orm.NewOrm()
  417. ptrStructOrTableName := "rs_matters"
  418. qs := o.QueryTable(ptrStructOrTableName)
  419. for expr, exprV := range where {
  420. qs = qs.Filter(expr, exprV)
  421. }
  422. _, err := qs.Update(updateParams)
  423. return err
  424. }
  425. type DeleteMattersReq struct {
  426. RsMattersId int `description:"事项id"`
  427. }
  428. // 删除事项
  429. func DeleteRsMatters(rsMattersId int) (err error) {
  430. o := orm.NewOrm()
  431. sql := ` DELETE FROM rs_matters WHERE rs_matters_id=? `
  432. _, err = o.Raw(sql, rsMattersId).Exec()
  433. return err
  434. }
  435. type RsMattersView struct {
  436. RsMattersId int `orm:"column(rs_matters_id);pk"`
  437. SysUserId int `description:"添加事项人id"`
  438. SysUserRealName string `description:"创建人姓名"`
  439. StartDate string `description:"开始日期"`
  440. EndDate string `description:"结束日期"`
  441. StartTime string `description:"开始时间"`
  442. EndTime string `description:"结束时间"`
  443. StartWeek string `description:"开始日期周"`
  444. EndWeek string `description:"结束日期周"`
  445. MatterContent string `description:"事项内容"`
  446. Status int8 `description:"状态:1:进行中,6:已结束"`
  447. CreateTime string `description:"创建时间"`
  448. ModifyTime string `description:"修改时间"`
  449. IsSynced int `description:"是否与上海同步 0:未同步 1:已同步"`
  450. EditReason string `description:"修改原因"`
  451. ButtonAuth RsMatterButton `description:"按钮权限"`
  452. }
  453. // RsMatterButton
  454. type RsMatterButton struct {
  455. EditDisabled bool `description:"禁用编辑"`
  456. RemoveDisabled bool `description:"禁用删除"`
  457. }
  458. func GetCalendarDetailList(condition string, pars []interface{}) (list []*CalendarListView, err error) {
  459. o := orm.NewOrm()
  460. sql := `SELECT a.*,b.*,c.status AS company_status FROM rs_calendar AS a
  461. INNER JOIN rs_calendar_researcher AS b ON a.rs_calendar_id=b.rs_calendar_id
  462. LEFT JOIN company_product AS c ON a.company_id=c.company_id AND c.product_id=1
  463. WHERE 1=1 `
  464. if condition != "" {
  465. sql += condition
  466. }
  467. sql += ` ORDER BY a.create_time DESC `
  468. _, err = o.Raw(sql, pars).QueryRows(&list)
  469. return
  470. }
  471. func GetRsMattersList(startDate, endDate string, researcherId int) (list []*RsMatters, err error) {
  472. o := orm.NewOrm()
  473. //sql := `SELECT * FROM rs_matters AS a WHERE a.start_date>=? AND a.end_date<=? AND sys_user_id=? `
  474. sql := `SELECT * FROM rs_matters AS a WHERE sys_user_id=? `
  475. sql += ` ORDER BY a.create_time DESC `
  476. //_, err = o.Raw(sql, startDate, endDate, researcherId).QueryRows(&list)
  477. _, err = o.Raw(sql, researcherId).QueryRows(&list)
  478. return
  479. }
  480. type CalendarDetailResp struct {
  481. CalendarList []*CalendarListView
  482. RsMattersList []*RsMatters
  483. }
  484. type EditActivityReq struct {
  485. EditType int `description:"修改方式: 1:修改,2:修改重提"`
  486. RsCalendarId int `description:"路演活动id"`
  487. RsCalendarResearcherId int `description:"活动研究员id"`
  488. ActivityType string `description:"活动类型"`
  489. RoadshowType string `description:"路演形式"`
  490. RoadshowPlatform string `description:"路演平台"`
  491. CompanyId int `description:"客户id"`
  492. CompanyName string `description:"客户名称"`
  493. Province string `description:"省"`
  494. ProvinceCode string `description:"省编码"`
  495. City string `description:"市"`
  496. CityCode string `description:"市编码"`
  497. District string `description:"区"`
  498. Theme string `description:"会议主题"`
  499. CooperationName string `description:"合作方名称"`
  500. ActivityCategory string `description:"活动类别"`
  501. ResearcherList []*CalendarResearcher
  502. EnglishCompany int `description:"是否为英文客户"`
  503. }
  504. // 更新活动信息
  505. func UpdateRsCalendar(where, updateParams map[string]interface{}) error {
  506. o := orm.NewOrm()
  507. ptrStructOrTableName := "rs_calendar"
  508. qs := o.QueryTable(ptrStructOrTableName)
  509. for expr, exprV := range where {
  510. qs = qs.Filter(expr, exprV)
  511. }
  512. _, err := qs.Update(updateParams)
  513. return err
  514. }
  515. func GetMattersListCount(condition string, pars []interface{}) (count int, err error) {
  516. o := orm.NewOrm()
  517. sql := `SELECT COUNT(1) AS count FROM rs_matters AS a
  518. WHERE 1=1 `
  519. if condition != "" {
  520. sql += condition
  521. }
  522. err = o.Raw(sql, pars).QueryRow(&count)
  523. return
  524. }
  525. func GetMattersList(condition string, pars []interface{}, pageLimit ...int) (list []*RsMattersView, err error) {
  526. o := orm.NewOrm()
  527. sql := `SELECT * FROM rs_matters AS a
  528. WHERE 1=1 `
  529. if condition != "" {
  530. sql += condition
  531. }
  532. sql += ` ORDER BY a.create_time DESC LIMIT ?,? `
  533. _, err = o.Raw(sql, pars, pageLimit).QueryRows(&list)
  534. return
  535. }
  536. type MattersListResp struct {
  537. Paging *paging.PagingItem
  538. List []*RsMattersView
  539. }
  540. // 删除
  541. func DeleteCalendar(rsCalendarId, rsCalendarResearcherId int) (err error) {
  542. o := orm.NewOrm()
  543. sql := ` DELETE FROM rs_calendar_researcher WHERE rs_calendar_id=? `
  544. _, err = o.Raw(sql, rsCalendarId).Exec()
  545. if err != nil {
  546. return err
  547. }
  548. //var count int
  549. //sql = ` SELECT COUNT(1) AS count FROM rs_calendar_researcher WHERE rs_calendar_id=? `
  550. //err = o.Raw(sql, rsCalendarId).QueryRow(&count)
  551. //if err != nil && err.Error() != utils.ErrNoRow() {
  552. // return err
  553. //}
  554. //if count <= 0 {
  555. // sql := ` DELETE FROM rs_calendar WHERE rs_calendar_id=? `
  556. // _, err = o.Raw(sql, rsCalendarId).Exec()
  557. // if err != nil {
  558. // return err
  559. // }
  560. //}
  561. sql = ` DELETE FROM rs_calendar WHERE rs_calendar_id=? `
  562. _, err = o.Raw(sql, rsCalendarId).Exec()
  563. return err
  564. }
  565. // 删除
  566. func DeleteRsCalendarResearcher(rsCalendarId int) (err error) {
  567. o := orm.NewOrm()
  568. sql := ` DELETE FROM rs_calendar_researcher WHERE rs_calendar_id=? `
  569. _, err = o.Raw(sql, rsCalendarId).Exec()
  570. return err
  571. }
  572. func CheckMattersCount(condition string, pars []interface{}) (count int, err error) {
  573. o := orm.NewOrm()
  574. sql := `SELECT COUNT(1) AS count FROM rs_matters AS a
  575. WHERE 1=1 `
  576. if condition != "" {
  577. sql += condition
  578. }
  579. err = o.Raw(sql, pars).QueryRow(&count)
  580. return
  581. }
  582. func CheckCalendarResearcherCount(condition string, pars []interface{}) (count int, err error) {
  583. o := orm.NewOrm()
  584. sql := `SELECT COUNT(1) AS count FROM rs_calendar_researcher AS a
  585. WHERE 1=1 `
  586. if condition != "" {
  587. sql += condition
  588. }
  589. err = o.Raw(sql, pars).QueryRow(&count)
  590. return
  591. }
  592. func GetResearcherFromAdmin(condition string, pars []interface{}) (lists []*system.Admin, err error) {
  593. o := orm.NewOrm()
  594. sql := `SELECT * FROM admin WHERE 1=1 `
  595. if condition != "" {
  596. sql += condition
  597. }
  598. _, err = o.Raw(sql, pars).QueryRows(&lists)
  599. return
  600. }
  601. func GetCreditCodeFromCompany(companyId int) (creditCode string, err error) {
  602. o := orm.NewOrm()
  603. companyItem := company.Company{CompanyId: companyId}
  604. err = o.Read(&companyItem)
  605. if err != nil {
  606. return "", err
  607. }
  608. creditCode = companyItem.CreditCode
  609. return
  610. }
  611. type SHCalendar struct {
  612. CalendarId int `description:"日历id"`
  613. UserPhone string `description:"创建人手机号"`
  614. ResearcherPhone string `description:"研究员手机号"`
  615. IndustryName string `description:"行业名称"`
  616. CreditCode string `description:"社会信用码"`
  617. content string `description:"日历内容"`
  618. StartTime string `description:"开始时间"`
  619. EndTime string `description:"结束时间"`
  620. }
  621. func GetRsCalendarResearcherByRsCalendarIdAndResearcherId(rsCalendarId, researcherId int) (item *RsCalendarResearcher, err error) {
  622. o := orm.NewOrm()
  623. sql := `SELECT * FROM rs_calendar_researcher WHERE rs_calendar_id=? AND researcher_id=? `
  624. err = o.Raw(sql, rsCalendarId, researcherId).QueryRow(&item)
  625. return
  626. }
  627. // GetRsCalendarResearcherListByRsCalendarId 根据路演id获取路演研究员列表
  628. func GetRsCalendarResearcherListByRsCalendarId(rsCalendarId int) (items []*RsCalendarResearcher, err error) {
  629. o := orm.NewOrm()
  630. sql := `SELECT * FROM rs_calendar_researcher WHERE rs_calendar_id=? `
  631. _, err = o.Raw(sql, rsCalendarId).QueryRows(&items)
  632. return
  633. }
  634. func GetMattersById(rsMatters int) (item *RsMatters, err error) {
  635. o := orm.NewOrm()
  636. sql := `SELECT * FROM rs_matters
  637. WHERE rs_matters_id=? `
  638. err = o.Raw(sql, rsMatters).QueryRow(&item)
  639. return
  640. }
  641. func GetRsCalendarResearcherExist(rsCalendarResearcherId, rsCalendarId, researcherId int) (count int, err error) {
  642. o := orm.NewOrm()
  643. sql := `SELECT COUNT(1) AS count FROM rs_calendar_researcher WHERE rs_calendar_researcher_id=? AND rs_calendar_id=? AND researcher_id=? `
  644. err = o.Raw(sql, rsCalendarResearcherId, rsCalendarId, researcherId).QueryRow(&count)
  645. return
  646. }
  647. func GetRsCalendarResearcherByCalendarId(rsCalendarId int) (item []*RsCalendarResearcher, err error) {
  648. o := orm.NewOrm()
  649. sql := `SELECT * FROM rs_calendar_researcher WHERE rs_calendar_id=? `
  650. _, err = o.Raw(sql, rsCalendarId).QueryRows(&item)
  651. return
  652. }
  653. type PublicMeetingDetailResp struct {
  654. Group []*PublicMeetingGroup
  655. }
  656. type PublicMeetingGroup struct {
  657. UnionCode string
  658. MinTime string
  659. MaxTime string
  660. CalendarList []*CalendarListView
  661. }
  662. func GetPublicCalendarDetailList(condition string, pars []interface{}) (list []*CalendarListView, err error) {
  663. o := orm.NewOrm()
  664. sql := `SELECT a.*,b.*,c.status AS company_status FROM rs_calendar AS a
  665. INNER JOIN rs_calendar_researcher AS b ON a.rs_calendar_id=b.rs_calendar_id
  666. LEFT JOIN company_product AS c ON a.company_id=c.company_id AND c.product_id=1
  667. INNER JOIN admin AS d ON b.researcher_id=d.admin_id
  668. WHERE 1=1 AND d.enabled=1 `
  669. if condition != "" {
  670. sql += condition
  671. }
  672. sql += ` ORDER BY a.create_time DESC `
  673. _, err = o.Raw(sql, pars).QueryRows(&list)
  674. return
  675. }
  676. type AdminInfo struct {
  677. AdminId int
  678. RealName string
  679. }
  680. func GetOverseaCustomCalendarSellerList() (list []*AdminInfo, err error) {
  681. o := orm.NewOrm()
  682. sql1 := `SELECT a.sys_user_id FROM rs_calendar AS a
  683. INNER JOIN rs_report_record AS b ON a.rs_calendar_id=b.rs_calendar_id
  684. JOIN company_product AS c ON a.company_id=c.company_id AND c.product_id=1
  685. JOIN company AS d ON c.company_id=d.company_id
  686. INNER JOIN overseas_custom_seller AS f ON c.seller_id=f.seller_id
  687. where c.is_overseas = 0 and a.english_company= 0 AND a.source = 0 AND b.rs_calendar_researcher_status=2 AND a.sys_user_id != 0 `
  688. sql2 := `SELECT aa.sys_user_id FROM rs_calendar AS aa
  689. INNER JOIN rs_report_record AS bb ON aa.rs_calendar_id=bb.rs_calendar_id
  690. where aa.english_company= 1 AND aa.source = 0 AND bb.rs_calendar_researcher_status=2 AND aa.sys_user_id != 0`
  691. sql := `SELECT n.admin_id,n.real_name FROM (` + sql1 + ` UNION ALL ` + sql2
  692. sql += ` ) AS m
  693. JOIN admin n on m.sys_user_id=n.admin_id
  694. WHERE 1=1 Group by sys_user_id order by sys_user_id asc`
  695. _, err = o.Raw(sql).QueryRows(&list)
  696. return
  697. }
  698. func GetOverseaCustomCalendarResearcherList() (list []*AdminInfo, err error) {
  699. o := orm.NewOrm()
  700. sql1 := `SELECT b.researcher_id FROM rs_calendar AS a
  701. INNER JOIN rs_report_record AS b ON a.rs_calendar_id=b.rs_calendar_id
  702. JOIN company_product AS c ON a.company_id=c.company_id AND c.product_id=1
  703. JOIN company AS d ON c.company_id=d.company_id
  704. INNER JOIN overseas_custom_seller AS f ON c.seller_id=f.seller_id
  705. where c.is_overseas = 0 and a.english_company= 0 AND a.source = 0 AND b.rs_calendar_researcher_status=2 AND b.researcher_id != 0`
  706. sql2 := `SELECT bb.researcher_id FROM rs_calendar AS aa
  707. INNER JOIN rs_report_record AS bb ON aa.rs_calendar_id=bb.rs_calendar_id
  708. where aa.english_company= 1 AND aa.source = 0 AND bb.rs_calendar_researcher_status=2 AND bb.researcher_id != 0 `
  709. sql := `SELECT n.admin_id,n.real_name FROM (` + sql1 + ` UNION ALL ` + sql2
  710. sql += ` ) AS m
  711. JOIN admin n on m.researcher_id=n.admin_id
  712. WHERE 1=1 Group by researcher_id order by researcher_id asc`
  713. _, err = o.Raw(sql).QueryRows(&list)
  714. return
  715. }
  716. type OverseaCustomRecordInfoResp struct {
  717. Paging *paging.PagingItem
  718. List []*OverseaCustomRecordInfo
  719. }
  720. type OverseaCustomRecordInfo struct {
  721. RsCalendarId int
  722. CompanyId int
  723. Source int
  724. RoadshowType string
  725. RoadshowPlatform string
  726. SellerName string
  727. ResearcherName string
  728. CompanyName string
  729. CompanyStatus string
  730. StartDate string
  731. }
  732. func GetOverseaCustomCalendarList(keyword, sellerId, researcherId, startDate, endDate, companyStatus, sortField, sortDesc string, startSize, pageSize int) (total int, list []*OverseaCustomRecordInfo, err error) {
  733. var databaseName string
  734. if utils.RunMode == "debug" {
  735. databaseName = "test_v2_hongze_rddp"
  736. } else {
  737. databaseName = "hongze_rddp"
  738. }
  739. companyStatusList := make([]string, 0)
  740. if companyStatus != "" {
  741. companyStatusList = strings.Split(companyStatus, ",")
  742. }
  743. lenCompanyStatusList := len(companyStatusList)
  744. o := orm.NewOrm()
  745. pars := make([]interface{}, 0)
  746. sql1 := `SELECT d.company_name,d.overseas_status company_status,b.start_date,a.rs_calendar_id,a.roadshow_type,a.roadshow_platform,a.sys_user_real_name seller_name,b.researcher_name as base_researcher_name,2 AS source,d.company_id FROM rs_calendar AS a
  747. INNER JOIN rs_report_record AS b ON a.rs_calendar_id=b.rs_calendar_id
  748. JOIN company_product AS c ON a.company_id=c.company_id AND c.product_id=1
  749. JOIN company AS d ON c.company_id=d.company_id
  750. INNER JOIN overseas_custom_seller AS f ON c.seller_id=f.seller_id
  751. where c.is_overseas = 0 and a.english_company= 0 AND a.source = 0 AND b.rs_calendar_researcher_status=2 AND b.researcher_id != 0`
  752. if keyword != "" {
  753. sql1 += ` AND d.company_name like ? `
  754. pars = utils.GetLikeKeywordPars(pars, keyword, 1)
  755. }
  756. if sellerId != "" {
  757. sql1 += fmt.Sprintf(` AND a.sys_user_id in (%s) `, sellerId)
  758. }
  759. if startDate != "" {
  760. sql1 += ` AND b.start_date >= ? `
  761. pars = append(pars, startDate)
  762. }
  763. if endDate != "" {
  764. sql1 += ` AND b.start_date <= ? `
  765. pars = append(pars, endDate)
  766. }
  767. if lenCompanyStatusList > 0 {
  768. sql1 += ` AND d.overseas_status in (` + utils.GetOrmInReplace(lenCompanyStatusList) + ") "
  769. pars = append(pars, companyStatusList)
  770. }
  771. sql2 := fmt.Sprintf(`SELECT cc.company_name,cc.overseas_status company_status,bb.start_date,aa.rs_calendar_id,aa.roadshow_type,aa.roadshow_platform,aa.sys_user_real_name seller_name,bb.researcher_name as base_researcher_name,1 AS source,cc.company_id+10000000 FROM rs_calendar AS aa
  772. INNER JOIN rs_report_record AS bb ON aa.rs_calendar_id=bb.rs_calendar_id
  773. INNER JOIN %s.english_company AS cc ON aa.company_id=cc.company_id
  774. where aa.english_company= 1 AND aa.source = 0 AND cc.is_deleted=0 AND bb.rs_calendar_researcher_status=2 AND bb.researcher_id != 0 `, databaseName)
  775. if keyword != "" {
  776. sql2 += ` AND cc.company_name like ? `
  777. pars = utils.GetLikeKeywordPars(pars, keyword, 1)
  778. }
  779. if sellerId != "" {
  780. sql2 += fmt.Sprintf(` AND aa.sys_user_id in (%s) `, sellerId)
  781. }
  782. if startDate != "" {
  783. sql2 += ` AND bb.start_date >= ? `
  784. pars = append(pars, startDate)
  785. }
  786. if endDate != "" {
  787. sql2 += ` AND bb.start_date <= ? `
  788. pars = append(pars, endDate)
  789. }
  790. if lenCompanyStatusList > 0 {
  791. sql2 += ` AND cc.overseas_status in (` + utils.GetOrmInReplace(lenCompanyStatusList) + ") "
  792. pars = append(pars, companyStatusList)
  793. }
  794. rsCalendarIdList := make([]int, 0)
  795. if researcherId != `` {
  796. rsCalendarIdSql := fmt.Sprintf("select rs_calendar_id from rs_calendar_researcher where researcher_id in (%s) group by rs_calendar_id", researcherId)
  797. _, err = o.Raw(rsCalendarIdSql).QueryRows(&rsCalendarIdList)
  798. if err != nil {
  799. return
  800. }
  801. }
  802. rsCalendarIdNum := len(rsCalendarIdList)
  803. // 汇总数据
  804. totalSql := `SELECT COUNT(1) FROM (SELECT rs_calendar_id FROM (` + sql1 + ` UNION ALL ` + sql2
  805. totalSql += ` ) AS m WHERE 1=1 `
  806. if rsCalendarIdNum > 0 {
  807. totalSql += fmt.Sprintf(` AND rs_calendar_id IN (` + utils.GetOrmInReplace(rsCalendarIdNum) + `)`)
  808. pars = append(pars, rsCalendarIdList)
  809. }
  810. totalSql += ` Group by rs_calendar_id) fff`
  811. err = o.Raw(totalSql, pars).QueryRow(&total)
  812. if err != nil {
  813. return
  814. }
  815. // 列表数据
  816. sql := `SELECT m.*,GROUP_CONCAT(DISTINCT base_researcher_name ORDER BY rs_calendar_id ASC SEPARATOR ',') AS researcher_name FROM (` + sql1 + ` UNION ALL ` + sql2
  817. sql += ` ) AS m WHERE 1=1 `
  818. if rsCalendarIdNum > 0 {
  819. sql += fmt.Sprintf(` AND rs_calendar_id IN (` + utils.GetOrmInReplace(rsCalendarIdNum) + `)`)
  820. }
  821. sql += fmt.Sprintf(` Group by rs_calendar_id order by %s %s `, sortField, sortDesc)
  822. sql += ` LIMIT ?,? `
  823. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
  824. return
  825. }
  826. func GetOverseaCustomCalendarList2(sellerId, researcherId, startDate, endDate, companyStatus string) (list []*RsReportRecordList, err error) {
  827. var databaseName string
  828. if utils.RunMode == "debug" {
  829. databaseName = "test_v2_hongze_rddp"
  830. } else {
  831. databaseName = "hongze_rddp"
  832. }
  833. companyStatusList := make([]string, 0)
  834. if companyStatus != "" {
  835. companyStatusList = strings.Split(companyStatus, ",")
  836. }
  837. lenCompanyStatusList := len(companyStatusList)
  838. o := orm.NewOrm()
  839. pars := make([]interface{}, 0)
  840. sql1 := `SELECT b.start_date,b.end_date,b.start_time,b.end_time,a.rs_calendar_id,b.seller_id,b.seller_name,b.researcher_name,b.company_name,b.company_id,d.overseas_status as company_status,b.roadshow_type,a.theme,a.roadshow_platform,a.province as province,a.city as city FROM rs_calendar AS a
  841. INNER JOIN rs_report_record AS b ON a.rs_calendar_id=b.rs_calendar_id
  842. JOIN company_product AS c ON a.company_id=c.company_id AND c.product_id=1
  843. JOIN company AS d ON c.company_id=d.company_id
  844. INNER JOIN overseas_custom_seller AS f ON c.seller_id=f.seller_id
  845. where c.is_overseas = 0 and a.english_company= 0 AND a.source = 0 AND b.rs_calendar_researcher_status=2 AND b.researcher_id != 0`
  846. if startDate != "" {
  847. sql1 += ` AND b.start_date >= ? `
  848. pars = append(pars, startDate)
  849. }
  850. if endDate != "" {
  851. sql1 += ` AND b.start_date <= ? `
  852. pars = append(pars, endDate)
  853. }
  854. if lenCompanyStatusList > 0 {
  855. sql1 += ` AND d.overseas_status in (` + utils.GetOrmInReplace(lenCompanyStatusList) + ") "
  856. pars = append(pars, companyStatusList)
  857. }
  858. if sellerId != "" {
  859. sql1 += fmt.Sprintf(` AND b.seller_id in (%s) `, sellerId)
  860. }
  861. if researcherId != "" {
  862. sql1 += fmt.Sprintf(` AND b.researcher_id in (%s) `, researcherId)
  863. }
  864. sql2 := fmt.Sprintf(`SELECT bb.start_date,bb.end_date,bb.start_time,bb.end_time,aa.rs_calendar_id,bb.seller_id,bb.seller_name,bb.researcher_name,aa.company_name,aa.company_id,cc.overseas_status as company_status,bb.roadshow_type,aa.theme,aa.roadshow_platform,aa.province as province,aa.city as city FROM rs_calendar AS aa
  865. INNER JOIN rs_report_record AS bb ON aa.rs_calendar_id=bb.rs_calendar_id
  866. INNER JOIN %s.english_company AS cc ON aa.company_id=cc.company_id
  867. where aa.english_company= 1 AND aa.source = 0 AND cc.is_deleted=0 AND bb.rs_calendar_researcher_status=2 AND bb.researcher_id != 0 `, databaseName)
  868. if startDate != "" {
  869. sql2 += ` AND bb.start_date >= ? `
  870. pars = append(pars, startDate)
  871. }
  872. if endDate != "" {
  873. sql2 += ` AND bb.start_date <= ? `
  874. pars = append(pars, endDate)
  875. }
  876. if lenCompanyStatusList > 0 {
  877. sql2 += ` AND cc.overseas_status in (` + utils.GetOrmInReplace(lenCompanyStatusList) + ") "
  878. pars = append(pars, companyStatusList)
  879. }
  880. if sellerId != "" {
  881. sql2 += fmt.Sprintf(` AND bb.seller_id in (%s) `, sellerId)
  882. }
  883. if researcherId != "" {
  884. sql2 += fmt.Sprintf(` AND bb.researcher_id in (%s) `, researcherId)
  885. }
  886. // 列表数据
  887. sql := `SELECT m.* FROM (` + sql1 + ` UNION ALL ` + sql2
  888. sql += ` ) AS m WHERE 1=1 `
  889. sql += ` Group by rs_calendar_id `
  890. _, err = o.Raw(sql, pars).QueryRows(&list)
  891. return
  892. }