123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434 |
- 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
- isAdmin := true
- admin, err := models.GetAdminByAdminId(v.UserId)
- if err != nil {
- if err.Error() == utils.ErrNoRow() {
- isAdmin = false
- } else {
- return err
- }
- }
- if admin == nil {
- isAdmin = false
- }
- if isAdmin {
- if admin.Mobile == "" {
- } else {
- wxUser, err := models.GetWxUserByMobile(admin.Mobile)
- if err != nil {
- return err
- }
- if wxUser == nil {
- err = errors.New("用户信息不存在:mobile:" + admin.Mobile)
- return err
- }
- openId = wxUser.OpenId
- }
- } else {
- wxUser, err := models.GetWxUserByUserId(v.UserId)
- if err != nil {
- return err
- }
- if wxUser == nil {
- err = errors.New("用户信息不存在:userId:" + strconv.Itoa(v.UserId))
- return err
- }
- openId = wxUser.OpenId
- }
- //发送消息
- if openId == "" {
- err = errors.New("openId is empty")
- return err
- }
- openIdList := make([]*models.OpenIdList, 0)
- openIdItem := new(models.OpenIdList)
- openIdItem.OpenId = openId
- openIdList = append(openIdList, openIdItem)
- first := v.SecName + " :数据录入提醒"
- keyword1 := "弘则-数据录入"
- keyword2 := v.Frequency + ":" + v.NoticeTime
- err = SendWxMsgWithFrequencyByDay(first, keyword1, keyword2, 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 := "周度"
- items, err := models.GetEdbInfoByFrequency(frequency)
- if err != nil {
- fmt.Println("GetFrequencyByDay err:", err.Error())
- return
- }
- if len(items) <= 0 {
- err=errors.New("没有需要推送的数据,FrequencyByWeek")
- return
- }
- for _, v := range items {
- noticeTime := v.NoticeTime
- if noticeTime == "" {
- err = errors.New("NoticeTime 参数错误:NoticeTime is empty ")
- return
- }
- weekArr := strings.Split(noticeTime, " ")
- if len(weekArr) < 2 {
- err = errors.New("NoticeTime 参数错误: " + noticeTime)
- return
- }
- week := weekArr[0]
- var weekVal string
- switch week {
- case "周一":
- weekVal = "Monday"
- break
- case "周二":
- weekVal = "Tuesday"
- break
- case "周三":
- weekVal = "Wednesday"
- break
- case "周四":
- weekVal = "Thursday"
- break
- case "周五":
- weekVal = "Friday"
- break
- case "周六":
- weekVal = "Saturday"
- break
- case "周日":
- weekVal = "Sunday"
- break
- default:
- weekVal = ""
- break
- }
- if weekVal == "" {
- err = errors.New("weekVal 参数错误: weekVal:" + weekVal)
- return
- }
- nowWeek := time.Now().Weekday().String()
- if weekVal != nowWeek {
- err = errors.New("不是当前日期,不需要发送消息: weekVal:" + weekVal + "; nowWeek:" + nowWeek)
- return
- }
- noticeStr := weekArr[1]
- if noticeStr == "" {
- err = errors.New("noticeStr 参数错误: noticeStr:" + noticeStr)
- return
- }
- noticeTimeArr := strings.Split(noticeStr, ":")
- 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
- isAdmin := true
- admin, err := models.GetAdminByAdminId(v.UserId)
- if err != nil {
- if err.Error() == utils.ErrNoRow() {
- isAdmin = false
- } else {
- return err
- }
- }
- if admin == nil {
- isAdmin = false
- }
- if isAdmin {
- if admin.Mobile == "" {
- } else {
- wxUser, err := models.GetWxUserByMobile(admin.Mobile)
- if err != nil {
- return err
- }
- if wxUser == nil {
- err = errors.New("用户信息不存在:mobile:" + admin.Mobile)
- return err
- }
- openId = wxUser.OpenId
- }
- } else {
- wxUser, err := models.GetWxUserByUserId(v.UserId)
- if err != nil {
- return err
- }
- if wxUser == nil {
- err = errors.New("用户信息不存在:userId:" + strconv.Itoa(v.UserId))
- return err
- }
- openId = wxUser.OpenId
- }
- //发送消息
- if openId == "" {
- err = errors.New("openId is empty")
- return err
- }
- openIdList := make([]*models.OpenIdList, 0)
- openIdItem := new(models.OpenIdList)
- openIdItem.OpenId = openId
- openIdList = append(openIdList, openIdItem)
- first := v.SecName + " :数据录入提醒"
- keyword1 := "弘则-数据录入"
- keyword2 := v.Frequency + ":" + v.NoticeTime
- err = SendWxMsgWithFrequencyByDay(first, keyword1, keyword2, openIdList)
- if err != nil {
- return err
- }
- }
- }
- 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
- isAdmin := true
- admin, err := models.GetAdminByAdminId(v.UserId)
- if err != nil {
- if err.Error() == utils.ErrNoRow() {
- isAdmin = false
- } else {
- return err
- }
- }
- if admin == nil {
- isAdmin = false
- }
- if isAdmin {
- if admin.Mobile == "" {
- } else {
- wxUser, err := models.GetWxUserByMobile(admin.Mobile)
- if err != nil {
- return err
- }
- if wxUser == nil {
- err = errors.New("用户信息不存在:mobile:" + admin.Mobile)
- return err
- }
- openId = wxUser.OpenId
- }
- } else {
- wxUser, err := models.GetWxUserByUserId(v.UserId)
- if err != nil {
- return err
- }
- if wxUser == nil {
- err = errors.New("用户信息不存在:userId:" + strconv.Itoa(v.UserId))
- return err
- }
- openId = wxUser.OpenId
- }
- //发送消息
- if openId == "" {
- err = errors.New("openId is empty")
- return err
- }
- openIdList := make([]*models.OpenIdList, 0)
- openIdItem := new(models.OpenIdList)
- openIdItem.OpenId = openId
- openIdList = append(openIdList, openIdItem)
- first := v.SecName + " :数据录入提醒"
- keyword1 := "弘则-数据录入"
- keyword2 := v.Frequency + ":" + v.NoticeTime
- err = SendWxMsgWithFrequencyByDay(first, keyword1, keyword2, openIdList)
- if err != nil {
- return err
- }
- }
- }
- return
- }
|