123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558 |
- package services
- import (
- "eta/eta_api/models"
- "eta/eta_api/services/data"
- "eta/eta_api/utils"
- "fmt"
- "strings"
- "time"
- )
- func Task() {
- fmt.Println("task start")
- {
- // 修复客户试用数据
- //FixCompanyUpdateData()
- //FixCompanyTryDay()
- //FixCompanyTryDay()
- //StaticCompanyTryDay()
- //return
- }
- //FixPermissionStatus()
- //GetCompanyInfo()
- //ReportCount()
- //windSourceUrl:=`http://47.100.166.55:7002/edbInfo/wind/?EdbCode=M0001427&StartDate=2020-11-01&EndDate=2021-03-01`
- //data.AddAllArticle()
- //data.GetSmmIndex()
- //data.GetSmmIndexData()
- go AutoInsertLogToDB()
- //手工数据表格导入后的指标库刷新
- go ImportManualDataRefresh()
- // 加入上海钢联指标数据之后的刷新
- go MysteelChemicalDataAdd()
- //修复用户关注标识
- //GetWxUsersSubscribe()
- go AutoInsertAdminOperateRecordToDB()
- // 指标刷新
- go data.HandleEdbRefreshQueue()
- // 进行指标替换操作
- go DealReplaceEdbCache()
- // TODO:修复权限
- //FixEnCompanyPermission()
- fmt.Println("task end")
- }
- //// 每日发布晨报
- //func AutoPublishDayReport() {
- // defer func() {
- // if err := recover(); err != nil {
- // fmt.Println("[AutoPublishDayReport]", err)
- // }
- // }()
- //
- // // 每日8:42发布晨报
- // ticker := time.Tick(50 * time.Second)
- // for range ticker {
- // nowTime := time.Now()
- // clock := nowTime.Format("1504")
- // if clock == "0842" {
- // if err := PublishTodayDayReport(); err != nil {
- // go alarm_msg.SendAlarmMsg(fmt.Sprint("每日晨报自动发送 AutoPublishDayReport ERR:", err), 3)
- // //utils.SendEmail(utils.APPNAME+" "+utils.RunMode+" 失败提醒", fmt.Sprint("AutoPublishDayReport ERR:", err), utils.EmailSendToUsers)
- // }
- // }
- // }
- //}
- // ImportManualDataRefresh 导入手工数据后的刷新
- func ImportManualDataRefresh() {
- defer func() {
- if err := recover(); err != nil {
- fmt.Println("[ImportManualDataRefresh]", err)
- }
- }()
- for {
- utils.Rc.Brpop(utils.CACHE_IMPORT_MANUAL_DATA, func(b []byte) {
- edbCode := string(b)
- edbCode = strings.TrimPrefix(edbCode, `"`)
- edbCode = strings.TrimSuffix(edbCode, `"`)
- data.RefreshManualData(edbCode)
- })
- }
- }
- // MysteelChemicalDataAdd 加入上海钢联指标数据之后的刷新
- func MysteelChemicalDataAdd() {
- defer func() {
- if err := recover(); err != nil {
- fmt.Println("[ImportManualDataRefresh]", err)
- }
- }()
- for {
- utils.Rc.Brpop(utils.CACHE_MYSTEEL_CHEMICAL_ADD_DATA, func(b []byte) {
- edbCode := string(b)
- edbCode = strings.TrimPrefix(edbCode, `"`)
- edbCode = strings.TrimSuffix(edbCode, `"`)
- data.RefreshMysteelChemicalData(edbCode)
- })
- }
- }
- //func init() {
- // fmt.Println("start task init")
- // UpdateEnglishEmailLogErrMsg()
- // fmt.Println("end task init")
- //}
- //
- //// UpdateEnglishEmailLogErrMsg 更新英文邮件日志的ErrMsg(研报后台4.2上线后执行, 仅一次)
- //func UpdateEnglishEmailLogErrMsg() {
- // var cond string
- // var pars []interface{}
- // list, e := models.GetEnglishReportEmailLogList(cond, pars)
- // if e != nil {
- // fmt.Println("获取日志列表失败")
- // return
- // }
- // for _, v := range list {
- // if v.SendStatus != 0 || v.Source != 1 || v.Result == "" || v.ErrMsg != "" {
- // continue
- // }
- // // 取出错误信息
- // fmt.Printf("正在更新%d\n", v.Id)
- // r := new(AliyunEmailResult)
- // if e = json.Unmarshal([]byte(v.Result), &r); e != nil {
- // fmt.Println("JSON解析报错了1" + e.Error())
- // continue
- // }
- // rd := new(AliyunEmailResultData)
- // res := strings.Replace(r.Data, `\`, ``, -1)
- // if e = json.Unmarshal([]byte(res), &rd); e != nil {
- // fmt.Println("JSON解析报错了2" + e.Error())
- // continue
- // }
- // v.ErrMsg = rd.Message
- // if e = v.Update([]string{"ErrMsg"}); e != nil {
- // fmt.Println("更新失败了" + e.Error())
- // continue
- // }
- // }
- // fmt.Println("更新成功")
- //}
- //func FixCompanyUpdateData1() {
- // list, err := company.GetCompanyProductUpdateLogList()
- // if err != nil {
- // fmt.Println("获取客户变更数据失败:", err)
- // return
- // }
- //
- // nowTime := time.Now()
- // for _, v := range list {
- // //item, tmpErr := company.GetCompanyProductLogItem(v.CompanyId, v.ProductId, v.CreateTime)
- // //if tmpErr != nil {
- // // fmt.Println(v.Id, "找数据,", tmpErr)
- // // continue
- // //}
- //
- // //permissionList := make([]*company.CompanyReportPermission, 0)
- // //switch v.Source {
- // //case "add", "receive", "thaw", "delay", "apply_receive":
- // //
- // //}
- // permissionList, err := company.GetCompanyReportPermission(v.CompanyId, v.ProductId)
- // if err != nil {
- // fmt.Println("err:", err)
- // continue
- // }
- //
- // startDate := v.CreateTime
- // endDate := v.CreateTime.AddDate(0, 2, 0)
- // isStop := 1
- // realEndDate := endDate
- // if realEndDate.After(nowTime) {
- // realEndDate = nowTime
- // isStop = 0
- // }
- // for _, permission := range permissionList {
- // permission.StartDate = startDate.Format(utils.FormatDate)
- // permission.EndDate = v.CreateTime.Format(utils.FormatDate)
- // }
- // companyProductTryOutUpdateLogItem := &company.CompanyProductTryOutUpdateLog{
- // Id: 0,
- // CompanyId: v.CompanyId,
- // ProductId: v.ProductId,
- // SellerId: v.SellerId,
- // SellerName: v.SellerName,
- // Source: v.Source,
- // StartDate: startDate,
- // EndDate: endDate,
- // RealEndDate: realEndDate,
- // IsStop: isStop,
- // CreateTime: v.CreateTime,
- // }
- // err = company.AddCompanyProductTryOutUpdateLog(companyProductTryOutUpdateLogItem, permissionList)
- // }
- // //fmt.Println("结束")
- //}
- //func FixCompanyUpdateData2() {
- // list, err := company.GetTryOutCompanyOperationRecordList()
- // if err != nil {
- // fmt.Println("获取客户变更数据失败:", err)
- // return
- // }
- //
- // nowTime := time.Now()
- // for _, v := range list {
- // //item, tmpErr := company.GetCompanyProductLogItem(v.CompanyId, v.ProductId, v.CreateTime)
- // //if tmpErr != nil {
- // // fmt.Println(v.Id, "找数据,", tmpErr)
- // // continue
- // //}
- //
- // //permissionList := make([]*company.CompanyReportPermission, 0)
- // //switch v.Source {
- // //case "add", "receive", "thaw", "delay", "apply_receive":
- // //
- // //}
- // permissionList, err := company.GetCompanyReportPermission(v.CompanyId, v.ProductId)
- // if err != nil {
- // fmt.Println("err:", err)
- // continue
- // }
- //
- // startDate := v.CreateTime
- // endDate := v.CreateTime.AddDate(0, 2, 0)
- // isStop := 1
- // realEndDate := endDate
- // if realEndDate.After(nowTime) {
- // realEndDate = nowTime
- // isStop = 0
- // }
- // for _, permission := range permissionList {
- // permission.StartDate = startDate.Format(utils.FormatDate)
- // permission.EndDate = v.CreateTime.Format(utils.FormatDate)
- // }
- // sellerName := ``
- // {
- // sysUser, _ := system.GetSysAdminById(v.SellerId)
- // if sysUser != nil {
- // sellerName = sysUser.RealName
- // }
- // }
- // companyProductTryOutUpdateLogItem := &company.CompanyProductTryOutUpdateLog{
- // Id: 0,
- // CompanyId: v.CompanyId,
- // ProductId: v.ProductId,
- // SellerId: v.SellerId,
- // SellerName: sellerName,
- // Source: "formal_to_try_out",
- // StartDate: startDate,
- // EndDate: endDate,
- // RealEndDate: realEndDate,
- // IsStop: isStop,
- // CreateTime: v.CreateTime,
- // }
- // err = company.AddCompanyProductTryOutUpdateLog(companyProductTryOutUpdateLogItem, permissionList)
- // }
- // fmt.Println("结束")
- //}
- // FixCompanyTryDay 修复试用天数
- //func FixCompanyTryDay() {
- // list, err := company.GetCompanyProductTryOutUpdateGroup()
- // if err != nil {
- // fmt.Println("获取客户变更数据失败:", err)
- // return
- // }
- //
- // lenList := len(list)
- // for k, v := range list {
- // fmt.Println("剩余", lenList-k-1, "条数据修复")
- // companyProduct, tmpErr := company.GetCompanyProductByCompanyIdAndProductId(v.CompanyId, v.ProductId)
- // if tmpErr != nil {
- // fmt.Println("company_id:", v.CompanyId, ";product_id:", v.ProductId, ";找不到对应的客户,Err:", tmpErr)
- // continue
- // }
- //
- // logList, err := company.GetCompanyProductTryOutUpdateList(v.CompanyId, v.ProductId)
- // if err != nil {
- // fmt.Println("查找客户日志失败,err:", err)
- // continue
- // }
- //
- // //lenLog := len(logList)
- // var day int //实际试用天数
- // var endDate time.Time
- // for _, log := range logList {
- // startDate := log.StartDate
- // if endDate.IsZero() {
- // endDate = log.RealEndDate
- // day = utils.GetTimeSubDay(startDate, log.RealEndDate) + 1
- // } else {
- // if log.RealEndDate.After(endDate) {
- // if endDate.After(startDate) {
- // startDate = endDate
- // }
- // if startDate.Equal(log.EndDate) {
- // day += utils.GetTimeSubDay(startDate, log.RealEndDate)
- // } else {
- // day += utils.GetTimeSubDay(startDate, log.RealEndDate) + 1
- // }
- // endDate = log.RealEndDate
- // }
- // }
- // }
- // companyProduct.TryOutDayTotal = day
- // companyProduct.Update([]string{"TryOutDayTotal"})
- // }
- // fmt.Println("结束")
- //}
- // StaticCompanyTryDay 定时任务每天更新试用天数
- //func StaticCompanyTryDay() {
- // list, err := company.GetCompanyProductTryOutUpdateNoStopGroup()
- // if err != nil {
- // fmt.Println("获取客户变更数据失败:", err)
- // return
- // }
- //
- // lenList := len(list)
- // for k, v := range list {
- // isAdd := false //是否要增加一天,默认不加
- // fmt.Println("剩余", lenList-k-1, "条数据修复")
- // permissionList, tmpErr := company.GetCompanyReportPermissionByStatus(v.CompanyId, v.ProductId, "试用")
- // if tmpErr == nil {
- // fmt.Println("company_id:", v.CompanyId, ";product_id:", v.ProductId, ";寻找对应的试用品种失败,Err:", tmpErr)
- // continue
- // }
- // currPermissionIdList := make([]int, 0) //当前试用的品种
- // for _, permission := range permissionList {
- // currPermissionIdList = append(currPermissionIdList, permission.ChartPermissionId)
- // }
- //
- // //获取所有未停止的记录列表
- // logList, err := company.GetCompanyProductTryOutUpdateNoStopListByEndDate(v.CompanyId, v.ProductId)
- // if err != nil {
- // fmt.Println("查找客户日志失败,err:", err)
- // continue
- // }
- //
- // logPermissionIdList := make([]int, 0) //当前日志中的试用的品种
- // for _, log := range logList {
- // //获取所有未停止的品种试用记录列表
- // logPermissionList, tmpErr := company.GetCompanyProductTryOutPermissionUpdateNoStopListByEndDate(log.Id)
- // if tmpErr != nil {
- // fmt.Println("查找客户品种变更日志失败,err:", tmpErr)
- // continue
- // }
- // lenLogPermissionList := len(logPermissionList) //当前日志存在试用的品种数量
- // stopPermission := 0 //当前日志需要停止的品种数量
- //
- // currTime := time.Now() //当前时间
- // for _, logPermission := range logPermissionList {
- // if utils.InArrayByInt(logPermissionIdList, logPermission.ChartPermissionId) {
- // // 如果已经被其他记录使用了,那么就将当前记录给标记停止
- // logPermission.IsStop = 1
- //
- // // 如果当前时间晚于结束日期,那么实际结束日期就是今天之前一天,否则就是当天
- // if currTime.After(logPermission.EndDate) {
- // logPermission.RealEndDate = currTime.AddDate(0, 0, -1)
- // } else {
- // logPermission.RealEndDate = time.Now()
- // }
- // logPermission.Update([]string{"IsStop", "RealEndDate"})
- // stopPermission++
- // continue
- // } else if !utils.InArrayByInt(currPermissionIdList, logPermission.ChartPermissionId) {
- // // 如果该品种不在当前客户的品种里面,那么也要将当前记录给标记停止
- // logPermission.IsStop = 1
- // // 如果当前时间晚于结束日期,那么实际结束日期就是今天之前一天,否则就是当天
- // if currTime.After(logPermission.EndDate) {
- // logPermission.RealEndDate = currTime.AddDate(0, 0, -1)
- // } else {
- // logPermission.RealEndDate = time.Now()
- // }
- // logPermission.Update([]string{"IsStop", "RealEndDate"})
- // stopPermission++
- // continue
- // }
- //
- // // 剩下的说明还处于试用状态,需要添加1天试用期,且需要把该品种加入到当前日志中的试用的品种列表
- // isAdd = true
- // logPermissionIdList = append(logPermissionIdList, logPermission.ChartPermissionId)
- // }
- //
- // //如果当前日志存在试用的品种数量 == 当前日志需要停止的品种数量
- // // 那么当前日志也是处于停用状态
- // if lenLogPermissionList == stopPermission {
- // log.IsStop = 1
- // // 如果当前时间晚于结束日期,那么实际结束日期就是今天之前一天,否则就是当天
- // if currTime.After(log.EndDate) {
- // log.RealEndDate = currTime.AddDate(0, 0, -1)
- // } else {
- // log.RealEndDate = time.Now()
- // }
- // log.Update([]string{"IsStop", "RealEndDate"})
- // }
- //
- // }
- //
- // // 如果需要添加,那么将该客户品种添加1天
- // if isAdd {
- //
- // }
- // // 更新客户产品的试用天数
- // tmpErr = company.AddCompanyProductTryOutDayTotal(v.CompanyId, v.ProductId)
- // if tmpErr != nil {
- // fmt.Println("company_id:", v.CompanyId, ";product_id:", v.ProductId, ";更新客户产品的试用天数,Err:", tmpErr)
- // continue
- // }
- // }
- // fmt.Println("结束")
- //}
- //func Task2() {
- // fmt.Println("task start")
- //
- // //_, _ = maycur.GetPublicOfferingSaleLeader()
- // //_ = maycur.TestSyncCompanyProfile()
- // //_ = maycur.SyncCompanyProfile()
- // //_ = maycur.ImportExcelEmployeeId()
- // //_ = maycur.ApiTest()
- // //_ = maycur.ApiTest2()
- // fmt.Println("task end")
- //}
- // FixEnCompanyPermission 英文权限上线时修复英文客户拥有所有权限(一次性)
- func FixEnCompanyPermission() {
- var err error
- defer func() {
- if err != nil {
- fmt.Println("FixEnCompanyPermission Err: ", err.Error())
- }
- }()
- // 获取正式客户
- companies := make([]*models.EnglishCompany, 0)
- {
- cond := ` AND status = ?`
- pars := make([]interface{}, 0)
- pars = append(pars, 1)
- list, e := models.GetEnglishCompanyList(cond, pars, "")
- if e != nil {
- err = fmt.Errorf("GetEnglishCompanyList err: %s", e.Error())
- return
- }
- companies = list
- }
- // 获取所有权限
- permissions := make([]*models.EnPermission, 0)
- {
- cond := ` AND parent_id > ?`
- pars := make([]interface{}, 0)
- pars = append(pars, 0)
- ob := new(models.EnPermission)
- list, e := ob.GetItemsByCondition(cond, pars, []string{}, "")
- if e != nil {
- err = fmt.Errorf("GetPermissionItemsByCondition err: %s", e.Error())
- return
- }
- permissions = list
- }
- for _, c := range companies {
- ps := make([]*models.EnCompanyPermission, 0)
- for _, p := range permissions {
- ps = append(ps, &models.EnCompanyPermission{
- EnCompanyId: c.CompanyId,
- EnPermissionId: p.EnPermissionId,
- CreateTime: time.Now().Local(),
- })
- }
- if e := models.ClearAndCreateEnCompanyPermissions(c.CompanyId, ps); e != nil {
- err = fmt.Errorf("ClearAndCreateEnCompanyPermissions err: %s", e.Error())
- return
- }
- }
- fmt.Println("修复完成")
- }
- // ModifyEsEnglishReport 批量修改es里的英文研报信息和线上路演信息
- func ModifyEsEnglishReport() {
- fmt.Println("开始")
- err := ModifyAllEsEnglishReportVideo()
- if err != nil {
- err = fmt.Errorf("重置es中的英文研报信息失败:ModifyAllEnglishReportInEs err: %s", err.Error())
- return
- }
- fmt.Println("结束")
- }
- //func InsertBloombergIndex() {
- // fmt.Println("开始写入")
- //
- // start := 100000
- // now := time.Now()
- // for i := 1; i <= 100; i++ {
- // fmt.Printf("写入第%d个\n", i)
- //
- // start += 1
- // index := new(data_manage.BaseFromBloombergIndex)
- // index.IndexCode = fmt.Sprintf("BLID%d", start)
- // index.IndexName = fmt.Sprintf("模拟Bloomberg-%s", index.IndexCode)
- // index.Unit = "无"
- // index.Source = utils.DATA_SOURCE_BLOOMBERG
- // index.Frequency = "日度"
- // index.StartDate = now.AddDate(0, 0, -i)
- // index.EndDate = now
- // index.CreateTime = time.Now().Local()
- // index.ModifyTime = time.Now().Local()
- // if e := index.Create(); e != nil {
- // fmt.Printf("新增指标失败, IndexCode: %s, err: %s", index.IndexCode, e.Error())
- // return
- // }
- //
- // insertData := make([]*data_manage.BaseFromBloombergData, 0)
- // for ii := 0; ii <= 50; ii++ {
- // indexData := new(data_manage.BaseFromBloombergData)
- // indexData.BaseFromBloombergIndexId = index.BaseFromBloombergIndexId
- // indexData.IndexCode = index.IndexCode
- // indexData.DataTime = now.AddDate(0, 0, -ii)
- // va := GenerateRandomFloat64InRange()
- // va += float64(ii)
- // indexData.Value = va
- // indexData.CreateTime = time.Now().Local()
- // indexData.ModifyTime = time.Now().Local()
- // indexData.DataTimestamp = int(indexData.DataTime.UnixNano() / 1e6)
- // insertData = append(insertData, indexData)
- // }
- // ob := new(data_manage.BaseFromBloombergData)
- // if e := ob.CreateMulti(insertData); e != nil {
- // fmt.Printf("新增指标数据失败, IndexCode: %s, err: %s", index.IndexCode, e.Error())
- // return
- // }
- // }
- //
- // fmt.Println("结束写入")
- //}
- //
- //func GenerateRandomFloat64InRange() float64 {
- // var rnd = rand.New(rand.NewSource(time.Now().UnixNano())) // 设置随机数种子
- //
- // return rnd.Float64()*11000 - 1000
- //}
|