package svc import ( "applet/app/db" "applet/app/db/model" "applet/app/e" "applet/app/lib/mob" "applet/app/lib/sms" "applet/app/svc" "applet/app/utils" "applet/app/utils/cache" "fmt" "github.com/gin-gonic/gin" "github.com/tidwall/gjson" "time" ) func StoreWithdrawFlow(c *gin.Context) { var req map[string]string if err := c.ShouldBindJSON(&req); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS, err) return } user := svc.GetUser(c) req["store_uid"] = utils.IntToStr(user.Info.Uid) store := db.GetStoreIdEg(svc.MasterDb(c), utils.IntToStr(user.Info.Uid)) if store != nil { req["parent_uid"] = utils.IntToStr(store.ParentUid) req["store_type"] = utils.IntToStr(store.StoreType) } withdraw, total := db.GetStoreWithdraw(svc.MasterDb(c), req) list := make([]map[string]string, 0) if withdraw != nil { var stateList = []string{"审核中", "审核通过", "审核通过", "审核拒绝"} for _, v := range *withdraw { tmp := map[string]string{ "amount": v.Amount, "alipay_account": v.WithdrawAccount, "alipay_name": v.WithdrawName, "state_str": stateList[v.State], "state": utils.IntToStr(v.State), "memo": v.Memo, "time": v.CreateAt.Format("2006-01-02 15:04:05"), } list = append(list, tmp) } } res := map[string]interface{}{ "total": total, "list": list, } e.OutSuc(c, res, nil) return } func StoreWithdrawDoing(c *gin.Context) { var req map[string]string if err := c.ShouldBindJSON(&req); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS, err) return } user := svc.GetUser(c) if user.Profile.AccAlipay == "" || user.Profile.AccAlipayRealName == "" { e.OutErr(c, 400, e.NewErr(400, "未绑定支付宝")) return } if utils.StrToFloat64(req["amount"]) <= 0 { e.OutErr(c, 400, e.NewErr(400, "金额不正确")) return } sess := svc.MasterDb(c).NewSession() defer sess.Close() sess.Begin() oid := utils.StrToInt64(utils.OrderUUID(user.Info.Uid)) store := db.GetStoreId(sess, utils.IntToStr(user.Info.Uid)) if store == nil { e.OutErr(c, 400, e.NewErr(400, "提现失败")) return } bools := svc.MoneyCheck(c, sess, user.Info.Uid, store.ParentUid, store.StoreType, 1, 2, utils.StrToFloat64(req["amount"]), "提现", oid) if bools == false { e.OutErr(c, 400, e.NewErr(400, "提现失败")) return } var flow = &model.CommunityTeamStoreWithdrawApply{ Uid: user.Info.Uid, ParentUid: store.ParentUid, StoreType: store.StoreType, Amount: req["amount"], Type: 1, WithdrawAccount: user.Profile.AccAlipay, WithdrawName: user.Profile.AccAlipayRealName, CreateAt: time.Now(), UpdateAt: time.Now(), Oid: oid, } insert, err := sess.Insert(flow) if insert == 0 || err != nil { e.OutErr(c, 400, e.NewErr(400, "提现失败")) return } sess.Commit() e.OutSuc(c, "success", nil) return } func StoreWithdrawBindAlipay(c *gin.Context) { var req map[string]string if err := c.ShouldBindJSON(&req); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS, err) return } if req["alipay_account"] == "" { e.OutErr(c, 400, e.NewErr(400, "支付宝不能为空")) return } if req["alipay_name"] == "" { e.OutErr(c, 400, e.NewErr(400, "真实姓名不能为空")) return } mob1, errr := mob.GetMobSDK(c.GetString("mid")) if errr != nil { e.OutErr(c, e.ERR_MOB_CONFIG, errr) return } user := svc.GetUser(c) req["phone"] = user.Info.Phone if req["zone"] == "" { req["zone"] = "86" } send := map[string]interface{}{ "phone": req["phone"], "zone": req["zone"], "code": req["captcha"], } var ok bool var err error // h5(wap) 登录 smsPlatform := sms.GetSmsPlatform(c) key := fmt.Sprintf("%s_SMS_FastLogin_%s", db.SysCfgGet(c, "app_name"), req["phone"]) if smsPlatform == "ljioe" { b, err := cache.GetBytes(key) if err != nil { e.OutErr(c, e.ERR_MOB_SMS_NO_EXISTS, err) return } if req["captcha"] != gjson.GetBytes(b, "data.captcha").String() { e.OutErr(c, e.ERR_MOB_SMS_NO_SAME, err) return } ok = true } else { c.Set("not_deduction_doing", "1") ok, err = mob1.MobSMS(c, send) if err != nil { e.OutErr(c, 400, err.Error()) return } } if ok { user.Profile.AccAlipay = req["alipay_account"] user.Profile.AccAlipayRealName = req["alipay_name"] svc.MasterDb(c).Where("uid=?", user.Profile.Uid).Cols("acc_alipay,acc_alipay_real_name").Update(user.Profile) e.OutSuc(c, "success", nil) return } // 验证码无效或者过期,验证码错误 e.OutErr(c, e.ERR_SMS_AUTH, err) return }