package hdl import ( "applet/app/cfg" "applet/app/comm/db" "applet/app/comm/db/model" "applet/app/comm/e" svcComm "applet/app/comm/svc" "applet/app/comm/utils" db3 "applet/app/im/db" model2 "applet/app/im/db/model" utils2 "applet/app/im/utils" "applet/app/task/svc/consume_integral" "code.fnuoos.com/go_rely_warehouse/zyos_go_day_luck_draw.git/svc" db2 "code.fnuoos.com/go_rely_warehouse/zyos_go_o2o_business.git/db" model4 "code.fnuoos.com/go_rely_warehouse/zyos_go_o2o_business.git/db/model" "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/md" "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule" "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/one_circles" "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/service_award_dividend" md2 "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/service_award_dividend/md" "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/cache" "fmt" "github.com/gin-gonic/gin" "strings" ) func DemoDayLuckDraw(c *gin.Context) { err := svc.InitForDayLuckDraw(cfg.RedisAddr) if err != nil { return } svc.GetUserReward(svcComm.MasterDb(c), "123456", false) } func DemoIntegral(c *gin.Context) { //value := c.DefaultQuery("price", "") //price, _ := decimal.NewFromString(value) //priceRoundFloor, _ := price.RoundFloor(4).Float64() //fmt.Println(priceRoundFloor) //e.OutSuc(c, priceRoundFloor, nil) //return //c.Set("mid", "666666") eg := svcComm.MasterDb(c) //o2o.SettlementGreen(eg, "69797008", false) err := rule.InitForIntegralRelease(cfg.RedisAddr) err = rule.DailySettlementIntegralRelease(eg, "81979875", false) err = rule.DailySettlementIntegralReleaseForInterposition(eg, "81979875", false) e.OutSuc(c, err, nil) return } func DemoIntegral1(c *gin.Context) { //value := c.DefaultQuery("price", "") //price, _ := decimal.NewFromString(value) //priceRoundFloor, _ := price.RoundFloor(4).Float64() //fmt.Println(priceRoundFloor) //e.OutSuc(c, priceRoundFloor, nil) //return //c.Set("mid", "666666") eg := svcComm.MasterDb(c) //o2o.SettlementGreen(eg, "69797008", false) err := rule.InitForNiuBeiRelease(cfg.RedisAddr) if err != nil { return } rule.DailySettlementNiuBeiRelease(eg, "11536749", false) e.OutSuc(c, err, nil) return } // Demo 测试 func Demo(c *gin.Context) { consume_integral.Settlement(svcComm.MasterDb(c), c.GetString("mid"), false) return egine := svcComm.MasterDb(c) addPublicPlatoonRelateCommissionReqList := []*md.AddOneCirclesPublicPlatoonUserRelationCommissionReq{ { Uid: c.Query("uid"), RecommendUid: c.Query("r_uid"), }, } relationCommission, err := one_circles.AddOneCirclesPublicPlatoonUserRelationCommission(egine, addPublicPlatoonRelateCommissionReqList) if err != nil { e.OutErr(c, e.ERR, err.Error()) return } e.OutSuc(c, relationCommission, nil) return uid1 := utils.StrToInt(c.DefaultQuery("uid", "")) eg := svcComm.MasterDb(c) service_award_dividend.JoinServiceAwardDividendRelation(eg, md2.JoinServiceAwardDividendRelationReq{ MasterId: "71353282", Uid: 38, ParentUid: 37, RegionId: 1350, CreateAt: "", }) cache.NewRedis(cfg.RedisAddr) total, level, levelRank, rank, previousRow, diffValue, err := rule.EstimateUserPosition(eg, uid1, c.GetString("mid")) fmt.Println(total, level, levelRank, rank, previousRow, diffValue) var imSendRedPackageOrds []*model2.ImSendRedPackageOrd err = db.DBs["666666"].Where("red_packet_type =? and state = 1", 3).Find(&imSendRedPackageOrds) if err != nil { e.OutSuc(c, err, nil) return } for _, imSendRedPackageOrd := range imSendRedPackageOrds { redPackageReceivedUserAmounts := strings.Split(imSendRedPackageOrd.ReceivedUserAmount, ",") var totalAmount = 0.00 receivedUserIds := strings.Split(imSendRedPackageOrd.ReceivedUserIds, ",") for _, v := range redPackageReceivedUserAmounts { totalAmount += utils.StrToFloat64(v) } if totalAmount > utils.StrToFloat64(imSendRedPackageOrd.Amount) { var blanceAmount = utils.StrToFloat64(imSendRedPackageOrd.Amount) for k, v := range redPackageReceivedUserAmounts { gradeAmount := float64(utils2.DoubleAverage(int64(imSendRedPackageOrd.RedPacketNums-k), int64(blanceAmount*100))) / 100 if gradeAmount > utils.StrToFloat64(v) { blanceAmount -= utils.StrToFloat64(v) } else { blanceAmount -= gradeAmount redPackageReceivedUserAmounts[k] = utils.Float64ToStr(gradeAmount) dockAmount := utils.StrToFloat64(v) - gradeAmount //需追缴金额 userProfile := new(model4.UserProfile) _, err = db.DBs["666666"].Where("uid =?", receivedUserIds[k]).Get(userProfile) finValid := utils.StrToFloat64(userProfile.FinValid) if finValid-dockAmount < 0 { //不再追缴 continue } userProfile.FinValid = utils.Float64ToStr(utils.StrToFloat64(userProfile.FinValid) - dockAmount) affect, err := db2.UserProfileUpdate(db.DBs["666666"], receivedUserIds[k], userProfile, "fin_valid") //更改用户余额 if err != nil || affect != 1 { e.OutSuc(c, err, nil) return } svcComm.FlowInsert(db.DBs[c.GetString("mid")], userProfile.Uid, utils.Float64ToStr(dockAmount), 106, utils.AnyToInt64(imSendRedPackageOrd.Id), 0, 0, "群红包异常扣款", "im_grab_red_package_chargeback", 1, utils.Float64ToStr(finValid), userProfile.FinValid) //增加流水记录 totalAmount = totalAmount - utils.StrToFloat64(v) + gradeAmount } } //修改红包记录 imSendRedPackageOrd.ReceivedUserAmount = strings.Join(redPackageReceivedUserAmounts, ",") _, err = db3.ImSendRedPackageOrdUpdate(db.DBs["666666"], imSendRedPackageOrd.Id, imSendRedPackageOrd, "received_user_amount") if err != nil { e.OutSuc(c, err, nil) return } } } e.OutSuc(c, err, nil) return //svc.Settlement(eg, "69797008") //rule.Init(cfg.RedisAddr) //err := rule.DealLotteryDraw(eg.NewSession(), md.DealLotteryDrawReq{Uid: 123456, Amount: "0", Mid: "123456"}) //e.OutSuc(c, err, nil) //return uid := c.DefaultQuery("uid", "") str := "1-2-3-4" fatherPositions := strings.Split(str, "-") remainder1 := (utils.StrToInt(uid)) % len(fatherPositions) var fatherPosition string if remainder1 == 0 { fatherPosition = fatherPositions[len(fatherPositions)-1] } else { fmt.Println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", len(fatherPositions)-remainder1) fatherPosition = fatherPositions[remainder1-1] } fmt.Println(">>>>>>>>>>>>>>>>>>>>>>>>>>>", fatherPosition) e.OutSuc(c, fatherPosition, nil) return engine := svcComm.MasterDb(c) fmt.Println(uid) recommendUid := c.DefaultQuery("recommend_uid", "") var params []*md.AddPublicPlatoonRelateCommissionReq var Users []*model.User if err := engine.Where("uid != 3 AND uid !=0").OrderBy("create_at ASC").Find(&Users); err != nil { e.OutErr(c, e.ERR_API_RESPONSE, err) return } for _, user := range Users { params = append(params, &md.AddPublicPlatoonRelateCommissionReq{ Uid: utils.AnyToString(user.Uid), RecommendUid: recommendUid, }) } commission, err := rule.AddPublicPlatoonRelateCommission(engine, params) if err != nil { return } fmt.Println(">>>>>>>>>>>>>>>>>>", commission) e.OutSuc(c, commission, nil) } func DemoV2(c *gin.Context) { user, err := rule.FindRandUser(db.DBs["123999"], 1000) if err != nil { return } //list, err := db.QueryNativeString(, "SELECT uid AS LIST FROM `fin_user_flow` WHERE id > 64627 "+ // "AND ord_title = '聚合充值余额支付' or ord_title = '领取红包' GROUP BY uid") //if err != nil { // return //} //for _, v := range list { // var finUserFlows []*model.FinUserFlow // err1 := db.DBs["666666"].Where("id > 64627 AND uid = ?", v["LIST"]).Asc("id").Find(&finUserFlows) // if err1 != nil { // e.OutSuc(c, err1, nil) // return // } // var isFirst = true // for _, vv := range finUserFlows { // if isFirst && vv.OrdTitle != "社群红包-余额支付" && vv.OrdTitle != "领取红包" { // fmt.Println("!!!!!!!!!!", vv.OrdTitle) // continue // } // // if vv.OrdTitle == "社群红包-余额支付" || vv.OrdTitle == "领取红包" { // if isFirst { // //直接修改余额 // isFirst = false // sqlTpl := "update user_profile set fin_valid = %s where uid = %d" // sql := fmt.Sprintf(sqlTpl, vv.BeforeAmount, vv.Uid) // db.ExecuteOriginalSql(db.DBs["666666"].NewSession(), sql) // } // // //删除该流水 // sqlTpl := "DELETE FROM `fin_user_flow` WHERE (id=%d)" // sql := fmt.Sprintf(sqlTpl, vv.Id) // db.ExecuteOriginalSql(db.DBs["666666"].NewSession(), sql) // continue // } // // //增加 / 减少 余额 // userProfile := new(model4.UserProfile) // _, err = db.DBs["666666"].Where("uid =?", vv.Uid).Get(userProfile) // finValid := utils.StrToFloat64(userProfile.FinValid) // if vv.Type == 0 { // userProfile.FinValid = utils.Float64ToStr(finValid + utils.StrToFloat64(vv.Amount)) // } // if vv.Type == 1 { // userProfile.FinValid = utils.Float64ToStr(finValid - utils.StrToFloat64(vv.Amount)) // } // sqlTpl := "update user_profile set fin_valid = %s where uid = %d" // sql := fmt.Sprintf(sqlTpl, userProfile.FinValid, vv.Uid) // _, err2 := db.ExecuteOriginalSql(db.DBs["666666"].NewSession(), sql) // if err2 != nil { // fmt.Println("err2:::::", err2) // return // } // // sqlTpl = "update fin_user_flow set before_amount = %s, after_amount= %s where id = %d" // sql = fmt.Sprintf(sqlTpl, utils.Float64ToStr(finValid), userProfile.FinValid, vv.Id) // _, err3 := db.ExecuteOriginalSql(db.DBs["666666"].NewSession(), sql) // if err3 != nil { // fmt.Println("err2:::::", err2) // return // } // } //} // e.OutSuc(c, user, nil) return }