dividends_controller.go 3.3 KB
package controllers

import (
	"errors"
	"github.com/astaxie/beego/logs"
	OrderPaymentCmd "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/order_payment/command"
	OrderPaymentQuery "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/order_payment/query"
	OrderPaymentSvr "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/order_payment/service"
	"gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain"
	"strconv"
)

type DividendsController struct {
	BaseController
}

////Prepare 重写 BaseController 的Prepare方法
func (c *DividendsController) Prepare() {
	c.BaseController.Prepare()
	if ok := c.ValidJWTToken(); !ok {
		return
	}
	if ok := c.ValidAdminPermission(domain.PERMINSSION_PARTNER); !ok {
		return
	}
}

//Edit 编辑分红支付
func (c *DividendsController) Edit() {
	//用与适配前端定义的数据结构
	type DividendPaymentItem struct {
		PaymentForGoods string `json:"paymentForGoods"`
		StateOfPayment  string `json:"stateOfPayment"`
	}
	type Parameter struct {
		Id              int64                 `json:"id"` //订单编号
		DividendPayment []DividendPaymentItem `json:"dividendPayment"`
	}
	var (
		param              Parameter
		err                error
		totalPaymentAmount float64
	)
	if err = c.BindJsonData(&param); err != nil {
		logs.Error(err)
		c.ResponseError(errors.New("json数据解析失败"))
		return
	}

	//编辑
	for i := range param.DividendPayment {
		item := param.DividendPayment[i]
		cmd := OrderPaymentCmd.CreateOrderPaymentCommand{
			OrderId:   param.Id,
			PaymentSn: i,
		}
		cmd.PaymentForGoods, _ = strconv.ParseFloat(item.PaymentForGoods, 64)
		cmd.StateOfPayment, _ = strconv.Atoi(item.StateOfPayment)
		serve := OrderPaymentSvr.NewOrderPaymentService(nil)
		_, err = serve.CreateOrderPayment(&cmd)
		if err != nil {
			c.ResponseError(err)
			return
		}
		if cmd.StateOfPayment == domain.BonusPaid {
			totalPaymentAmount += cmd.PaymentForGoods
		}
	}

	//保存累计支付金额到订单里面

	c.ResponseData(nil)
	return
}

//Edit 分红支付详情
func (c *DividendsController) Detail() {
	type Parameter struct {
		Id int64 `json:"id"` //订单编号
	}
	var (
		param Parameter
		err   error
	)
	if err = c.BindJsonData(&param); err != nil {
		logs.Error(err)
		c.ResponseError(errors.New("json数据解析失败"))
		return
	}

	cmd := OrderPaymentQuery.ListOrderPaymentQuery{
		OrderId: param.Id,
	}
	serve := OrderPaymentSvr.NewOrderPaymentService(nil)
	var data []*domain.OrderPayment
	_, data, err = serve.ListOrderPayment(&cmd)
	if err != nil {
		c.ResponseError(err)
		return
	}

	type DividendPayment struct {
		PaymentForGoods    float64 `json:"paymentForGoods"`
		UpdateTime         string  `json:"updateTime"`
		StateOfPayment     int     `json:"stateOfPayment"`
		Dividend           float64 `json:"dividend"`
		DividendProportion float64 `json:"dividendProportion"`
	}
	type Response struct {
		DividendPayment []DividendPayment `json:"dividendPayment"`
	}
	rsp := Response{DividendPayment: make([]DividendPayment, 0)}
	for i := range data {
		item := data[i]
		payment := DividendPayment{
			PaymentForGoods:    item.PaymentAmount,
			UpdateTime:         item.UpdateAt.Format("2006-01-02 15:04:05"),
			StateOfPayment:     item.BonusStatus,
			Dividend:           item.BonusAmount,
			DividendProportion: 2,
		}
		rsp.DividendPayment = append(rsp.DividendPayment, payment)
	}

	c.ResponseData(rsp)
	return
}