activity_signup.go 39 KB

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