Files
kami_boss/internal/controllers/addController.go
danial c3906e940e refactor(account): 重构账户管理页面布局和样式
-精简HTML结构,优化`account.html`,`apple-card/account.html`,和`t-mall-game/account.html`中iframe的布局。
- 调整CSS样式,以增强用户界面的一致性和可读性。
- 优化`account_history.html`中的表格和搜索栏的样式与对齐。

fix(controller): 修正新增控制器参数顺序

- 修正`addController.go`中的参数顺序,确保交易类型正确传递给服务层。
- 更新数据库插入操作,确保UUID正确分配给新记录,防止SQL错误。
2024-09-04 09:54:18 +08:00

432 lines
15 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 controllers
import (
"boss/internal/common"
"boss/internal/datas"
"boss/internal/models/merchant"
"boss/internal/models/payfor"
"boss/internal/models/road"
"boss/internal/models/system"
"boss/internal/service"
"strconv"
"strings"
"time"
"github.com/beego/beego/v2/core/logs"
"github.com/rs/xid"
)
type AddController struct {
BaseController
}
// AddMenu 添加一级菜单
func (c *AddController) AddMenu() {
oneMenu := c.GetString("oneMenu")
userID := c.GetSession("userID").(string)
se := new(service.AddService)
dataJSON := se.AddMenu(oneMenu, userID)
c.GenerateJSON(dataJSON)
}
// AddSecondMenu 添加二级菜单
func (c *AddController) AddSecondMenu() {
firstMenuUid := c.GetString("preMenuUid")
secondMenu := c.GetString("secondMenu")
secondRouter := c.GetString("secondRouter")
userID := c.GetSession("userID").(string)
se := new(service.AddService)
dataJSON := se.AddSecondMenu(firstMenuUid, secondRouter, secondMenu, userID)
c.GenerateJSON(dataJSON)
}
// AddPower 添加权限项的处理函数
func (c *AddController) AddPower() {
firstMenuUid := strings.TrimSpace(c.GetString("firstMenuUid"))
secondMenuUid := strings.TrimSpace(c.GetString("secondMenuUid"))
powerItem := strings.TrimSpace(c.GetString("powerItem"))
powerID := strings.TrimSpace(c.GetString("powerID"))
userID := c.GetSession("userID").(string)
se := new(service.AddService)
keyDataJSON := se.AddPower(powerItem, powerID, firstMenuUid, secondMenuUid, userID)
c.GenerateJSON(keyDataJSON)
}
// AddRole 添加权限角色
func (c *AddController) AddRole() {
roleName := strings.TrimSpace(c.GetString("roleNameAdd"))
roleRemark := strings.TrimSpace(c.GetString("roleRemark"))
userID := c.GetSession("userID").(string)
se := new(service.AddService)
keyDataJSON := se.AddRole(roleName, roleRemark, userID)
c.GenerateJSON(keyDataJSON)
}
func (c *AddController) SavePower() {
firstMenuUids := c.GetStrings("firstMenuUid[]")
secondMenuUids := c.GetStrings("secondMenuUid[]")
powerIds := c.GetStrings("powerId[]")
roleUid := strings.TrimSpace(c.GetString("roleUid"))
se := new(service.AddService)
dataJSON := se.SavePower(roleUid, firstMenuUids, secondMenuUids, powerIds)
c.GenerateJSON(dataJSON)
}
// AddOperator 添加操作员
func (c *AddController) AddOperator() {
loginAccount := strings.TrimSpace(c.GetString("operatorAccount"))
loginPassword := strings.TrimSpace(c.GetString("operatorPassword"))
role := strings.TrimSpace(c.GetString("operatorRole"))
status := strings.TrimSpace(c.GetString("status"))
remark := strings.TrimSpace(c.GetString("remark"))
se := new(service.AddService)
keyDataJSON := se.AddOperator(loginAccount, loginPassword, role, status, remark)
c.GenerateJSON(keyDataJSON)
}
// AddBankCard 添加银行卡
func (c *AddController) AddBankCard() {
userName := strings.TrimSpace(c.GetString("userName"))
bankCode := strings.TrimSpace(c.GetString("bankCode"))
accountName := strings.TrimSpace(c.GetString("accountName"))
certificateType := strings.TrimSpace(c.GetString("certificateType"))
phoneNo := strings.TrimSpace(c.GetString("phoneNo"))
bankName := strings.TrimSpace(c.GetString("bankName"))
bankAccountType := strings.TrimSpace(c.GetString("bankAccountType"))
bankNo := strings.TrimSpace(c.GetString("bankNo"))
identifyCard := strings.TrimSpace(c.GetString("certificateType"))
certificateNo := strings.TrimSpace(c.GetString("certificateNo"))
bankAddress := strings.TrimSpace(c.GetString("bankAddress"))
uid := strings.TrimSpace(c.GetString("uid"))
se := new(service.AddService)
dataJSON := se.AddBankCard(userName, bankCode, accountName, certificateType, phoneNo,
bankName, bankAccountType, bankNo, certificateNo, bankAddress, uid, identifyCard)
c.GenerateJSON(dataJSON)
}
// AddRoad 添加通道
func (c *AddController) AddRoad() {
roadUid := strings.TrimSpace(c.GetString("roadUid"))
roadName := strings.TrimSpace(c.GetString("roadName"))
roadRemark := strings.TrimSpace(c.GetString("roadRemark"))
productUid := strings.TrimSpace(c.GetString("productName"))
basicRate := strings.TrimSpace(c.GetString("basicRate"))
settleFee := strings.TrimSpace(c.GetString("settleFee"))
roadTotalLimit := strings.TrimSpace(c.GetString("roadTotalLimit"))
roadEverydayLimit := strings.TrimSpace(c.GetString("roadEverydayLimit"))
singleMinLimit := strings.TrimSpace(c.GetString("singleMinLimit"))
singleMaxLimit := strings.TrimSpace(c.GetString("singleMaxLimit"))
startHour := strings.TrimSpace(c.GetString("startHour"))
endHour := strings.TrimSpace(c.GetString("endHour"))
params := strings.TrimSpace(c.GetString("params"))
productCode := strings.TrimSpace(c.GetString("productCode"))
paymentHtml := strings.TrimSpace(c.GetString("paymentHtml"))
transactionType := strings.TrimSpace(c.GetString("transactionType"))
se := new(service.AddService)
dataJSON := se.AddRoad(
startHour,
endHour,
roadName,
productUid,
basicRate,
settleFee,
roadTotalLimit,
roadEverydayLimit,
singleMinLimit,
singleMaxLimit,
roadUid,
roadRemark,
params,
productCode,
paymentHtml,
transactionType,
)
c.GenerateJSON(dataJSON)
}
func (c *AddController) AddRoadPool() {
roadPoolName := strings.TrimSpace(c.GetString("roadPoolName"))
roadPoolCode := strings.TrimSpace(c.GetString("roadPoolCode"))
se := new(service.AddService)
keyDataJSON := se.AddRoadPool(roadPoolName, roadPoolCode)
c.GenerateJSON(keyDataJSON)
}
// SaveRoadUid 添加或者更新通道池中的通道
func (c *AddController) SaveRoadUid() {
roadUids := c.GetStrings("roadUid[]")
roadPoolCode := strings.TrimSpace(c.GetString("roadPoolCode"))
se := new(service.AddService)
dataJSON := se.SaveRoadUid(roadPoolCode, roadUids)
c.GenerateJSON(dataJSON)
}
// AddAgent 添加代理信息
func (c *AddController) AddAgent() {
agentName := strings.TrimSpace(c.GetString("agentName"))
agentPhone := strings.TrimSpace(c.GetString("agentPhone"))
agentLoginPassword := strings.TrimSpace(c.GetString("agentLoginPassword"))
agentVertifyPassword := strings.TrimSpace(c.GetString("agentVertifyPassword"))
agentRemark := strings.TrimSpace(c.GetString("agentRemark"))
status := strings.TrimSpace(c.GetString("status"))
agentUid := strings.TrimSpace(c.GetString("agentUid"))
se := new(service.AddService)
keyDataJSON := se.AddAgent(agentName, agentPhone, agentLoginPassword, agentVertifyPassword, status, agentUid, agentRemark)
c.GenerateJSON(keyDataJSON)
}
func (c *AddController) AddMerchant() {
merchantName := strings.TrimSpace(c.GetString("merchantName"))
phone := strings.TrimSpace(c.GetString("phone"))
loginPassword := strings.TrimSpace(c.GetString("loginPassword"))
verifyPassword := strings.TrimSpace(c.GetString("verifyPassword"))
merchantStatus := strings.TrimSpace(c.GetString("merchantStatus"))
remark := strings.TrimSpace(c.GetString("remark"))
se := new(service.AddService)
keyDataJSON := se.AddMerchant(merchantName, phone, loginPassword, verifyPassword, merchantStatus, remark)
c.GenerateJSON(keyDataJSON)
}
// AddMerchantDeploy 添加商戶支付配置參數
func (c *AddController) AddMerchantDeploy() {
merchantUid := strings.TrimSpace(c.GetString("merchantNo"))
isAutoSettle := strings.TrimSpace(c.GetString("isAutoSettle"))
isAutoPayfor := strings.TrimSpace(c.GetString("isAutoPayfor"))
ipWhite := strings.TrimSpace(c.GetString("ipWhite"))
payforRoadChoose := strings.TrimSpace(c.GetString("payforRoadChoose"))
rollPayforRoadChoose := strings.TrimSpace(c.GetString("rollPayforRoadChoose"))
payforFee := strings.TrimSpace(c.GetString("payforFee"))
belongAgentName := strings.TrimSpace(c.GetString("belongAgentName"))
belongAgentUid := strings.TrimSpace(c.GetString("belongAgentUid"))
se := new(service.AddService)
keyDataJSON := se.AddMerchantDeploy(merchantUid, isAutoSettle, isAutoPayfor, ipWhite, belongAgentName,
belongAgentUid, payforRoadChoose, rollPayforRoadChoose, payforFee)
c.GenerateJSON(keyDataJSON)
}
func (c *AddController) AddMerchantPayType() {
merchantNo := strings.TrimSpace(c.GetString("merchantNo"))
payType := strings.TrimSpace(c.GetString("payType"))
singleRoad := strings.TrimSpace(c.GetString("singleRoad"))
singleRoadPlatformFee := strings.TrimSpace(c.GetString("singleRoadPlatformFee"))
singleRoadAgentFee := strings.TrimSpace(c.GetString("singleRoadAgentFee"))
rollPoolRoad := strings.TrimSpace(c.GetString("rollPoolRoad"))
rollRoadPlatformFee := strings.TrimSpace(c.GetString("rollRoadPlatformFee"))
rollRoadAgentFee := strings.TrimSpace(c.GetString("rollRoadAgentFee"))
isLoan := strings.TrimSpace(c.GetString("isLoan"))
loanRate := strings.TrimSpace(c.GetString("loanRate"))
loanDays := strings.TrimSpace(c.GetString("loanDays"))
unfreezeTimeHour := strings.TrimSpace(c.GetString("unfreezeTimeHour"))
keyDataJSON := new(datas.KeyDataJSON)
if payType == "" || payType == "none" {
keyDataJSON.Code = -1
keyDataJSON.Msg = "操作失败,请选择支付类型"
c.GenerateJSON(keyDataJSON)
return
}
if singleRoad == "" && rollPoolRoad == "" {
keyDataJSON.Code = -1
keyDataJSON.Msg = "单通道、轮询通道至少要有一个不为空!"
}
if singleRoad != "" && singleRoadPlatformFee == "" {
keyDataJSON.Code = -1
keyDataJSON.Msg = "单通道平台利润率不能为0"
}
if rollPoolRoad != "" && rollRoadPlatformFee == "" {
keyDataJSON.Code = -1
keyDataJSON.Msg = "轮询通道平台利润率不能为0"
}
if !merchant.CheckMarginValid(singleRoadPlatformFee) {
keyDataJSON.Code = -1
keyDataJSON.Msg = "费率映射设置错误!"
}
if keyDataJSON.Code == -1 {
c.GenerateJSON(keyDataJSON)
return
}
b, err := strconv.ParseFloat(singleRoadAgentFee, 64)
if err != nil {
b = 0.0
}
cs, err := strconv.ParseFloat(rollRoadPlatformFee, 64)
if err != nil {
cs = 0.0
}
d, err := strconv.ParseFloat(rollRoadAgentFee, 64)
if err != nil {
d = 0.0
}
e, err := strconv.ParseFloat(loanRate, 64)
if err != nil {
e = 0.0
}
i, err := strconv.Atoi(loanDays)
if err != nil {
i = 0
}
j, err := strconv.Atoi(unfreezeTimeHour)
if err != nil {
j = 0
}
var merchantDeployInfo merchant.MerchantDeployInfo
merchantDeployInfo.MerchantUid = merchantNo
merchantDeployInfo.PayType = payType
merchantDeployInfo.SingleRoadName = singleRoad
merchantDeployInfo.SingleRoadPlatformRate = singleRoadPlatformFee
merchantDeployInfo.SingleRoadAgentRate = b
merchantDeployInfo.RollRoadPlatformRate = cs
merchantDeployInfo.RollRoadAgentRate = d
merchantDeployInfo.IsLoan = isLoan
merchantDeployInfo.LoanRate = e
merchantDeployInfo.LoanDays = i
merchantDeployInfo.UnfreezeHour = j
merchantDeployInfo.RollRoadName = rollPoolRoad
roadInfo := road.GetRoadInfoByName(singleRoad)
rollPoolInfo := road.GetRoadPoolByName(rollPoolRoad)
merchantDeployInfo.SingleRoadUid = roadInfo.RoadUid
merchantDeployInfo.RollRoadCode = rollPoolInfo.RoadPoolCode
merchantDeployInfo.CreateTime = time.Now()
merchantDeployInfo.UpdateTime = time.Now()
//如果该用户的改支付类型已经存在,那么进行更新,否则进行添加
if merchant.IsExistByUidAndPayType(merchantNo, payType) {
if singleRoad == "" && rollPoolRoad == "" {
//表示需要删除该支付类型的通道
if merchant.DeleteMerchantDeployByUidAndPayType(merchantNo, payType) {
keyDataJSON.Code = 200
keyDataJSON.Msg = "删除该支付类型通道成功"
} else {
keyDataJSON.Code = -1
keyDataJSON.Msg = "删除该支付类型通道失败"
}
} else {
tmpInfo := merchant.GetMerchantDeployByUidAndPayType(merchantNo, payType)
merchantDeployInfo.Id = tmpInfo.Id
merchantDeployInfo.Status = tmpInfo.Status
merchantDeployInfo.UpdateTime = time.Now()
merchantDeployInfo.CreateTime = tmpInfo.CreateTime
if merchant.UpdateMerchantDeploy(merchantDeployInfo) {
keyDataJSON.Code = 200
keyDataJSON.Msg = "更新成功"
merchant.DeleteOtherMerchantDeployInfo(merchantDeployInfo)
} else {
keyDataJSON.Code = -1
keyDataJSON.Msg = "更新失败"
}
}
} else {
if singleRoad == "" && rollPoolRoad == "" {
keyDataJSON.Code = -1
keyDataJSON.Msg = "参数不能为空"
} else {
merchantDeployInfo.Status = common.ACTIVE
if merchant.InsertMerchantDeployInfo(merchantDeployInfo) {
// 添加支付类型后,删除当前用户下面的其他支付通道
// 查询当前支付类型
deployInfo := merchant.GetMerchantDeployByUidAndPayType(merchantNo, payType)
merchant.DeleteOtherMerchantDeployInfo(deployInfo)
keyDataJSON.Code = 200
keyDataJSON.Msg = "添加支付类型成功"
} else {
keyDataJSON.Code = -1
keyDataJSON.Msg = "添加支付类型失败"
}
}
}
c.GenerateJSON(keyDataJSON)
}
// AddPayFor 后台提交的下发记录
func (c *AddController) AddPayFor() {
merchantUid := strings.TrimSpace(c.GetString("merchantUid"))
merchantName := strings.TrimSpace(c.GetString("merchantName"))
bankName := strings.TrimSpace(c.GetString("bankName"))
accountName := strings.TrimSpace(c.GetString("accountName"))
bankUid := strings.TrimSpace(c.GetString("bankUid"))
bankNo := strings.TrimSpace(c.GetString("bankNo"))
bankAddress := strings.TrimSpace(c.GetString("bankAddress"))
phone := strings.TrimSpace(c.GetString("phone"))
payForAmount := strings.TrimSpace(c.GetString("payForAmount"))
se := new(service.AddService)
keyDataJSON := se.AddPayFor(merchantUid, bankUid, payForAmount, bankNo,
accountName, phone, merchantName, bankName, bankAddress)
c.GenerateJSON(keyDataJSON)
}
func (c *AddController) AddSelfPayFor() {
bankUid := strings.TrimSpace(c.GetString("bankUid"))
bankName := strings.TrimSpace(c.GetString("bankName"))
accountName := strings.TrimSpace(c.GetString("accountName"))
bankNo := strings.TrimSpace(c.GetString("bankNo"))
bankAddress := strings.TrimSpace(c.GetString("bankAddress"))
phone := strings.TrimSpace(c.GetString("phone"))
payForAmount := strings.TrimSpace(c.GetString("payForAmount"))
keyDataJSON := new(datas.KeyDataJSON)
keyDataJSON.Code = -1
if bankUid == "" {
keyDataJSON.Msg = "银行卡uid不能为空请联系技术人员"
c.GenerateJSON(keyDataJSON)
return
}
money, err := strconv.ParseFloat(payForAmount, 64)
if err != nil {
logs.Error("self payfor money fail: ", err)
keyDataJSON.Msg = "输入金额有误,请仔细检查"
c.GenerateJSON(keyDataJSON)
return
}
bankInfo := system.GetBankCardByUid(bankUid)
//需要对前端传入的数据做校验,不能完全相信前端的数据
if bankInfo.AccountName != accountName || bankInfo.BankNo != bankNo || bankInfo.PhoneNo != phone {
keyDataJSON.Msg = "前端页面数据有篡改,请注意资金安全"
c.GenerateJSON(keyDataJSON)
return
}
selfPayFor := payfor.PayforInfo{PayforUid: "pppp" + xid.New().String(), BankOrderId: "4444" + xid.New().String(), PayforFee: common.ZERO, Type: common.SELF_HELP,
PayforAmount: money, PayforTotalAmount: money + common.ZERO, BankCode: bankInfo.BankCode, BankName: bankName, IsSend: common.NO,
BankAccountName: bankInfo.AccountName, BankAccountNo: bankInfo.BankNo, BankAccountType: bankInfo.BankAccountType, BankAccountAddress: bankAddress,
Status: common.PAYFOR_COMFRIM, CreateTime: time.Now(), UpdateTime: time.Now()}
if payfor.InsertPayfor(selfPayFor) {
keyDataJSON.Code = 200
} else {
keyDataJSON.Msg = "数据处理失败,请重新提交"
}
c.GenerateJSON(keyDataJSON)
}