Przeglądaj źródła

Merge branch 'crm_15.9' of http://8.136.199.33:3000/hongze/hongze_cygx into debug

xingzai 7 miesięcy temu
rodzic
commit
4121d64475

+ 4 - 3
models/activity.go

@@ -928,9 +928,10 @@ func UPdateActivityMsgToSendFile(activityId int) (err error) {
 }
 
 type AskEmailRep struct {
-	Name   string `description:"姓名"`
-	Email  string `description:"邮箱"`
-	Mobile string `description:"手机号"`
+	Name                string `description:"姓名"`
+	Email               string `description:"邮箱"`
+	Mobile              string `description:"手机号"`
+	ChartPermissionName string `description:"行业名称"`
 }
 
 func GetAskEmail() (item []*AskEmailRep, err error) {

+ 45 - 0
models/activity_signup_detail.go

@@ -67,6 +67,51 @@ func GetSignupDetailBySignup(condition string, pars []interface{}) (list []*Cygx
 	return
 }
 
+type CygxActivitySignupDetailServreBill struct {
+	Id                  int    `orm:"column(id);pk"`
+	ActivityId          int    `description:"活动ID"`
+	ActivityName        string `description:"活动名称"`
+	UserId              int    `description:"用户ID"`
+	RealName            string `description:"用户实际名称"`
+	Mobile              string `description:"手机号"`
+	Email               string `description:"邮箱"`
+	CompanyId           int    `description:"公司id"`
+	CompanyName         string `description:"公司名称"`
+	ActivityTime        string `description:"活动时间"`
+	ActivityType        int    `description:"1线上,其余线下"`
+	ChartPermissionId   int    `description:"行业id"`
+	ChartPermissionName string `description:"行业名称"`
+}
+
+// 获取今天报名的用户信息,存入到参会记录表中
+func GetSignupDetailBySignupjoinactivity(condition string, pars []interface{}) (list []*CygxActivitySignupDetailServreBill, err error) {
+	sql := `SELECT
+			art.activity_id,
+			art.user_id,
+			art.real_name,
+			art.mobile,
+			art.email,
+			art.company_id,
+			art.company_name,
+			art.register_platform,
+			a.activity_time,
+			a.activity_name,
+			a.chart_permission_id,
+			a.chart_permission_name,
+			t.activity_type 
+		FROM
+			cygx_activity_signup AS art
+			INNER JOIN cygx_activity AS a ON a.activity_id = art.activity_id
+			INNER JOIN cygx_activity_type AS t ON t.activity_type_id = a.activity_type_id 
+		WHERE
+			1 = 1  `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
+	return
+}
+
 // 获取参会记录表列表
 func GetSignupDetailList(condition string, pars []interface{}) (list []*CygxActivitySignupDetail, err error) {
 	sql := `SELECT * FROM cygx_activity_signup_detail  WHERE  1= 1 `

+ 42 - 12
models/activity_special_trip.go

@@ -27,18 +27,22 @@ type CygxActivitySpecialTrip struct {
 }
 
 type CygxActivitySpecialTripResp struct {
-	Id             int    `description:"ID"`
-	UserId         int    `description:"用户id"`
-	ActivityId     int    `description:"活动ID"`
-	CreateTime     string `description:"创建时间"`
-	Mobile         string `description:"手机号"`
-	Email          string `description:"邮箱号"`
-	CompanyId      int    `description:"公司ID"`
-	CompanyName    string `description:"公司名称"`
-	RealName       string `description:"用户实际名称"`
-	SellerName     string `description:"所属销售"`
-	OutboundMobile string `description:"外呼手机号"`
-	CountryCode    string `description:"手机国家区号"`
+	Id                  int    `description:"ID"`
+	UserId              int    `description:"用户id"`
+	ActivityId          int    `description:"活动ID"`
+	ActivityTime        string `description:"活动时间"`
+	CreateTime          string `description:"创建时间"`
+	Mobile              string `description:"手机号"`
+	Email               string `description:"邮箱号"`
+	CompanyId           int    `description:"公司ID"`
+	CompanyName         string `description:"公司名称"`
+	RealName            string `description:"用户实际名称"`
+	SellerName          string `description:"所属销售"`
+	OutboundMobile      string `description:"外呼手机号"`
+	CountryCode         string `description:"手机国家区号"`
+	ResearchTheme       string `description:"调研主题"`
+	ChartPermissionId   int    `description:"行业id"`
+	ChartPermissionName string `description:"行业名称"`
 }
 
 func GetCygxActivitySpecialTripList(condition string, pars []interface{}) (item []*CygxActivitySpecialTripResp, err error) {
@@ -193,3 +197,29 @@ WHERE
 	_, err = o.Raw(sql, pars).QueryRows(&item)
 	return
 }
+
+// 获取今天报名的用户信息,存入到参会记录表中
+func GetCygxActivitySpecialMeetingDetailList(condition string, pars []interface{}) (list []*CygxActivitySpecialTripResp, err error) {
+	sql := `SELECT
+			art.activity_id,
+			art.user_id,
+			art.real_name,
+			art.mobile,
+			art.email,
+			art.company_id,
+			art.company_name,
+			a.activity_time,
+			a.chart_permission_id,
+			a.chart_permission_name,
+			a.research_theme
+		FROM
+			cygx_activity_special_meeting_detail AS art
+			INNER JOIN cygx_activity_special AS a ON a.activity_id = art.activity_id
+		WHERE
+			1 = 1  `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
+	return
+}

+ 52 - 17
models/article_history_record_all.go

@@ -6,23 +6,24 @@ import (
 )
 
 type CygxArticleHistoryRecordAll struct {
-	Id             int `orm:"column(id);pk"`
-	ArticleId      int
-	UserId         int
-	CreateTime     string
-	ModifyTime     time.Time
-	Mobile         string    `description:"手机号"`
-	Email          string    `description:"邮箱"`
-	CompanyId      int       `description:"公司id"`
-	CompanyName    string    `description:"公司名称"`
-	StopTime       int       `description:"停留时间"`
-	OutType        int       `description:"退出方式,1正常退出,2强制关闭"`
-	Source         string    `description:"来源,MOBILE:手机端,PC:电脑端"`
-	RealName       string    `description:"用户实际名称"`
-	CreateDateApi  time.Time `description:"同步创建时间"`
-	CelueHistoryId int       `description:"策略平台记录的ID"`
-	Platfor        int       `description:"PV阅读记录来源,1:查研观向,2:策略平台"`
-	IsDel          int       `description:"是否删除"`
+	Id               int `orm:"column(id);pk"`
+	ArticleId        int
+	UserId           int
+	CreateTime       string
+	ModifyTime       time.Time
+	Mobile           string    `description:"手机号"`
+	Email            string    `description:"邮箱"`
+	CompanyId        int       `description:"公司id"`
+	CompanyName      string    `description:"公司名称"`
+	StopTime         int       `description:"停留时间"`
+	OutType          int       `description:"退出方式,1正常退出,2强制关闭"`
+	Source           string    `description:"来源,MOBILE:手机端,PC:电脑端"`
+	RealName         string    `description:"用户实际名称"`
+	CreateDateApi    time.Time `description:"同步创建时间"`
+	CelueHistoryId   int       `description:"策略平台记录的ID"`
+	Platfor          int       `description:"PV阅读记录来源,1:查研观向,2:策略平台"`
+	IsDel            int       `description:"是否删除"`
+	RegisterPlatform int       `description:"来源"`
 }
 
 // 获取数量
@@ -47,3 +48,37 @@ func GetCygxArticleHistoryRecordAllList(condition string, pars []interface{}, st
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return
 }
+
+type CygxArticleHistoryRecordAllResp struct {
+	Id               int `orm:"column(id);pk"`
+	ArticleId        int
+	UserId           int
+	CreateTime       string
+	ModifyTime       time.Time
+	Mobile           string    `description:"手机号"`
+	Email            string    `description:"邮箱"`
+	CompanyId        int       `description:"公司id"`
+	CompanyName      string    `description:"公司名称"`
+	StopTime         int       `description:"停留时间"`
+	OutType          int       `description:"退出方式,1正常退出,2强制关闭"`
+	Source           string    `description:"来源,MOBILE:手机端,PC:电脑端"`
+	RealName         string    `description:"用户实际名称"`
+	CreateDateApi    time.Time `description:"同步创建时间"`
+	CelueHistoryId   int       `description:"策略平台记录的ID"`
+	Platfor          int       `description:"PV阅读记录来源,1:查研观向,2:策略平台"`
+	IsDel            int       `description:"是否删除"`
+	RegisterPlatform int       `description:"来源"`
+	Title            string    `description:"标题"`
+	CategoryName     string    `description:"一级分类"`
+}
+
+// 列表
+func GetCygxArticleHistoryRecordAllListNoLimit(condition string, pars []interface{}) (items []*CygxArticleHistoryRecordAllResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT 	art.* ,a.title,a.category_name FROM cygx_article_history_record_all as art INNER JOIN cygx_article AS a  ON a.article_id = art.article_id    WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 17 - 0
models/chart_permission.go

@@ -28,6 +28,15 @@ type ActivityChartPermission struct {
 	IsChoose          bool   `description:"是否选择"`
 }
 
+// ChartPermission 报告权限表
+type ChartPermissionCrm struct {
+	ChartPermissionId   int    `orm:"column(chart_permission_id);pk" description:"问题ID"`
+	ChartPermissionName string `description:"名称"`
+	PermissionName      string `description:"权限名"`
+	Remark              string `description:"备注"`
+	ProductId           int    `description:"产品ID"`
+}
+
 type ChartPermissionResp struct {
 	List []*ChartPermission
 }
@@ -46,6 +55,14 @@ func GetChartPermissionListRai() (items []*ChartPermission, err error) {
 	return
 }
 
+// GetChartPermissionList 获取品种权限列表
+func GetChartPermissionList() (list []*ChartPermissionCrm, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := `SELECT * FROM chart_permission WHERE parent_id > 0 ORDER BY product_id ASC, sort ASC`
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}
+
 func GetCategoryId(chartPermissionId int) (category_id string, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT GROUP_CONCAT(a.category_id) AS category_id 

+ 57 - 0
models/company/company_contract.go

@@ -19,6 +19,29 @@ type CompanyContractPermission struct {
 	Points            float64   `description:"研选扣点包点数"`
 }
 
+type CompanyContract struct {
+	CompanyContractId int       `orm:"column(company_contract_id);pk" description:"客户合同id"`
+	ContractType      string    `description:"合同类型:枚举值:'新签合同','续约合同','补充协议'"`
+	ProductId         int       `description:"产品id"`
+	ProductName       string    `description:"产品名称"`
+	CompanyId         int       `description:"客户id"`
+	CompanyProductId  int       `description:"客户产品id"`
+	ContractCode      string    `description:"合同编码"`
+	StartDate         string    `description:"合同开始时间"`
+	EndDate           string    `description:"合同结束时间"`
+	Money             float64   `description:"合同金额"`
+	PayMethod         string    `description:"支付方式"`
+	PayChannel        string    `description:"支付渠道"`
+	ImgUrl            string    `description:"合同图片,多个用#隔开"`
+	CreateTime        time.Time `description:"合同创建时间"`
+	ModifyTime        time.Time `description:"合同修改时间"`
+	Status            int       `description:"状态"`
+	Source            string    `description:"合同来源,枚举值:上传附件、系统合同,默认上传附件"`
+	PackageType       int       `description:"套餐类型,0:无,1:大套餐,2:小套餐"`
+	RaiPackageType    int       `description:"权益套餐类型: 0-无; 1-70w大套餐; 2-45w大套餐"`
+	RaiContractType   string    `description:"权益合同类型:枚举值:'新签合同','续约合同','补充协议'"`
+}
+
 func GetCompanyContractPermissionCheck(companyContractId, permissionId int) (count int, err error) {
 	o := orm.NewOrmUsingDB("weekly_report")
 	sql := `SELECT COUNT(1) AS count FROM company_contract_permission AS a WHERE a.company_contract_id=? AND a.chart_permission_id=? `
@@ -36,3 +59,37 @@ func GetCompanyContractPermissionDetail(condition string, pars []interface{}) (i
 	err = o.Raw(sql, pars).QueryRow(&item)
 	return
 }
+
+// 获取合同对应的权限列表
+func GetCompanyContractPermissionList(condition string, pars []interface{}) (items []*CompanyContractPermission, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := `SELECT * FROM company_contract_permission WHERE 1 = 1  `
+
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+// 通过查询条件获取详情
+func GetCompanyContractList(condition string, pars []interface{}) (items []*CompanyContract, err error) {
+	if condition == "" {
+		return
+	}
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := `SELECT * FROM company_contract  WHERE 1 = 1  ` + condition
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+// 通过查询条件获取最后一个合同
+func GetCompanyContractLastList(condition string, pars []interface{}) (items []*CompanyContract, err error) {
+	if condition == "" {
+		return
+	}
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := `SELECT MAX( company_contract_id )  as company_contract_id  FROM company_contract  WHERE 1 = 1  ` + condition
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 35 - 0
models/company/company_product.go

@@ -19,6 +19,7 @@ type CompanyProduct struct {
 	SellerId            int       `description:"销售id"`
 	SellerName          string    `description:"销售名称"`
 	GroupId             int       `description:"销售分组id"`
+	ShareGroupId        int       `description:"共享销售分组id"`
 	DepartmentId        int       `description:"销售部门id"`
 	IsSuspend           int       `description:"1:暂停,0:启用"`
 	SuspendTime         time.Time `description:"暂停启用时间"`
@@ -55,6 +56,8 @@ type CompanyProduct struct {
 	CloseTime           time.Time `description:"关闭时间"`
 	OverseasLabel       int       `description:"海外客户试用子标签:1未分类、2  推进、3 跟踪、4 预备、"`
 	IsOverseas          int       `description:"是否显示在海外客户0:显示,1:不显示"`
+	ShareSeller         string    `description:"共享销售员"`
+	ShareSellerId       int       `description:"共享销售员id"`
 }
 
 func GetCompanyProductByCompanyIdAndProductId(companyId, productId int) (item *CompanyProduct, err error) {
@@ -79,3 +82,35 @@ func GetCompanyProductDetailByCompanyId(companyId, productId int) (item *Company
 	err = o.Raw(sql, companyId, productId).QueryRow(&item)
 	return
 }
+
+func GetCompanyProductAaiServeCount(companyId, groupId int) (count int, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := ` SELECT COUNT(1) AS count FROM  company_product WHERE  company_id = ?  AND product_id = 2 AND  (group_id = ? OR  share_group_id = ?) `
+	err = o.Raw(sql, companyId, groupId, groupId).QueryRow(&count)
+	return
+}
+
+// 获取列表
+func GetCompanyProductAndCompanyListByCondition(condition string, pars []interface{}) (items []*CompanyProduct, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := ` SELECT
+			p.company_id,
+			p.seller_id,
+			p.seller_name,
+			p.start_date,
+			p.end_date,
+			p.share_seller_id,
+			p.share_seller,
+			p.status,
+			c.company_name
+		FROM
+			company_product AS p
+			INNER JOIN company AS c ON c.company_id = p.company_id 
+		WHERE
+			1 = 1  `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 14 - 0
models/cygx_yanxuan_special_record.go

@@ -114,6 +114,20 @@ func GetCygxYanxuanSpecialRecordRespList(condition string, pars []interface{}, s
 	return
 }
 
+// 列表
+func GetCygxYanxuanSpecialRecordRespListAll(condition string, pars []interface{}) (items []*CygxYanxuanSpecialRecordResp, err error) {
+	if condition == "" {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_yanxuan_special_record as art WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
 type LisYanxuanSpecialRecordPvResp struct {
 	YanxuanSpecialId int `description:"文章ID"`
 	Pv               int `description:"pv"`

+ 12 - 1
models/db.go

@@ -3,6 +3,7 @@ package models
 import (
 	_ "github.com/go-sql-driver/mysql"
 	"hongze/hongze_cygx/models/order"
+	"hongze/hongze_cygx/models/rai_serve"
 	"hongze/hongze_cygx/utils"
 	"time"
 
@@ -192,7 +193,8 @@ func init() {
 		new(CygxActivitySpecialPermissionPoints),
 	)
 
-	initOrder() // 订单模块
+	initOrder()    // 订单模块
+	initRaiServe() // 权益服务记录模块
 
 	// 记录ORM查询日志
 	orm.Debug = true
@@ -211,3 +213,12 @@ func initOrder() {
 		new(order.CygxOrderVirtualAsset), //用户虚拟资产表(所购买的单篇报告,活动等)
 	)
 }
+
+// 权益服务记录模块
+func initRaiServe() {
+	orm.RegisterModel(
+		new(rai_serve.CygxRaiServeBill),     //服务明细表
+		new(rai_serve.CygxRaiServeCompany),  //当前所属权益服务公司表
+		new(rai_serve.CygxRaiServeWeekBill), //当前所属权益服务公司周度统计表
+	)
+}

+ 65 - 17
models/rai_serve/rai_serve_bill.go

@@ -7,23 +7,27 @@ import (
 
 // 权益服务明细表
 type CygxRaiServeBill struct {
-	BillId           int       `comment:"服务明细主键ID"`
-	Content          string    `comment:"服务内容说明"`
-	ServeTypeId      int       `comment:"服务类型ID"`
-	ServeTypeName    string    `comment:"服务类型"`
-	UserId           int       `comment:"用户ID"`
-	Mobile           string    `comment:"手机号"`
-	Email            string    `comment:"邮箱"`
-	CompanyId        int       `comment:"公司ID"`
-	CompanyName      string    `comment:"公司名称"`
-	RealName         string    `comment:"用户实际名称"`
-	RegisterPlatform int       `comment:"来源 1小程序,2:网页"`
-	ServeCount       float64   `comment:"服务量小计"`
-	IsKp             int       `comment:"是否是KP,1:是、0:否"`
-	SourceId         int       `comment:"来源ID"`
-	Source           string    `comment:"来源 "`
-	CreateTime       time.Time `comment:"创建时间"`
-	ViewTime         time.Time `comment:"浏览时间"`
+	BillId              int       `orm:"column(bill_id);pk" description:"服务明细主键ID"`
+	Content             string    `comment:"服务内容说明"`
+	ServeTypeId         int       `comment:"服务类型ID"`
+	ServeTypeName       string    `comment:"服务类型"`
+	UserId              int       `comment:"用户ID"`
+	Mobile              string    `comment:"手机号"`
+	Email               string    `comment:"邮箱"`
+	CompanyId           int       `comment:"公司ID"`
+	CompanyName         string    `comment:"公司名称"`
+	RealName            string    `comment:"用户实际名称"`
+	RegisterPlatform    int       `comment:"来源 1小程序,2:网页"`
+	ServeCount          float64   `comment:"服务量小计"`
+	IsKp                int       `comment:"是否是KP,1:是、0:否"`
+	SourceId            int       `comment:"来源ID"`
+	Source              string    `comment:"来源 "`
+	WeekStartDate       string    `comment:"周一开始日期"`
+	WeekEndDate         string    `comment:"周日结束日期"`
+	ChartPermissionId   int       `description:"行业id"`
+	ChartPermissionName string    `description:"行业名称"`
+	CreateTime          time.Time `comment:"创建时间"`
+	ViewTime            string    `comment:"浏览时间"`
 }
 
 // Redis对列消息中的结构体
@@ -43,3 +47,47 @@ func AddCygxRaiServeBill(item *CygxRaiServeBill) (err error) {
 	_, err = o.Insert(item)
 	return
 }
+
+func GetCygxRaiServeBillCountByUserAndSource(userId, sourceId int, source string) (count int, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT COUNT(1) AS count FROM  cygx_rai_serve_bill WHERE  user_id = ?  AND source_id = 2 AND  source = ?  `
+	err = o.Raw(sql, userId, sourceId, source).QueryRow(&count)
+	return
+}
+
+// 列表
+func GetCygxRaiServeBillListAll(condition string, pars []interface{}) (items []*CygxRaiServeBill, err error) {
+	if condition == "" {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_rai_serve_bill   WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+// AddCygxRaiServeBillMulti 批量添加
+func AddCygxRaiServeBillMulti(items []*CygxRaiServeBill) (err error) {
+	if len(items) == 0 {
+		return
+	}
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+	if len(items) > 0 {
+		//批量添加流水信息
+		_, err = o.InsertMulti(len(items), items)
+	}
+	return
+}

+ 103 - 0
models/rai_serve/rai_serve_company.go

@@ -0,0 +1,103 @@
+package rai_serve
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxRaiServeCompany struct {
+	ServeCompanyId    int       `comment:"ServeCompanyId 主键ID"`
+	CompanyId         int       `comment:"公司ID"`
+	CompanyName       string    `comment:"公司名称"`
+	CreateTime        time.Time `comment:"创建时间"`
+	Money             float64   `comment:"合同金额"`
+	ServeCoverageRate string    `comment:"近四周服务覆盖率"`
+	SellerId          int       `comment:"所属销售id"`
+	SellerName        string    `comment:"所属销售名称"`
+	StartDate         string    `comment:"开始日期"`
+	EndDate           string    `comment:"结束日期"`
+	ShareSeller       string    `comment:"共享销售"`
+	ShareSellerId     int       `comment:"共享销售员id"`
+	GroupId           int       `description:"销售分组id"`
+	ShareGroupId      int       `description:"共享销售分组id"`
+	Status            string    `comment:"客户状态"`
+	PermissionName    string    `comment:"权限名"`
+	IsUserMaker       int       `comment:"近四周之内是否包含决策人 ,1是、0否"`
+}
+
+func AddCygxRaiServeCompanyMulti(items []*CygxRaiServeCompany) (err error) {
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+
+	//if len(deleteCompanyIds) > 0 {
+	//删除不属于权益共享的公司
+	sql := ` DELETE FROM cygx_rai_serve_company  `
+	_, err = o.Raw(sql).Exec()
+	if err != nil {
+		return
+	}
+	//}
+
+	//批量插入新的关联数据
+	if len(items) > 0 {
+		//批量添加流水信息
+		_, err = o.InsertMulti(len(items), items)
+	}
+
+	return
+}
+
+// UpdateCygxRaiServeCompanyMulti 批量修改正式客户信息
+func UpdateCygxRaiServeCompanyMulti(items []*CygxRaiServeCompany) (err error) {
+	o := orm.NewOrm()
+	p, err := o.Raw("UPDATE cygx_rai_serve_company SET money = ? ,serve_coverage_rate =? ,permission_name = ?  ,is_user_maker = ?   WHERE company_id = ?").Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+	for _, v := range items {
+		_, err = p.Exec(v.Money, v.ServeCoverageRate, v.PermissionName, v.IsUserMaker, v.CompanyId)
+		if err != nil {
+			return
+		}
+	}
+	return
+}
+
+// UpdateCygxRaiServeCompanyFormalNoMulti 批量修改非正式客户信息
+func UpdateCygxRaiServeCompanyFormalNoMulti(items []*CygxRaiServeCompany) (err error) {
+	o := orm.NewOrm()
+	p, err := o.Raw("UPDATE cygx_rai_serve_company SET money = ? , serve_coverage_rate =? ,permission_name = ? , start_date = ? , end_date = ? ,is_user_maker = ?    WHERE company_id = ?").Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+	for _, v := range items {
+		_, err = p.Exec(v.Money, v.ServeCoverageRate, v.PermissionName, v.StartDate, v.EndDate, v.IsUserMaker, v.CompanyId)
+		if err != nil {
+			return
+		}
+	}
+	return
+}
+
+// 获取当前所属权益服务公司表所有ID
+func GetCygxRaiServeCompanyAllList() (items []*CygxRaiServeCompany, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT *  FROM	cygx_rai_serve_company LIMIT  1000  `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 75 - 0
models/rai_serve/rai_serve_week_bill.go

@@ -0,0 +1,75 @@
+package rai_serve
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxRaiServeWeekBill struct {
+	ServeWeekBillId int       `orm:"column(serve_week_bill_id);pk" description:"服务周账单ID"`
+	CompanyId       int       `comment:"公司ID"`
+	CompanyName     string    `comment:"公司名称"`
+	UserTotal       int       `comment:"用户数量"`
+	WeekServeCount  float64   `comment:"周度服务量总计"`
+	CoverageRate    float64   `comment:"覆盖率"`
+	WeekStartDate   string    `comment:"周一开始日期"`
+	WeekEndDate     string    `comment:"周日结束日期"`
+	CreateTime      time.Time `comment:"创建时间"`
+	ModifyTime      time.Time `comment:"修改时间"`
+}
+
+// AddCygxRaiServeWeekBillMulti 批量添加
+func AddCygxRaiServeWeekBillMulti(items []*CygxRaiServeWeekBill) (err error) {
+	if len(items) == 0 {
+		return
+	}
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+	if len(items) > 0 {
+		//批量添加流水信息
+		_, err = o.InsertMulti(len(items), items)
+	}
+	return
+}
+
+// UpdateCygxRaiServeWeekBillMulti 批量修改客户周度信息
+func UpdateCygxRaiServeWeekBillMulti(items []*CygxRaiServeWeekBill) (err error) {
+	o := orm.NewOrm()
+	p, err := o.Raw("UPDATE cygx_rai_serve_week_bill SET user_total = ? , week_serve_count =? ,modify_time = ?   WHERE company_id = ?  AND week_start_date = ?  ").Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+	for _, v := range items {
+		_, err = p.Exec(v.UserTotal, v.WeekServeCount, v.ModifyTime, v.CompanyId, v.WeekStartDate)
+		if err != nil {
+			return
+		}
+	}
+	return
+}
+
+// 列表
+func GetCygxRaiServeWeekBillListAll(condition string, pars []interface{}) (items []*CygxRaiServeWeekBill, err error) {
+	if condition == "" {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_rai_serve_week_bill   WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 28 - 0
models/rai_serve/user_feedback.go

@@ -0,0 +1,28 @@
+package rai_serve
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+)
+
+// 权益服务明细表
+type CygxUserFeedback struct {
+	UserFeedbackId int    `orm:"column(user_feedback_id);pk";comment:"主键id"`
+	Content        string `comment:"服务内容说明"`
+	UserId         int    `comment:"用户ID"`
+	Mobile         string `comment:"手机号"`
+	Email          string `comment:"邮箱"`
+	CompanyId      int    `comment:"公司ID"`
+	CompanyName    string `comment:"公司名称"`
+	RealName       string `comment:"用户实际名称"`
+	CreateTime     string `comment:"创建时间"`
+}
+
+func GetCygxUserFeedbackList(condition string, pars []interface{}) (items []*CygxUserFeedback, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT *
+			FROM
+			cygx_user_feedback
+			WHERE 1 = 1 ` + condition
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 89 - 0
models/roadshow/rs_calendar_meeting_user.go

@@ -0,0 +1,89 @@
+package roadshow
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_cygx/utils"
+	"time"
+)
+
+type RsCalendarMeetingUserResp struct {
+	RsCalendarMeetingUserId int    `description:"参会名单主键ID"`
+	RealName                string `description:"用户实际名称"`
+	Position                string `description:"职位"`
+}
+
+type RsCalendarMeetingUser struct {
+	RsCalendarMeetingUserId int    `orm:"column(rs_calendar_meeting_user_id);pk" description:"主键ID"`
+	RsCalendarId            int    `description:"日程ID"`
+	UserId                  int    `description:"用户ID"`
+	Mobile                  string `description:"手机号"`
+	Email                   string `description:"邮箱"`
+	CompanyId               int    `description:"公司ID"`
+	CompanyName             string `description:"公司名称"`
+	RealName                string `description:"用户实际名称"`
+	Position                string `description:"职位"`
+	AdminId                 int    `description:"管理员ID"`
+	AdminName               string `description:"管理员姓名"`
+	StartDate               string `description:"开始日期"`
+	EndDate                 string `description:"结束日期"`
+	StartTime               string `description:"开始时间"`
+	EndTime                 string `description:"结束时间"`
+}
+
+// 列表
+func GetRsCalendarMeetingUserList(condition string, pars []interface{}) (items []*RsCalendarMeetingUser, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := `SELECT
+    		art.rs_calendar_id,
+			art.user_id,
+			art.real_name,
+			art.mobile,
+			art.email,
+			art.company_id,
+			art.company_name,
+			rs.start_time,
+			rs.start_date
+	FROM rs_calendar_meeting_user as  art 
+         inner join  rs_calendar_researcher as  rs ON rs.rs_calendar_id = art.rs_calendar_id
+         WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+type RsCalendarResearcher struct {
+	RsCalendarResearcherId int    `orm:"column(rs_calendar_researcher_id);pk"`
+	RsCalendarId           int    `description:"日历活动id"`
+	ResearcherId           int    `description:"研究员id"`
+	ResearcherName         string `description:"研究员名称"`
+	StartDate              string `description:"开始日期"`
+	EndDate                string `description:"结束日期"`
+	StartTime              string `description:"开始时间"`
+	EndTime                string `description:"结束时间"`
+	StartWeek              string `description:"开始日期对应周"`
+	EndWeek                string `description:"结束日期对应周"`
+	CreateTime             time.Time
+	ModifyTime             time.Time
+	Status                 int       `description:"状态:1:待接受,2:已接受,3:已拒绝,4:已删除,5:已撤回,6:已结束"`
+	RefuseReason           string    `description:"拒绝理由"`
+	RefuseTime             time.Time `description:"拒绝时间"`
+	DeleteReason           string    `description:"删除理由"`
+	DeleteTime             time.Time `description:"删除时间"`
+	ApproveTime            time.Time `description:"接受时间"`
+	IsSynced               int       `description:"是否与上海同步 0:未同步 1:已同步"`
+	ResearcherSort         int       `description:"研究员新增排序"`
+	UnionCode              string    `description:"公开会议联合编码"`
+}
+
+// 根据多个路演ID获取研究员信息
+func GetRsCalendarResearcherListByIds(rsCalendarIds []int) (item []*RsCalendarResearcher, err error) {
+	if len(rsCalendarIds) == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := `SELECT * FROM rs_calendar_researcher WHERE rs_calendar_id IN (` + utils.GetOrmInReplace(len(rsCalendarIds)) + `) `
+	_, err = o.Raw(sql, rsCalendarIds).QueryRows(&item)
+	return
+}

+ 35 - 0
models/wx_user.go

@@ -644,3 +644,38 @@ func GetUserRegisterListinit() (items []*WxUser, err error) {
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
+
+// GetWxUserisMakerByCompanyIds 根据公司ID获取所有决策人ID
+func GetWxUserisMakerByCompanyIds(companyIds []int) (items []*WxUser, err error) {
+	lenArr := len(companyIds)
+	if lenArr == 0 {
+		return
+	}
+	sql := `SELECT user_id  FROM wx_user  WHERE company_id in (` + utils.GetOrmInReplace(lenArr) + `)  `
+	o := orm.NewOrmUsingDB("weekly_report")
+	_, err = o.Raw(sql, companyIds).QueryRows(&items)
+	return
+}
+
+// GetWxUserNumByCompanyIds 根据公司ID获取所有决策人ID
+func GetWxUserNumByCompanyIds(companyIds []int) (items []*WxUserNumGroup, err error) {
+	lenArr := len(companyIds)
+	if lenArr == 0 {
+		return
+	}
+	sql := `SELECT
+			company_id,
+			COUNT( user_id ) AS user_num 
+		FROM
+			wx_user 
+		WHERE
+			company_id IN  (` + utils.GetOrmInReplace(lenArr) + `) GROUP BY company_id `
+	o := orm.NewOrmUsingDB("weekly_report")
+	_, err = o.Raw(sql, companyIds).QueryRows(&items)
+	return
+}
+
+type WxUserNumGroup struct {
+	CompanyId int `comment:"公司ID"`
+	UserNum   int `comment:"用户数量"`
+}

+ 1 - 1
services/cygx_yanxuan_special_company.go

@@ -118,7 +118,7 @@ func AddSpecialRecord(user *models.WxUserItem, specialId, stopTime int) (err err
 		item.YanxuanSpecialId = specialId
 		item.StopTime = stopTime
 		item.PermissionCode = permissionCode
-		go CygxRaiServeBillRedisAdd(detail.Title, utils.CYGX_OBJ_YANXUANSPECIAL, user.UserId, user.CompanyId, specialId, utils.REGISTER_PLATFORM, item.CreateTime) // 权益服务统计添加到Redis队列中
+		//go CygxRaiServeBillRedisAdd(detail.Title, utils.CYGX_OBJ_YANXUANSPECIAL, user.UserId, user.CompanyId, specialId, utils.REGISTER_PLATFORM, item.CreateTime) // 权益服务统计添加到Redis队列中
 
 		_, e = models.AddCygxYanxuanSpecialRecord(item) // 添加历史记录
 		if e != nil {

Plik diff jest za duży
+ 1182 - 0
services/rai_serve_count.go


+ 6 - 0
services/task.go

@@ -155,6 +155,12 @@ func Task() {
 
 		getYanxuanSpecialLikeCountDifferent := task.NewTask("getYanxuanSpecialLikeCountDifferent", "0 0 */1 * * *", GetYanxuanSpecialLikeCountDifferent)
 		task.AddTask("定时任务处理退款回调", getYanxuanSpecialLikeCountDifferent) //定时任务处理退款回调
+
+		updateRaiServeCompanyDate := task.NewTask("updateRaiServeCompanyDate", "0 */1 * * * *", UpdateRaiServeCompanyDate)
+		task.AddTask("定时任务处理权益服务公司", updateRaiServeCompanyDate) //定时任务处理权益服务公司
+
+		updateRaiServeBillDate := task.NewTask("updateRaiServeBillDate", "0 */10 * * * *", UpdateRaiServeBillDate)
+		task.AddTask("定时任务处理权益服务记录明细", updateRaiServeBillDate) //定时任务处理权益服务记录明细
 	}
 
 	//if utils.RunMode != "release" {

+ 11 - 0
utils/common.go

@@ -1021,3 +1021,14 @@ func TruncateActivityNameString(s string) string {
 	// 截取前15个汉字,并添加省略号
 	return s[:byteIndex] + "…"
 }
+
+// 根据字符串时间格式获取所在时间段周一、周日
+func GetMondayAndSundayByTimeString(timeString string) (monday, sunday string) {
+	now := StrTimeToTime(timeString)
+	mondayDate := now.AddDate(0, 0, -int(now.Weekday()-time.Monday))
+	// 计算当前周的周日
+	sundayDate := mondayDate.AddDate(0, 0, 6)
+	monday = mondayDate.Format(FormatDate)
+	sunday = sundayDate.Format(FormatDate)
+	return
+}

+ 4 - 0
utils/constants.go

@@ -116,6 +116,8 @@ const (
 	TIME_LINE_ID                     int    = 99999                           // 策略时间线的值
 	TIME_LINE_NAME                   string = "时间线"                           // 策略时间线的名称
 	ACTEGORY_ID_AI_QY                int    = 61                              // AI前沿自定义ID
+	ZHUAN_JIA_NAME                   string = "专家"
+	ZHUAN_JIA_ID                     int    = 29
 )
 
 const (
@@ -261,6 +263,8 @@ const (
 	CYGX_OBJ_NEWCHART            string = "newchart"           // 对象类型:图表
 	CYGX_OBJ_INDUSTRIALSOURCE_HZ string = "industrialsourceHz" // 对象类型:弘则资源包
 	CYGX_OBJ_INDUSTRIALSOURCE_YX string = "industrialsourceYx" // 对象类型:研选资源包
+	CYGX_OBJ_RS_CALENDAR         string = "rscalendar"         // 对象类型:研究员日历安排
+	CYGX_OBJ_USER_FEEDBACK       string = "userfeedback"       // 对象类型:用户交流反馈
 )
 
 const (

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików