You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.5 KiB
63 lines
1.5 KiB
package service
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"service-api/global"
|
|
"service-api/model"
|
|
"service-api/utils"
|
|
"strings"
|
|
)
|
|
|
|
//获取用户钱包
|
|
func GetUserWallet(userID string) (interface{}, error) {
|
|
var (
|
|
err error
|
|
data model.UserWalletDesc
|
|
)
|
|
err = global.MG_DB.Model(&model.UserWallet{}).Where("user_id=?", userID).Find(&data).Error
|
|
if err != nil {
|
|
return data, errors.New("Wallet information not found!")
|
|
}
|
|
return data, nil
|
|
}
|
|
|
|
//创建用户钱包
|
|
func AddUserWallet(userID string) (interface{}, error) {
|
|
var (
|
|
err error
|
|
data model.UserWallet
|
|
res model.Account
|
|
)
|
|
password := utils.GetInvitationLen(10)
|
|
var reqMap = make(map[string]interface{}, 0)
|
|
reqMap["password"] = password
|
|
mJson, _ := json.Marshal(reqMap)
|
|
mString := string(mJson)
|
|
resp, err := http.Post("http://139.196.93.111:32357/account", "Content-Type:application/json;charset=utf-8", strings.NewReader(mString))
|
|
if err != nil {
|
|
return data, errors.New("Failed to generate Wallet!")
|
|
}
|
|
robots, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
resp.Body.Close()
|
|
if err3 := json.Unmarshal(robots, &res); err3 != nil {
|
|
return data, errors.New("Failed to generate Wallet!")
|
|
}
|
|
data.WalletAddress = res.Address
|
|
data.WalletName = res.ID
|
|
data.PrivateKey = res.PrivateKey
|
|
data.PublicKey = res.PublicKey
|
|
data.Password = password
|
|
data.WalletBalance = 0
|
|
err = global.MG_DB.Model(&model.UserWallet{}).Create(&data).Error
|
|
if err != nil {
|
|
return data, errors.New("Failed to generate Wallet!")
|
|
}
|
|
return data, nil
|
|
}
|
|
|