mirror of
https://github.com/kongyuebin1/dongfeng-pay.git
synced 2024-12-26 12:12:25 +08:00
437 lines
12 KiB
Go
437 lines
12 KiB
Go
package service
|
||
|
||
import (
|
||
"boss/common"
|
||
"boss/datas"
|
||
"boss/models"
|
||
"boss/models/accounts"
|
||
"boss/models/agent"
|
||
"boss/models/merchant"
|
||
"boss/models/payfor"
|
||
"boss/models/road"
|
||
"boss/models/system"
|
||
"boss/models/user"
|
||
"boss/utils"
|
||
"fmt"
|
||
"github.com/beego/beego/v2/client/httplib"
|
||
"github.com/beego/beego/v2/core/logs"
|
||
"github.com/beego/beego/v2/server/web"
|
||
"strconv"
|
||
)
|
||
|
||
type UpdateService struct {
|
||
}
|
||
|
||
func (c *UpdateService) UpMenu(menuUid string) *datas.BaseDataJSON {
|
||
menuInfo := system.GetMenuInfoByMenuUid(menuUid)
|
||
dataJSON := new(datas.BaseDataJSON)
|
||
if menuInfo.MenuUid == "" {
|
||
dataJSON.Msg = "更改排列顺序失败"
|
||
dataJSON.Code = -1
|
||
} else {
|
||
exist := system.MenuOrderIsExists(menuInfo.MenuOrder - 1)
|
||
if !exist {
|
||
dataJSON.Msg = "已经是最高的顺序"
|
||
dataJSON.Code = -1
|
||
} else {
|
||
//如果他前面有菜单,那么交换他们的menuOrder
|
||
preMenuInfo := system.GetMenuInfoByMenuOrder(menuInfo.MenuOrder - 1)
|
||
menuInfo.MenuOrder = menuInfo.MenuOrder - 1
|
||
preMenuInfo.MenuOrder = preMenuInfo.MenuOrder + 1
|
||
preMenuInfo.UpdateTime = utils.GetBasicDateTime()
|
||
menuInfo.UpdateTime = utils.GetBasicDateTime()
|
||
//更新菜单表
|
||
system.UpdateMenuInfo(preMenuInfo)
|
||
system.UpdateMenuInfo(menuInfo)
|
||
//更新二级菜单表
|
||
SortSecondMenuOrder(preMenuInfo)
|
||
SortSecondMenuOrder(menuInfo)
|
||
dataJSON.Code = 200
|
||
}
|
||
}
|
||
return dataJSON
|
||
}
|
||
|
||
func (c *UpdateService) DownMenu(menuUid string) *datas.BaseDataJSON {
|
||
menuInfo := system.GetMenuInfoByMenuUid(menuUid)
|
||
dataJSON := new(datas.BaseDataJSON)
|
||
if menuInfo.MenuUid == "" {
|
||
dataJSON.Msg = "更改排列顺序失败"
|
||
dataJSON.Code = -1
|
||
} else {
|
||
exist := system.MenuOrderIsExists(menuInfo.MenuOrder + 1)
|
||
if !exist {
|
||
dataJSON.Msg = "已经是最高的顺序"
|
||
dataJSON.Code = -1
|
||
} else {
|
||
//如果他前面有菜单,那么交换他们的menuOrder
|
||
lastMenuInfo := system.GetMenuInfoByMenuOrder(menuInfo.MenuOrder + 1)
|
||
menuInfo.MenuOrder = menuInfo.MenuOrder + 1
|
||
lastMenuInfo.MenuOrder = lastMenuInfo.MenuOrder - 1
|
||
lastMenuInfo.UpdateTime = utils.GetBasicDateTime()
|
||
menuInfo.UpdateTime = utils.GetBasicDateTime()
|
||
//更新菜单表
|
||
system.UpdateMenuInfo(lastMenuInfo)
|
||
system.UpdateMenuInfo(menuInfo)
|
||
//更新二级菜单表
|
||
SortSecondMenuOrder(lastMenuInfo)
|
||
SortSecondMenuOrder(menuInfo)
|
||
dataJSON.Code = 200
|
||
}
|
||
}
|
||
return dataJSON
|
||
}
|
||
|
||
func (c *UpdateService) UpSecondMenu(secondMenuUid string) *datas.BaseDataJSON {
|
||
secondMenuInfo := system.GetSecondMenuInfoBySecondMenuUid(secondMenuUid)
|
||
dataJSON := new(datas.BaseDataJSON)
|
||
if secondMenuInfo.MenuOrder == 1 {
|
||
dataJSON.Code = -1
|
||
} else {
|
||
preSecondMenuInfo := system.GetSecondMenuInfoByMenuOrder(secondMenuInfo.MenuOrder-1, secondMenuInfo.FirstMenuUid)
|
||
preSecondMenuInfo.MenuOrder = preSecondMenuInfo.MenuOrder + 1
|
||
preSecondMenuInfo.UpdateTime = utils.GetBasicDateTime()
|
||
secondMenuInfo.MenuOrder = secondMenuInfo.MenuOrder - 1
|
||
secondMenuInfo.UpdateTime = utils.GetBasicDateTime()
|
||
//更新二级菜单项
|
||
system.UpdateSecondMenu(preSecondMenuInfo)
|
||
system.UpdateSecondMenu(secondMenuInfo)
|
||
|
||
dataJSON.Code = 200
|
||
}
|
||
return dataJSON
|
||
}
|
||
|
||
func (c *UpdateService) DownSecondMenu(secondMenuUid string) *datas.BaseDataJSON {
|
||
secondMenuInfo := system.GetSecondMenuInfoBySecondMenuUid(secondMenuUid)
|
||
|
||
dataJSON := new(datas.BaseDataJSON)
|
||
|
||
l := system.GetSecondMenuLenByFirstMenuUid(secondMenuInfo.FirstMenuUid)
|
||
if l == secondMenuInfo.MenuOrder {
|
||
dataJSON.Code = -1
|
||
} else {
|
||
lastSecondMenu := system.GetSecondMenuInfoByMenuOrder(secondMenuInfo.MenuOrder+1, secondMenuInfo.FirstMenuUid)
|
||
lastSecondMenu.MenuOrder = lastSecondMenu.MenuOrder - 1
|
||
lastSecondMenu.UpdateTime = utils.GetBasicDateTime()
|
||
|
||
secondMenuInfo.MenuOrder = secondMenuInfo.MenuOrder + 1
|
||
secondMenuInfo.UpdateTime = utils.GetBasicDateTime()
|
||
|
||
system.UpdateSecondMenu(lastSecondMenu)
|
||
system.UpdateSecondMenu(secondMenuInfo)
|
||
|
||
dataJSON.Code = 200
|
||
}
|
||
return dataJSON
|
||
}
|
||
|
||
func (c *UpdateService) FreezeOperator(userId string) *datas.BaseDataJSON {
|
||
dataJSON := new(datas.BaseDataJSON)
|
||
|
||
if user.UpdateStauts(common.UNACTIVE, userId) {
|
||
dataJSON.Code = 200
|
||
dataJSON.Msg = "冻结成功"
|
||
} else {
|
||
dataJSON.Code = -1
|
||
dataJSON.Msg = "冻结失败"
|
||
}
|
||
return dataJSON
|
||
}
|
||
|
||
func (c *UpdateService) UnfreezeOperator(userId string) *datas.BaseDataJSON {
|
||
dataJSON := new(datas.BaseDataJSON)
|
||
|
||
if user.UpdateStauts("active", userId) {
|
||
dataJSON.Code = 200
|
||
dataJSON.Msg = "解冻成功"
|
||
} else {
|
||
dataJSON.Code = -1
|
||
dataJSON.Msg = "解冻失败"
|
||
}
|
||
|
||
return dataJSON
|
||
}
|
||
|
||
func (c *UpdateService) EditOperator(password, changePassword, role, userId, nick, remark string) *datas.KeyDataJSON {
|
||
keyDataJSON := new(datas.KeyDataJSON)
|
||
|
||
if (len(password) > 0 || len(changePassword) > 0) && password != changePassword {
|
||
keyDataJSON.Code = -1
|
||
keyDataJSON.Key = ".veritfy-operator-password-error"
|
||
keyDataJSON.Msg = "*2次密码输入不一致"
|
||
return keyDataJSON
|
||
}
|
||
|
||
if role == "" || role == "none" {
|
||
keyDataJSON.Code = -1
|
||
keyDataJSON.Key = ".change-operator-role-error"
|
||
keyDataJSON.Msg = "*角色不能为空"
|
||
return keyDataJSON
|
||
}
|
||
|
||
userInfo := user.GetUserInfoByUserID(userId)
|
||
if userInfo.UserId == "" {
|
||
keyDataJSON.Code = -2
|
||
keyDataJSON.Msg = "该用户不存在"
|
||
} else {
|
||
userInfo.UpdateTime = utils.GetBasicDateTime()
|
||
userInfo.Remark = remark
|
||
roleInfo := system.GetRoleByRoleUid(role)
|
||
userInfo.RoleName = roleInfo.RoleName
|
||
userInfo.Role = role
|
||
if len(password) > 0 && len(changePassword) > 0 && password == changePassword {
|
||
userInfo.Passwd = utils.GetMD5Upper(password)
|
||
}
|
||
userInfo.Nick = nick
|
||
user.UpdateUserInfo(userInfo)
|
||
keyDataJSON.Code = 200
|
||
}
|
||
return keyDataJSON
|
||
|
||
}
|
||
|
||
func (c *UpdateService) UpdateRoadStatus(roadUid string) *datas.BaseDataJSON {
|
||
dataJSON := new(datas.BaseDataJSON)
|
||
dataJSON.Code = 200
|
||
|
||
roadInfo := road.GetRoadInfoByRoadUid(roadUid)
|
||
if roadInfo.Status == "active" {
|
||
roadInfo.Status = common.UNACTIVE
|
||
} else {
|
||
roadInfo.Status = "active"
|
||
}
|
||
if road.UpdateRoadInfo(roadInfo) {
|
||
dataJSON.Code = 200
|
||
} else {
|
||
dataJSON.Code = -1
|
||
}
|
||
return dataJSON
|
||
}
|
||
|
||
func (c *UpdateService) UpdateMerchantStatus(merchantUid string) *datas.KeyDataJSON {
|
||
keyDataJSON := new(datas.KeyDataJSON)
|
||
if merchantUid == "" {
|
||
keyDataJSON.Code = -1
|
||
return keyDataJSON
|
||
}
|
||
|
||
merchantInfo := merchant.GetMerchantByUid(merchantUid)
|
||
|
||
if merchantInfo.MerchantUid == "" {
|
||
keyDataJSON.Code = -1
|
||
return keyDataJSON
|
||
}
|
||
|
||
if merchantInfo.Status == common.ACTIVE {
|
||
merchantInfo.Status = common.UNACTIVE
|
||
} else {
|
||
merchantInfo.Status = common.ACTIVE
|
||
}
|
||
merchantInfo.UpdateTime = utils.GetBasicDateTime()
|
||
|
||
if merchant.UpdateMerchant(merchantInfo) {
|
||
keyDataJSON.Code = 200
|
||
} else {
|
||
keyDataJSON.Code = -1
|
||
}
|
||
return keyDataJSON
|
||
}
|
||
|
||
func (c *UpdateService) UpdateAccountStatus(accountUid string) *datas.BaseDataJSON {
|
||
accountInfo := accounts.GetAccountByUid(accountUid)
|
||
if accountInfo.Status == common.ACTIVE {
|
||
accountInfo.Status = common.UNACTIVE
|
||
} else {
|
||
accountInfo.Status = common.ACTIVE
|
||
}
|
||
accountInfo.UpdateTime = utils.GetBasicDateTime()
|
||
|
||
dataJSON := new(datas.BaseDataJSON)
|
||
if accounts.UpdateAccount(accountInfo) {
|
||
dataJSON.Code = 200
|
||
dataJSON.Msg = "更新账户状态成功"
|
||
} else {
|
||
dataJSON.Code = -1
|
||
dataJSON.Msg = "更新账户状态失败"
|
||
}
|
||
return dataJSON
|
||
}
|
||
|
||
func (c *UpdateService) OperatorAccount(accountOperator, amount, accountUid string) *datas.AccountDataJSON {
|
||
accountDataJSON := new(datas.AccountDataJSON)
|
||
switch accountOperator {
|
||
case common.PLUS_AMOUNT:
|
||
case common.SUB_AMOUNT:
|
||
case common.FREEZE_AMOUNT:
|
||
case common.UNFREEZE_AMOUNT:
|
||
default:
|
||
accountDataJSON.Code = -1
|
||
}
|
||
a, err := strconv.ParseFloat(amount, 64)
|
||
if err != nil {
|
||
accountDataJSON.Msg = "处理金额输入有误"
|
||
}
|
||
if accountDataJSON.Code == -1 {
|
||
return accountDataJSON
|
||
}
|
||
msg, flag := models.OperatorAccount(accountUid, accountOperator, a)
|
||
if flag {
|
||
accountDataJSON.Code = 200
|
||
accountDataJSON.Msg = "处理成功,请检查对应账户信息"
|
||
accountDataJSON.AccountList = append(accountDataJSON.AccountList, accounts.GetAccountByUid(accountUid))
|
||
} else {
|
||
accountDataJSON.Code = -1
|
||
accountDataJSON.Msg = msg
|
||
}
|
||
return accountDataJSON
|
||
}
|
||
|
||
func (c *UpdateService) UpdateAgentStatus(agentUid string) *datas.KeyDataJSON {
|
||
|
||
keyDataJSON := new(datas.KeyDataJSON)
|
||
agentInfo := agent.GetAgentInfoByAgentUid(agentUid)
|
||
if agentInfo.AgentUid == "" {
|
||
keyDataJSON.Code = -1
|
||
return keyDataJSON
|
||
}
|
||
|
||
if agentInfo.Status == common.ACTIVE {
|
||
agentInfo.Status = common.UNACTIVE
|
||
} else {
|
||
agentInfo.Status = "active"
|
||
}
|
||
agentInfo.UpdateTime = utils.GetBasicDateTime()
|
||
if agent.UpdateAgentInfo(agentInfo) {
|
||
keyDataJSON.Code = 200
|
||
} else {
|
||
keyDataJSON.Code = -1
|
||
}
|
||
return keyDataJSON
|
||
}
|
||
|
||
func (c *UpdateService) ResetAgentPassword(agentUid, newPassword, newVertifyPassword string) *datas.KeyDataJSON {
|
||
keyDataJSON := new(datas.KeyDataJSON)
|
||
keyDataJSON.Code = 200
|
||
if agentUid == "" {
|
||
keyDataJSON.Code = -2
|
||
} else if newPassword == "" {
|
||
keyDataJSON.Code = -1
|
||
keyDataJSON.Key = "#agent-login-password-error-reset"
|
||
keyDataJSON.Msg = " *新密码不能为空"
|
||
} else if newVertifyPassword != newPassword {
|
||
keyDataJSON.Code = -1
|
||
keyDataJSON.Key = "#agent-vertify-password-error-reset"
|
||
keyDataJSON.Msg = " *两次密码输入不一致"
|
||
}
|
||
|
||
if keyDataJSON.Code != 200 {
|
||
return keyDataJSON
|
||
}
|
||
|
||
agentInfo := agent.GetAgentInfoByAgentUid(agentUid)
|
||
agentInfo.UpdateTime = utils.GetBasicDateTime()
|
||
agentInfo.AgentPassword = utils.GetMD5Upper(newPassword)
|
||
if !agent.UpdateAgentInfo(agentInfo) {
|
||
keyDataJSON.Code = -1
|
||
}
|
||
return keyDataJSON
|
||
}
|
||
|
||
func (c *UpdateService) ChoosePayForRoad(confirmType, roadName, bankOrderId, remark string) *datas.KeyDataJSON {
|
||
keyDataJSON := new(datas.KeyDataJSON)
|
||
keyDataJSON.Code = 200
|
||
|
||
if confirmType == common.PAYFOR_ROAD && roadName == "" {
|
||
keyDataJSON.Msg = "打款通道不能为空"
|
||
keyDataJSON.Code = -1
|
||
return keyDataJSON
|
||
}
|
||
|
||
payForInfo := payfor.GetPayForByBankOrderId(bankOrderId)
|
||
roadInfo := road.GetRoadInfoByName(roadName)
|
||
|
||
if payForInfo.Status != common.PAYFOR_COMFRIM {
|
||
keyDataJSON.Msg = "结算状态错误,请刷新后确认"
|
||
} else {
|
||
payForInfo.UpdateTime = utils.GetBasicDateTime()
|
||
payForInfo.GiveType = confirmType
|
||
if confirmType == common.PAYFOR_REFUSE {
|
||
//拒绝打款
|
||
payForInfo.Status = common.PAYFOR_FAIL
|
||
} else {
|
||
payForInfo.Status = common.PAYFOR_SOLVING
|
||
}
|
||
payForInfo.RoadUid = roadInfo.RoadUid
|
||
payForInfo.RoadName = roadInfo.RoadName
|
||
payForInfo.Remark = remark
|
||
|
||
if !payfor.ForUpdatePayFor(payForInfo) {
|
||
keyDataJSON.Code = -1
|
||
keyDataJSON.Msg = "更新代付记录失败"
|
||
}
|
||
}
|
||
return keyDataJSON
|
||
}
|
||
|
||
func (c *UpdateService) UpdateOrderStatus(bankOrderId, solveType string) *datas.KeyDataJSON {
|
||
keyDataJSON := new(datas.KeyDataJSON)
|
||
updateOrderUrl, _ := web.AppConfig.String("gateway::host")
|
||
res, err := httplib.Get(updateOrderUrl + "gateway/update/order" + "?bankOrderId=" + bankOrderId + "&solveType=" + solveType).String()
|
||
if err != nil {
|
||
logs.Error("update order status err = ", err)
|
||
keyDataJSON.Code = -1
|
||
} else {
|
||
keyDataJSON.Code = 200
|
||
keyDataJSON.Msg = res
|
||
}
|
||
|
||
return keyDataJSON
|
||
}
|
||
|
||
func (c *UpdateService) ResultPayFor(resultType, bankOrderId string) *datas.KeyDataJSON {
|
||
keyDataJSON := new(datas.KeyDataJSON)
|
||
keyDataJSON.Code = 200
|
||
|
||
if resultType == "" || bankOrderId == "" {
|
||
keyDataJSON.Code = -1
|
||
keyDataJSON.Msg = "提交的数据有误"
|
||
return keyDataJSON
|
||
}
|
||
|
||
payFor := payfor.GetPayForByBankOrderId(bankOrderId)
|
||
|
||
if payFor.Type == common.SELF_HELP {
|
||
//如果是管理员在后台提现,不用做任何的商户减款,只需要更新代付订单状态
|
||
payFor.UpdateTime = utils.GetBasicDateTime()
|
||
payFor.Status = resultType
|
||
|
||
if !payfor.ForUpdatePayFor(payFor) {
|
||
keyDataJSON.Code = -1
|
||
keyDataJSON.Msg = "系统处理失败"
|
||
}
|
||
return keyDataJSON
|
||
}
|
||
|
||
if payFor.Status == common.PAYFOR_FAIL || payFor.Status == common.PAYFOR_SUCCESS {
|
||
logs.Error(fmt.Sprintf("该代付订单=%s,状态有误....", bankOrderId))
|
||
keyDataJSON.Code = -1
|
||
keyDataJSON.Msg = "订单状态有误,请刷新重新判断"
|
||
return keyDataJSON
|
||
}
|
||
|
||
u, _ := web.AppConfig.String("gateway::host")
|
||
u = u + "/solve/payfor/result?" + "resultType=" + resultType + "&bankOrderId=" + bankOrderId
|
||
s, err := httplib.Get(u).String()
|
||
if err != nil || s == common.FAIL {
|
||
logs.Error("手动处理代付结果请求gateway系统失败:", err)
|
||
keyDataJSON.Msg = "处理失败"
|
||
keyDataJSON.Code = -1
|
||
} else {
|
||
keyDataJSON.Code = 200
|
||
keyDataJSON.Msg = "处理成功"
|
||
}
|
||
|
||
return keyDataJSON
|
||
}
|