Forráskód Böngészése

合并master分支

xingzai 3 éve
szülő
commit
503c4d8f92
7 módosított fájl, 140 hozzáadás és 84 törlés
  1. 4 3
      controllers/activity.go
  2. 1 1
      controllers/user.go
  3. 3 1
      models/activity.go
  4. 26 9
      models/company.go
  5. 5 8
      services/activity.go
  6. 62 62
      services/user.go
  7. 39 0
      utils/email.go

+ 4 - 3
controllers/activity.go

@@ -564,7 +564,7 @@ func (this *ActivityCoAntroller) Detail() {
 			br.ErrMsg = "获取客户权限信息失败,Err:" + err.Error()
 			return
 		}
-		companyItem, err := models.GetCompanyDetailAllById(user.CompanyId)
+		companyItem, err := models.GetCompanyDetailById(user.CompanyId)
 		//冻结客户
 		if err != nil {
 			if err.Error() == utils.ErrNoRow() {
@@ -792,7 +792,7 @@ func (this *ActivityCoAntroller) SignupAdd() {
 			br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
 			return
 		}
-		companyItem, err := models.GetCompanyDetailAllById(user.CompanyId)
+		companyItem, err := models.GetCompanyDetailById(user.CompanyId)
 		//冻结客户
 		if err != nil {
 			if err.Error() == utils.ErrNoRow() {
@@ -1458,7 +1458,7 @@ func (this *ActivityCoAntroller) MeetingReminderAdd() {
 			br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
 			return
 		}
-		companyItem, err := models.GetCompanyDetailAllById(user.CompanyId)
+		companyItem, err := models.GetCompanyDetailById(user.CompanyId)
 		//冻结客户
 		if err != nil {
 			if err.Error() == utils.ErrNoRow() {
@@ -1817,6 +1817,7 @@ func (this *ActivityCoAntroller) LabelList() {
 			br.ErrMsg = "获取失败,Err:" + errList.Error()
 			return
 		}
+		sortTime = ` mintimesort ASC `
 		condition += ` AND art.active_state = 1 `
 		list1, errList := models.GetActivityLabelListAll(condition, sortTime, pars, startSize, 16)
 		if errList != nil {

+ 1 - 1
controllers/user.go

@@ -365,7 +365,7 @@ func (this *UserController) Detail() {
 			}
 		}
 		if user.CompanyId > 1 {
-			companyItem, err := models.GetCompanyDetailAllById(user.CompanyId)
+			companyItem, err := models.GetCompanyDetailById(user.CompanyId)
 			if err != nil && err.Error() != utils.ErrNoRow() {
 				br.Msg = "获取信息失败"
 				br.ErrMsg = "获取客户信息失败,Err:" + err.Error()

+ 3 - 1
models/activity.go

@@ -425,7 +425,9 @@ func UPdateActivityIdToSendFile(activityId int) (err error) {
 
 //活动详情
 type CygxActivityLabelList struct {
-	KeyWord string `orm:"column(label)";description:"主题"`
+	KeyWord     string `orm:"column(label)";description:"主题"`
+	Timesort    string `description:"最大时间"`
+	Mintimesort string `description:"最小时间"`
 }
 
 //主题列表

+ 26 - 9
models/company.go

@@ -12,13 +12,22 @@ type CompanyDetail struct {
 }
 
 func GetCompanyDetailById(companyId int) (item *CompanyDetail, err error) {
+	//sql := ` SELECT a.company_id,a.company_name,b.status,b.seller_id,b.seller_name,c.mobile
+	//        FROM company AS a
+	//		INNER JOIN company_product AS b ON a.company_id=b.company_id
+	//		LEFT JOIN admin AS c ON b.seller_id=c.admin_id
+	//		WHERE a.company_id=? AND  b.product_id=2 `
+
 	sql := ` SELECT a.company_id,a.company_name,b.status,b.seller_id,b.seller_name,c.mobile 
             FROM company AS a
 			INNER JOIN company_product AS b ON a.company_id=b.company_id
+			INNER JOIN company_report_permission AS p ON p.company_id = a.company_id
+			INNER JOIN chart_permission AS cp ON cp.chart_permission_id=p.chart_permission_id
 			LEFT JOIN admin AS c ON b.seller_id=c.admin_id
-			WHERE a.company_id=? AND  b.product_id=2 `
+			WHERE a.company_id=? AND cp.cygx_auth=1
+			OR (a.company_id = ? AND  cp.permission_name = '策略' )` // 兼容永续状态
 	o := orm.NewOrm()
-	err = o.Raw(sql, companyId).QueryRow(&item)
+	err = o.Raw(sql, companyId, companyId).QueryRow(&item)
 	return
 }
 
@@ -26,10 +35,14 @@ func GetCompanyDetailByIdGroup(companyId int) (item *CompanyDetail, err error) {
 	sql := ` SELECT a.company_id,a.company_name,b.status,b.seller_id,b.seller_name,c.mobile 
             FROM company AS a
 			INNER JOIN company_product AS b ON a.company_id=b.company_id
+			INNER JOIN company_report_permission AS p ON p.company_id = a.company_id
+			INNER JOIN chart_permission AS cp ON cp.chart_permission_id = p.chart_permission_id
 			LEFT JOIN admin AS c ON b.seller_id=c.admin_id
-			WHERE a.company_id=? AND b.product_id = 2  GROUP BY b.company_id `
+			WHERE a.company_id=? AND b.product_id = 2 
+			OR (a.company_id = ? AND  cp.permission_name = '策略' ) 
+			GROUP BY b.company_id `
 	o := orm.NewOrm()
-	err = o.Raw(sql, companyId).QueryRow(&item)
+	err = o.Raw(sql, companyId, companyId).QueryRow(&item)
 	return
 }
 
@@ -37,10 +50,12 @@ func GetCountCompanyDetailByIdGroup(companyId int) (count int, err error) {
 	sql := ` SELECT COUNT(1) AS count
             FROM company AS a
 			INNER JOIN company_product AS b ON a.company_id=b.company_id
+			INNER JOIN company_report_permission AS p ON p.company_id = a.company_id
+			INNER JOIN chart_permission AS cp ON cp.chart_permission_id = p.chart_permission_id
 			LEFT JOIN admin AS c ON b.seller_id=c.admin_id
-			WHERE a.company_id=? AND b.product_id = 2  `
+			WHERE a.company_id=? AND b.product_id = 2   OR (a.company_id = ? AND  cp.permission_name = '策略' )   `
 	o := orm.NewOrm()
-	err = o.Raw(sql, companyId).QueryRow(&count)
+	err = o.Raw(sql, companyId, companyId).QueryRow(&count)
 	return
 }
 
@@ -65,7 +80,6 @@ func GetCompanyPermission(companyId int) (permission string, err error) {
 			INNER JOIN chart_permission AS b ON a.chart_permission_id=b.chart_permission_id
 			INNER JOIN company_product AS c ON a.company_id=c.company_id AND a.product_id=c.product_id
 			WHERE  a.company_id=?
-			AND c.product_id = 2
 			AND c.is_suspend=0
             AND b.cygx_auth=1
 			AND c.status IN('正式','试用','永续')
@@ -92,10 +106,13 @@ func GetCompanyDetailAllById(companyId int) (item *CompanyDetail, err error) {
 	sql := ` SELECT a.company_id,a.company_name,b.status,b.seller_id,b.seller_name,c.mobile 
             FROM company AS a
 			INNER JOIN company_product AS b ON a.company_id=b.company_id
+			INNER JOIN company_report_permission AS p ON p.company_id = a.company_id
+			INNER JOIN chart_permission AS cp ON cp.chart_permission_id=p.chart_permission_id
 			LEFT JOIN admin AS c ON b.seller_id=c.admin_id
-			WHERE a.company_id=? AND b.product_id = 2  `
+			WHERE a.company_id=? AND cp.cygx_auth=1
+			OR (a.company_id = ? AND  cp.permission_name = '策略' )` // 兼容永续状态
 	//WHERE a.company_id=?  AND b.status IN('正式','试用','永续')`
 	o := orm.NewOrm()
-	err = o.Raw(sql, companyId).QueryRow(&item)
+	err = o.Raw(sql, companyId, companyId).QueryRow(&item)
 	return
 }

+ 5 - 8
services/activity.go

@@ -172,7 +172,7 @@ func SendEmailFileToExpert(cont context.Context) (err error) {
 		//创建excel
 		dir, errFile := os.Executable()
 		exPath := filepath.Dir(dir)
-		downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
+		downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + utils.GetRandDigit(5) + ".xlsx"
 		xlsxFile := xlsx.NewFile()
 		if errFile != nil {
 			msg = "生成文件失败Err:" + errFile.Error()
@@ -240,23 +240,20 @@ func SendEmailFileToExpert(cont context.Context) (err error) {
 		} else if activityInfo.ChartPermissionName == "策略" || activityInfo.ChartPermissionNames == "研选" {
 			touser = utils.EmailStrategy
 		}
-		haveSuccess := utils.SendEmailHaveFile(title, content, fileName, touser)
-		time.Sleep(time.Duration(2) * time.Second) //延迟两秒,避免过多活动的时候邮件发送没有内容
-		defer func() {
-			os.Remove(downLoadnFilePath)
-		}()
-		if haveSuccess {
+		//haveSuccess := utils.SendEmailHaveFile(title, content, fileName, touser)
+		sendResult := utils.SendEmailByHongze(title, content, touser, fileName, title+".xlsx")
+		if sendResult {
 			errFile = models.UPdateActivityIdToSendFile(v.ActivityId)
 			if errFile != nil {
 				msg = "获取失败,Err:" + errFile.Error()
 				return
 			}
+			os.Remove(downLoadnFilePath)
 		} else {
 			go utils.SendEmail("发送附件模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+activityInfo.ActivityName, utils.EmailSendToUsers)
 			utils.FileLog.Info("发送附件模版消息失败,Err:%s", activityInfo.ActivityName)
 		}
 	}
-	fmt.Println("发送附件完成")
 	return
 }
 

+ 62 - 62
services/user.go

@@ -406,7 +406,7 @@ func AddUserRecord(openId, unionId, nickName, realName, province, city, country,
 	return
 }
 
-//预约外呼名单,会前1小时自动发送邮件给专家组
+//每天新增,删除的白名单(弃用)
 func SendEmailUserWhiteList(cont context.Context) (err error) {
 	var msg string
 	var fieldStr string
@@ -589,13 +589,11 @@ func SendEmailUserWhiteList(cont context.Context) (err error) {
 	return
 }
 
-//预约外呼名单,会前1小时自动发送邮件给专家组
+//每天新增,删除的白名单
 func SendEmailUserWhiteListChange(cont context.Context) (err error) {
 	var msg string
 	var fieldStr string
 	var condition string
-	//var mobileStr string
-	//var touser string
 	defer func() {
 		if err != nil {
 			fmt.Println("err:", err, time.Now())
@@ -636,16 +634,16 @@ func SendEmailUserWhiteListChange(cont context.Context) (err error) {
 		msg = "获取失败,Err:" + err.Error()
 		return
 	}
-
 	var rep models.UserWhiteListRep
+	var repList []*models.UserWhiteList
 	for _, v := range list2 {
-		list1 = append(list1, v)
+		repList = append(list1, v)
 	}
-	rep.List = list1
+	rep.List = repList
 	//创建excel
 	dir, errFile := os.Executable()
 	exPath := filepath.Dir(dir)
-	downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
+	downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + utils.GetRandDigit(5) + ".xlsx"
 	xlsxFile := xlsx.NewFile()
 	if errFile != nil {
 		msg = "生成文件失败Err:" + errFile.Error()
@@ -738,19 +736,17 @@ func SendEmailUserWhiteListChange(cont context.Context) (err error) {
 	title := time.Now().Format("2006-01-02") + "新增白名单用户"
 	content := time.Now().Format("2006-01-02") + "新增白名单用户"
 	fileName := downLoadnFilePath
+	var sendResult bool
 	if len(rep.List) > 0 {
-		go utils.SendEmailHaveFile(title, content, fileName, utils.EmaiWhiteUserList)
+		sendResult = utils.SendEmailByHongze(title, content, utils.EmaiWhiteUserList, fileName, title+".xlsx")
+		//sendResult = utils.SendEmailByHongze(title, content, "cxzhang@hzinsights.com", fileName, title+".xlsx")
 	}
-	//go utils.SendEmailHaveFile(title, content, fileName, "cxzhang@hzinsights.com")
-	//go utils.SendEmailHaveFile(title, content, fileName, "tshen@hzinsights.com")
-	time.Sleep(time.Duration(2) * time.Second) //延迟两秒,避免过多活动的时候邮件发送没有内容
-	defer func() {
-		os.Remove(downLoadnFilePath)
-	}()
+	fmt.Println(sendResult)
+	os.Remove(downLoadnFilePath)
 	//创建冻结excel
 	dir, errFile = os.Executable()
 	exPath = filepath.Dir(dir)
-	downLoadnFilePaths := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
+	downLoadnFilePaths := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + utils.GetRandDigit(5) + ".xlsx"
 	xlsxFile = xlsx.NewFile()
 	if errFile != nil {
 		msg = "生成文件失败Err:" + errFile.Error()
@@ -856,59 +852,63 @@ func SendEmailUserWhiteListChange(cont context.Context) (err error) {
 	title = time.Now().Format("2006-01-02") + "删除白名单用户"
 	content = time.Now().Format("2006-01-02") + "删除白名单用户"
 	fileName = downLoadnFilePaths
+	var sendResult2 bool
 	if len(listFrozen) > 0 {
-		go utils.SendEmailHaveFile(title, content, fileName, utils.EmaiWhiteUserList)
-	}
-
-	//go utils.SendEmailHaveFile(title, content, fileName, "cxzhang@hzinsights.com")
-	time.Sleep(time.Duration(2) * time.Second) //延迟两秒,避免过多活动的时候邮件发送没有内容
-	defer func() {
-		os.Remove(downLoadnFilePaths)
-	}()
-	if len(list1) > 0 {
-		for _, v := range list1 {
-			item := new(models.WxUserWhite)
-			item.Mobile = v.Mobile
-			item.CountryCode = v.CountryCode
-			item.CreatedTime = time.Now()
-			item.CompanyName = v.CompanyName
-			item.PermissionName = v.Permission
-			item.UserCreatedTime = v.CreatedTime
-			item.RealName = v.RealName
-			item.SellerName = v.SellerName
-			item.Status = v.Status
-			_, err = models.AddWxUserWhite(item)
-			if err != nil {
-				msg = "获取失败,Err:" + err.Error()
-				return
+		sendResult2 = utils.SendEmailByHongze(title, content, utils.EmaiWhiteUserList, fileName, title+".xlsx")
+		//sendResult2 = utils.SendEmailByHongze(title, content, "cxzhang@hzinsights.com", fileName, title+".xlsx")
+	}
+	fmt.Println(sendResult2)
+	os.Remove(downLoadnFilePaths)
+	if sendResult {
+		fmt.Println(len(list1))
+		if len(list1) > 0 {
+			for _, v := range list1 {
+				item := new(models.WxUserWhite)
+				item.Mobile = v.Mobile
+				item.CountryCode = v.CountryCode
+				item.CreatedTime = time.Now()
+				item.CompanyName = v.CompanyName
+				item.PermissionName = v.Permission
+				item.UserCreatedTime = v.CreatedTime
+				item.RealName = v.RealName
+				item.SellerName = v.SellerName
+				item.Status = v.Status
+				_, err = models.AddWxUserWhite(item)
+				if err != nil {
+					msg = "获取失败,Err:" + err.Error()
+					return
+				}
 			}
 		}
-	}
-	if len(list2) > 0 {
-		for _, v := range list2 {
-			item := new(models.WxUserWhite)
-			item.OutboundMobile = v.Mobile
-			item.OutboundCountryCode = v.CountryCode
-			item.CreatedTime = time.Now()
-			item.CompanyName = v.CompanyName
-			item.PermissionName = v.Permission
-			item.UserCreatedTime = v.CreatedTime
-			item.RealName = v.RealName
-			item.SellerName = v.SellerName
-			item.Status = v.Status
-			_, err = models.AddWxUserWhite(item)
-			if err != nil {
-				msg = "获取失败,Err:" + err.Error()
-				return
+		if len(list2) > 0 {
+			fmt.Println(len(list2))
+			for _, v := range list2 {
+				item := new(models.WxUserWhite)
+				item.OutboundMobile = v.Mobile
+				item.OutboundCountryCode = v.CountryCode
+				item.CreatedTime = time.Now()
+				item.CompanyName = v.CompanyName
+				item.PermissionName = v.Permission
+				item.UserCreatedTime = v.CreatedTime
+				item.RealName = v.RealName
+				item.SellerName = v.SellerName
+				item.Status = v.Status
+				_, err = models.AddWxUserWhite(item)
+				if err != nil {
+					msg = "获取失败,Err:" + err.Error()
+					return
+				}
 			}
 		}
 	}
 
-	for _, v := range listFrozen {
-		err = models.DeleteWxUserWhite(v)
-		if err != nil {
-			msg = "删除信息失败,Err:" + err.Error()
-			return
+	if sendResult2 {
+		for _, v := range listFrozen {
+			err = models.DeleteWxUserWhite(v)
+			if err != nil {
+				msg = "删除信息失败,Err:" + err.Error()
+				return
+			}
 		}
 	}
 	fmt.Println("发送附件完成", len(listFrozen))

+ 39 - 0
utils/email.go

@@ -1,7 +1,9 @@
 package utils
 
 import (
+	"fmt"
 	"gopkg.in/gomail.v2"
+	"mime"
 	"strings"
 )
 
@@ -86,3 +88,40 @@ func SendEmailHaveFile(title, content string, fileName, touser string) bool {
 	}
 	return true
 }
+
+//发送邮件
+func SendEmailByHongze(title, content string, touser, attachPath, attachName string) bool {
+	var arr []string
+	sub := strings.Index(touser, ";")
+	if sub >= 0 {
+		spArr := strings.Split(touser, ";")
+		for _, v := range spArr {
+			arr = append(arr, v)
+		}
+	} else {
+		arr = append(arr, touser)
+	}
+	m := gomail.NewMessage()
+
+	m.SetHeader("From", "public@hzinsights.com")
+	m.SetHeader("To", arr...)
+	m.SetHeader("Subject", title)
+	m.SetBody("text/html", content)
+
+	//body := new(bytes.Buffer)
+	if attachPath != "" {
+		m.Attach(attachPath,
+			gomail.Rename(attachName),
+			gomail.SetHeader(map[string][]string{
+				"Content-Disposition": []string{
+					fmt.Sprintf(`attachment; filename="%s"`, mime.QEncoding.Encode("UTF-8", attachName)),
+				},
+			}))
+	}
+	d := gomail.NewDialer("smtp.mxhichina.com", 465, "public@hzinsights.com", "Hzinsights2018")
+	if err := d.DialAndSend(m); err != nil {
+		fmt.Println("send err:", err.Error())
+		return false
+	}
+	return true
+}