123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- package services
- import (
- "errors"
- "fmt"
- "hongze/hongze_task/models"
- "hongze/hongze_task/utils"
- "strconv"
- "strings"
- "time"
- )
- //数据录入
- // 日度消息推送
- func FrequencyByDay() (err error) {
- defer func() {
- if err != nil {
- fmt.Println("FrequencyByDay Err:", err.Error())
- utils.FileLog.Info("FrequencyByDay err: %s", err.Error())
- }
- }()
- frequency := "日度"
- items, err := models.GetEdbInfoByFrequency(frequency)
- if err != nil {
- fmt.Println("GetFrequencyByDay err:", err.Error())
- return
- }
- if len(items) <= 0 {
- err = errors.New("没有需要推送的数据")
- return
- }
- for _, v := range items {
- noticeTime := v.NoticeTime
- if noticeTime == "" {
- err = errors.New("NoticeTime 参数错误:NoticeTime is empty ")
- return
- }
- noticeTimeArr := strings.Split(noticeTime, ":")
- if len(noticeTimeArr) < 3 {
- err = errors.New("NoticeTime 参数错误,noticeTime:" + noticeTime)
- return
- }
- noticeHour, err := strconv.Atoi(noticeTimeArr[0])
- if err != nil {
- return err
- }
- noticeMinute, err := strconv.Atoi(noticeTimeArr[1])
- if err != nil {
- return err
- }
- noticeSecond, err := strconv.Atoi(noticeTimeArr[2])
- if err != nil {
- return err
- }
- noticeSecondTotal := noticeHour*3600 + noticeMinute*60 + noticeSecond
- mbefor, _ := time.ParseDuration("-1m")
- mafter, _ := time.ParseDuration("1m")
- nowBefor := time.Now().Add(mbefor)
- nowAfter := time.Now().Add(mafter)
- nowBeforSecond := nowBefor.Hour()*3600 + nowBefor.Minute()*60 + nowBefor.Second()
- nowAfterSecond := nowAfter.Hour()*3600 + nowAfter.Minute()*60 + nowAfter.Second()
- if noticeSecondTotal >= nowBeforSecond && noticeSecondTotal <= nowAfterSecond {
- //获取用户信息
- var openId string
- admin, err := models.GetAdminByAdminId(v.UserId)
- if err != nil {
- if err.Error() == utils.ErrNoRow() {
- err = errors.New("账号不存在")
- return err
- }
- return err
- }
- openId = admin.OpenId
- //发送消息
- if openId != "" {
- openIdList := make([]*models.OpenIdList, 0)
- openIdItem := new(models.OpenIdList)
- openIdItem.OpenId = openId
- openIdList = append(openIdList, openIdItem)
- first := "数据录入提醒"
- keyword1 := v.SecName + "该更新了"
- keyword2 := "每日 " + v.NoticeTime
- remark := v.SecName + "该更新了"
- err = SendWxMsgWithFrequency(first, keyword1, keyword2, remark, openIdList)
- if err != nil {
- return err
- }
- }
- }
- }
- return
- }
- // 周度消息推送
- func FrequencyByWeek() (err error) {
- defer func() {
- if err != nil {
- fmt.Println("FrequencyByWeek Err:", err.Error())
- utils.FileLog.Info("FrequencyByWeek err: %s", err.Error())
- }
- }()
- frequency := "周度"
- nowWeekDay := utils.GetWeekDay()
- fmt.Println("nowWeekDay:", nowWeekDay)
- items, err := models.GetEdbInfoByFrequencyWeek(frequency, nowWeekDay)
- if err != nil {
- fmt.Println("GetFrequencyByDay err:", err.Error())
- return
- }
- if len(items) <= 0 {
- err = errors.New("没有需要推送的数据,FrequencyByWeek")
- return
- }
- nowDate := time.Now().Format(utils.FormatDate)
- for _, v := range items {
- //判断指标当天数据是否已录入
- dataCount, err := models.GetEdbdataCount(v.TradeCode, nowDate)
- if err != nil {
- return err
- }
- if dataCount > 0 {
- utils.FileLog.Info("%s", v.TradeCode+" :当天数据已录入,无需提醒")
- continue
- }
- count, err := models.GetEdbinfoSendMsgCount(v.UserId, v.TradeCode)
- if err != nil {
- fmt.Println("GetEdbinfoSendMsgCount Err:" + err.Error())
- return err
- }
- if count > 0 {
- fmt.Println(v.UserId, v.TradeCode, "当天已发送")
- continue
- }
- noticeTime := v.NoticeTime
- if noticeTime == "" {
- err = errors.New("NoticeTime 参数错误:NoticeTime is empty ")
- return err
- }
- weekArr := strings.Split(noticeTime, " ")
- if len(weekArr) < 2 {
- err = errors.New("NoticeTime 参数错误: " + noticeTime)
- return err
- }
- weekVal := weekArr[0]
- weekVal = strings.Trim(weekVal, " ")
- if weekVal == "" {
- err = errors.New("weekVal 参数错误: weekVal:" + weekVal)
- return err
- }
- fmt.Println("weekVal:", weekVal, " nowWeek:", nowWeekDay)
- if weekVal != nowWeekDay {
- err = errors.New("不是当前日期,不需要发送消息: weekVal:" + weekVal + "; nowWeek:" + nowWeekDay)
- return err
- }
- noticeStr := weekArr[1]
- if noticeStr == "" {
- err = errors.New("noticeStr 参数错误: noticeStr:" + noticeStr)
- return err
- }
- noticeTimeArr := strings.Split(noticeStr, ":")
- if len(noticeTimeArr) < 3 {
- err = errors.New("NoticeTime 参数错误,noticeTime:" + noticeTime)
- return err
- }
- noticeHour, err := strconv.Atoi(noticeTimeArr[0])
- if err != nil {
- return err
- }
- noticeMinute, err := strconv.Atoi(noticeTimeArr[1])
- if err != nil {
- return err
- }
- noticeSecond, err := strconv.Atoi(noticeTimeArr[2])
- if err != nil {
- return err
- }
- noticeSecondTotal := noticeHour*3600 + noticeMinute*60 + noticeSecond
- mbefor, _ := time.ParseDuration("-1m")
- mafter, _ := time.ParseDuration("1m")
- nowBefor := time.Now().Add(mbefor)
- nowAfter := time.Now().Add(mafter)
- nowBeforSecond := nowBefor.Hour()*3600 + nowBefor.Minute()*60 + nowBefor.Second()
- nowAfterSecond := nowAfter.Hour()*3600 + nowAfter.Minute()*60 + nowAfter.Second()
- if noticeSecondTotal >= nowBeforSecond && noticeSecondTotal <= nowAfterSecond {
- //获取用户信息
- var openId string
- admin, err := models.GetAdminByAdminId(v.UserId)
- if err != nil {
- if err.Error() == utils.ErrNoRow() {
- err = errors.New("账号不存在")
- return err
- }
- return err
- }
- openId = admin.OpenId
- //发送消息
- if openId != "" {
- openIdList := make([]*models.OpenIdList, 0)
- openIdItem := new(models.OpenIdList)
- openIdItem.OpenId = openId
- openIdList = append(openIdList, openIdItem)
- first := "数据录入提醒"
- keyword1 := v.SecName + "该更新了"
- keyword2 := "每周 " + v.NoticeTime
- remark := v.SecName + "该更新了"
- err = SendWxMsgWithFrequency(first, keyword1, keyword2, remark, openIdList)
- if err != nil {
- return err
- }
- //发送成功,记录发送日志
- {
- sendRecord := new(models.EdbinfoSendMsgRecord)
- sendRecord.UserId = v.UserId
- sendRecord.TradeCode = v.TradeCode
- sendRecord.CreateTime = time.Now()
- err = models.AddEdbinfoSendMsgRecord(sendRecord)
- if err != nil {
- return err
- }
- }
- }
- } else {
- utils.FileLog.Info("%s", v.TradeCode+":不在推送消息时间范围内")
- }
- }
- return
- }
- // 周度消息推送
- func FrequencyByMonth() (err error) {
- defer func() {
- if err != nil {
- fmt.Println("FrequencyByMonth Err:", err.Error())
- utils.FileLog.Info("FrequencyByMonth err: %s", err.Error())
- }
- }()
- frequency := "月度"
- items, err := models.GetEdbInfoByFrequency(frequency)
- if err != nil {
- fmt.Println("GetFrequencyByDay err:", err.Error())
- return
- }
- if len(items) <= 0 {
- err = errors.New("没有需要推送的数据")
- return
- }
- for _, v := range items {
- noticeTime := v.NoticeTime
- if noticeTime == "" {
- err = errors.New("NoticeTime 参数错误:NoticeTime is empty ")
- return
- }
- monthArr := strings.Split(noticeTime, " ")
- if len(monthArr) < 2 {
- err = errors.New("NoticeTime 参数错误: " + noticeTime)
- return
- }
- monthStr := monthArr[0]
- if monthStr == "" {
- err = errors.New("NoticeTime 参数错误: NoticeTime:" + noticeTime + ";monthStr:" + monthStr)
- return
- }
- monthVal := strings.Replace(monthStr, "日", "", -1)
- monthVal = strings.Trim(monthVal, " ")
- if monthVal == "" {
- err = errors.New("weekVal 参数错误: monthVal:" + monthVal)
- return
- }
- monthValInt, err := strconv.Atoi(monthVal)
- if err != nil {
- return err
- }
- nowDay := time.Now().Day()
- if monthValInt != nowDay {
- err = errors.New("不是当前日期,不需要发送消息: monthVal:" + monthVal + "; nowWeek:" + strconv.Itoa(nowDay))
- return err
- }
- noticeStr := monthArr[1]
- if noticeStr == "" {
- err = errors.New("noticeStr 参数错误: noticeStr:" + noticeStr)
- return err
- }
- noticeTimeArr := strings.Split(noticeStr, ":")
- if len(noticeTimeArr) < 3 {
- err = errors.New("NoticeTime 参数错误,noticeTime:" + noticeTime)
- return err
- }
- noticeHour, err := strconv.Atoi(noticeTimeArr[0])
- if err != nil {
- return err
- }
- noticeMinute, err := strconv.Atoi(noticeTimeArr[1])
- if err != nil {
- return err
- }
- noticeSecond, err := strconv.Atoi(noticeTimeArr[2])
- if err != nil {
- return err
- }
- noticeSecondTotal := noticeHour*3600 + noticeMinute*60 + noticeSecond
- mbefor, _ := time.ParseDuration("-1m")
- mafter, _ := time.ParseDuration("1m")
- nowBefor := time.Now().Add(mbefor)
- nowAfter := time.Now().Add(mafter)
- nowBeforSecond := nowBefor.Hour()*3600 + nowBefor.Minute()*60 + nowBefor.Second()
- nowAfterSecond := nowAfter.Hour()*3600 + nowAfter.Minute()*60 + nowAfter.Second()
- if noticeSecondTotal >= nowBeforSecond && noticeSecondTotal <= nowAfterSecond {
- //获取用户信息
- var openId string
- admin, err := models.GetAdminByAdminId(v.UserId)
- if err != nil {
- if err.Error() == utils.ErrNoRow() {
- err = errors.New("账号不存在")
- return err
- }
- return err
- }
- openId = admin.OpenId
- //发送消息
- if openId != "" {
- openIdList := make([]*models.OpenIdList, 0)
- openIdItem := new(models.OpenIdList)
- openIdItem.OpenId = openId
- openIdList = append(openIdList, openIdItem)
- first := "数据录入提醒"
- keyword1 := v.SecName + "该更新了"
- keyword2 := "每月 " + v.NoticeTime
- remark := v.SecName + "该更新了"
- err = SendWxMsgWithFrequency(first, keyword1, keyword2, remark, openIdList)
- if err != nil {
- return err
- }
- }
- }
- }
- return
- }
|