Browse Source

Merge branch 'master' of http://8.136.199.33:3000/hongze/hongze_cygx into cygx_4.3

xingzai 3 years ago
parent
commit
3b0e5e4551
5 changed files with 337 additions and 42 deletions
  1. 81 0
      models/user.go
  2. 42 40
      services/task.go
  3. 212 0
      services/user.go
  4. 1 1
      utils/config.go
  5. 1 1
      utils/constants.go

+ 81 - 0
models/user.go

@@ -338,3 +338,84 @@ func GetSustainableUserWhiteList(fieldStr, condition string) (items []*UserWhite
 	_, err = orm.NewOrm().Raw(sql).QueryRows(&items)
 	return
 }
+
+//权益用户
+type GetSendEmailAllUserWithRAIRep struct {
+	CompanyName  string `description:"客户名称"`
+	CreditCode   string `description:"社会统一信用码"`
+	ProductName  string `description:"客户类型"`
+	IndustryName string `description:"行业"`
+	RealName     string `description:"姓名"`
+	Mobile       string `description:"手机号"`
+	Status       string `description:"手机号"`
+	StartDate    string `description:"合同开始日期"`
+	EndDate      string `description:"合同结束日期"`
+	CreatedTime  string `description:"创建时间"`
+	Permission   string `description:"权限"`
+}
+
+func GetSendEmailAllUserWithRAI() (items []*GetSendEmailAllUserWithRAIRep, err error) {
+	sql := `SELECT
+			c.company_name,
+			c.credit_code,
+			cp.product_name,
+			cp.industry_name,
+			a.real_name,
+			a.mobile,
+			cp.status,
+			cp.start_date,
+			cp.end_date,
+			c.created_time,
+			GROUP_CONCAT( DISTINCT b.chart_permission_name SEPARATOR '/' ) AS permission 
+		FROM
+			company AS c
+			INNER JOIN company_report_permission AS p ON p.company_id = c.company_id
+			INNER JOIN chart_permission AS b ON b.chart_permission_id = p.chart_permission_id
+			INNER JOIN company_product AS cp ON cp.company_id = c.company_id
+			INNER JOIN admin AS a ON a.admin_id = cp.seller_id 
+		WHERE
+			1 = 1 
+			AND cp.product_id = 2 
+			AND b.product_id = 2 
+			AND cp.status IN ( '正式', '试用' ) 
+		GROUP BY
+			c.company_id 
+		ORDER BY
+			c.company_id DESC`
+	_, err = orm.NewOrm().Raw(sql).QueryRows(&items)
+	return
+}
+
+//权益用户
+type GetSendEmailAllUserWithCompanyRep struct {
+	RealName    string `description:"姓名"`
+	Mobile      string `description:"手机号"`
+	CountrCode  string `description:"国家号"`
+	Email       string `description:"邮箱"`
+	CompanyName string `description:"客户名称"`
+	CreditCode  string `description:"社会统一信用码"`
+	IsMaker     string `description:"是否是决策人,1是,0否"`
+}
+
+func GetSendEmailAllUserWithCompany() (items []*GetSendEmailAllUserWithCompanyRep, err error) {
+	sql := `SELECT
+			u.real_name,
+			u.mobile,
+			u.country_code,
+			u.email,
+			c.company_name,
+			u.is_maker 
+		FROM
+			no_use AS n
+			INNER JOIN company AS c ON c.company_name = n.company_name
+			INNER JOIN company_report_permission AS p ON p.company_id = c.company_id
+			INNER JOIN chart_permission AS b ON b.chart_permission_id = p.chart_permission_id
+			INNER JOIN company_product AS cp ON cp.company_id = c.company_id
+			INNER JOIN wx_user AS u ON u.company_id = c.company_id 
+		GROUP BY
+			u.user_id 
+		ORDER BY
+			c.company_id ASC`
+	_, err = orm.NewOrm().Raw(sql).QueryRows(&items)
+	return
+}

+ 42 - 40
services/task.go

@@ -14,49 +14,51 @@ import (
 
 func Task() {
 	fmt.Println("start")
-	if utils.RunMode == "release" && utils.IsTask {
-		//syncTacticsListAddreport := task.NewTask("syncTacticsListAddreport", "0 */5 * * * *", SyncTacticsListAddreport) //同步文章
-		//task.AddTask("syncTacticsListAddreport", syncTacticsListAddreport)
-		getSummarytoEs := task.NewTask("getSummarytoEs", "0 */30 * * * *", GetSummarytoEs) //同步纪要库内容到Es
-		task.AddTask("getSummarytoEs", getSummarytoEs)
-		getArticleListByApi := task.NewTask("getArticleListByApi", "0 */5 * * * *", GetArticleListByApi) //通过三方接口获取策略平台上的文章
-		task.AddTask("getArticleListByApi", getArticleListByApi)
-		//会议提醒模板消息推送
-		sendActivityBeginMsg := task.NewTask("sendActivityBeginMsg", "0 */10 8-22 * * *", SendActivityBeginMsg) //会议前60分钟的提醒
-		task.AddTask("sendActivityBeginMsg", sendActivityBeginMsg)
-		sendActivityBeginMsgMeeting := task.NewTask("sendActivityBeginMsgMeeting", "0 */5 8-22 * * *", SendActivityBeginMsgMeeting) //会议前15分钟的提醒
-		task.AddTask("sendActivityBeginMsgMeeting", sendActivityBeginMsgMeeting)
-
-		//预约外呼名单,会前1小时自动发送邮件给专家组
-		sendEmailFileToExpert := task.NewTask("sendEmailFileToExpert", "0 */5 8-22 * * *", SendEmailFileToExpert) //预约外呼名单,会前1小时自动发送邮件给专家组
-		task.AddTask("sendEmailFileToExpert", sendEmailFileToExpert)
-
-		sendEmailFileForAskMsgResearch := task.NewTask("sendEmailFileForAskMsgResearch", "0 */5 8-22 * * *", SendEmailFileForAskMsgResearch) //研选系列专家电话会,会前1小时将问题列表发送给邮箱
-		task.AddTask("sendEmailFileForAskMsgResearch", sendEmailFileForAskMsgResearch)
-
-		sendEmailFileForAskMsg := task.NewTask("sendEmailFileForAskMsg", "0 */5 8-22 * * *", SendEmailFileForAskMsg) //非研选系列专家电话会,根据主持人姓名,会前15分钟将问题列表发送给至该主持人对应邮箱
-		task.AddTask("sendEmailFileForAskMsg", sendEmailFileForAskMsg)
-
-		sendEmailUserWhiteListChange := task.NewTask("sendEmailUserWhiteListChange", "0 00 17 * * *", SendEmailUserWhiteListChange) //新增 和冻结的客户白名单
-		task.AddTask("sendEmailUserWhiteListChange", sendEmailUserWhiteListChange)
-	}
-
-	if utils.IsTask {
-		//修改任务状
-		updateActivitySattus := task.NewTask("syncTacticsListAddreport", "0 */1 8-22 * * *", UpdateActivitySattus)
-		task.AddTask("updateActivitySattus", updateActivitySattus)
-
-		//更新深 和新的标签
-		updateIndustrialManagementLabel := task.NewTask("updateIndustrialManagementLabel", "0 */30 * * * *", UpdateIndustrialManagementLabel)
-		task.AddTask("updateIndustrialManagementLabel", updateIndustrialManagementLabel)
-
-		//更改对应产业的文章阅读数量
-		chageIndustrialArticleNum := task.NewTask("chageIndustrialArticleNum", "0 01 00 * * *", ChageIndustrialArticleNum) //更改对应产业的文章阅读数量
-		task.AddTask("chageIndustrialArticleNum", chageIndustrialArticleNum)
-	}
+	//if utils.RunMode == "release" && utils.IsTask {
+	//	//syncTacticsListAddreport := task.NewTask("syncTacticsListAddreport", "0 */5 * * * *", SyncTacticsListAddreport) //同步文章
+	//	//task.AddTask("syncTacticsListAddreport", syncTacticsListAddreport)
+	//	getSummarytoEs := task.NewTask("getSummarytoEs", "0 */30 * * * *", GetSummarytoEs) //同步纪要库内容到Es
+	//	task.AddTask("getSummarytoEs", getSummarytoEs)
+	//	getArticleListByApi := task.NewTask("getArticleListByApi", "0 */5 * * * *", GetArticleListByApi) //通过三方接口获取策略平台上的文章
+	//	task.AddTask("getArticleListByApi", getArticleListByApi)
+	//	//会议提醒模板消息推送
+	//	sendActivityBeginMsg := task.NewTask("sendActivityBeginMsg", "0 */10 8-22 * * *", SendActivityBeginMsg) //会议前60分钟的提醒
+	//	task.AddTask("sendActivityBeginMsg", sendActivityBeginMsg)
+	//	sendActivityBeginMsgMeeting := task.NewTask("sendActivityBeginMsgMeeting", "0 */5 8-22 * * *", SendActivityBeginMsgMeeting) //会议前15分钟的提醒
+	//	task.AddTask("sendActivityBeginMsgMeeting", sendActivityBeginMsgMeeting)
+	//
+	//	//预约外呼名单,会前1小时自动发送邮件给专家组
+	//	sendEmailFileToExpert := task.NewTask("sendEmailFileToExpert", "0 */5 8-22 * * *", SendEmailFileToExpert) //预约外呼名单,会前1小时自动发送邮件给专家组
+	//	task.AddTask("sendEmailFileToExpert", sendEmailFileToExpert)
+	//
+	//	sendEmailFileForAskMsgResearch := task.NewTask("sendEmailFileForAskMsgResearch", "0 */5 8-22 * * *", SendEmailFileForAskMsgResearch) //研选系列专家电话会,会前1小时将问题列表发送给邮箱
+	//	task.AddTask("sendEmailFileForAskMsgResearch", sendEmailFileForAskMsgResearch)
+	//
+	//	sendEmailFileForAskMsg := task.NewTask("sendEmailFileForAskMsg", "0 */5 8-22 * * *", SendEmailFileForAskMsg) //非研选系列专家电话会,根据主持人姓名,会前15分钟将问题列表发送给至该主持人对应邮箱
+	//	task.AddTask("sendEmailFileForAskMsg", sendEmailFileForAskMsg)
+	//
+	//	sendEmailUserWhiteListChange := task.NewTask("sendEmailUserWhiteListChange", "0 00 17 * * *", SendEmailUserWhiteListChange) //新增 和冻结的客户白名单
+	//	task.AddTask("sendEmailUserWhiteListChange", sendEmailUserWhiteListChange)
+	//}
+	//
+	//if utils.IsTask {
+	//	//修改任务状
+	//	updateActivitySattus := task.NewTask("syncTacticsListAddreport", "0 */1 8-22 * * *", UpdateActivitySattus)
+	//	task.AddTask("updateActivitySattus", updateActivitySattus)
+	//
+	//	//更新深 和新的标签
+	//	updateIndustrialManagementLabel := task.NewTask("updateIndustrialManagementLabel", "0 */30 * * * *", UpdateIndustrialManagementLabel)
+	//	task.AddTask("updateIndustrialManagementLabel", updateIndustrialManagementLabel)
+	//
+	//	//更改对应产业的文章阅读数量
+	//	chageIndustrialArticleNum := task.NewTask("chageIndustrialArticleNum", "0 01 00 * * *", ChageIndustrialArticleNum) //更改对应产业的文章阅读数量
+	//	task.AddTask("chageIndustrialArticleNum", chageIndustrialArticleNum)
+	//}
 	//ActivityAttendanceDetail()
 	//SynchronizationArthistory()//同步原有的阅读记录
 	//GetAddpArticle() //同步日度点评数据
+	//SendEmailAllUserWithRAI()     //发送当前所有权益用户到沈大爷的邮箱
+	//SendEmailAllUserWithCompany() //发送这些公司下的用户到沈大爷的邮箱
 	task.StartTask()
 	fmt.Println("end")
 }

+ 212 - 0
services/user.go

@@ -966,3 +966,215 @@ func GetUserhasPermission(user *models.WxUserItem) (hasPermission int, err error
 	}
 	return
 }
+
+//每周五发送当前所有的权益用户
+func SendEmailAllUserWithRAI() (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println("err:", err, time.Now())
+			go utils.SendEmail("发送权益用户邮件失败"+"【"+utils.APPNAME+"】"+time.Now().Format(utils.FormatDateTime), ";Err:"+err.Error(), utils.EmailSendToUsers)
+			utils.FileLog.Info("发送权益用户邮件失败,Err:%s", err.Error())
+		}
+	}()
+	list, err := models.GetSendEmailAllUserWithRAI()
+	if err != nil {
+		return
+	}
+	//创建excel
+	dir, err := os.Executable()
+	exPath := filepath.Dir(dir)
+	downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + utils.GetRandDigit(5) + ".xlsx"
+	xlsxFile := xlsx.NewFile()
+	if err != nil {
+		return
+	}
+	style := xlsx.NewStyle()
+	alignment := xlsx.Alignment{
+		Horizontal: "center",
+		Vertical:   "center",
+		WrapText:   true,
+	}
+	style.Alignment = alignment
+	style.ApplyAlignment = true
+	sheet, err := xlsxFile.AddSheet("权益用户名单")
+	if err != nil {
+		return
+	}
+	//设置宽度
+	_ = sheet.SetColWidth(0, 0, 30)
+	_ = sheet.SetColWidth(1, 1, 22)
+	_ = sheet.SetColWidth(3, 3, 18)
+	_ = sheet.SetColWidth(5, 5, 15)
+	_ = sheet.SetColWidth(7, 8, 12)
+	_ = sheet.SetColWidth(9, 9, 17)
+	_ = sheet.SetColWidth(10, 10, 35)
+	//标头
+	rowTitle := sheet.AddRow()
+	cellA := rowTitle.AddCell()
+	cellA.Value = "客户名称"
+	cellB := rowTitle.AddCell()
+	cellB.Value = "社会信用码"
+	cellC := rowTitle.AddCell()
+	cellC.Value = "客户类型"
+	cellD := rowTitle.AddCell()
+	cellD.Value = "行业"
+	cellE := rowTitle.AddCell()
+	cellE.Value = "所属销售"
+	cellF := rowTitle.AddCell()
+	cellF.Value = "销售手机号"
+	cellG := rowTitle.AddCell()
+	cellG.Value = "状态"
+	cellH := rowTitle.AddCell()
+	cellH.Value = "服务起始期限"
+	cellI := rowTitle.AddCell()
+	cellI.Value = "服务结束期限"
+	cellJ := rowTitle.AddCell()
+	cellJ.Value = "创建时间"
+	cellK := rowTitle.AddCell()
+	cellK.Value = "权限"
+	if len(list) > 0 {
+		for _, item := range list {
+			row := sheet.AddRow()
+			cellA := row.AddCell()
+			cellA.Value = item.CompanyName
+			cellB := row.AddCell()
+			cellB.Value = item.CreditCode
+			cellC := row.AddCell()
+			cellC.Value = item.ProductName
+			cellD := row.AddCell()
+			cellD.Value = item.IndustryName
+			cellE := row.AddCell()
+			cellE.Value = item.RealName
+			cellF := row.AddCell()
+			cellF.Value = item.Mobile
+			cellG := row.AddCell()
+			cellG.Value = item.Status
+			cellH := row.AddCell()
+			cellH.Value = item.StartDate
+			cellI := row.AddCell()
+			cellI.Value = item.EndDate
+			cellJ := row.AddCell()
+			cellJ.Value = item.CreatedTime
+			cellK := row.AddCell()
+			cellK.Value = item.Permission
+		}
+	}
+	err = xlsxFile.Save(downLoadnFilePath)
+	if err != nil {
+		return
+	}
+	title := time.Now().Format(utils.FormatDate) + "权益用户名单"
+	content := time.Now().Format(utils.FormatDate) + "权益用户名单"
+	fileName := downLoadnFilePath
+	if len(list) > 0 {
+		utils.SendEmailByHongze(title, content, "cxzhang@hzinsights.com;tshen@hzinsights.com", fileName, title+".xlsx")
+	}
+	os.Remove(downLoadnFilePath)
+	return
+}
+
+//每周五发送发送这些公司下的用户
+func SendEmailAllUserWithCompany() (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println("err:", err, time.Now())
+			go utils.SendEmail("发送权益用户邮件失败"+"【"+utils.APPNAME+"】"+time.Now().Format(utils.FormatDateTime), ";Err:"+err.Error(), utils.EmailSendToUsers)
+			utils.FileLog.Info("发送权益用户邮件失败,Err:%s", err.Error())
+		}
+	}()
+	list, err := models.GetSendEmailAllUserWithRAI()
+	if err != nil {
+		return
+	}
+	//创建excel
+	dir, err := os.Executable()
+	exPath := filepath.Dir(dir)
+	downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + utils.GetRandDigit(5) + ".xlsx"
+	xlsxFile := xlsx.NewFile()
+	if err != nil {
+		return
+	}
+	style := xlsx.NewStyle()
+	alignment := xlsx.Alignment{
+		Horizontal: "center",
+		Vertical:   "center",
+		WrapText:   true,
+	}
+	style.Alignment = alignment
+	style.ApplyAlignment = true
+	sheet, err := xlsxFile.AddSheet("权益用户名单")
+	if err != nil {
+		return
+	}
+	//设置宽度
+	_ = sheet.SetColWidth(0, 0, 30)
+	_ = sheet.SetColWidth(1, 1, 22)
+	_ = sheet.SetColWidth(3, 3, 18)
+	_ = sheet.SetColWidth(5, 5, 15)
+	_ = sheet.SetColWidth(7, 8, 12)
+	_ = sheet.SetColWidth(9, 9, 17)
+	_ = sheet.SetColWidth(10, 10, 35)
+	//标头
+	rowTitle := sheet.AddRow()
+	cellA := rowTitle.AddCell()
+	cellA.Value = "客户名称"
+	cellB := rowTitle.AddCell()
+	cellB.Value = "社会信用码"
+	cellC := rowTitle.AddCell()
+	cellC.Value = "客户类型"
+	cellD := rowTitle.AddCell()
+	cellD.Value = "行业"
+	cellE := rowTitle.AddCell()
+	cellE.Value = "所属销售"
+	cellF := rowTitle.AddCell()
+	cellF.Value = "销售手机号"
+	cellG := rowTitle.AddCell()
+	cellG.Value = "状态"
+	cellH := rowTitle.AddCell()
+	cellH.Value = "服务起始期限"
+	cellI := rowTitle.AddCell()
+	cellI.Value = "服务结束期限"
+	cellJ := rowTitle.AddCell()
+	cellJ.Value = "创建时间"
+	cellK := rowTitle.AddCell()
+	cellK.Value = "权限"
+	if len(list) > 0 {
+		for _, item := range list {
+			row := sheet.AddRow()
+			cellA := row.AddCell()
+			cellA.Value = item.CompanyName
+			cellB := row.AddCell()
+			cellB.Value = item.CreditCode
+			cellC := row.AddCell()
+			cellC.Value = item.ProductName
+			cellD := row.AddCell()
+			cellD.Value = item.IndustryName
+			cellE := row.AddCell()
+			cellE.Value = item.RealName
+			cellF := row.AddCell()
+			cellF.Value = item.Mobile
+			cellG := row.AddCell()
+			cellG.Value = item.Status
+			cellH := row.AddCell()
+			cellH.Value = item.StartDate
+			cellI := row.AddCell()
+			cellI.Value = item.EndDate
+			cellJ := row.AddCell()
+			cellJ.Value = item.CreatedTime
+			cellK := row.AddCell()
+			cellK.Value = item.Permission
+		}
+	}
+	err = xlsxFile.Save(downLoadnFilePath)
+	if err != nil {
+		return
+	}
+	title := time.Now().Format(utils.FormatDate) + "权益用户名单"
+	content := time.Now().Format(utils.FormatDate) + "权益用户名单"
+	fileName := downLoadnFilePath
+	if len(list) > 0 {
+		utils.SendEmailByHongze(title, content, "cxzhang@hzinsights.com;tshen@hzinsights.com", fileName, title+".xlsx")
+	}
+	os.Remove(downLoadnFilePath)
+	return
+}

+ 1 - 1
utils/config.go

@@ -108,7 +108,7 @@ func init() {
 		WxPublicAppId = "wx4a844c734d8c8e56"
 		WxPublicAppSecret = "26c586e7ccb3c575433f0f37797b3eeb"
 		WxPublicId = "gh_b67e0049fb8c"
-		IndexName = "cygx_article_v0906"
+		IndexName = "cygx_article_v1208"
 
 		//接收附件邮箱
 		EmailTechnology = "mlluo@hzinsights.com;jxu@hzinsights.com;agne@hzinsights.com;tshen@hzinsights.com;cxzhang@hzinsights.com;jhwang@hzinsights.com" //科技行业专家邮箱

+ 1 - 1
utils/constants.go

@@ -22,7 +22,7 @@ const (
 const (
 	APPNAME           = "弘则-查研观向"
 	EmailSendToUsers  = "glji@hzinsights.com;pyan@hzinsights.com;cxzhang@hzinsights.com"
-	EmailSendToExpert = "jhwang@hzinsights.com;cxzhang@hzinsights.com"
+	EmailSendToExpert = "cxzhang@hzinsights.com"
 )
 
 //手机号,电子邮箱正则