activity_signup.go 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115
  1. package cygx
  2. import (
  3. "fmt"
  4. "hongze/hz_crm_api/models/company"
  5. "hongze/hz_crm_api/utils"
  6. //"hongze/hongze_admin/models"
  7. "github.com/beego/beego/v2/client/orm"
  8. "github.com/rdlucklib/rdluck_tools/paging"
  9. "time"
  10. )
  11. // 活动详情
  12. type CygxSignupList struct {
  13. ActivityId int `orm:"column(activity_id);pk";description:"活动ID 等于0新增活动,大于0修改活动"`
  14. ActivityName string `description:"活动名称"`
  15. ActivityTypeName string `description:"活动类型名称"`
  16. ChartPermissionName string `description:"行业名称"`
  17. ChartPermissionNames string `description:"行业名称辅助字段,区分研选子分类"`
  18. LimitPeopleNum int `description:"限制的人数数量"`
  19. ActivityTime string `description:"活动时间"`
  20. ActivityTimeText string `description:"活动时间带文字"`
  21. SignupPeopleNum int `description:"报名人数/预约外呼人数"`
  22. SignupFailPeopleNum int `description:"报名/预约外呼失败人数"`
  23. AskNum int `description:"带问人数"`
  24. AppointmentPeopleNum int `description:"预约纪要人数"`
  25. ReminderPeopleNum int `description:"设置会议提醒人数"`
  26. IsShowAppointment bool `description:"是否展示预约纪要"`
  27. IsHideAppointment int `description:"是否隐藏预约纪要按钮 1是,0 否"`
  28. ActivityTypeId int `description:"活动类型id"`
  29. Label string `description:"标签"`
  30. ActiveState int `description:"活动进行状态 未开始:1、进行中2、已结束3"`
  31. PublishStatus int `description:"发布状态 1已发布,0未发布"`
  32. TemporaryLabel string `description:"临时标签"`
  33. YidongActivityId string `description:"易董的活动ID"`
  34. IsCanAppointmentMinutes int `description:"是否可预约纪要 1是 ,0 否 默认0 "`
  35. IsCancel int `description:"是否取消,1是,0否"`
  36. IsYidongConduct int `description:"是否属于易董办会 1:是 、0:否"`
  37. IsResearchPoints int `description:"是否为研选扣点 1是,0否"`
  38. ChartPermissionNameDeputy string `description:"副行业名称"`
  39. }
  40. type GetCygxSignupListRep struct {
  41. Paging *paging.PagingItem `description:"分页数据"`
  42. List []*CygxSignupList
  43. }
  44. // 获取数量
  45. func GetCygxSignupCount(condition string, pars []interface{}) (count int, err error) {
  46. sqlCount := ` SELECT COUNT(1) AS count FROM cygx_activity as art WHERE 1= 1 `
  47. if condition != "" {
  48. sqlCount += condition
  49. }
  50. o := orm.NewOrmUsingDB("hz_cygx")
  51. err = o.Raw(sqlCount, pars).QueryRow(&count)
  52. return
  53. }
  54. // 列表
  55. func GetCygxSignupListAll(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxSignupList, err error) {
  56. o := orm.NewOrmUsingDB("hz_cygx")
  57. sql := `SELECT
  58. ( SELECT COUNT( 1 ) FROM cygx_activity_signup AS s WHERE s.activity_id = art.activity_id AND s.is_cancel = 0 AND s.do_fail_type = 0 AND s.company_id != 16 ) AS signup_people_num,
  59. ( SELECT COUNT( 1 ) FROM cygx_activity_signup AS s WHERE s.activity_id = art.activity_id AND s.is_cancel = 0 AND s.fail_type >= 1) AS signup_fail_people_num,
  60. ( SELECT COUNT( 1 ) FROM cygx_activity_help_ask AS k WHERE k.activity_id = art.activity_id ) AS ask_num,
  61. ( SELECT COUNT( 1 ) FROM cygx_activity_appointment AS ap WHERE ap.activity_id = art.activity_id ) AS appointment_people_num,
  62. ( SELECT COUNT( 1 ) FROM cygx_activity_meeting_reminder AS ap WHERE ap.activity_id = art.activity_id ) AS reminder_people_num,
  63. art.* FROM cygx_activity as art
  64. WHERE 1= 1 `
  65. if condition != "" {
  66. sql += condition
  67. }
  68. sql += ` LIMIT ?,?`
  69. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  70. return
  71. }
  72. type CygxAppointmentList struct {
  73. Id int `orm:"column(id);pk"`
  74. ActivityId int `description:"活动ID"`
  75. ActivityTime string `description:"活动时间"`
  76. UserId int `description:"用户ID"`
  77. CreateTime string `description:"创建时间"`
  78. Mobile string `description:"手机号"`
  79. OutboundMobile string `description:"外呼手机号"`
  80. CountryCode string `description:"手机国家区号"`
  81. CompanyName string `description:"公司名称"`
  82. CompanyId int `description:"公司ID"`
  83. RealName string `description:"姓名"`
  84. FailType int `description:"失败原因,0,未失败,1总人数已满,2单机构超限制,3,爽约次数超限"`
  85. //MeetingType int `description:"参会方式,0,无,1预约外呼,2自主拨入"`
  86. SellerName string `description:"销售姓名"`
  87. PsellerName string `description:"销售姓名"`
  88. SignupType int `description:"报名方式,1预约外呼,2自主拨入,3我要报名"`
  89. YidongExamineStatus int `description:"易董活动报名审核状态0审核中,1:审核通过、2审核不通过"`
  90. Email string `description:"邮箱"`
  91. }
  92. type CygxSignupUser struct {
  93. UserId int `description:"用户ID"`
  94. ActivityId int `description:"活动ID"`
  95. }
  96. type CygxSignupId struct {
  97. SignupId int `description:"报名ID"`
  98. CancelClass int `description:"取消类型 0取消报名,1取消外呼"`
  99. }
  100. // 预约外呼列表
  101. func GetCygxAppointmentLisssst(activityId int) (items []*CygxAppointmentList, err error) {
  102. o := orm.NewOrmUsingDB("hz_cygx")
  103. sql := `SELECT * FROM cygx_activity_signup WHERE activity_id= ? `
  104. _, err = o.Raw(sql, activityId).QueryRows(&items)
  105. return
  106. }
  107. func GetCygxAppointmentList(article_id int, sqlStr string) (item []*CygxAppointmentList, err error) {
  108. o := orm.NewOrmUsingDB("hz_cygx")
  109. sql := `SELECT s.*
  110. FROM
  111. cygx_activity_signup AS s
  112. LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
  113. WHERE a.activity_id = ? AND s.do_fail_type = 0 ` + sqlStr + ` GROUP BY s.user_id ORDER BY s.create_time DESC `
  114. _, err = o.Raw(sql, article_id).QueryRows(&item)
  115. return
  116. }
  117. type GetAppointmentListRep struct {
  118. ExcelType string `description:"EXcel下载类型 AppointmentCall:预约外呼、ExpertSalon:专家沙龙报名、Teleconference:公司调研电话会、OfflineResearch:公司线下调研 、CClass: C类电话会 、YiDong:易董 "`
  119. ActivityId int `description:"活动ID"`
  120. Total int `description:"总人数"`
  121. MyTotal int `description:"本人名下客户"`
  122. IsLimitPeople int `description:"是否限制人数 1是,0否"`
  123. MemberType string `description:"管理员身份 Admin:超级管理员、权益管理员、权益研究员、专家组;GroupLeader:组长;Sale:销售"`
  124. ActivityType int `description:"1线上 ,0 线下"`
  125. IsYidongConduct int `description:"是否属于易董办会 1:是 、0:否"`
  126. IsResearchPoints int `description:"是否为研选扣点 1是,0否"`
  127. List []*CygxAppointmentList
  128. }
  129. func GetCygxAppointmentCount(articleId int, sqlStr string) (count int, err error) {
  130. o := orm.NewOrmUsingDB("hz_cygx")
  131. sql := `SELECT COUNT(*) FROM
  132. cygx_activity_signup AS s
  133. LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
  134. WHERE
  135. s.activity_id = ? ` + sqlStr + `
  136. GROUP BY s.user_id)`
  137. sql = `SELECT COUNT(*) as count FROM (` + sql + ` a`
  138. err = o.Raw(sql, articleId).QueryRow(&count)
  139. return
  140. }
  141. // 新增外呼人员
  142. type GetOutboundPersonnelListRep struct {
  143. List []*GetOutboundPersonnelRep
  144. }
  145. type GetOutboundPersonnelRep struct {
  146. UserId int `description:"用户id"`
  147. RealName string `description:"姓名"`
  148. Mobile string `description:"手机号"`
  149. CompanyName string `description:"公司名称"`
  150. Position string `description:"职位"`
  151. }
  152. // 列表
  153. func GetOutboundPersonnelList(name string) (items []*GetOutboundPersonnelRep, err error) {
  154. o := orm.NewOrm()
  155. sql := `SELECT u.position,u.user_id,u.real_name,u.mobile,p.company_name FROM wx_user as u INNER JOIN company AS p ON p.company_id = u.company_id WHERE real_name LIKE '%` + name + `%' AND u.company_id >1 GROUP BY u.user_id ORDER BY user_id ASC`
  156. _, err = o.Raw(sql).QueryRows(&items)
  157. return
  158. }
  159. type AddOutboundPersonnelItm struct {
  160. UserIds string `description:"用户id,多个用,隔开"`
  161. ActivityIds string `description:"活动ID,多个用,隔开"`
  162. }
  163. type AddOutboundPersonnelJsonItm struct {
  164. JsonStar string `description:"报名信息json字符串 :Uid 用户ID,int类型 。Type string类型,报名方式,1预约外呼,2自主拨入 "`
  165. ActivityIds string `description:"活动ID,多个用,隔开"`
  166. }
  167. type CygxActivitySignup struct {
  168. Id int `orm:"column(id);pk"`
  169. UserId int `description:"用户id,多个用,隔开"`
  170. ActivityId int `description:"活动ID"`
  171. CreateTime time.Time `description:"创建时间"`
  172. Mobile string `description:"手机号"`
  173. Email string `description:"邮箱号"`
  174. CompanyId int `description:"公司ID"`
  175. CompanyName string `description:"公司名称"`
  176. OutboundMobile string `description:"外呼手机号"`
  177. CountryCode string `description:"手机国家区号"`
  178. Source int `description:"来源,1小程序,2后台添加"`
  179. SignupType int `description:"报名方式,1预约外呼,2自主拨入,3我要报名"`
  180. RealName string `description:"用户实际名称"`
  181. SellerName string `description:"所属销售"`
  182. }
  183. // 我的日程
  184. type CygxMySchedule struct {
  185. Id int `orm:"column(id);pk"`
  186. ActivityId int `description:"活动ID"`
  187. UserId int `description:"用户ID"`
  188. CreateTime time.Time `description:"创建时间"`
  189. Mobile string `description:"手机号"`
  190. Email string `description:"邮箱"`
  191. CompanyId int `description:"公司id"`
  192. CompanyName string `description:"公司名称"`
  193. }
  194. type UserAndCompanyName struct {
  195. UserId int `orm:"column(user_id);pk"`
  196. Mobile string
  197. Email string
  198. CompanyId int
  199. CompanyName string `description:"公司名称"`
  200. CountryCode string `description:"手机国家区号"`
  201. OutboundMobile string `description:"外呼手机号"`
  202. OutboundCountryCode string `description:"外呼手机号区号"`
  203. SellerName string `description:"所属销售"`
  204. RealName string `description:"真实姓名"`
  205. }
  206. func GetUserAndCompanyNameList(uid int) (item *UserAndCompanyName, err error) {
  207. o := orm.NewOrm()
  208. sql := ` SELECT
  209. u.*,
  210. c.company_name,
  211. GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS seller_name
  212. FROM
  213. wx_user AS u
  214. INNER JOIN company AS c ON c.company_id = u.company_id
  215. LEFT JOIN company_product AS p ON p.company_id = u.company_id
  216. WHERE
  217. user_id = ?`
  218. err = o.Raw(sql, uid).QueryRow(&item)
  219. return
  220. }
  221. func GetUserAndCompanyNameListByUids(uids string) (items []*UserAndCompanyName, err error) {
  222. o := orm.NewOrm()
  223. sql := ` SELECT u.*,c.company_name FROM wx_user AS u
  224. INNER JOIN company AS c ON c.company_id = u.company_id
  225. WHERE user_id IN (` + uids + `)`
  226. _, err = o.Raw(sql).QueryRows(&items)
  227. return
  228. }
  229. // 新增预约人数
  230. func AddCygxActivitySignup(items []*CygxActivitySignup, itemsAppointment []*CygxActivityAppointment, mapYidongActivity map[int]int) (err error) {
  231. o := orm.NewOrmUsingDB("hz_cygx")
  232. to, err := o.Begin()
  233. if err != nil {
  234. return
  235. }
  236. defer func() {
  237. if err != nil {
  238. _ = to.Rollback()
  239. } else {
  240. _ = to.Commit()
  241. }
  242. }()
  243. //添加预约纪要部分
  244. if len(itemsAppointment) > 0 {
  245. for _, item := range itemsAppointment {
  246. var count int
  247. sql := `SELECT COUNT(1) AS count FROM cygx_activity_appointment WHERE user_id=? AND activity_id=? `
  248. err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
  249. if err != nil {
  250. return
  251. }
  252. if count == 0 {
  253. _, err = to.Insert(item)
  254. if err != nil {
  255. return
  256. }
  257. }
  258. }
  259. }
  260. //添加会议提醒
  261. for _, item := range items {
  262. var count int
  263. sql := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
  264. err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
  265. if err != nil {
  266. return
  267. }
  268. //如果是易懂的活动就不加入日程
  269. if count == 0 && mapYidongActivity[item.ActivityId] == 0 {
  270. itemMy := new(CygxMySchedule)
  271. itemMy.UserId = item.UserId
  272. itemMy.ActivityId = item.ActivityId
  273. itemMy.CreateTime = time.Now()
  274. itemMy.Mobile = item.Mobile
  275. itemMy.Email = item.Email
  276. itemMy.CompanyId = item.CompanyId
  277. itemMy.CompanyName = item.CompanyName
  278. _, err = to.Insert(itemMy)
  279. if err != nil {
  280. return
  281. }
  282. }
  283. sql = `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
  284. err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
  285. if err != nil {
  286. return
  287. }
  288. if count == 0 {
  289. _, err = to.Insert(item)
  290. } else {
  291. sql := `UPDATE cygx_activity_signup SET is_cancel=0, do_fail_type = 0 ,create_time = NOW() WHERE user_id=? AND activity_id=? `
  292. _, err = to.Raw(sql, item.UserId, item.ActivityId).Exec()
  293. }
  294. }
  295. return
  296. }
  297. // 获取用户报名数量
  298. func GetActivitySignupCount(uid, activityId int) (count int, err error) {
  299. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND do_fail_type = 0 AND user_id=? AND activity_id=? `
  300. o := orm.NewOrmUsingDB("hz_cygx")
  301. err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
  302. return
  303. }
  304. func GetActivitySignupCountByActivityId(activityId int) (count int, err error) {
  305. sqlCount := `SELECT
  306. COUNT( 1 ) AS count
  307. FROM
  308. cygx_activity_signup AS s
  309. WHERE
  310. s.do_fail_type = 0
  311. AND s.company_id != 16
  312. AND s.activity_id = ? `
  313. o := orm.NewOrmUsingDB("hz_cygx")
  314. err = o.Raw(sqlCount, activityId).QueryRow(&count)
  315. return
  316. }
  317. func GetActivitySignupCountByThisUser(activityId int, uids string) (count int, err error) {
  318. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE do_fail_type = 0 AND activity_id=? AND user_id IN (` + uids + `) `
  319. o := orm.NewOrmUsingDB("hz_cygx")
  320. err = o.Raw(sqlCount, activityId).QueryRow(&count)
  321. return
  322. }
  323. //end
  324. // 报名失败
  325. type FailSignupListRep struct {
  326. Id int `orm:"column(id);pk;"description:"报名ID"`
  327. ActivityId int `description:"活动ID"`
  328. CreateTime string `description:"创建时间"`
  329. Mobile string `description:"手机号"`
  330. CompanyName string `description:"公司名称"`
  331. CompanyId int `description:"公司ID"`
  332. RealName string `description:"姓名"`
  333. UserId int `description:"用户id"`
  334. SellerName string `description:"销售姓名"`
  335. PsellerName string `description:"销售姓名"`
  336. FailType int `description:"失败原因,0,未失败,1总人数已满,2单机构超限制,3,爽约次数超限"`
  337. DoFailType int `description:"报名失败之后的操作,失败原因,0,未失败,1总人数已满,2单机构超限制,3,爽约次数超限"`
  338. SalonOperation bool `description:"操作按钮1,true,加入报名,false 限制报名"`
  339. CallOperation int `description:"操作按钮2,1预约外呼,2自主拨入,3限制报名"`
  340. IsAdminAddSignup int `description:"(多余字段不使用)"`
  341. MeetingType int `description:"(多余字段不使用)"`
  342. IsMeeting int `description:"是否到会 ,1是, 0否"`
  343. SignupType int `description:"报名方式,1预约外呼,2自主拨入,3我要报名"`
  344. }
  345. type GetFailSignupListRep struct {
  346. ExcelType string `description:"EXcel下载类型 AppointmentCall:预约外呼、ExpertSalon:专家沙龙报名、Teleconference:公司调研电话会、OfflineResearch:公司线下调研 "`
  347. MemberType string `description:"管理员身份 Admin:超级管理员、权益管理员、权益研究员、专家组;GroupLeader:组长;Sale:销售"`
  348. //ActivityId int `description:"活动ID"`
  349. Total int `description:"预约外呼总人数"`
  350. MyTotal int `description:"预约外呼本人名下客户"`
  351. IsLimitPeople int `description:"是否限制人数 1是,0否"`
  352. IsFull bool `description:"报名人数是否已满"`
  353. List []*FailSignupListRep
  354. }
  355. func GetFailSignupList(activity_id int, sqlStr string) (item []*FailSignupListRep, err error) {
  356. o := orm.NewOrmUsingDB("hz_cygx")
  357. sql := `SELECT s.* ,a.is_limit_people
  358. FROM
  359. cygx_activity_signup AS s
  360. LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
  361. WHERE a.activity_id = ?` + sqlStr + ` GROUP BY s.id ORDER BY s.create_time DESC `
  362. _, err = o.Raw(sql, activity_id).QueryRows(&item)
  363. return
  364. }
  365. //end
  366. type SignupId struct {
  367. Id int `orm:"column(id);pk;"description:"报名ID"`
  368. }
  369. type SignupIdCall struct {
  370. Id int `description:"报名ID"`
  371. OperationStatus int `description:"操作方式:1预约外呼,2自主拨入,3限制报名"`
  372. }
  373. // 获取失败数量
  374. func GetCygxSignupCountFile(id int) (count int, err error) {
  375. sqlCount := ` SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE id= ?`
  376. o := orm.NewOrmUsingDB("hz_cygx")
  377. err = o.Raw(sqlCount, id).QueryRow(&count)
  378. return
  379. }
  380. func GetCygxSignupDetailById(id int) (item *FailSignupListRep, err error) {
  381. o := orm.NewOrmUsingDB("hz_cygx")
  382. sql := `SELECT * FROM cygx_activity_signup WHERE id=?`
  383. err = o.Raw(sql, id).QueryRow(&item)
  384. return
  385. }
  386. func GetCygxSignupDetailByUid(id int) (item *FailSignupListRep, err error) {
  387. o := orm.NewOrmUsingDB("hz_cygx")
  388. sql := `SELECT * FROM cygx_activity_signup WHERE user_id=? LIMIT 1`
  389. err = o.Raw(sql, id).QueryRow(&item)
  390. return
  391. }
  392. // 加入报名限制报名
  393. func SalonSignupEdit(newIsAdminAddSignup, doFailType, id int, item *CygxActivitySignup) (err error) {
  394. o := orm.NewOrmUsingDB("hz_cygx")
  395. to, err := o.Begin()
  396. if err != nil {
  397. return
  398. }
  399. defer func() {
  400. if err != nil {
  401. fmt.Println(err)
  402. _ = to.Rollback()
  403. } else {
  404. _ = to.Commit()
  405. }
  406. }()
  407. var count int
  408. sql := `SELECT COUNT(1) AS count FROM cygx_activity_meeting_reminder WHERE user_id=? AND activity_id=? `
  409. err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
  410. if err != nil {
  411. return
  412. }
  413. sql = `UPDATE cygx_activity_signup SET is_admin_add_signup=?,do_fail_type=? WHERE id=? `
  414. _, err = to.Raw(sql, newIsAdminAddSignup, doFailType, id).Exec()
  415. if doFailType == 0 && count == 0 {
  416. //加入报名后并添加到我的日程
  417. itemMy := new(CygxMySchedule)
  418. itemMy.UserId = item.UserId
  419. itemMy.ActivityId = item.ActivityId
  420. itemMy.CreateTime = time.Now()
  421. itemMy.Mobile = item.Mobile
  422. itemMy.Email = item.Email
  423. itemMy.CompanyId = item.CompanyId
  424. itemMy.CompanyName = item.CompanyName
  425. _, err = to.Insert(itemMy)
  426. if err != nil {
  427. return
  428. }
  429. } else {
  430. //删除我的日程
  431. if count == 0 {
  432. sql = `DELETE FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
  433. _, err = to.Raw(sql, item.UserId, item.ActivityId).Exec()
  434. if err != nil {
  435. return
  436. }
  437. }
  438. }
  439. return
  440. }
  441. func CallSignupEditByStatus3(doFailType, id int, item *CygxMySchedule) (err error) {
  442. o := orm.NewOrmUsingDB("hz_cygx")
  443. to, err := o.Begin()
  444. if err != nil {
  445. return
  446. }
  447. defer func() {
  448. if err != nil {
  449. fmt.Println(err)
  450. _ = to.Rollback()
  451. } else {
  452. _ = to.Commit()
  453. }
  454. }()
  455. sql := `UPDATE cygx_activity_signup SET is_admin_add_signup=0, do_fail_type = ? WHERE id=? `
  456. _, err = to.Raw(sql, id, doFailType).Exec()
  457. if err != nil {
  458. return
  459. }
  460. sql = `DELETE FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
  461. _, err = to.Raw(sql, item.UserId, item.ActivityId).Exec()
  462. if err != nil {
  463. return
  464. }
  465. return
  466. }
  467. func CallSignupEditByStatus1_2(operationStatus, id int, item *CygxMySchedule) (err error) {
  468. o := orm.NewOrmUsingDB("hz_cygx")
  469. to, err := o.Begin()
  470. if err != nil {
  471. return
  472. }
  473. defer func() {
  474. if err != nil {
  475. fmt.Println(err)
  476. _ = to.Rollback()
  477. } else {
  478. _ = to.Commit()
  479. }
  480. }()
  481. var count int
  482. sql := `UPDATE cygx_activity_signup SET is_admin_add_signup = 1,do_fail_type=0, signup_type =? WHERE id=? `
  483. _, err = to.Raw(sql, operationStatus, id).Exec()
  484. if err != nil {
  485. return
  486. }
  487. sql = `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
  488. err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
  489. if err != nil {
  490. return
  491. }
  492. if count == 0 {
  493. //添加我的日程
  494. _, err = to.Insert(item)
  495. }
  496. return
  497. }
  498. //报名信息Excel下载
  499. type SignupExportRep struct {
  500. Mobile string `description:"手机号"`
  501. CompanyName string `description:"公司名称"`
  502. RealName string `description:"姓名"`
  503. CountryCode string `description:"区号"`
  504. SellerName string `description:"销售姓名"`
  505. OutboundMobile string `description:"外呼手机号"`
  506. }
  507. type CygxActivitySignupList struct {
  508. Id int `orm:"column(id);pk"`
  509. UserId int `description:"用户id"`
  510. ActivityId int `description:"活动ID"`
  511. CompanyName string `description:"公司名称"`
  512. RealName string `description:"姓名"`
  513. CreateTime string `description:"创建时间"`
  514. IsMeeting int `description:"是否到会 ,1是, 0否"`
  515. Operation bool `description:"操作按钮,true,到会,false 未到会"`
  516. Channel int `description:"报名渠道,0 空降、 1小程序报名"`
  517. SigninTime string `description:"签到时间"`
  518. SellerName string `description:"所属销售"`
  519. Mobile string `description:"手机号"`
  520. Email string `description:"邮箱"`
  521. CompanyId int `description:"公司id"`
  522. IsAirborne int `description:"是否属于空降 1.是 ,0否"`
  523. }
  524. type CygxActivitySignupListRep struct {
  525. ActivityId int `description:"活动ID"`
  526. List []*CygxActivitySignupList
  527. ListSignin []*CygxActivitySignin
  528. }
  529. // 预约外呼列表
  530. func GetCygxActivitySignup(condition string) (items []*CygxActivitySignupList, err error) {
  531. o := orm.NewOrmUsingDB("hz_cygx")
  532. sql := `SELECT s.* FROM cygx_activity_signup as s
  533. WHERE 1 =1 ` + condition
  534. _, err = o.Raw(sql).QueryRows(&items)
  535. return
  536. }
  537. // 获取用户报名数量
  538. func GetActivitySignupNomeetingCount(activityId int) (count int, err error) {
  539. o := orm.NewOrmUsingDB("hz_cygx")
  540. sqlCount := `SELECT
  541. COUNT( 1 ) count
  542. FROM
  543. cygx_activity_signup AS s
  544. INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
  545. WHERE
  546. 1 = 1
  547. AND a.is_limit_people > 0
  548. AND s.is_meeting = 0
  549. AND a.is_submit_meeting = 1
  550. AND a.activity_id = ?`
  551. err = o.Raw(sqlCount, activityId).QueryRow(&count)
  552. return
  553. }
  554. // 获取用户报名列表
  555. func GetActivitySignupNomeetingCountList(activityId int) (items []*CygxActivitySignupList, err error) {
  556. o := orm.NewOrmUsingDB("hz_cygx")
  557. sql := `SELECT
  558. s.*
  559. FROM
  560. cygx_activity_signup AS s
  561. INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
  562. WHERE
  563. 1 = 1
  564. AND s.do_fail_type = 0
  565. AND s.is_meeting = 0
  566. AND a.activity_id = ?`
  567. _, err = o.Raw(sql, activityId).QueryRows(&items)
  568. return
  569. }
  570. // 获取用户爽约次数
  571. func GetActivitySignupNomeetingCountByUid(uid int) (count int, err error) {
  572. o := orm.NewOrmUsingDB("hz_cygx")
  573. sqlCount := `SELECT
  574. COUNT( 1 ) count
  575. FROM
  576. cygx_activity_signup AS s
  577. INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
  578. WHERE
  579. 1 = 1
  580. AND a.is_limit_people > 0
  581. AND s.is_meeting = 0
  582. AND a.is_submit_meeting = 1
  583. AND s.do_fail_type = 0
  584. AND s.user_id = ?`
  585. err = o.Raw(sqlCount, uid).QueryRow(&count)
  586. return
  587. }
  588. func GetUserMeetingMobile(activityId int) (items []*CygxActivitySignup, err error) {
  589. o := orm.NewOrmUsingDB("hz_cygx")
  590. sql := `SELECT *
  591. FROM
  592. cygx_activity_signup AS s
  593. WHERE
  594. s.is_meeting = 1
  595. AND s.activity_id = ?`
  596. _, err = o.Raw(sql, activityId).QueryRows(&items)
  597. return
  598. }
  599. // 修改外呼电话以及区号
  600. type OutboundMobileEditResp struct {
  601. Id int `description:"报名ID"`
  602. OutboundMobile string `description:"外呼手机号"`
  603. CountryCode string `description:"手机国家区号"`
  604. }
  605. func OutboundMobileEdit(id int, outboundMobile, countryCode string) (err error) {
  606. o := orm.NewOrmUsingDB("hz_cygx")
  607. sql := `UPDATE cygx_activity_signup SET outbound_mobile = ?,country_code=? WHERE id=? `
  608. _, err = o.Raw(sql, outboundMobile, countryCode, id).Exec()
  609. return
  610. }
  611. //end
  612. func AddCygxActivitySignupUser(items []*CygxActivitySignup) (err error) {
  613. o := orm.NewOrmUsingDB("hz_cygx")
  614. to, err := o.Begin()
  615. if err != nil {
  616. return
  617. }
  618. defer func() {
  619. if err != nil {
  620. fmt.Println(err)
  621. _ = to.Rollback()
  622. } else {
  623. _ = to.Commit()
  624. }
  625. }()
  626. for _, item := range items {
  627. var count int
  628. sql := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
  629. err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
  630. if err != nil {
  631. return
  632. }
  633. if count == 0 {
  634. itemMy := new(CygxMySchedule)
  635. itemMy.UserId = item.UserId
  636. itemMy.ActivityId = item.ActivityId
  637. itemMy.CreateTime = time.Now()
  638. itemMy.Mobile = item.Mobile
  639. itemMy.Email = item.Email
  640. itemMy.CompanyId = item.CompanyId
  641. itemMy.CompanyName = item.CompanyName
  642. _, err = to.Insert(itemMy)
  643. if err != nil {
  644. return
  645. }
  646. }
  647. sql = `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
  648. err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
  649. if err != nil {
  650. return
  651. }
  652. if count == 0 {
  653. _, err = to.Insert(item)
  654. } else {
  655. sql := `UPDATE cygx_activity_signup SET is_cancel=0, do_fail_type = 0 ,create_time = NOW() WHERE user_id=? AND activity_id=? `
  656. _, err = to.Raw(sql, item.UserId, item.ActivityId).Exec()
  657. }
  658. }
  659. return
  660. }
  661. // 通过ID获取报名详情
  662. func GetActivitySignupInfoById(id int) (item *CygxActivitySignup, err error) {
  663. o := orm.NewOrmUsingDB("hz_cygx")
  664. sql := `SELECT * FROM cygx_activity_signup WHERE id=?`
  665. err = o.Raw(sql, id).QueryRow(&item)
  666. return
  667. }
  668. type RequestCommonPolicyConfigrep struct {
  669. Type string `description:"报名方式 ,1 预约外呼 ,2 自主拨入"`
  670. Uid int `description:"用户ID"`
  671. }
  672. type RequestCommonPolicyConfig struct {
  673. CommonPolicyconfig []interface{} `json:"common_policy_config"`
  674. CommonPolicyconfigs []RequestCommonPolicyConfigrep `json:"common_policy_configs"`
  675. }
  676. // 取消报名
  677. func CancelActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
  678. o := orm.NewOrmUsingDB("hz_cygx")
  679. to, err := o.Begin()
  680. if err != nil {
  681. return
  682. }
  683. defer func() {
  684. if err != nil {
  685. fmt.Println(err)
  686. _ = to.Rollback()
  687. } else {
  688. _ = to.Commit()
  689. }
  690. }()
  691. //判断是否删除我的日程
  692. var count int
  693. sql := `SELECT COUNT(1) AS count FROM cygx_activity_meeting_reminder WHERE is_cancel = 0 AND user_id=? AND activity_id=? `
  694. err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
  695. if err != nil {
  696. return
  697. }
  698. if count == 0 {
  699. sql = `DELETE FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
  700. _, err = to.Raw(sql, item.UserId, item.ActivityId).Exec()
  701. if err != nil {
  702. return
  703. }
  704. }
  705. sql = `DELETE FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
  706. _, err = to.Raw(sql, item.UserId, item.ActivityId).Exec()
  707. if err != nil {
  708. return
  709. }
  710. return
  711. }
  712. func GetCompanyPermission(companyId int) (permission string, err error) {
  713. sql := ` SELECT GROUP_CONCAT(DISTINCT b.remark ORDER BY b.sort ASC SEPARATOR ',') AS permission
  714. FROM company_report_permission AS a
  715. INNER JOIN chart_permission AS b ON a.chart_permission_id=b.chart_permission_id
  716. INNER JOIN company_product AS c ON a.company_id=c.company_id AND a.product_id=c.product_id
  717. WHERE a.company_id=?
  718. AND c.is_suspend=0
  719. AND b.cygx_auth=1
  720. AND c.status IN('正式','试用','永续')
  721. AND a.status IN('正式','试用','永续') `
  722. o := orm.NewOrm()
  723. err = o.Raw(sql, companyId).QueryRow(&permission)
  724. return
  725. }
  726. // 获取可查看升级权限的正式权限
  727. func GetCompanyPermissionByUserZhengShiTrip(companyId int) (permission string, err error) {
  728. sql := ` SELECT GROUP_CONCAT(DISTINCT b.chart_permission_name ORDER BY b.sort ASC SEPARATOR ',') AS permission
  729. FROM company_report_permission AS a
  730. INNER JOIN chart_permission AS b ON a.chart_permission_id=b.chart_permission_id
  731. INNER JOIN company_product AS c ON a.company_id=c.company_id AND a.product_id=c.product_id
  732. WHERE a.company_id=?
  733. AND c.is_suspend=0
  734. AND b.cygx_auth=1
  735. AND ( a.is_upgrade = 1 AND c.STATUS = '正式' OR c.STATUS = '永续' ) `
  736. o := orm.NewOrm()
  737. err = o.Raw(sql, companyId).QueryRow(&permission)
  738. return
  739. }
  740. func GetCountCompanyDetailByIdGroup(companyId int) (count int, err error) {
  741. sql := ` SELECT COUNT(1) AS count
  742. FROM company AS a
  743. INNER JOIN company_product AS b ON a.company_id=b.company_id
  744. INNER JOIN company_report_permission AS p ON p.company_id = a.company_id
  745. INNER JOIN chart_permission AS cp ON cp.chart_permission_id = p.chart_permission_id
  746. LEFT JOIN admin AS c ON b.seller_id=c.admin_id
  747. WHERE a.company_id=? AND b.product_id = 2 OR (a.company_id = ? AND cp.permission_name = '策略' ) `
  748. o := orm.NewOrm()
  749. err = o.Raw(sql, companyId, companyId).QueryRow(&count)
  750. return
  751. }
  752. type CompanyDetail struct {
  753. CompanyId int `orm:"column(company_id);pk"`
  754. CompanyName string `description:"客户名称"`
  755. Status string `description:"客户状态"`
  756. SellerId int `description:"销售id"`
  757. SellerName string `description:"销售名称"`
  758. Mobile string `description:"销售手机号"`
  759. ProductId int `description:"1,FICC,2权益"`
  760. }
  761. func GetCompanyDetailByIdGroup(companyId int) (item *CompanyDetail, err error) {
  762. sql := ` SELECT a.company_id,a.company_name,b.status,b.seller_id,b.seller_name,c.mobile
  763. FROM company AS a
  764. INNER JOIN company_product AS b ON a.company_id=b.company_id
  765. INNER JOIN company_report_permission AS p ON p.company_id = a.company_id
  766. INNER JOIN chart_permission AS cp ON cp.chart_permission_id = p.chart_permission_id
  767. LEFT JOIN admin AS c ON b.seller_id=c.admin_id
  768. WHERE a.company_id=? AND b.product_id = 2
  769. OR (a.company_id = ? AND cp.permission_name = '策略' )
  770. ORDER BY b.product_id DESC LIMIT 0,1 `
  771. o := orm.NewOrm()
  772. err = o.Raw(sql, companyId, companyId).QueryRow(&item)
  773. return
  774. }
  775. func GetCompanyPermissionByUser(companyId int) (permission string, err error) {
  776. sql := ` SELECT GROUP_CONCAT(DISTINCT b.remark ORDER BY b.sort ASC SEPARATOR ',') AS permission
  777. FROM company_report_permission AS a
  778. INNER JOIN chart_permission AS b ON a.chart_permission_id=b.chart_permission_id
  779. INNER JOIN company_product AS c ON a.company_id=c.company_id AND a.product_id=c.product_id
  780. WHERE a.company_id=?
  781. AND c.is_suspend=0
  782. AND b.cygx_auth=1`
  783. o := orm.NewOrm()
  784. err = o.Raw(sql, companyId).QueryRow(&permission)
  785. return
  786. }
  787. // 获取正式权限
  788. func GetCompanyPermissionByUserZhengShi(companyId int) (permission string, err error) {
  789. sql := ` SELECT GROUP_CONCAT(DISTINCT b.remark ORDER BY b.sort ASC SEPARATOR ',') AS permission
  790. FROM company_report_permission AS a
  791. INNER JOIN chart_permission AS b ON a.chart_permission_id=b.chart_permission_id
  792. INNER JOIN company_product AS c ON a.company_id=c.company_id AND a.product_id=c.product_id
  793. WHERE a.company_id=?
  794. AND c.is_suspend=0
  795. AND b.cygx_auth=1
  796. AND c.status IN('正式')
  797. AND a.status IN('正式') `
  798. o := orm.NewOrm()
  799. err = o.Raw(sql, companyId).QueryRow(&permission)
  800. return
  801. }
  802. // 活动模板消息推送,权限处理start
  803. // GetCompanyDetailByIdGroupList 根据公司ID获取公司对应状态
  804. func GetCompanyDetailByIdGroupList(companyIds []int) (items []*CompanyDetail, err error) {
  805. lenCompanyId := len(companyIds)
  806. if lenCompanyId == 0 {
  807. return
  808. }
  809. sql := ` SELECT a.company_id,a.company_name,b.status
  810. FROM company AS a
  811. INNER JOIN company_product AS b ON a.company_id=b.company_id
  812. WHERE a.company_id IN (` + utils.GetOrmInReplace(lenCompanyId) + `) AND b.product_id = 2
  813. GROUP BY a.company_id `
  814. o := orm.NewOrm()
  815. _, err = o.Raw(sql, companyIds).QueryRows(&items)
  816. return
  817. }
  818. type CompanyPermission struct {
  819. CompanyId int `description:"公司ID"`
  820. PermissionName string `description:"权限名称"`
  821. }
  822. // 公司权限结构体
  823. type CompanyPermissionPower struct {
  824. CompanyId int `description:"公司ID"`
  825. UserType int `description:"用户类型 //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //3、分行业套餐客户(开通对应行业的正式客户) //4、仅开通专家套餐的正式客户 //5、开通对应行业套餐或专家套餐的试用客户"`
  826. Status string `description:"客户状态"`
  827. PermissionName string `description:"权限名称"`
  828. PermissionNameZhengShi string `description:"权限名称(正式)"`
  829. HavePower bool `description:"是否有权限"`
  830. }
  831. // GetCompanyPermissionByCompanyIds 根据公司ID获取公司对应的权限
  832. func GetCompanyPermissionByCompanyIds(companyIds []int) (items []*CompanyPermission, err error) {
  833. lenCompanyId := len(companyIds)
  834. if lenCompanyId == 0 {
  835. return
  836. }
  837. sql := ` SELECT
  838. GROUP_CONCAT( DISTINCT b.remark ORDER BY b.sort ASC SEPARATOR ',' ) AS permission_name,
  839. a.company_id
  840. FROM
  841. company_report_permission AS a
  842. INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id
  843. INNER JOIN company_product AS c ON a.company_id = c.company_id
  844. AND a.product_id = c.product_id
  845. WHERE
  846. a.company_id IN (` + utils.GetOrmInReplace(lenCompanyId) + `)
  847. AND c.is_suspend = 0
  848. AND b.cygx_auth = 1
  849. GROUP BY
  850. a.company_id `
  851. o := orm.NewOrm()
  852. _, err = o.Raw(sql, companyIds).QueryRows(&items)
  853. return
  854. }
  855. // GetCompanyPermissionZhenShiByCompanyIds 根据公司ID获取正式公司对应的权限
  856. func GetCompanyPermissionZhenShiByCompanyIds(companyIds []int) (items []*CompanyPermission, err error) {
  857. lenCompanyId := len(companyIds)
  858. if lenCompanyId == 0 {
  859. return
  860. }
  861. sql := ` SELECT
  862. GROUP_CONCAT( DISTINCT b.remark ORDER BY b.sort ASC SEPARATOR ',' ) AS permission_name,
  863. a.company_id
  864. FROM
  865. company_report_permission AS a
  866. INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id
  867. INNER JOIN company_product AS c ON a.company_id = c.company_id
  868. AND a.product_id = c.product_id
  869. WHERE
  870. a.company_id IN (` + utils.GetOrmInReplace(lenCompanyId) + `)
  871. AND c.is_suspend = 0
  872. AND b.cygx_auth = 1
  873. AND c.STATUS IN ( '正式' )
  874. AND a.STATUS IN ( '正式' )
  875. GROUP BY
  876. a.company_id `
  877. o := orm.NewOrm()
  878. _, err = o.Raw(sql, companyIds).QueryRows(&items)
  879. return
  880. }
  881. type YidongActivitySignup struct {
  882. YidongActivityId string `description:"易董的活动ID"`
  883. Mobile string `description:"手机号"`
  884. RealName string `description:"用户实际名称"`
  885. CompanyName string `description:"公司名称"`
  886. CountryCode string `description:"手机国家区号"`
  887. ActivityJoinType string `description:"活动入会类型01报名审核后可入会 02预约即可入会 03仅定向邀请人员可入会"`
  888. }
  889. // GetCompanyByUserSignUp 获取客户ID列表
  890. func GetCompanyByUserSignUp(condition string, pars []interface{}) (items []*company.CompanyNameAndId, err error) {
  891. o := orm.NewOrmUsingDB("hz_cygx")
  892. sql := `SELECT
  893. s.company_id
  894. FROM
  895. cygx_activity_signup AS s
  896. INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
  897. INNER JOIN cygx_activity_type AS t ON t.activity_type_id = a.activity_type_id
  898. WHERE
  899. 1 = 1
  900. AND s.is_meeting = 1
  901. AND t.activity_type = 1 `
  902. if condition != `` {
  903. sql += condition
  904. }
  905. sql += ` GROUP BY s.company_id `
  906. _, err = o.Raw(sql, pars).QueryRows(&items)
  907. return
  908. }
  909. type UserSignUpLossResp struct {
  910. Mobile string `description:"手机号"`
  911. RealName string `description:"姓名"`
  912. TotalMeeting int `description:"参会次数"`
  913. }
  914. type UserSignUpLossListResp struct {
  915. CompanyId int `description:"公司Id"`
  916. CompanyName string `description:"公司名称"`
  917. SellerName string `description:"销售名称"`
  918. List []*UserSignUpLossResp
  919. }
  920. // GetUserSignUpList 获取用户报名列表
  921. func GetUserSignUpList(condition string, pars []interface{}) (items []*UserSignUpLossResp, err error) {
  922. o := orm.NewOrmUsingDB("hz_cygx")
  923. sql := `SELECT
  924. s.real_name,
  925. s.mobile
  926. FROM
  927. cygx_activity_signup_detail AS s
  928. INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
  929. INNER JOIN cygx_activity_type AS t ON t.activity_type_id = a.activity_type_id
  930. WHERE
  931. 1 = 1
  932. AND s.is_meeting = 1
  933. AND t.activity_type = 1 `
  934. if condition != `` {
  935. sql += condition
  936. }
  937. _, err = o.Raw(sql, pars).QueryRows(&items)
  938. return
  939. }
  940. type UserSignUpMeetLossListResp struct {
  941. Mobile string `description:"手机号"`
  942. RealName string `description:"姓名"`
  943. List []*AttendanceDetail `description:"预约客户"`
  944. }
  945. type ActivitySignupTempMsgReq struct {
  946. ActivityIds string `description:"活动id,用,隔开"`
  947. SendGroup string `description:"发送对象,1全部 2永续 3大套餐 4行业套餐 5其他行业正式 6试用 7已参与互动 用,隔开"`
  948. FirstText string `description:"首段提示文字"`
  949. ActivityName string `description:"活动名称"`
  950. Content string `description:"变更内容"`
  951. }
  952. type SendGroup struct {
  953. Id int
  954. Name string
  955. }
  956. type SendGroupStr struct {
  957. Id string
  958. Name string
  959. }
  960. type PermissionList struct {
  961. CompanyId int
  962. Permission string
  963. }
  964. // 获取正式权限
  965. func GetCompanyPermissionByUsersZhengShi(companyIds string) (items []*PermissionList, err error) {
  966. sql := ` SELECT a.company_id, b.remark AS permission
  967. FROM company_report_permission AS a
  968. INNER JOIN chart_permission AS b ON a.chart_permission_id=b.chart_permission_id
  969. INNER JOIN company_product AS c ON a.company_id=c.company_id AND a.product_id=c.product_id
  970. WHERE a.company_id IN (` + companyIds + `)
  971. AND c.is_suspend=0
  972. AND b.cygx_auth=1
  973. AND c.status IN('正式')
  974. AND a.status IN('正式') `
  975. o := orm.NewOrm()
  976. _, err = o.Raw(sql).QueryRows(&items)
  977. return
  978. }
  979. // 获取某一活动某个机构已经报名的数量
  980. func GetActivitySignupCompanyCount(activityId, companyId int) (count int, err error) {
  981. o := orm.NewOrmUsingDB("hz_cygx")
  982. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND do_fail_type = 0 AND activity_id=? AND company_id=? `
  983. err = o.Raw(sqlCount, activityId, companyId).QueryRow(&count)
  984. return
  985. }
  986. func GetCompanyPermissionByUserTrip(companyId int) (permission string, err error) {
  987. o := orm.NewOrm()
  988. sql := ` SELECT
  989. GROUP_CONCAT( DISTINCT b.remark ORDER BY b.sort ASC SEPARATOR ',' ) AS permission
  990. FROM
  991. company_report_permission AS a
  992. INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id
  993. INNER JOIN company_product AS c ON a.company_id = c.company_id
  994. AND a.product_id = c.product_id
  995. WHERE
  996. a.company_id = ?
  997. AND c.is_suspend = 0
  998. AND b.cygx_auth = 1
  999. AND a.is_upgrade = 1
  1000. AND c.STATUS IN ( '正式' )
  1001. OR ( a.company_id = ? AND c.is_suspend = 0 AND b.cygx_auth = 1 AND c.STATUS IN ( '永续' ) )
  1002. OR ( a.company_id = ? AND c.is_suspend = 0 AND b.cygx_auth = 1 AND b.chart_permission_name = '策略' AND c.STATUS IN ( '正式' ) )`
  1003. err = o.Raw(sql, companyId, companyId, companyId).QueryRow(&permission)
  1004. return
  1005. }
  1006. // GetCygxCygxActivitySignupList 获取报名列表信息
  1007. func GetActivitySignupList(condition string, pars []interface{}) (items []*CygxActivitySignup, err error) {
  1008. o := orm.NewOrmUsingDB("hz_cygx")
  1009. sql := `SELECT
  1010. *
  1011. FROM
  1012. cygx_activity_signup AS v
  1013. WHERE
  1014. 1 = 1 ` + condition
  1015. _, err = o.Raw(sql, pars).QueryRows(&items)
  1016. return
  1017. }
  1018. // GetCygxCygxActivitySignupList 获取报名列表信息
  1019. func GetActivitySignupInnerActivityList(condition string, pars []interface{}) (items []*CygxActivitySignup, err error) {
  1020. o := orm.NewOrmUsingDB("hz_cygx")
  1021. sql := `SELECT
  1022. *
  1023. FROM
  1024. cygx_activity_signup AS v
  1025. INNER JOIN cygx_activity as a ON v.activity_id = a.activity_id
  1026. WHERE
  1027. 1 = 1 ` + condition
  1028. _, err = o.Raw(sql, pars).QueryRows(&items)
  1029. return
  1030. }