go-common/app/interface/main/account/http/realname.go
2019-04-22 18:49:16 +08:00

329 lines
7.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package http
import (
"io/ioutil"
"net/http"
"strconv"
"go-common/app/interface/main/account/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"github.com/pkg/errors"
)
// modify modify user relation.
func realnameStatus(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
)
var resData struct {
Status int8 `json:"status"`
}
if resData.Status, err = realnameSvc.Status(c, mid.(int64)); err != nil {
log.Error("%+v", err)
c.JSON(nil, err)
return
}
c.JSON(resData, nil)
}
func realnameApplyStatus(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
)
var resData struct {
Status int8 `json:"status"`
Remark string `json:"remark"`
Realname string `json:"realname"`
Card string `json:"card"`
}
if resData.Status, resData.Remark, resData.Realname, resData.Card, err = realnameSvc.ApplyStatus(c, mid.(int64)); err != nil {
log.Error("%+v", err)
c.JSON(nil, err)
return
}
c.JSON(resData, nil)
}
func realnameCardTypes(c *bm.Context) {
var (
err error
params = c.Request.Form
platform = params.Get("platform")
buildStr = params.Get("build")
mobiapp = params.Get("mobi_app")
device = params.Get("device")
build int
)
if build, err = strconv.Atoi(buildStr); err != nil {
log.Error("%+v", errors.WithStack(err))
c.JSON(nil, ecode.RequestErr)
return
}
var resData []*model.RealnameCardType
if resData, err = realnameSvc.CardTypes(c, platform, mobiapp, device, build); err != nil {
log.Error("%+v", err)
c.JSON(nil, err)
return
}
c.JSON(resData, nil)
}
func realnameCardTypesV2(c *bm.Context) {
var (
err error
)
var resData []*model.RealnameCardType
if resData, err = realnameSvc.CardTypesV2(c); err != nil {
log.Error("%+v", err)
c.JSON(nil, err)
return
}
c.JSON(resData, nil)
}
func realnameCountryList(c *bm.Context) {
var (
err error
)
var resData []*model.RealnameCountry
if resData, err = realnameSvc.CountryList(c); err != nil {
log.Error("%+v", err)
c.JSON(nil, err)
return
}
c.JSON(resData, nil)
}
func realnameTelCapture(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
)
if err = realnameSvc.TelCapture(c, mid.(int64)); err != nil {
log.Error("%+v", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func realnameTelInfo(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
)
var resData struct {
Tel string `json:"tel"`
}
if resData.Tel, err = realnameSvc.TelInfo(c, mid.(int64)); err != nil {
log.Error("%+v", err)
c.JSON(nil, err)
return
}
c.JSON(resData, nil)
}
func realnameApply(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
params = c.Request.Form
realname = params.Get("real_name")
cardTypeStr = params.Get("card_type")
cardType int
cardNum = params.Get("card_num")
countryIDStr = params.Get("country")
countryID int
captureStr = params.Get("capture")
capture int
handIMGToken = params.Get("img1_token")
frontIMGToken = params.Get("img2_token")
backIMGToken = params.Get("img3_token")
)
if cardType, err = strconv.Atoi(cardTypeStr); err != nil {
log.Error("%+v", errors.WithStack(err))
c.JSON(nil, ecode.RequestErr)
return
}
if countryIDStr == "" {
countryID = 0 // 默认0中国
} else {
if countryID, err = strconv.Atoi(countryIDStr); err != nil {
log.Error("%+v", errors.WithStack(err))
c.JSON(nil, ecode.RequestErr)
return
}
}
if countryID < 0 {
countryID = 0
}
if capture, err = strconv.Atoi(captureStr); err != nil {
log.Error("%+v", errors.WithStack(err))
c.JSON(nil, ecode.RequestErr)
return
}
if err = realnameSvc.Apply(c, mid.(int64), realname, cardType, cardNum, countryID, capture, handIMGToken, frontIMGToken, backIMGToken); err != nil {
log.Error("%+v")
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func realnameUpload(c *bm.Context) {
var (
mid, _ = c.Get("mid")
)
defer c.Request.Form.Del("img") // 防止日志不出现
c.Request.ParseMultipartForm(32 << 20)
imgBytes, err := func() ([]byte, error) {
img := c.Request.FormValue("img")
if img != "" {
log.Info("Succeeded to parse img file from form value: mid: %d, length: %d", mid, len(img))
return []byte(img), nil
}
log.Warn("Failed to parse img file from form value, fallback to form file: mid: %d", mid)
f, _, err := c.Request.FormFile("img")
if err != nil {
return nil, errors.Wrapf(err, "parse img form file: mid: %d", mid)
}
defer f.Close()
data, err := ioutil.ReadAll(f)
if err != nil {
return nil, errors.Wrapf(err, "read img form file: mid: %d", mid)
}
if len(data) <= 0 {
return nil, errors.Wrapf(err, "form file data: mid: %d, length: %d", mid, len(data))
}
log.Info("Succeeded to parse file from form file: mid: %d, length: %d", mid, len(data))
return data, nil
}()
if err != nil {
log.Error("Failed to parse realname upload file: mid: %d: %+v", mid, err)
c.JSON(nil, ecode.RequestErr)
return
}
var resData struct {
SRC string `json:"token"`
}
if resData.SRC, err = realnameSvc.Upload(c, mid.(int64), imgBytes); err != nil {
log.Error("%+v", err)
c.JSON(nil, err)
return
}
c.JSON(resData, nil)
}
func realnamePreview(c *bm.Context) {
var (
img []byte
err error
mid, _ = c.Get("mid")
params = c.Request.Form
src = params.Get("src")
)
if img, err = realnameSvc.Preview(c, mid.(int64), src); err != nil {
log.Error("%+v", err)
c.JSON(nil, err)
return
}
c.Writer.Header().Set("Content-Type", http.DetectContentType(img))
c.JSON(img, err)
}
// alipay api
func realnameChannel(c *bm.Context) {
c.JSON(realnameSvc.Channel(c))
}
func realnameCaptcha(c *bm.Context) {
var (
mid, _ = c.Get("mid")
userAgent = c.Request.UserAgent()
ip = metadata.String(c, metadata.RemoteIP)
err error
)
var resp struct {
URL string `json:"url"`
Remote int `json:"remote"`
}
resp.URL, resp.Remote, err = realnameSvc.CaptchaGTRegister(c, mid.(int64), ip, geetestClientType(userAgent))
c.JSON(resp, err)
}
func realnameCaptchaRefresh(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
userAgent = c.Request.UserAgent()
ip = metadata.String(c, metadata.RemoteIP)
v = &model.ParamRealnameCaptchaGTRefresh{}
)
if err = c.Bind(v); err != nil {
return
}
var resp struct {
CaptureType int `json:"captcha_type"`
CaptureInfo struct {
Success int `json:"success"`
GT string `json:"gt"`
Challenge string `json:"challenge"`
} `json:"captcha_info"`
}
resp.CaptureType = 1
resp.CaptureInfo.Challenge, resp.CaptureInfo.GT, resp.CaptureInfo.Success, err = realnameSvc.CaptchaGTRefresh(c, mid.(int64), ip, geetestClientType(userAgent), v.Hash)
c.JSON(resp, err)
}
func realnameCaptchaConfirm(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
userAgent = c.Request.UserAgent()
ip = metadata.String(c, metadata.RemoteIP)
v = &model.ParamRealnameCaptchaGTCheck{}
)
if err = c.Bind(v); err != nil {
return
}
if v.Remote == 1 && len(v.Challenge) != 34 {
err = ecode.RequestErr
return
}
c.JSON(realnameSvc.CaptchaGTValidate(c, mid.(int64), ip, geetestClientType(userAgent), v))
}
func realnameAlipayApply(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
v = &model.ParamRealnameAlipayApply{}
)
if err = c.Bind(v); err != nil {
return
}
c.JSON(realnameSvc.AlipayApply(c, mid.(int64), v))
}
func realnameAlipayConfirm(c *bm.Context) {
var (
mid, _ = c.Get("mid")
)
c.JSON(realnameSvc.AlipayConfirm(c, mid.(int64)))
}
func geetestClientType(userAgent string) string {
return "h5"
}