|
@@ -0,0 +1,214 @@
|
|
|
+package services
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+ "hongze/hongze_task/models"
|
|
|
+ "hongze/hongze_task/utils"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+//客户自动冻结->试用两个月结束后,进入冻结
|
|
|
+func CompanyFreeze() (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err!=nil {
|
|
|
+ go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "试用两个月结束后,进入冻结 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ endDate := time.Now().Format(utils.FormatDate)
|
|
|
+ items, err := models.GetCompanyNeedFreeze(endDate)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("GetCompanyNeedFreeze Err:" + err.Error())
|
|
|
+ utils.FileLog.Info("GetCompanyNeedFreeze Err:%s" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for k, v := range items {
|
|
|
+ fmt.Println(k, v.CompanyId)
|
|
|
+ err = models.CompanyFreeze(v.CompanyId, v.ProductId)
|
|
|
+ if err != nil {
|
|
|
+ utils.FileLog.Info("CompanyFreeze Err:%s" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //新增操作记录
|
|
|
+ {
|
|
|
+ remark := "试用转冻结"
|
|
|
+ operation := "freeze"
|
|
|
+ approveContent := "冻结"
|
|
|
+ AddCompanyOperationRecord(v.CompanyId, utils.AdminId, v.ProductId, utils.AdminId, v.CompanyName,
|
|
|
+ v.ProductName, utils.RealName, remark, operation, approveContent, approveContent, "", v.Status)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//客户自动流失->冻结超3个月未处理
|
|
|
+func CompanyLoss() (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err!=nil {
|
|
|
+ go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "自动流失->冻结超3个月未处理 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ endDate := time.Now().Format(utils.FormatDate)
|
|
|
+ items, err := models.GetCompanyNeedLoss(endDate)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("GetCompanyNeedLoss Err:" + err.Error())
|
|
|
+ utils.FileLog.Info("GetCompanyNeedLoss Err:%s" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for k, v := range items {
|
|
|
+ fmt.Println(k, v.CompanyId)
|
|
|
+ err = models.CompanyLoss(v.CompanyId, v.ProductId)
|
|
|
+ if err != nil {
|
|
|
+ utils.FileLog.Info("CompanyLoss Err:%s" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //新增操作记录
|
|
|
+ {
|
|
|
+ remark := "冻结转流失"
|
|
|
+ operation := "loss"
|
|
|
+ approveContent := "流失"
|
|
|
+ AddCompanyOperationRecord(v.CompanyId, utils.AdminId, v.ProductId, utils.AdminId, v.CompanyName,
|
|
|
+ v.ProductName, utils.RealName, remark, operation, approveContent, approveContent, "", v.Status)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//正式客户自动试用->合同到期未续约转试用
|
|
|
+func CompanyTryOut() (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err!=nil {
|
|
|
+ go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "正式客户自动试用->合同到期未续约转试用 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ endDate := time.Now().Format(utils.FormatDate)
|
|
|
+ items, err := models.GetCompanyNeedTryOut(endDate)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("GetCompanyNeedTryOut Err:" + err.Error())
|
|
|
+ utils.FileLog.Info("GetCompanyNeedTryOut Err:%s" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for k, v := range items {
|
|
|
+ fmt.Println(k, v.CompanyId)
|
|
|
+ err = models.CompanyTryOut(v.CompanyId, v.ProductId)
|
|
|
+ if err != nil {
|
|
|
+ utils.FileLog.Info("CompanyLoss Err:%s" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //新增操作记录
|
|
|
+ {
|
|
|
+ remark := "正式转试用"
|
|
|
+ operation := "try_out"
|
|
|
+ approveContent := "试用"
|
|
|
+ AddCompanyOperationRecord(v.CompanyId, utils.AdminId, v.ProductId, utils.AdminId, v.CompanyName,
|
|
|
+ v.ProductName, utils.RealName, remark, operation, approveContent, approveContent, "", v.Status)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func AddCompanyOperationRecord(companyId, sysUserId, productId, approveAdminId int, companyName, productName, sysUserRealName, remark, operation, approveContent, approveUserRealName, approveRemark, status string) (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode, "services:AddCompanyOperationRecord;Err"+err.Error(), utils.EmailSendToUsers)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ record := new(models.CompanyOperationRecord)
|
|
|
+ record.CompanyId = companyId
|
|
|
+ record.CompanyName = companyName
|
|
|
+ record.SysUserId = sysUserId
|
|
|
+ record.SysRealName = sysUserRealName
|
|
|
+ record.Remark = remark
|
|
|
+ record.Operation = operation
|
|
|
+ record.CreateTime = time.Now()
|
|
|
+ record.ProductId = productId
|
|
|
+ record.ProductName = productName
|
|
|
+ record.ApproveUserId = approveAdminId
|
|
|
+ record.ApproveRealName = approveUserRealName
|
|
|
+ record.ApproveContent = approveContent
|
|
|
+ record.ApproveRemark = approveRemark
|
|
|
+ record.Status = status
|
|
|
+ _, err = models.AddCompanyOperationRecord(record)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//客户老数据同步
|
|
|
+func CompanyOldDataSync() {
|
|
|
+ companyItems, err := models.GetCompanyOldDataSync()
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("GetCompanyOldDataSync Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ productId := 1
|
|
|
+ productName := "ficc"
|
|
|
+ for k, v := range companyItems {
|
|
|
+ fmt.Println(k, v.CompanyName, v.CompanyId)
|
|
|
+ productItem := new(models.CompanyProduct)
|
|
|
+ productItem.CompanyId = v.CompanyId
|
|
|
+ productItem.ProductId = productId
|
|
|
+ productItem.ProductName = productName
|
|
|
+ productItem.CompanyName = v.CompanyName
|
|
|
+ //客户标签,1:付费客户,2:试用客户,3:流失客户,4:潜在客户,5:永续
|
|
|
+ //'试用','永续','冻结','流失','正式','潜在'
|
|
|
+ status := ""
|
|
|
+ if v.CompanyType == 1 {
|
|
|
+ status = "正式"
|
|
|
+ } else if v.CompanyType == 2 {
|
|
|
+ status = "试用"
|
|
|
+ } else if v.CompanyType == 3 {
|
|
|
+ status = "流失"
|
|
|
+ } else if v.CompanyType == 4 {
|
|
|
+ status = "潜在"
|
|
|
+ } else if v.CompanyType == 5 {
|
|
|
+ status = "永续"
|
|
|
+ } else {
|
|
|
+ fmt.Println("无效的客户状态:"+status, v.CompanyType)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if status == "" {
|
|
|
+ fmt.Println("无效的客户状态:"+status, v.CompanyType)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ productItem.Status = status
|
|
|
+ //获取销售
|
|
|
+ seller, err := models.GetAdminByAdminId(v.SellsId)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ fmt.Println("获取销售失败,Err:"+err.Error(), v.SellsId)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var adminId, groupId, departmentId int
|
|
|
+ var sellerRealName string
|
|
|
+ if seller == nil {
|
|
|
+ fmt.Println("销售不存在:", v.SellsId)
|
|
|
+ //return
|
|
|
+ }else{
|
|
|
+ adminId=seller.AdminId
|
|
|
+ sellerRealName=seller.RealName
|
|
|
+ groupId=seller.GroupId
|
|
|
+ departmentId=seller.DepartmentId
|
|
|
+ }
|
|
|
+ productItem.SellerId = adminId
|
|
|
+ productItem.SellerName = sellerRealName
|
|
|
+ productItem.GroupId = groupId
|
|
|
+ productItem.DepartmentId = departmentId
|
|
|
+ productItem.CreateTime = time.Now()
|
|
|
+ productItem.ModifyTime = time.Now()
|
|
|
+ productItem.StartDate = v.StartDate
|
|
|
+ productItem.EndDate = v.EndDate
|
|
|
+ productItem.LoseReason = v.LoseReason
|
|
|
+ productItem.LossTime = v.LossTime
|
|
|
+ _, err = models.AddCompanyProduct(productItem)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("新增客户产品失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //权限处理
|
|
|
+ err = models.ModifyCompanyOldPermission(v.StartDate, v.EndDate, productName, v.CompanyId, productId)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("客户权限处理失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if k > 500 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|