shenjiachi 1 tydzień temu
rodzic
commit
104b61225e
5 zmienionych plików z 178 dodań i 4 usunięć
  1. +141
    -0
      consume/egg_energy_auto_score_consume.go
  2. +1
    -0
      consume/init.go
  3. +12
    -2
      consume/md/consume_key.go
  4. +22
    -0
      consume/md/md_egg_energy_auto_score_consume.go
  5. +2
    -2
      go.mod

+ 141
- 0
consume/egg_energy_auto_score_consume.go Wyświetl plik

@@ -0,0 +1,141 @@
package consume

import (
"applet/app/cfg"
utils2 "applet/app/utils"
"applet/app/utils/logx"
"applet/consume/md"
"bytes"
"code.fnuoos.com/EggPlanet/egg_system_rules.git"
md3 "code.fnuoos.com/EggPlanet/egg_system_rules.git/md"
md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md"
es2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/es"
"code.fnuoos.com/go_rely_warehouse/zyos_go_es.git/es"
"code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit"
"encoding/json"
"errors"
"fmt"
"github.com/streadway/amqp"
"io/ioutil"
"net/http"
"time"
)

func EggEnergyAutoScoreConsume(queue md.MqQueue) {
fmt.Println(">>>>>>>>>>>>EggEnergyAutoScoreConsume>>>>>>>>>>>>")
ch, err := rabbit.Cfg.Pool.GetChannel()
if err != nil {
logx.Error(err)
return
}
defer ch.Release()
//1、将自己绑定到交换机上
ch.Bind(queue.Name, queue.ExchangeName, queue.RoutKey)
//2、取出数据进行消费
ch.Qos(1)
delivery := ch.Consume(queue.Name, false)

egg_system_rules.Init(cfg.RedisAddr)
var res amqp.Delivery
var ok bool
for {
res, ok = <-delivery
if ok == true {
err = handleEggEnergyAutoScoreDataConsume(res.Body)
if err != nil {
fmt.Println("EggEnergyAutoScoreConsume_ERR:::::", err.Error())
utils2.FilePutContents("EggEnergyAutoScoreConsume_ERR", utils2.SerializeStr(map[string]interface{}{
"body": res.Body,
"err": err.Error(),
}))
}
//_ = res.Reject(false)
err = res.Ack(true)
fmt.Println("err ::: ", err)
} else {
panic(errors.New("error getting message"))
}
}
}

func handleEggEnergyAutoScoreDataConsume(msgData []byte) error {
time.Sleep(time.Duration(100) * time.Millisecond) //休眠100毫秒
// 1.解析mq中queue的数据结构体
var msg *md2.EggStructForAutoScoreData
err := json.Unmarshal(msgData, &msg)
if err != nil {
return err
}

// 2. 请求获取预测分数
req := md.GetPredictReq{
Ecpm: msg.Ecpm,
InviteUserNums: msg.InviteUserNums,
TeamActivityNums: msg.TeamActivityNums,
SignInNums: msg.SignInNums,
ImActivityNums: msg.ImActivityNums,
SendRedPackageNums: msg.SendRedPackageNums,
EggEnergyExchangeAccountBalance: msg.EggEnergyExchangeAccountBalance,
AccountBalanceExchangeEggEnergyNums: msg.AccountBalanceExchangeEggEnergyNums,
SendCircleOfFriendNums: msg.SendCircleOfFriendNums,
ForumCommentsNums: msg.ForumCommentsNums,
CollegeLearningNums: msg.CollegeLearningNums,
ViolateNums: msg.ViolateNums,
BrowseInterfaceNums: msg.BrowseInterfaceNums,
PersonAddActivityValue: msg.PersonAddActivityValue,
}

reqBytes, err := json.Marshal(req)
if err != nil {
fmt.Println("EggEnergyAutoScoreConsumeFailedMarshal_ERR:::::", err.Error())
return err
}

url := "http://ddf.ddstaros.cn/predict"

request, err := http.NewRequest(http.MethodPost, url, bytes.NewReader(reqBytes))
if err != nil {
fmt.Println("EggEnergyAutoScoreConsumeFailedNewRequest_ERR:::::", err.Error())
return err
}
request.Header.Set("Content-Type", "application/json")
client := &http.Client{Timeout: 5 * time.Second} // 设置请求超时时长5s
resp, err := client.Do(request)
if err != nil {
fmt.Println("EggEnergyAutoScoreConsumeFailedPostRequest_ERR:::::", err.Error())
return err
}
defer resp.Body.Close()

respBody, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("EggEnergyAutoScoreConsumeFailedIOReadAll_ERR:::::", err.Error())
return err
}

var score md.GetPredictResp
err = json.Unmarshal(respBody, &score)
if err != nil {
fmt.Println("EggEnergyAutoScoreConsumeFailedUnmarshal_ERR:::::", err.Error())
return err
}

// 3. 更新上周得分
esScore := md3.EggEnergyUserEggScoreEs{
ScoreValue: score.PredictedScore,
}
now := time.Now()
lastWeek := now.AddDate(0, 0, -7)
year, week := lastWeek.ISOWeek()
yearString := utils2.IntToStr(year)
weekString := utils2.IntToStr(week)
LastWeekIndex := es2.GetAppointIndexFromAlias(yearString, weekString)
updateDocRet, err := es.UpdateDoc(LastWeekIndex, msg.DocId, esScore)
if err != nil {
fmt.Println("EggEnergyAutoScoreConsumeFailedUpdateEs_ERR:::::", err.Error())
return err
}
fmt.Printf("updateDoc ==> %+v \n\n", updateDocRet)

return nil
}

+ 1
- 0
consume/init.go Wyświetl plik

@@ -48,6 +48,7 @@ func initConsumes() {
jobs[consumeMd.EggEnergySettlementPublicGiveActivityCoinFunName] = EggEnergySettlementPublicGiveActivityCoinConsume
jobs[consumeMd.EggEnergyStartExchangeGreenEnergyFunName] = EggEnergyStartExchangeGreenEnergyConsume
jobs[consumeMd.EggEnergyAutoExchangeGreenEnergyFunName] = EggEnergyAutoExchangeGreenEnergyConsume
jobs[consumeMd.EggEnergyAutoScoreDataFunName] = EggEnergyAutoScoreConsume // 自动打分

}



+ 12
- 2
consume/md/consume_key.go Wyświetl plik

@@ -147,7 +147,7 @@ var RabbitMqQueueKeyList = []*MqQueue{
ConsumeFunName: "EggEnergyNewUserRegisterDataConsume",
},
{
ExchangeName: "egg.app",
ExchangeName: "egg.energy",
Name: "egg_energy_user_ecpm",
Type: DirectQueueType,
IsPersistent: false,
@@ -162,7 +162,7 @@ var RabbitMqQueueKeyList = []*MqQueue{
IsPersistent: false,
RoutKey: "egg_canal_invite_user_nums",
BindKey: "",
ConsumeFunName: "EggEnergyDealUserECPMConsume",
ConsumeFunName: "EggCanalInviteUserNumsConsume",
},
{
ExchangeName: "egg.canal.topic",
@@ -227,6 +227,15 @@ var RabbitMqQueueKeyList = []*MqQueue{
BindKey: "",
ConsumeFunName: "UserDeleteConsume",
},
{
ExchangeName: "egg.app",
Name: "egg_auto_score_queue",
Type: DirectQueueType,
IsPersistent: false,
RoutKey: "egg_auto_score",
BindKey: "",
ConsumeFunName: "EggEnergyAutoScoreConsume",
},
}

const (
@@ -254,4 +263,5 @@ const (
VideoRewardFunName = "VideoRewardFunName"
PlayletRewardFunName = "PlayletRewardFunName"
UserDeleteFunName = "UserDeleteConsume"
EggEnergyAutoScoreDataFunName = "EggEnergyAutoScoreConsume"
)

+ 22
- 0
consume/md/md_egg_energy_auto_score_consume.go Wyświetl plik

@@ -0,0 +1,22 @@
package md

type GetPredictReq struct {
Ecpm float64 `json:"ecpm"`
InviteUserNums int `json:"invite_user_nums"`
TeamActivityNums int `json:"team_activity_nums"`
SignInNums int `json:"sign_in_nums"`
ImActivityNums int `json:"im_activity_nums"`
SendRedPackageNums int `json:"send_red_package_nums"`
EggEnergyExchangeAccountBalance int `json:"egg_energy_exchange_account_balance"`
AccountBalanceExchangeEggEnergyNums int `json:"account_balance_exchange_egg_energy_nums"`
SendCircleOfFriendNums int `json:"send_circle_of_friend_nums"`
ForumCommentsNums int `json:"forum_comments_nums"`
CollegeLearningNums int `json:"college_learning_nums"`
ViolateNums int `json:"violate_nums"`
BrowseInterfaceNums int `json:"browse_interface_nums"`
PersonAddActivityValue int `json:"person_add_activity_value"`
}

type GetPredictResp struct {
PredictedScore float64 `json:"predicted_score"`
}

+ 2
- 2
go.mod Wyświetl plik

@@ -4,11 +4,11 @@ go 1.19

//replace code.fnuoos.com/EggPlanet/egg_models.git => E:/company/Egg/egg_models

//replace code.fnuoos.com/EggPlanet/egg_system_rules.git => E:/company/Egg/egg_system_rules
// replace code.fnuoos.com/EggPlanet/egg_system_rules.git => E:/company/Egg/egg_system_rules

require (
code.fnuoos.com/EggPlanet/egg_models.git v0.2.1-0.20241211055111-7c47b67b46d2
code.fnuoos.com/EggPlanet/egg_system_rules.git v0.0.4-0.20241212093609-6ece027b8e1d
code.fnuoos.com/EggPlanet/egg_system_rules.git v0.0.4-0.20241212100929-af11a5e94a68
code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20241118083738-0f22da9ba0be
code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git v0.0.5
github.com/boombuler/barcode v1.0.1


Ładowanie…
Anuluj
Zapisz