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.
188 lines
9.4 KiB
188 lines
9.4 KiB
package service
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/gin-gonic/gin"
|
|
"shop-api/global"
|
|
"shop-api/model"
|
|
"shop-api/model/request"
|
|
"shop-api/utils"
|
|
)
|
|
|
|
func GetUserWalletDetail(userID string) (err error, userInfo *model.Wallet) {
|
|
var user model.Wallet
|
|
err = global.MG_DB.Model(&model.Wallet{}).Where("user_id=?", userID).Find(&user).Error
|
|
if err != nil {
|
|
return errors.New("获取用户失败"), nil
|
|
}
|
|
return nil, &user
|
|
}
|
|
|
|
func GetUserAccountList(userID string) (err error, userInfo *model.Account) {
|
|
var user model.Account
|
|
err = global.MG_DB.Model(&model.Account{}).Where("user_id=?", userID).Find(&user).Error
|
|
if err != nil {
|
|
return errors.New("获取用户账户失败"), nil
|
|
}
|
|
return nil, &user
|
|
}
|
|
|
|
func AddUserAccount(userID string, data *request.AddAccount) error {
|
|
var (
|
|
err error
|
|
accountZ model.Account
|
|
)
|
|
code := RedisGet("msg_code" + data.Phone)
|
|
if global.MG_CONFIG.System.Env == "develop" && data.Code == "888888" {
|
|
} else if code != data.Code {
|
|
return errors.New("验证码验证失败")
|
|
}
|
|
err = global.MG_DB.Model(&model.Account{}).Where("user_id=?", userID).Find(&accountZ).Error
|
|
if err != nil || accountZ.ID != 0 {
|
|
return errors.New("已存在绑定账户,不可再次绑定")
|
|
}
|
|
var account model.Account
|
|
account.UserID = userID
|
|
account.AccountName = data.AccountName
|
|
account.IDCard = data.IDCard
|
|
account.Phone = data.Phone
|
|
account.PayPalName = data.PayPalName
|
|
err = global.MG_DB.Model(&model.Account{}).Create(&account).Error
|
|
if err != nil {
|
|
return errors.New("绑定用户账户失败")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func DeleteUserAccount(userID string, data *request.DeleteAccount) error {
|
|
var err error
|
|
code := RedisGet("msg_code" + data.Phone)
|
|
if global.MG_CONFIG.System.Env == "develop" && data.Code == "888888" {
|
|
} else if code != data.Code {
|
|
return errors.New("验证码验证失败")
|
|
}
|
|
err = global.MG_DB.Model(&model.Account{}).Where("user_id=? and id=?", userID, data.ID).Delete(&model.Account{}).Error
|
|
if err != nil {
|
|
return errors.New("删除账户失败")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func GetUserCommissionList(userID string, info *request.SearchCommission) (error, interface{}, int64) {
|
|
var (
|
|
err error
|
|
data []model.Bill
|
|
limit int
|
|
offset int
|
|
total int64
|
|
)
|
|
limit = info.PageSize
|
|
offset = info.PageSize * (info.Page - 1)
|
|
db := global.MG_DB.Model(&model.Bill{})
|
|
if info.Receipt != 0 {
|
|
db = db.Where("receipt=?", info.Receipt)
|
|
}
|
|
err = db.Count(&total).Error
|
|
if err != nil {
|
|
return errors.New("获取总数失败"), data, total
|
|
}
|
|
err = db.Where("user_id=? and type=1", userID).Offset(offset).Limit(limit).Find(&data).Error
|
|
if err != nil {
|
|
return errors.New("获取用户账单失败"), data, total
|
|
}
|
|
return nil, data, total
|
|
}
|
|
|
|
func GetUserWithdrawalList(userID string, info *request.SearchWithdrawal) (error, interface{}, int64) {
|
|
var (
|
|
err error
|
|
data []model.Bill
|
|
limit int
|
|
offset int
|
|
total int64
|
|
)
|
|
limit = info.PageSize
|
|
offset = info.PageSize * (info.Page - 1)
|
|
db := global.MG_DB.Model(&model.Bill{})
|
|
if info.Status != 0 {
|
|
db = db.Where("receipt=?", info.Status)
|
|
}
|
|
err = db.Count(&total).Error
|
|
if err != nil {
|
|
return errors.New("获取总数失败"), data, total
|
|
}
|
|
err = db.Where("user_id=? and type=3", userID).Offset(offset).Limit(limit).Find(&data).Error
|
|
if err != nil {
|
|
return errors.New("获取用户账单失败"), data, total
|
|
}
|
|
return nil, data, total
|
|
}
|
|
|
|
func getWallet(platform, userId string) (error, model.Wallet) {
|
|
var (
|
|
err error
|
|
result model.Wallet
|
|
)
|
|
err = global.MG_DB.Model(&model.Wallet{}).Where("`platform` = ? AND user_id = ?", platform, userId).First(&result).Error
|
|
return err, result
|
|
}
|
|
|
|
var (
|
|
methods = map[string][]model.PaymentMethod{
|
|
"GLOBAL": {
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/AlipayPlus.svg", Name: "Alipay+", Value: "CONNECT_WALLET", Type: "AlipayPlus"},
|
|
},
|
|
"MY": {
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/icon/medium/default/BOOST.svg", Name: "Boost", Value: "BOOST", Type: "AlipayPlus"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/icon/medium/default/TNG.svg", Name: "Touch 'n Go eWallet", Value: "TNG", Type: "AlipayPlus"},
|
|
model.PaymentMethod{Logo: "https://resource.alipayplus.com/storage/ipaymentmngfd5e514400714344/2023/07/31/778f4988-2f73-4417-9d41-caaabaf006d0.png", Name: "Shopeepay", Value: "SHOPEEPAY_MY", Type: "Wallet"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/GrabPay.png", Name: "GrabPay", Value: "GRABPAY_MY", Type: "Wallet"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/FPX.svg", Name: "FPX", Value: "ONLINEBANKING_FPX", Type: "OnlineBanking"},
|
|
},
|
|
"TH": {
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/BangkokBank.svg", Name: "Bangkok Bank", Value: "BANKTRANSFER_BANGKOKBANK", Type: "BankTransfer"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/KrungThaiBank.svg", Name: "Krung Thai Bank Online Banking", Value: "ONLINEBANKING_KRUNGTHAIBANK", Type: "OnlineBanking"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/BangkokBank.svg", Name: "Bangkok Bank Online Banking", Value: "ONLINEBANKING_BANGKOKBANK", Type: "OnlineBanking"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/KasikornBank.svg", Name: "Kasikorn Bank Online Banking", Value: "ONLINEBANKING_KASIKORNBANK", Type: "OnlineBanking"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/SiamCommercialBank.svg", Name: "Siam Commerical Bank Online Banking", Value: "ONLINEBANKING_SIAMCOMMERICALBANK", Type: "OnlineBanking"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/KrungThaiBank.svg", Name: "Krung Thai Bank", Value: "BANKTRANSFER_KRUNGTHAIBANK", Type: "OnlineBanking"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/BankofAyutthaya.svg", Name: "Bank of Ayudhya Online Banking", Value: "ONLINEBANKING_BANKOFAYUDHYA", Type: "OnlineBanking"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/BankofAyutthaya.svg", Name: "Bank of Ayudhya", Value: "BANKTRANSFER_BANKOFAYUDHYA", Type: "BankTransfer"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/governmentsavingsbank.png", Name: "Government Savings Bank", Value: "BANKTRANSFER_GOVERNMENTSAVINGSBANK", Type: "BankTransfer"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/SiamCommercialBank.svg", Name: "Siam Commerical Bank", Value: "BANKTRANSFER_SIAMCOMMERICALBANK", Type: "BankTransfer"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/KasikornBank.svg", Name: "Kasikorn Bank", Value: "BANKTRANSFER_KASIKORNBANK", Type: "BankTransfer"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/icon/medium/default/RABBIT_LINE_PAY.svg", Name: "Rabbit LINE Pay", Value: "RABBIT_LINE_PAY", Type: "AlipayPlus"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/icon/medium/default/TRUEMONEY.svg", Name: "TrueMoney Wallet", Value: "TRUEMONEY", Type: "AlipayPlus"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/PromptPay.png", Name: "Promptpay", Value: "PROMPTPAY", Type: "BankTransfer"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/Dolfin.png", Name: "Dolfin", Value: "DOLFIN", Type: "Wallet"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/shopeepay.png", Name: "Shopeepay", Value: "SHOPEEPAY_TH", Type: "Wallet"},
|
|
model.PaymentMethod{Logo: "https://resource.alipayplus.com/storage/ipaymentmngfd5e514400714344/2023/10/25/c57db82e-cc67-4e45-b75f-7e77d7b63965.png", Name: "KPLUS", Value: "KPLUS", Type: "AlipayPlus"},
|
|
},
|
|
"JP": {
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/PayPay.png", Name: "PayPay", Value: "PAYPAY", Type: "Wallet"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/konbini.svg", Name: "Konbini", Value: "KONBINI", Type: "OTC"},
|
|
model.PaymentMethod{Logo: "https://resource.alipayplus.com/storage/ipaymentmngfd5e514400714344/2024/03/18/19d7cc1b-c950-4fa5-a379-ead65f6b7421.png", Name: "7-Eleven", Value: "SEVENELEVEN", Type: "OTC"},
|
|
model.PaymentMethod{Logo: "https://resource.alipayplus.com/storage/ipaymentmngfd5e514400714344/2024/03/18/99382c04-a91d-4a57-8201-523533393885.png", Name: "Pay-easy ATM", Value: "BANKTRANSFER_PAYEASY", Type: "BankTransfer"},
|
|
model.PaymentMethod{Logo: "https://resource.alipayplus.com/storage/ipaymentmngfd5e514400714344/2024/03/18/99382c04-a91d-4a57-8201-523533393885.png", Name: "Pay-easy Online Banking", Value: "ONLINEBANKING_PAYEASY", Type: "OnlineBanking"},
|
|
model.PaymentMethod{Logo: "https://resource.alipayplus.com/storage/ipaymentmngfd5e514400714344/2024/02/01/5c9caa1a-dcd6-400e-ae07-2ea1c2e4271f.png", Name: "LINE Pay", Value: "LINEPAY", Type: "Wallet"},
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/icon/medium/default/ALIPAY_GENERAL_CARD.svg", Name: "Credit and Debit Card", Value: "CARD", Type: "CARD"},
|
|
},
|
|
"VN": {
|
|
model.PaymentMethod{Logo: "https://gw.alipay.com/antom/icon/medium/default/ZaloPay.svg", Name: "ZaloPay", Value: "ZALOPAY", Type: "Wallet"},
|
|
},
|
|
}
|
|
)
|
|
|
|
func GetCountryPaymentMethod(c *gin.Context) (error, []model.PaymentMethod) {
|
|
var (
|
|
err error
|
|
result []model.PaymentMethod
|
|
)
|
|
country := utils.GetCountryByAcceptLanguage(c.GetHeader("Accept-Language"))
|
|
if val, ok := methods[country]; ok {
|
|
result = val
|
|
} else {
|
|
result = methods["GLOBAL"]
|
|
}
|
|
return err, result
|
|
}
|
|
|