pg_cash_pool_dao.go 3.3 KB
package dao

import (
	"fmt"
	pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
	"gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg/models"
)

type CashPoolDao struct {
	transactionContext *pgTransaction.TransactionContext
}

// 计算系统已兑换素币、未兑换素币
//func (dao *CashPoolDao) CalculateSystemSuMoney(companyId int64) ( map[string]interface{}, error) {
//	var systemUnExchangeSuMoney float64
//	var systemExchangedSuMoney float64
//	tx := dao.transactionContext.PgTx
//	employeeModel := new(models.Employee)
//	if err := tx.Model(employeeModel).
//		ColumnExpr("sum(employee.su_money) AS system_unExchange_su_money").
//		Where("employee.company_id = ?", companyId).
//		Select(&systemUnExchangeSuMoney); err != nil {
//		return nil, err
//	}
//	exchangeCashActivityModel := new(models.ExchangeCashActivity)
//	if err := tx.Model(exchangeCashActivityModel).
//		ColumnExpr("sum(exchange_cash_activity.exchanged_su_money) AS system_changed_su_money").
//		Where("exchange_cash_activity.company_id = ?", companyId).
//		Select(&systemExchangedSuMoney); err != nil {
//		return nil, err
//	}
//	return  map[string]interface{}{
//		"systemUnExchangeSuMoney": systemUnExchangeSuMoney,
//		"systemExchangedSuMoney": systemExchangedSuMoney,
//	}, nil
//}

// 计算系统已兑换现金、未兑换现金
//func (dao *CashPoolDao) CalculateSystemCash(companyId int64) (map[string]interface{}, error) {
//	var systemExchangedCash float64  // 系统已兑换现金
//	var systemUnExchangeCash float64 // 系统未兑换现金
//	tx := dao.transactionContext.PgTx
//	exchangeCashActivityModel := new(models.ExchangeCashActivity)
//	if err := tx.Model(exchangeCashActivityModel).
//		ColumnExpr("sum(exchange_cash_activity.exchanged_cash) AS system_exchanged_cash").
//		Where("exchange_cash_activity.company_id = ?", companyId).
//		Select(&systemExchangedCash) ; err != nil {
//		return nil, err
//	}
//	return map[string]interface{}{
//		"systemExchangedCash": systemExchangedCash,
//		"systemUnExchangeCash": systemUnExchangeCash,
//	}, nil
//}

// 兑换兑换活动已兑换素币、已兑换现金
func (dao *CashPoolDao) CalculateActivityExchangedSuMoney(activityId int64) (map[string]interface{}, error) {
	var activityExchangedSuMoney float64
	var activityExchangedCash float64
	tx := dao.transactionContext.PgTx
	exchangeCashPersonListModels := new(models.ExchangeCashPersonList)
	if err := tx.Model(exchangeCashPersonListModels).
		ColumnExpr("sum(exchange_cash_person_lists.exchanged_su_money) AS activity_exchanged_su_money").
		Where("exchange_cash_person_lists.activity_id = ?", activityId).
		Select(&activityExchangedSuMoney); err !=nil {
		return nil, err
	}
	if err := tx.Model(exchangeCashPersonListModels).
		ColumnExpr("sum(exchange_cash_person_lists.exchanged_cash) AS activity_exchanged_cash").
		Where("exchange_cash_person_lists.activity_id = ?", activityId).
		Select(&activityExchangedCash); err !=nil {
		return nil, err
	}
	return map[string]interface{}{
		"activityExchangedSuMoney": activityExchangedSuMoney,
		"activityExchangedCash": activityExchangedCash,
	}, nil
}

func NewCashPoolDao(transactionContext *pgTransaction.TransactionContext) (*CashPoolDao, error) {
	if transactionContext == nil {
		return nil, fmt.Errorf("transactionContext参数不能为nil")
	} else {
		return &CashPoolDao{
			transactionContext: transactionContext,
		}, nil
	}
}