123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385 |
- package cygx
- import (
- "fmt"
- "github.com/beego/beego/v2/client/orm"
- "time"
- )
- // 报名
- type CygxActivityAttendanceDetail struct {
- AttendanceId int `orm:"column(attendance_id);pk;"description:"主键ID"`
- ActivityId int `description:"活动ID"`
- RealName string `description:"姓名"`
- Mobile string `description:"手机号"`
- CompanyName string `description:"公司名称"`
- CompanyId int `description:"公司id 不在数据库的用户为0"`
- SellerName string `description:"销售姓名"`
- //IsMeetingStr string `description:"是否到会"`
- FirstMeetingTime string `description:"首次入会时间"`
- LastMeetingTime string `description:"最后退出时间"`
- Duration string `description:"参会时长"`
- MeetingTypeStr string `description:"参会方式"`
- MeetingAuthentication string `description:"参会权鉴"`
- MeetingStatusStr string `description:"参会状态"`
- CreateTime time.Time `description:"创建时间"`
- Position string `description:"职位"`
- IsMeetingStr int `description:"是否到会,1到会,0未到会"`
- UseridEntity int `description:"参会者身份. 1:主讲人, 2:主持人, 3:嘉宾, 4:普通参会者, 5:联席主讲人, 6:会议助理"`
- CrmCompanyMapStatusId int `description:"转换后的对应状态信息:1=正式客户, 2=曾使用客户, 3=其他"`
- ActivityTime string `description:"活动时间"`
- }
- // 报名
- type AttendanceDetail struct {
- ActivityId int `description:"活动ID"`
- RealName string `description:"姓名"`
- Mobile string `description:"手机号"`
- CompanyName string `description:"公司名称"`
- CompanyId int `description:"公司ID"`
- SellerName string `orm:"column(pseller_name);"description:"销售姓名"`
- IsMeeting int `description:"是否到会"`
- FirstMeetingTime string `description:"首次入会时间"`
- LastMeetingTime string `description:"最后退出时间"`
- Duration string `description:"参会时长"`
- MeetingTypeStr string `description:"参会方式"`
- MeetingAuthentication string `description:"参会权鉴"`
- MeetingStatusStr string `description:"参会状态"`
- Position string `description:"职位"`
- OutboundMobile string `description:"外呼手机号"`
- CountryCode string `description:"手机国家区号"`
- UseridEntity int `description:"参会者身份. 1:主讲人, 2:主持人, 3:嘉宾, 4:普通参会者, 5:联席主讲人, 6:会议助理"`
- Content string `description:"备注信息"`
- ActivityTimeText string `description:"活动时间带文字"`
- ActivityName string `description:"活动名称"`
- }
- func AddAttendancDetail(items []*CygxActivityAttendanceDetail, activityId int, mobileStr string) (err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- to, err := o.Begin()
- if err != nil {
- return
- }
- defer func() {
- if err != nil {
- fmt.Println(err)
- _ = to.Rollback()
- } else {
- _ = to.Commit()
- }
- }()
- //修改活动是否上传到会信息字段
- sql := `UPDATE cygx_activity SET is_submit_meeting=1 WHERE activity_id=? `
- _, err = to.Raw(sql, activityId).Exec()
- if err != nil {
- return
- }
- //修改单个报名信息是否到会
- sql = `UPDATE cygx_activity_signup SET is_meeting=0 WHERE activity_id=? `
- _, err = to.Raw(sql, activityId).Exec()
- if err != nil {
- return
- }
- sql = `UPDATE cygx_activity_signup SET is_meeting=1 WHERE activity_id=? AND outbound_mobile IN (` + mobileStr + `)`
- _, err = to.Raw(sql, activityId).Exec()
- if err != nil {
- return
- }
- sql = `UPDATE cygx_activity_signup SET is_meeting=1 WHERE activity_id=? AND mobile IN (` + mobileStr + `)`
- _, err = to.Raw(sql, activityId).Exec()
- if err != nil {
- return
- }
- //二次上传时删除原有数据
- sql = ` DELETE FROM cygx_activity_attendance_detail WHERE activity_id = ?`
- _, err = to.Raw(sql, activityId).Exec()
- if err != nil {
- return
- }
- //插入提交信息
- //for _, v := range items {
- // _, err = to.Insert(v)
- // if err != nil {
- // return
- // }
- //}
- _, err = o.InsertMulti(len(items), items)
- if err != nil {
- return err
- }
- return
- }
- func GetAttendanceDetailList(activityId int, sqlStr string) (item []*AttendanceDetail, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT s.id,s.activity_id,p.company_name,s.mobile,s.is_meeting,s.outbound_mobile,s.country_code,u.real_name,d.first_meeting_time,d.last_meeting_time,d.meeting_type_str,d.meeting_authentication,d.meeting_status_str,d.duration,d.userid_entity,
- GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name
- FROM
- cygx_activity_signup AS s
- INNER JOIN wx_user AS u ON u.user_id = s.user_id
- INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
- INNER JOIN company_product AS p ON p.company_id = s.company_id
- LEFT JOIN cygx_activity_attendance_detail AS d ON d.mobile = s.outbound_mobile AND s.activity_id = d.activity_id
- WHERE 1 = 1
- AND s.fail_type = 0
- AND s.is_cancel = 0
- AND d.userid_entity != 3
- AND s.activity_id = ?` + sqlStr + ` GROUP BY s.id ORDER BY s.is_meeting DESC`
- _, err = o.Raw(sql, activityId).QueryRows(&item)
- return
- }
- func GetAttendanceDetailListGroup(activityId int, sqlStr string) (item []*AttendanceDetail, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT s.*,d.first_meeting_time,d.last_meeting_time,d.meeting_type_str,d.meeting_authentication,d.meeting_status_str,d.duration,d.userid_entity,d.userid_entity
- FROM
- cygx_activity_signup AS s
- LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
- LEFT JOIN cygx_activity_attendance_detail AS d ON ( d.mobile = s.outbound_mobile OR d.mobile = s.mobile ) AND s.activity_id = d.activity_id
- WHERE 1 = 1
- AND s.do_fail_type = 0
- AND s.is_cancel = 0
- AND s.activity_id = ?` + sqlStr + ` ORDER BY s.is_meeting DESC`
- _, err = o.Raw(sql, activityId).QueryRows(&item)
- return
- }
- func GetAttendanceDetailListGroupByUser(mobile, sqlStr string) (item []*AttendanceDetail, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT s.id,s.activity_id,s.company_name,s.mobile,s.is_meeting,s.outbound_mobile,s.country_code,s.real_name,s.first_meeting_time,s.last_meeting_time,s.meeting_type_str,s.meeting_authentication,s.meeting_status_str,s.duration,s.userid_entity,s.userid_entity,a.activity_name,a.activity_time_text
- FROM
- cygx_activity_signup_detail AS s
- INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
- WHERE 1 = 1
- AND s.do_fail_type = 0
- AND s.is_cancel = 0
- AND s.mobile = ?` + sqlStr + ` ORDER BY a.activity_time ASC `
- _, err = o.Raw(sql, mobile).QueryRows(&item)
- return
- }
- func GetAttendanceDetailList2(activityId int, sqlStr string) (item []*AttendanceDetail, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT d.activity_id,d.real_name,d.company_id,d.first_meeting_time,d.last_meeting_time,d.meeting_type_str,d.meeting_authentication,d.meeting_status_str,d.mobile,d.duration,d.company_name,d.position,d.userid_entity
- FROM
- cygx_activity_attendance_detail AS d
- WHERE 1 = 1 AND d.activity_id = ? AND is_meeting_str = 1 AND d.userid_entity != 3 ` + sqlStr + ` GROUP BY d.mobile`
- _, err = o.Raw(sql, activityId).QueryRows(&item)
- return
- }
- func GetAttendanceDetailList3(activityId int, sqlStr string) (item []*AttendanceDetail, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT d.activity_id,d.real_name,d.company_id,d.first_meeting_time,d.last_meeting_time,d.meeting_type_str,d.meeting_authentication,d.meeting_status_str,d.mobile,d.duration,d.company_name,d.position,d.userid_entity
- FROM
- cygx_activity_attendance_detail AS d
- WHERE 1 = 1 AND d.activity_id = ? AND d.userid_entity != 3 AND d.crm_company_map_status_id != 1 ` + sqlStr + ` GROUP BY d.mobile`
- _, err = o.Raw(sql, activityId).QueryRows(&item)
- return
- }
- type AttendanceDetailList struct {
- List1 []*AttendanceDetail `description:"预约客户"`
- List2 []*AttendanceDetail `description:"未预约客户"`
- List3 []*AttendanceDetail `description:"潜在客户"`
- }
- type WxUserOutboundMobile struct {
- RealName string `description:"姓名"`
- Mobile string `description:"手机号"`
- OutboundMobile string `description:"外呼手机号"`
- CompanyId int `description:"公司ID"`
- CompanyName string `description:"公司名称"`
- SellerName string `description:"所属销售"`
- UserId int `description:"用户ID"`
- }
- func GetWxUserOutboundMobile(mobileStr string) (item []*WxUserOutboundMobile, err error) {
- o := orm.NewOrm()
- sql := `SELECT u.real_name,u.mobile,u.outbound_mobile,u.company_id,p.company_name ,GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS seller_name
- FROM wx_user as u
- INNER JOIN company_product AS p ON p.company_id = u.company_id
- WHERE outbound_mobile IN (` + mobileStr + `) GROUP BY u.user_id`
- _, err = o.Raw(sql).QueryRows(&item)
- return
- }
- func GetWxUserMobile(mobileStr string) (item []*WxUserOutboundMobile, err error) {
- o := orm.NewOrm()
- sql := `SELECT u.real_name,u.mobile,u.outbound_mobile,u.company_id,p.company_name ,GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS seller_name
- FROM wx_user as u
- INNER JOIN company_product AS p ON p.company_id = u.company_id
- WHERE mobile IN (` + mobileStr + `) GROUP BY u.user_id`
- _, err = o.Raw(sql).QueryRows(&item)
- return
- }
- type RoadshowData struct {
- Id int `orm:"column(id);pk;"description:"主键ID"`
- Company string `description:"公司名称"`
- UserName string `description:"用户名"`
- UserPhone string `description:"手机号"`
- UserinfoUource string `description:"用户来源"`
- AuthInfo string `description:"用户参会鉴权"`
- GuestUsername string `description:"嘉宾名称, 多个用,隔开"`
- FirstWatchTime string `description:"首次观看时间"`
- LastWatchTime string `description:"最后观看时间"`
- RoadshowId string `description:"路演ID"`
- RoadshowTitle string `description:"路演标题"`
- RoadshowBeginTime time.Time `description:"路演开始时间"`
- RoadshowEndTime time.Time `description:"路演结束时间"`
- JoinTime int `description:"参与时长"`
- JoinType int `description:"参与方式, 1网络, 2电话"`
- DataType int `description:"数据类型: 1直播, 2回放"`
- Occupation string `description:"职位"`
- UseridEntity int `description:"参会者身份. 1:主讲人, 2:主持人, 3:嘉宾, 4:普通参会者, 5:联席主讲人, 6:会议助理"`
- CrmCompanyMapStatusId int `description:"转换后的对应状态信息:1=正式客户, 2=曾使用客户, 3=其他"`
- }
- type RoadshowDataTitle struct {
- RoadshowTitle string `description:"路演标题"`
- ActivityTime string `description:"活动时间"`
- }
- type RoadshowDataTitleList struct {
- List []*RoadshowDataTitle
- }
- type RoadshowDataTitleResp struct {
- KeyWord string `description:"关键词"`
- ActivityId int `description:"活动ID"`
- }
- func GetRoadshowDataTitleList(startTime, endTime, title string) (list []*RoadshowDataTitle, err error) {
- o := orm.NewOrmUsingDB("comein_data")
- sql := `SELECT roadshow_title, roadshow_begin_time as activity_time FROM roadshow_data WHERE roadshow_begin_time > ? AND roadshow_end_time < ? AND roadshow_title LIKE '%` + title + `%' GROUP BY roadshow_id `
- _, err = o.Raw(sql, startTime, endTime).QueryRows(&list)
- return
- }
- func GetRoadshowDataList(title, condition string) (list []*RoadshowData, err error) {
- o := orm.NewOrmUsingDB("comein_data")
- sql := `SELECT * FROM roadshow_data WHERE roadshow_title LIKE '%` + title + `%'` + condition
- _, err = o.Raw(sql).QueryRows(&list)
- return
- }
- // 客户参会记录
- type CompanyMeetRep struct {
- ActivityId int `description:"活动Id"`
- RealName string `description:"姓名"`
- Mobile string `description:"手机号"`
- Email string `description:"邮箱"`
- ActivityName string `description:"活动名称"`
- ChartPermissionName string `description:"行业名称"`
- ActivityTypeName string `description:"活动类型名称"`
- Label string `description:"标签"`
- ActivityTime string `description:"活动时间"`
- FirstMeetingTime string `description:"首次入会时间"`
- LastMeetingTime string `description:"最后退出时间"`
- Duration string `description:"参会时长"`
- MeetingTypeStr string `description:"参会方式"`
- MeetingAuthentication string `description:"参会权鉴"`
- MeetingStatusStr string `description:"参会状态"`
- }
- func GetCygxActivityAttendanceDetailByCompanyId(mobiles string) (list []*CompanyMeetRep, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT
- a.*,
- s.mobile,
- s.real_name,
- d.first_meeting_time,
- d.last_meeting_time,
- d.duration,
- d.meeting_type_str,
- d.meeting_authentication,
- d.meeting_status_str
- FROM
- cygx_activity_signup AS s
- INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
- INNER JOIN cygx_activity_attendance_detail AS d ON d.activity_id = s.activity_id
- INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id
- WHERE
- 1 = 1
- AND s.do_fail_type = 0
- AND s.is_cancel = 0
- AND s.is_meeting = 1
- AND s.mobile IN (` + mobiles + `)
- AND a.is_submit_meeting = 1
- AND t.activity_type = 1
- GROUP BY
- s.id
- ORDER BY
- a.activity_time DESC `
- _, err = o.Raw(sql).QueryRows(&list)
- return
- }
- func GetCygxActivityOfflineMeetingDetailByCompanyId(mobiles string) (list []*CompanyMeetRep, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT
- a.*,s.mobile,s.email,s.real_name
- FROM
- cygx_activity_signup AS s
- INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
- INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id
- WHERE
- 1 = 1
- AND s.do_fail_type = 0
- AND s.is_cancel = 0
- AND s.is_meeting = 1
- AND s.mobile IN (` + mobiles + `)
- AND a.is_submit_meeting = 1
- AND t.activity_type = 0
- GROUP BY
- s.id
- ORDER BY
- a.activity_time DESC `
- _, err = o.Raw(sql).QueryRows(&list)
- return
- }
- func GetCompanyActivityCount(companyId int) (list []*CompanyMeetRep, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT
- a.chart_permission_name,
- date_format( a.activity_time, '%Y-%m' ) AS activity_time
- FROM
- cygx_activity_attendance_detail AS r
- INNER JOIN cygx_activity AS a ON a.activity_id = r.activity_id
- WHERE
- r.company_id = ?
- AND is_meeting_str = 1
- ORDER BY
- a.activity_time DESC`
- _, err = o.Raw(sql, companyId).QueryRows(&list)
- return
- }
- func GetCygxActivityOfflineMeetingCoount(companyId int) (list []*CompanyMeetRep, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT
- a.chart_permission_name,
- date_format( a.activity_time, '%Y-%m' ) AS activity_time
- FROM
- cygx_activity_offline_meeting_detail as r
- INNER JOIN cygx_activity as a On a.activity_id = r.activity_id
- WHERE
- r.company_id =? AND r.is_meeting = 1 ORDER BY a.activity_time DESC`
- _, err = o.Raw(sql, companyId).QueryRows(&list)
- return
- }
- // 列表
- func GetCygxActivityAttendanceDetailList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxActivityAttendanceDetail, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT * FROM cygx_activity_attendance_detail as a WHERE 1= 1 `
- if condition != "" {
- sql += condition
- }
- sql += ` LIMIT ?,? `
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
- return
- }
|