package svc import ( "applet/app/e" "applet/app/md" "applet/app/utils" db "code.fnuoos.com/zhimeng/model.git/src" "code.fnuoos.com/zhimeng/model.git/src/super/implement" "encoding/json" "github.com/gin-gonic/gin" ) func FinanceCenterMediumInvoiceSave(c *gin.Context, req md.InvoiceReq) { engine := db.Db NewMediumSettlementDb := implement.NewMediumSettlementDb(engine) data, _ := NewMediumSettlementDb.GetMediumSettlementById(utils.StrToInt(req.Id)) if data.State != 3 { e.OutErr(c, 400, e.NewErr(400, "媒体未完成签订")) return } if data.PayState == 5 { e.OutErr(c, 400, e.NewErr(400, "结算单已付款,不能调整")) return } NewMediumInvoiceDb := implement.NewMediumInvoiceDb(engine) invoice, _ := NewMediumInvoiceDb.GetMediumInvoice(data.Id) if req.State == "1" { data.PayState = 4 invoice.State = 1 for k := range req.File { req.File[k].State = "1" } } if req.State == "2" { invoice.State = 2 data.PayState = 3 for k, v := range req.File { if v.State == "0" { req.File[k].State = "1" } } } invoice.File = utils.SerializeStr(req.File) engine.Where("id=?", data.Id).Cols("pay_state").Update(data) engine.Where("id=?", invoice.Id).Cols("state,file").Update(invoice) e.OutSuc(c, "success", nil) return } func FinanceCenterMediumSettleFileSave(c *gin.Context, req md.SettleFileReq) { engine := db.Db NewMediumSettlementDb := implement.NewMediumSettlementDb(engine) data, _ := NewMediumSettlementDb.GetMediumSettlementById(utils.StrToInt(req.Id)) if data.State >= 2 { e.OutErr(c, 400, e.NewErr(400, "已推送给媒体,不能再调整")) return } data.State = 2 data.SettleFile = req.File engine.Where("id=?", data.Id).Cols("state,settle_file").Update(data) e.OutSuc(c, "success", nil) return } func FinanceCenterMediumPaySave(c *gin.Context, req md.CommDetailReq) { engine := db.Db NewMediumSettlementDb := implement.NewMediumSettlementDb(engine) data, _ := NewMediumSettlementDb.GetMediumSettlementById(utils.StrToInt(req.Id)) if data.PayState < 4 { e.OutErr(c, 400, e.NewErr(400, "不能再调整")) return } data.PayState = 5 engine.Where("id=?", data.Id).Cols("pay_state").Update(data) e.OutSuc(c, "success", nil) return } func FinanceCenterMediumCheckSave(c *gin.Context, req md.CommDetailReq) { engine := db.Db NewMediumSettlementDb := implement.NewMediumSettlementDb(engine) data, _ := NewMediumSettlementDb.GetMediumSettlementById(utils.StrToInt(req.Id)) if data.State > 1 { e.OutErr(c, 400, e.NewErr(400, "不能再调整")) return } data.State = 1 engine.Where("id=?", data.Id).Cols("state").Update(data) e.OutSuc(c, "success", nil) return } func FinanceCenterMediumOtherIncomeSave(c *gin.Context, req md.OtherIncomeReq) { engine := db.Db NewMediumSettlementDb := implement.NewMediumSettlementDb(engine) data, _ := NewMediumSettlementDb.GetMediumSettlementById(utils.StrToInt(req.Id)) if data.State >= 2 { e.OutErr(c, 400, e.NewErr(400, "已推送给媒体,不能再调整")) return } data.OtherIncome = int(utils.StrToFloat64(req.Amount) * 100) engine.Where("id=?", data.Id).Cols("other_income").Update(data) e.OutSuc(c, "success", nil) return } func FinanceCenterMediumDetail(c *gin.Context, req md.CommDetailReq) md.FinanceCenterDataDetailRes { engine := db.Db NewMediumSettlementDb := implement.NewMediumSettlementDb(engine) data, _ := NewMediumSettlementDb.GetMediumSettlementById(utils.StrToInt(req.Id)) file := make([]md.InvoiceFile, 0) invoice := md.Invoice{ Type: "0", Time: "", Count: "0", File: file, } //发票 NewMediumInvoiceDb := implement.NewMediumInvoiceDb(engine) invoiceData, _ := NewMediumInvoiceDb.GetMediumInvoice(data.Id) if invoiceData != nil { invoice.Type = utils.IntToStr(invoiceData.Type) invoice.Time = invoiceData.UpdateAt invoice.Count = utils.IntToStr(invoiceData.Count) json.Unmarshal([]byte(invoiceData.File), &file) invoice.File = file } tmp := md.FinanceCenterDataDetail{ Source: "手动导入", SettleFile: data.SettleFile, Invoice: invoice, AllIncome: utils.Float64ToStr(float64(data.OtherIncome+data.BasicIncome) / 100), TopIncome: utils.Float64ToStr(float64(data.OriginalIncome) / 100), CommissionIncome: utils.Float64ToStr(float64(data.CommissionRetention) / 100), PlatformIncome: utils.Float64ToStr(float64(data.PlatformRetention) / 100), ChangeIncome: utils.Float64ToStr(float64(data.PriceAdjustmentRetention) / 100), MediumIncome: utils.Float64ToStr(float64(data.BasicIncome) / 100), OtherIncome: utils.Float64ToStr(float64(data.OtherIncome) / 100), TimeStr: data.StartDate, PayState: utils.IntToStr(data.PayState), State: utils.IntToStr(data.State), } if data.EndDate != "" && data.EndDate != "0000-00-00" { if data.EndDate != data.StartDate { tmp.TimeStr += "~" + data.EndDate } } tmpMedium := GetMediumInfo(c, data.MediumId) if tmpMedium["name"] != "" { tmp.Name = tmpMedium["name"] } if tmpMedium["account"] != "" { tmp.Account = tmpMedium["account"] } NewUserAppDomainDb := implement.NewUserAppDomainDb(db.Db) domain, _ := NewUserAppDomainDb.GetUserAppDomainByPlatform(utils.StrToInt(c.GetString("mid")), "admin") host := c.Request.Host if domain != nil { host = domain.Domain } tmp.DownUrl = "http://" + host + "/api/medium/settle/file/down?id=" + utils.IntToStr(data.Id) res := md.FinanceCenterDataDetailRes{ Data: tmp, InvoiceCate: md.InvoiceCate, SettleType: md.AccountSettleState, BusinessKind: md.BusinessKind, SettlePayState: md.SettlePayState, SettleState: md.SettleState, InvoiceState: md.InvoiceState, } return res } func FinanceCenterMediumList(c *gin.Context, req md.FinanceCenterDataReq) md.FinanceCenterDataRes { engine := db.Db NewMediumSettlementDb := implement.NewMediumSettlementDb(engine) MediumList, total, _ := NewMediumSettlementDb.FindMediumSettlementList(c.GetString("mid"), "", "", req.PayState, "", req.StartTime, req.EndTime, utils.StrToInt(req.Page), utils.StrToInt(req.Limit)) data := make([]md.FinanceCenterDataData, 0) if len(MediumList) > 0 { for _, v := range MediumList { var tmp = md.FinanceCenterDataData{ Id: utils.IntToStr(v.Id), Name: "", Account: "", AllIncome: utils.Float64ToStr(float64(v.OtherIncome+v.BasicIncome) / 100), TopIncome: utils.Float64ToStr(float64(v.OriginalIncome) / 100), CommissionIncome: utils.Float64ToStr(float64(v.CommissionRetention) / 100), PlatformIncome: utils.Float64ToStr(float64(v.PlatformRetention) / 100), ChangeIncome: utils.Float64ToStr(float64(v.PriceAdjustmentRetention) / 100), MediumIncome: utils.Float64ToStr(float64(v.BasicIncome) / 100), OtherIncome: utils.Float64ToStr(float64(v.OtherIncome) / 100), TimeStr: v.StartDate, SettleType: utils.IntToStr(v.Kind), PayState: utils.IntToStr(v.PayState), State: utils.IntToStr(v.State), Label: "预估", } tmpMedium := GetMediumInfo(c, v.MediumId) if tmpMedium["name"] != "" { tmp.Name = tmpMedium["name"] tmp.Account = tmpMedium["account"] } if v.EndDate != "" && v.EndDate != "0000-00-00" { if v.EndDate != v.StartDate { tmp.TimeStr += "~" + v.EndDate } tmp.Label = "" } data = append(data, tmp) } } res := md.FinanceCenterDataRes{ List: data, Total: total, SettleType: md.AccountSettleState, BusinessKind: md.BusinessKind, SettlePayState: md.SettlePayState, SettleState: md.SettleState, } return res } func FinanceCenterPlatformList(c *gin.Context, req md.FinanceCenterPlatformDataReq) md.FinanceCenterPlatformDataRes { engine := db.Db NewPlatformSettlementDb := implement.NewPlatformSettlementDb(engine) MediumList, total, _ := NewPlatformSettlementDb.FindPlatformSettlementList(c.GetString("mid"), req.Date, req.StartTime, req.EndTime, utils.StrToInt(req.Page), utils.StrToInt(req.Limit)) data := make([]md.FinanceCenterPlatformDataData, 0) if len(MediumList) > 0 { for _, v := range MediumList { var tmp = md.FinanceCenterPlatformDataData{ Id: utils.IntToStr(v.Id), TopIncome: utils.Float64ToStr(float64(v.OriginalIncome) / 100), CommissionIncome: utils.Float64ToStr(float64(v.CommissionRetention) / 100), PlatformIncome: utils.Float64ToStr(float64(v.PlatformRetention) / 100), ChangeIncome: utils.Float64ToStr(float64(v.PriceAdjustmentRetention) / 100), MediumIncome: utils.Float64ToStr(float64(v.MediumIncome) / 100), AgentIncome: utils.Float64ToStr(float64(v.AgentIncome) / 100), TimeStr: v.StartDate, UpdateAt: v.UpdateAt, } data = append(data, tmp) } } res := md.FinanceCenterPlatformDataRes{ List: data, Total: total, } return res }