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.

189 lines
9.4 KiB

6 months ago
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
}