mirror of
https://github.com/kongyuebin1/dongfeng-pay.git
synced 2024-11-13 14:09:20 +08:00
517 lines
13 KiB
Go
517 lines
13 KiB
Go
|
package service
|
|||
|
|
|||
|
import (
|
|||
|
"fmt"
|
|||
|
"github.com/beego/beego/v2/core/logs"
|
|||
|
"legend/models/legend"
|
|||
|
"legend/request"
|
|||
|
"legend/response"
|
|||
|
"legend/utils"
|
|||
|
)
|
|||
|
|
|||
|
type TemplateService struct {
|
|||
|
BaseService
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
** 添加比例模板
|
|||
|
*/
|
|||
|
func (c *TemplateService) AddTemplate(req *request.AddTemplateReq, merchantUid string) *response.AddTemplateResp {
|
|||
|
|
|||
|
template := new(legend.ScaleTemplate)
|
|||
|
template.MerchantUid = merchantUid
|
|||
|
template.TemplateName = req.ScaleTemplateName
|
|||
|
template.UserUid = req.ScaleUserName
|
|||
|
template.UserWarn = req.ScaleUserNamePoint
|
|||
|
template.MoneyType = req.MoneyType
|
|||
|
template.PresentType = req.PresentType
|
|||
|
template.UpdateTime = utils.GetNowTime()
|
|||
|
template.CreateTime = utils.GetNowTime()
|
|||
|
|
|||
|
addTemplateResp := new(response.AddTemplateResp)
|
|||
|
addTemplateResp.Code = -1
|
|||
|
|
|||
|
if template.TemplateName == "" {
|
|||
|
addTemplateResp.Msg = "模板名称不能为空"
|
|||
|
return addTemplateResp
|
|||
|
}
|
|||
|
|
|||
|
if legend.IsExistsScaleTemplateByName(template.TemplateName) {
|
|||
|
addTemplateResp.Msg = "模板名称重复,请换一个名称!"
|
|||
|
return addTemplateResp
|
|||
|
}
|
|||
|
|
|||
|
if legend.InsertScaleTemplate(template) {
|
|||
|
addTemplateResp.Code = 0
|
|||
|
addTemplateResp.Msg = "添加比例模板成功"
|
|||
|
if !c.AddRandMoney(req) {
|
|||
|
addTemplateResp.Code = -1
|
|||
|
addTemplateResp.Msg = "随机金额添加失败,请检查参数是否合理"
|
|||
|
}
|
|||
|
if !c.AddFixMoney(req) {
|
|||
|
addTemplateResp.Code = -1
|
|||
|
addTemplateResp.Msg = "添加固定金额失败,请检查参数是否合理"
|
|||
|
}
|
|||
|
if !c.AddPresentFixMoney(req) {
|
|||
|
addTemplateResp.Code = -1
|
|||
|
addTemplateResp.Msg = "添加固定金额赠送失败,请检查参数是否合理"
|
|||
|
}
|
|||
|
if !c.AddPresentScaleMoney(req) {
|
|||
|
addTemplateResp.Code = -1
|
|||
|
addTemplateResp.Msg = "添加金额比例赠送失败,请检查参数是否合理"
|
|||
|
}
|
|||
|
|
|||
|
// 只要有一个添加失败,全部删除
|
|||
|
if addTemplateResp.Code == -1 {
|
|||
|
legend.DeleteScaleTemplate(template.TemplateName)
|
|||
|
legend.DeleteAnyMoney(template.TemplateName)
|
|||
|
legend.DeleteFixMoney(template.TemplateName)
|
|||
|
legend.DeleteFixPresent(template.TemplateName)
|
|||
|
legend.DeleteScalePresent(template.TemplateName)
|
|||
|
}
|
|||
|
} else {
|
|||
|
addTemplateResp.Msg = "添加比例模板失败"
|
|||
|
}
|
|||
|
|
|||
|
return addTemplateResp
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
** 编辑比例模板逻辑
|
|||
|
*/
|
|||
|
func (c *TemplateService) UpdateTemplate(req *request.AddTemplateReq, merchantUid string) *response.BaseResp {
|
|||
|
resp := new(response.BaseResp)
|
|||
|
resp.Code = -1
|
|||
|
resp.Msg = "更新失败"
|
|||
|
|
|||
|
template := legend.GetScaleTemplateByNameAndMerchantUid(req.ScaleTemplateName, merchantUid)
|
|||
|
template.UserUid = req.ScaleUserName
|
|||
|
template.UserWarn = req.ScaleUserNamePoint
|
|||
|
template.MoneyType = req.MoneyType
|
|||
|
template.PresentType = req.PresentType
|
|||
|
template.UpdateTime = utils.GetNowTime()
|
|||
|
|
|||
|
if !legend.UpdateScaleTemplate(template) {
|
|||
|
logs.Error("更新比例模板基础数据失败")
|
|||
|
return resp
|
|||
|
}
|
|||
|
|
|||
|
if !c.updateAnyMoney(req) {
|
|||
|
logs.Error("更新任意金额数据失败")
|
|||
|
return resp
|
|||
|
}
|
|||
|
|
|||
|
if !c.updateFixMoney(req) {
|
|||
|
logs.Error("更新固定金额数据失败")
|
|||
|
return resp
|
|||
|
}
|
|||
|
|
|||
|
if !c.updateFixPresent(req) {
|
|||
|
logs.Error("更新赠送固定金额失败")
|
|||
|
return resp
|
|||
|
}
|
|||
|
|
|||
|
if !c.updateScalePresent(req) {
|
|||
|
logs.Error("更新赠送比例数据失败")
|
|||
|
return resp
|
|||
|
}
|
|||
|
|
|||
|
resp.Code = 0
|
|||
|
resp.Msg = "更新成功"
|
|||
|
|
|||
|
return resp
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
** 更新任意金额
|
|||
|
*/
|
|||
|
func (c *TemplateService) updateAnyMoney(req *request.AddTemplateReq) bool {
|
|||
|
if req.GameMoneyScale <= 0 && req.LimitLowMoney <= 0 {
|
|||
|
logs.Debug("任意金额的2个关键参数均小于等于0")
|
|||
|
anyMoney := legend.GetAnyMoneyByName(req.ScaleTemplateName)
|
|||
|
if anyMoney != nil && anyMoney.TemplateName != "" {
|
|||
|
return legend.DeleteAnyMoney(req.ScaleTemplateName)
|
|||
|
} else {
|
|||
|
logs.Error("不存在这样的任意金额")
|
|||
|
return false
|
|||
|
}
|
|||
|
} else {
|
|||
|
anyMoney := legend.GetAnyMoneyByName(req.ScaleTemplateName)
|
|||
|
anyMoney.GameMoneyScale = req.GameMoneyScale
|
|||
|
anyMoney.GameMoneyName = req.GameMoneyName
|
|||
|
anyMoney.LimitLow = req.LimitLowMoney
|
|||
|
anyMoney.UpdateTime = utils.GetNowTime()
|
|||
|
anyMoney.CreateTime = utils.GetNowTime()
|
|||
|
|
|||
|
return legend.UpdateAnyMoney(anyMoney)
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
** 更新固定金额
|
|||
|
*/
|
|||
|
func (c *TemplateService) updateFixMoney(req *request.AddTemplateReq) bool {
|
|||
|
|
|||
|
for _, fixMoney := range legend.GetFixMoneyByName(req.ScaleTemplateName) {
|
|||
|
if !c.isExist(fixMoney.Uid, req.FixUids) {
|
|||
|
// 假如不存在了,那么需要删除这条记录
|
|||
|
legend.DeleteFixMoneyByUid(fixMoney.Uid)
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
for i, _ := range req.FixUids {
|
|||
|
if req.FixUids[i] == "" {
|
|||
|
continue
|
|||
|
}
|
|||
|
|
|||
|
fixMoney := legend.GetFixMoneyByUid(req.FixUids[i])
|
|||
|
|
|||
|
fixMoney.UpdateTime = utils.GetNowTime()
|
|||
|
fixMoney.Uid = req.FixUids[i]
|
|||
|
fixMoney.Price = req.FixPrices[i]
|
|||
|
fixMoney.GoodsName = req.GoodsNames[i]
|
|||
|
fixMoney.GoodsNo = req.GoodsNos[i]
|
|||
|
fixMoney.BuyTimes = req.Limits[i]
|
|||
|
|
|||
|
if fixMoney.TemplateName == "" {
|
|||
|
fixMoney.CreateTime = utils.GetNowTime()
|
|||
|
fixMoney.TemplateName = req.ScaleTemplateName
|
|||
|
legend.InsertFixMoney(fixMoney)
|
|||
|
} else {
|
|||
|
legend.UpdateFixMoney(fixMoney)
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
return true
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
** 更新固定金额赠送参数
|
|||
|
*/
|
|||
|
func (c *TemplateService) updateFixPresent(req *request.AddTemplateReq) bool {
|
|||
|
|
|||
|
for _, fixPresentMoney := range legend.GetFixPresentsByName(req.ScaleTemplateName) {
|
|||
|
if !c.isExist(fixPresentMoney.Uid, req.PresentFixUids) {
|
|||
|
legend.DeleteFixPresentByUid(fixPresentMoney.Uid)
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
for i, _ := range req.PresentFixUids {
|
|||
|
if req.PresentFixUids[i] == "" {
|
|||
|
continue
|
|||
|
}
|
|||
|
|
|||
|
fixPresent := legend.GetFixPresentByUid(req.PresentFixUids[i])
|
|||
|
|
|||
|
fixPresent.UpdateTime = utils.GetNowTime()
|
|||
|
fixPresent.Uid = req.PresentFixUids[i]
|
|||
|
fixPresent.Money = req.PresentFixMoneys[i]
|
|||
|
fixPresent.PresentMoney = req.PresentFixPresentMoneys[i]
|
|||
|
|
|||
|
if fixPresent.TemplateName == "" {
|
|||
|
fixPresent.CreateTime = utils.GetNowTime()
|
|||
|
fixPresent.TemplateName = req.ScaleTemplateName
|
|||
|
legend.InsertFixPresent(fixPresent)
|
|||
|
} else {
|
|||
|
legend.UpdatePresentFixMoney(fixPresent)
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return true
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
** 更新比例赠送参数
|
|||
|
*/
|
|||
|
func (c *TemplateService) updateScalePresent(req *request.AddTemplateReq) bool {
|
|||
|
|
|||
|
for _, scalePresent := range legend.GetScalePresentsByName(req.ScaleTemplateName) {
|
|||
|
if !c.isExist(scalePresent.Uid, req.PresentScaleUids) {
|
|||
|
legend.DeleteScalePresentByUid(scalePresent.Uid)
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
for i, _ := range req.PresentScaleUids {
|
|||
|
if req.PresentScaleUids[i] == "" {
|
|||
|
continue
|
|||
|
}
|
|||
|
|
|||
|
scalePresent := legend.GetScalePresentByUid(req.PresentScaleUids[i])
|
|||
|
|
|||
|
scalePresent.UpdateTime = utils.GetNowTime()
|
|||
|
scalePresent.Uid = req.PresentScaleUids[i]
|
|||
|
scalePresent.Money = req.PresentScaleMoneys[i]
|
|||
|
scalePresent.PresentScale = req.PresentScales[i]
|
|||
|
|
|||
|
if scalePresent.TemplateName == "" {
|
|||
|
scalePresent.TemplateName = req.ScaleTemplateName
|
|||
|
scalePresent.CreateTime = utils.GetNowTime()
|
|||
|
legend.InsertScalePresent(scalePresent)
|
|||
|
} else {
|
|||
|
legend.UpdateScalePresent(scalePresent)
|
|||
|
}
|
|||
|
}
|
|||
|
return true
|
|||
|
}
|
|||
|
|
|||
|
func (c *TemplateService) isExist(j string, ss []string) bool {
|
|||
|
for _, s := range ss {
|
|||
|
if s == j {
|
|||
|
return true
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return false
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
** 添加随机金额
|
|||
|
*/
|
|||
|
func (c *TemplateService) AddRandMoney(req *request.AddTemplateReq) bool {
|
|||
|
|
|||
|
if req.LimitLowMoney < 0 {
|
|||
|
logs.Error("随机金额中的最低充值金额不能小于0")
|
|||
|
return false
|
|||
|
}
|
|||
|
if req.GameMoneyName == "" && req.GameMoneyScale <= 0 {
|
|||
|
logs.Info("不需要添加随机金额选项")
|
|||
|
return true
|
|||
|
}
|
|||
|
|
|||
|
anyMoney := new(legend.AnyMoney)
|
|||
|
anyMoney.TemplateName = req.ScaleTemplateName
|
|||
|
anyMoney.GameMoneyName = req.GameMoneyName
|
|||
|
anyMoney.GameMoneyScale = req.GameMoneyScale
|
|||
|
anyMoney.LimitLow = req.LimitLowMoney
|
|||
|
anyMoney.UpdateTime = utils.GetNowTime()
|
|||
|
anyMoney.CreateTime = utils.GetNowTime()
|
|||
|
|
|||
|
if legend.InsertAnyMoney(anyMoney) {
|
|||
|
logs.Info("添加随机金额成功!")
|
|||
|
} else {
|
|||
|
return false
|
|||
|
}
|
|||
|
return true
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
**添加固定金额
|
|||
|
*/
|
|||
|
func (c *TemplateService) AddFixMoney(req *request.AddTemplateReq) bool {
|
|||
|
|
|||
|
l := len(req.FixUids)
|
|||
|
|
|||
|
if l == 0 || (l == 1 && req.FixUids[0] == "") {
|
|||
|
logs.Error("该模板没有添加固定金额选项")
|
|||
|
return true
|
|||
|
}
|
|||
|
|
|||
|
if l != len(req.GoodsNames) || l != len(req.FixPrices) || l != len(req.GoodsNos) || l != len(req.Limits) {
|
|||
|
logs.Error("固定金额参数有误,长度不一致")
|
|||
|
return false
|
|||
|
}
|
|||
|
|
|||
|
for i := 0; i < l; i++ {
|
|||
|
fixUid := req.FixUids[i]
|
|||
|
fixPrice := req.FixPrices[i]
|
|||
|
goodName := req.GoodsNames[i]
|
|||
|
goodNo := req.GoodsNos[i]
|
|||
|
limit := req.Limits[i]
|
|||
|
|
|||
|
if fixUid == "0" && fixPrice <= 0 && goodName == "0" && goodNo == "0" && limit <= 0 {
|
|||
|
logs.Error("固定金额4个参数都为空!")
|
|||
|
continue
|
|||
|
}
|
|||
|
|
|||
|
if fixUid == "0" || fixPrice <= 0 || goodName == "0" || goodNo == "0" || limit <= 0 {
|
|||
|
logs.Error("固定金额参数中有一个缺失: ", fmt.Sprintf("fixUid = %s, fixPrice = %f, goodName = %s, goodNo = %s, limit = %d",
|
|||
|
fixUid, fixPrice, goodName, goodNo, limit))
|
|||
|
return false
|
|||
|
}
|
|||
|
|
|||
|
fixMoney := new(legend.FixMoney)
|
|||
|
fixMoney.Uid = fixUid
|
|||
|
fixMoney.TemplateName = req.ScaleTemplateName
|
|||
|
fixMoney.Price = fixPrice
|
|||
|
fixMoney.GoodsName = goodName
|
|||
|
fixMoney.GoodsNo = goodNo
|
|||
|
fixMoney.BuyTimes = limit
|
|||
|
fixMoney.UpdateTime = utils.GetNowTime()
|
|||
|
fixMoney.CreateTime = utils.GetNowTime()
|
|||
|
|
|||
|
if !legend.InsertFixMoney(fixMoney) {
|
|||
|
logs.Error("该次固定金额插入数据库失败")
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
return true
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
** 添加赠送固定金额赠送
|
|||
|
*/
|
|||
|
func (c *TemplateService) AddPresentFixMoney(req *request.AddTemplateReq) bool {
|
|||
|
|
|||
|
l := len(req.PresentFixUids)
|
|||
|
if l == 0 || (l == 1 && req.PresentScaleUids[0] == "") {
|
|||
|
logs.Error("该模板没有添加固定金额赠送选项")
|
|||
|
return true
|
|||
|
}
|
|||
|
|
|||
|
if l != len(req.PresentFixMoneys) || l != len(req.PresentFixPresentMoneys) {
|
|||
|
logs.Error("固定金额赠送选项参数个数不一致")
|
|||
|
return false
|
|||
|
}
|
|||
|
|
|||
|
for i := 0; i < l; i++ {
|
|||
|
uid := req.PresentFixUids[i]
|
|||
|
fixMoney := req.PresentFixMoneys[i]
|
|||
|
presentMoney := req.PresentFixPresentMoneys[i]
|
|||
|
|
|||
|
if uid == "0" && fixMoney <= 0 && presentMoney <= 0 {
|
|||
|
continue
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
if uid == "0" || fixMoney <= 0 || presentMoney <= 0 {
|
|||
|
logs.Error("固定金额参数中有一个缺失: ", fmt.Sprintf("fixUid = %s, fixPrice = %f, presentMoney = %f",
|
|||
|
uid, fixMoney, presentMoney))
|
|||
|
return false
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
fixPresent := new(legend.FixPresent)
|
|||
|
fixPresent.Uid = uid
|
|||
|
fixPresent.TemplateName = req.ScaleTemplateName
|
|||
|
fixPresent.Money = fixMoney
|
|||
|
fixPresent.PresentMoney = presentMoney
|
|||
|
fixPresent.UpdateTime = utils.GetNowTime()
|
|||
|
fixPresent.CreateTime = utils.GetNowTime()
|
|||
|
|
|||
|
if !legend.InsertFixPresent(fixPresent) {
|
|||
|
logs.Error("该次固定金额赠送插入数据库失败")
|
|||
|
}
|
|||
|
}
|
|||
|
return true
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
** 添加赠送金额比例
|
|||
|
*/
|
|||
|
func (c *TemplateService) AddPresentScaleMoney(req *request.AddTemplateReq) bool {
|
|||
|
l := len(req.PresentScaleUids)
|
|||
|
if l == 0 || (l == 1 && req.PresentScaleUids[0] == "") {
|
|||
|
logs.Error("该模板没有添加按百分比赠送")
|
|||
|
return true
|
|||
|
}
|
|||
|
|
|||
|
if l != len(req.PresentScaleMoneys) || l != len(req.PresentScales) {
|
|||
|
logs.Error("按百分比赠送选项参数个数不一致")
|
|||
|
return false
|
|||
|
}
|
|||
|
|
|||
|
for i := 0; i < l; i++ {
|
|||
|
uid := req.PresentScaleUids[i]
|
|||
|
money := req.PresentScaleMoneys[i]
|
|||
|
scale := req.PresentScales[i]
|
|||
|
|
|||
|
if money <= 0 {
|
|||
|
logs.Error("金额不能等于0")
|
|||
|
return false
|
|||
|
}
|
|||
|
|
|||
|
if uid == "0" && money <= 0 && scale <= 0 {
|
|||
|
continue
|
|||
|
}
|
|||
|
|
|||
|
if uid == "0" || money <= 0 || scale <= 0 {
|
|||
|
logs.Error("百分比赠送缺失参数: ", fmt.Sprintf("uid = %s, money = %f, scale = %f",
|
|||
|
uid, money, scale))
|
|||
|
|
|||
|
return false
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
scalePresent := new(legend.ScalePresent)
|
|||
|
scalePresent.Uid = uid
|
|||
|
scalePresent.TemplateName = req.ScaleTemplateName
|
|||
|
scalePresent.Money = money
|
|||
|
scalePresent.PresentScale = scale
|
|||
|
scalePresent.UpdateTime = utils.GetNowTime()
|
|||
|
scalePresent.CreateTime = utils.GetNowTime()
|
|||
|
|
|||
|
if !legend.InsertScalePresent(scalePresent) {
|
|||
|
logs.Error("该次固定金额赠送插入数据库失败")
|
|||
|
}
|
|||
|
}
|
|||
|
return true
|
|||
|
}
|
|||
|
|
|||
|
func (c *TemplateService) GetTemplateList(page, limit int) *response.TemplateListResp {
|
|||
|
|
|||
|
offset := utils.CountOffset(page, limit)
|
|||
|
count := legend.GetScaleTemplateAll()
|
|||
|
scaleTemplates := legend.GetScaleTemplateList(offset, limit)
|
|||
|
|
|||
|
for i, _ := range scaleTemplates {
|
|||
|
scaleTemplates[i].Id = offset + i + 1
|
|||
|
}
|
|||
|
|
|||
|
templateListResp := new(response.TemplateListResp)
|
|||
|
templateListResp.Count = count
|
|||
|
templateListResp.Code = 0
|
|||
|
templateListResp.Data = scaleTemplates
|
|||
|
|
|||
|
return templateListResp
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
** 删除比例模板的所有内容
|
|||
|
*/
|
|||
|
func (c *TemplateService) DeleteTemplate(templateName string) *response.BaseResp {
|
|||
|
|
|||
|
baseResp := new(response.BaseResp)
|
|||
|
baseResp.Code = -1
|
|||
|
|
|||
|
b := true
|
|||
|
if !legend.DeleteScaleTemplate(templateName) {
|
|||
|
b = false
|
|||
|
}
|
|||
|
if !legend.DeleteAnyMoney(templateName) {
|
|||
|
b = false
|
|||
|
}
|
|||
|
if !legend.DeleteFixMoney(templateName) {
|
|||
|
b = false
|
|||
|
}
|
|||
|
if !legend.DeleteFixPresent(templateName) {
|
|||
|
b = false
|
|||
|
}
|
|||
|
if !legend.DeleteFixPresent(templateName) {
|
|||
|
b = false
|
|||
|
}
|
|||
|
|
|||
|
if b {
|
|||
|
baseResp.Msg = "删除成功"
|
|||
|
baseResp.Code = 0
|
|||
|
} else {
|
|||
|
baseResp.Msg = "删除失败"
|
|||
|
}
|
|||
|
|
|||
|
return baseResp
|
|||
|
}
|
|||
|
|
|||
|
func (c *TemplateService) AllTemplateInfo(templateName string) *response.TemplateAllInfoResp {
|
|||
|
|
|||
|
templateAllInfo := new(response.TemplateAllInfoResp)
|
|||
|
templateAllInfo.TemplateInfo = legend.GetScaleTemplateByName(templateName)
|
|||
|
templateAllInfo.AnyMoneyInfo = legend.GetAnyMoneyByName(templateName)
|
|||
|
templateAllInfo.FixMoneyInfos = legend.GetFixMoneyByName(templateName)
|
|||
|
templateAllInfo.PresentFixMoneyInfos = legend.GetFixPresentsByName(templateName)
|
|||
|
templateAllInfo.PresentScaleMoneyInfos = legend.GetScalePresentsByName(templateName)
|
|||
|
|
|||
|
return templateAllInfo
|
|||
|
}
|