package dayActivity import ( mgo "app.yhyue.com/moapp/jybase/mongodb" "app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy" "context" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/util/gconv" "jyOrderManager/internal/jyutil" "log" "strconv" ) const ( TaskActiveId = 16 TaskIdVip = 4 TaskIdMember = 5 ) func ActivityNsqPublish(productType string, userId string, userPhone string, orderCode string, state int) { log.Println("赠送抽奖次数", productType, userId, userPhone, orderCode, state) // 判断订单上的用户id是职位id还是mgoid var taskId, positionId int64 var mgoId, nickName string if mgo.IsObjectIdHex(userId) { // 如果是mgoid 则根据 mgoid 查询base_user_id 根据 base_user_id 查询 职位id mgoId = userId userRs, b := jyutil.MG.DB().FindById("user", userId, `{"base_user_id":1,"s_nickname":1}`) if b && userRs != nil && len(*userRs) > 0 { nickName = gconv.String((*userRs)["s_nickname"]) baseUserId := gconv.Int((*userRs)["base_user_id"]) positionData, err := g.DB("base").GetOne(context.Background(), "SELECT id FROM base_position WHERE type=0 and user_id = ?", baseUserId) log.Println("抽奖order_code ==", orderCode, baseUserId, err, positionData) if !positionData.IsEmpty() { positionId = gconv.Int64(positionData.Map()["id"]) } } } else { // 如果是职位id 则说明是企业版 则根据职位id查询base_user_id 然后根据base_user_id 查询mgoId positionId_, err := strconv.ParseInt(userId, 10, 64) if err == nil && positionId_ > 0 { positionId = positionId_ positionData, err := g.DB("base").GetOne(context.Background(), "SELECT user_id FROM base_position WHERE id = ?", userId) log.Println("抽奖order_code ==", orderCode, positionId, err) if !positionData.IsEmpty() { baseUserId := gconv.Int64(positionData.Map()["user_id"]) userRs, b := jyutil.MG.DB().FindOne("user", map[string]interface{}{ "base_user_id": baseUserId, }) if b && userRs != nil && len(*userRs) > 0 { mgoId = mgo.BsonIdToSId((*userRs)["_id"]) nickName = gconv.String((*userRs)["s_nickname"]) } } } } if positionId > 0 && mgoId != "" { if productType == "VIP订阅" { taskId = TaskIdVip } else { taskId = TaskIdMember } activityNsqSend(context.Background(), taskId, positionId, userId, mgoId, userPhone, orderCode, nickName, state) } else { log.Printf("用户信息获取有误:order_code-%s user_id-%v phone-%v", orderCode, userId, userPhone) } } func activityNsqSend(ctx context.Context, taskId, positionId int64, userId, mgoId, phone string, orderCode, nickName string, state int) { node := jy.Jyweb_node2 err := jy.Publish(*jyutil.MG.DB(), g.Cfg().MustGet(ctx, "nsq").String(), g.Cfg().MustGet(ctx, "qsqTopic").String(), "lottery_draw_task", userId, node, map[string]interface{}{ "phone": phone, "userId": userId, "mgoUserId": mgoId, "positionId": positionId, "activeId": TaskActiveId, "taskInfoId": taskId, "orderCode": orderCode, "nickName": nickName, "state": state, }) if err != nil { log.Println("nsq队列写入失败-->", err, "lottery_draw_task", taskId, userId) } else { log.Println("nsq队列写入成功-->", err, "lottery_draw_task", taskId, userId, map[string]interface{}{ "phone": phone, "userId": userId, "mgoUserId": mgoId, "positionId": positionId, "activeId": TaskActiveId, "taskInfoId": taskId, "orderCode": orderCode, "nickName": nickName, "state": state, }) } }