package logic import ( "encoding/base64" "fmt" "strings" "github.com/fonchain-artistserver/cmd/internal/dao" "github.com/fonchain-artistserver/cmd/model" artistInfo "github.com/fonchain-artistserver/pb/artistinfo" "github.com/fonchain-artistserver/pkg/m" "github.com/fonchain-artistserver/pkg/util" fdd "github.com/fonchain/electronic-contract/server" "go.uber.org/zap" ) type IArtistInfo interface { GetUserInfo(req *artistInfo.GetUserInfoRequest) (rep *artistInfo.GetUserInfoRespond, err error) CreateUserInfo(req *artistInfo.UserInfoCommonRequest) (rep *artistInfo.CreateUserInfoRespond, err error) UpdateUserInfo(req *artistInfo.UserInfoCommonRequest) (rep *artistInfo.UpdateUserInfoRespond, err error) UserUpdateTel(req *artistInfo.UserUpdateTelRequest) (rep *artistInfo.UserUpdateTelRespond, err error) UserUpdateMsg(req *artistInfo.UserInfoCommonRequest) (rep *artistInfo.UserUpdateMsgRespond, err error) Verifyfdd(req *artistInfo.VerifyfddRequest) (rep *artistInfo.VerifyfddRespond, err error) FinishVerify(req *artistInfo.FinishVerifyRequest) (rep *artistInfo.FinishVerifyRespond, err error) } func NewArtistInfo() IArtistInfo { return &ArtistInfo{} } type ArtistInfo struct{} func (a *ArtistInfo) GetUserInfo(req *artistInfo.GetUserInfoRequest) (rep *artistInfo.GetUserInfoRespond, err error) { rep, err = dao.User(req) return } func (a *ArtistInfo) CreateUserInfo(req *artistInfo.UserInfoCommonRequest) (rep *artistInfo.CreateUserInfoRespond, err error) { // rep = &artistInfo.CreateUserInfoRespond{} util.CreateArtistInfo(req.Id) rep, err = dao.Create(req) if err != nil { return } fddClient, err := fdd.NewFddClient() if err != nil { zap.L().Error("newFddClient err", zap.Error(err)) return } userInfos, err := dao.GetUserInfoSelf(req.Id) if err != nil { zap.L().Error("getUserInfoSelf err", zap.Error(err)) return rep, nil } err = util.CreateQrCode(userInfos.InvitedCode, userInfos.RealName) if err != nil { zap.L().Error("createQrCode err", zap.Error(err)) return } _, b, err := fddClient.PersonVerify(userInfos.CustomerId, "1", req.UserUpdateInfoService.RealName, req.UserUpdateInfoService.IdCard, req.UserUpdateInfoService.TelNum, fmt.Sprintf("%v/contractreturn?id=%d&htmltype=%s&envtype=%s", m.ReturnUrl, req.Id, req.UserUpdateInfoService.HtmlType, req.UserUpdateInfoService.EnvType)) if err != nil { zap.L().Error("fddClient personVerify err", zap.Error(err)) return } url, err := base64.StdEncoding.DecodeString(b) if err != nil { return } rep.Url = string(url) return } func (a *ArtistInfo) UpdateUserInfo(req *artistInfo.UserInfoCommonRequest) (rep *artistInfo.UpdateUserInfoRespond, err error) { util.CreateArtistInfo(req.Id) req.UserUpdateInfoService.Photo = strings.Split(req.UserUpdateInfoService.Photo, "?v=")[0] //转移画家视频 req.UserUpdateInfoService.CertificateImg = strings.Split(req.UserUpdateInfoService.CertificateImg, "?v=")[0] //转移画家视频 req.UserUpdateInfoService.Video = strings.Split(req.UserUpdateInfoService.Video, "?v=")[0] //转移身份证正面 req.UserUpdateInfoService.IdCardFront = strings.Split(req.UserUpdateInfoService.IdCardFront, "?v=")[0] req.UserUpdateInfoService.IdCardBack = strings.Split(req.UserUpdateInfoService.IdCardBack, "?v=")[0] rep, err = dao.Update(req) return } func (a *ArtistInfo) UserUpdateTel(req *artistInfo.UserUpdateTelRequest) (rep *artistInfo.UserUpdateTelRespond, err error) { rep, err = dao.UpdateTel(req) return } func (a *ArtistInfo) UserUpdateMsg(req *artistInfo.UserInfoCommonRequest) (rep *artistInfo.UserUpdateMsgRespond, err error) { rep, err = dao.UpdateMsg(req) return } func (a *ArtistInfo) Verifyfdd(req *artistInfo.VerifyfddRequest) (rep *artistInfo.VerifyfddRespond, err error) { rep, err = dao.VerifyFdd(req) if err != nil { if !rep.Ready { fddClient, err := fdd.NewFddClient() if err != nil { zap.L().Error("newFddClient err", zap.Error(err)) return rep, err } userInfo, err := dao.GetUserInfoSelf(req.Id) if err != nil { zap.L().Error("getUserInfoSelf err", zap.Error(err)) return rep, nil } err = util.CreateQrCode(userInfo.InvitedCode, userInfo.RealName) if err != nil { zap.L().Error("createQrCode err", zap.Error(err)) return rep, err } //注意!!!userUpdateInfoService没有值!!!! var userUpdateInfoService model.UserUpdateInfoService _, b, err := fddClient.PersonVerify(userInfo.CustomerId, "1", userUpdateInfoService.RealName, userUpdateInfoService.IdCard, userUpdateInfoService.TelNum, fmt.Sprintf("%v/contractreturn?id=%d&htmltype=%s&envtype=%s", m.ReturnUrl, req.Id, userUpdateInfoService.HtmlType, userUpdateInfoService.EnvType)) if err != nil { zap.L().Error("fddClient personVerify err", zap.Error(err)) return nil, err } url, err := base64.StdEncoding.DecodeString(b) if err != nil { zap.L().Error("base64 decodeString err", zap.Error(err)) } rep.Url = string(url) } else { rep.Url = "" } } return } func (a *ArtistInfo) FinishVerify(req *artistInfo.FinishVerifyRequest) (rep *artistInfo.FinishVerifyRespond, err error) { rep, err = dao.FinishVerify(req) return }