personfinance

package
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 26, 2023 License: GPL-2.0 Imports: 3 Imported by: 0

Documentation

Overview

*

  • Copyright 2015 @ 56x.net.
  • name : person_finance
  • author : jarryliu
  • date : 2016-03-31 10:46
  • description :
  • history :

Index

Constants

View Source
const (
	//转入方式
	TransferFromWithBalance = 1 //通过余额转入
	TransferFromWithWallet  = 2 //通过创业金转入

	//转出方式
	TransferOutWithBalance = 1
	TransferOutWithWallet  = 2
	TransferOutWithBank    = 3

	RiseStateOk      int = 1 //OK
	RiseStateDefault int = 0 //默认状态
)
View Source
const (
	RiseTypeTransferIn       int = 1 + iota //转入
	RiseTypeTransferOut                     //转出
	RiseTypeGenerateInterest                //计算利息
	RiseTypeMonthSettle                     //月结算,红利再投资
	RiseTypeAdjust                          //人工调整
)

Variables

View Source
var (
	RiseMinTransferInAmount  float32 = 100.00       //最低转入金额为100
	RiseMinTransferOutAmount float32 = 0.00         //最低转出金额
	RiseSettleTValue                 = 2            //T+? 开使计算收益
	RiseNormalDayRatio       float32 = 0.0001369863 // 年化5%,按365天计算
	// 比例提供者,默认为:personfinance.RiseNormalDayRatio
	RiseDayRatioProvider = func(personId int64) float32 {
		return RiseNormalDayRatio
	}

	// 转入方式描述
	TransferInWithText = func(w TransferWith) string {
		switch w {
		case TransferFromWithBalance:
			return variable.AliasBalanceAccount
		case TransferFromWithWallet:
			return variable.AliasWalletAccount
		}
		return "nil"
	}

	// 转出方式描述
	TransferOutWithText = func(w TransferWith) string {
		switch w {
		case TransferOutWithBalance:
			return variable.AliasBalanceAccount
		case TransferOutWithWallet:
			return variable.AliasWalletAccount
		case TransferOutWithBank:
			return "银行账户"
		}
		return "nil"
	}
)
View Source
var (
	ErrIncorrectAmount = domain.NewError(
		"err_balance_amount", "金额错误")
	ErrIncorrectTransfer = domain.NewError(
		"err_incorrent_transfer", "已确认或非转入(转出)操作")
	ErrNoSuchRiseInfo = domain.NewError(
		"err_no_such_rise_info", "未开通该功能")
	ErrHasSettled = domain.NewError(
		"err_has_settled", "已经结算")
	ErrUnixDate = domain.NewError(
		"err_unix_date", "错误的日期时间戳")
	ErrRatio = domain.NewError(
		"err_ratio", "利率不正确")
	ErrLessThanMinTransferIn = domain.NewError(
		"err_less_than_min_transfer_in", "转入金额最低%s")
	ErrLessThanMinTransferOut = domain.NewError(
		"err_less_than_min_transfer_out", "转出金额最低%s")
	ErrMustAllTransferOut = domain.NewError(
		"err_must_all_transfer_out", "金额最低%s或全部转出")
	ErrOutOfBalance = domain.NewError(
		"err_out_of_balance", "超出帐户最大金额")
)

Functions

This section is empty.

Types

type IPersonFinance

type IPersonFinance interface {
	// 获取聚合根
	GetAggregateRootId() int64
	// 获取账号
	GetMemberAccount() member.IAccount
	// 获取增利账户信息(类:余额宝)
	GetRiseInfo() IRiseInfo
	// 创建增利账户信息
	CreateRiseInfo() error
	// 同步到会员账户理财数据
	SyncToAccount() error
}

在此聚合下, 会员抽象为Person, PersonId 对应 MemberId

type IPersonFinanceRepository

type IPersonFinanceRepository interface {
	// 获取个人财富聚合根
	GetPersonFinance(personId int64) IPersonFinance

	// 根据时间获取收益情况
	GetRiseByTime(personId int64, begin, end int64) []*RiseDayInfo

	// 根据人员编号获取收益
	GetRiseValueByPersonId(id int64) (v *RiseInfoValue, err error)

	// 保存收益信息
	SaveRiseInfo(*RiseInfoValue) (int, error)

	// 获取日志
	GetRiseLog(personId int64, logId int32) *RiseLog

	// 保存日志
	SaveRiseLog(*RiseLog) (int32, error)

	// 获取日志
	GetRiseLogs(personId int64, date int64, riseType int) []*RiseLog

	// 保存每日收益
	SaveRiseDayInfo(*RiseDayInfo) (int32, error)
}

type IRiseInfo

type IRiseInfo interface {
	GetDomainId() int64

	// 获取值
	Value() (RiseInfoValue, error)

	// 转入
	TransferIn(amount float32, w TransferWith) error

	// 转出,w为转出方式(如银行,余额等),state为日志的状态,某些操作
	// 需要确认,有些不需要.通过state来传入
	TransferOut(amount float32, w TransferWith, state int) error

	// 根据日志记录提交转入转出,如果已经确认操作,则返回错误
	// 通常是由系统计划任务来完成此操作,转入和转出必须经过提交!
	CommitTransfer(logId int32) error

	// 结算收益(按天结息),settleUnix:结算日期的时间戳(不含时间),
	// dayRatio 为每天的收益比率
	RiseSettleByDay(settleUnix int64, dayRatio float32) error

	// 获取时间段内的增利信息
	GetRiseByTime(begin, end int64) []*RiseDayInfo

	// 保存
	Save() error
}

现金增利

type RiseDayInfo

type RiseDayInfo struct {
	Id               int32   `db:"id" pk:"yes" auto:"yes"`
	PersonId         int64   `db:"person_id"`
	Date             string  `db:"date"`
	SettlementAmount float32 `db:"base_amount"` //本金
	RiseAmount       float32 `db:"rise_amount"` //增加金额
	UnixDate         int64   `db:"unix_date"`
	UpdateTime       int64   `db:"update_time"`
}

收益每日结算数据

type RiseInfoValue

type RiseInfoValue struct {
	//Id  int `db:"id" pk:"yes" auto:"no"`
	PersonId         int64   `db:"person_id" pk:"yes" auto:"no"` //人员编号
	Balance          float32 `db:"balance"`                      //本金及收益的余额
	SettlementAmount float32 `db:"settlement_amount"`            //结算金额,日日计息, 月月分红
	Rise             float32 `db:"rise"`                         //当前的收益
	TransferIn       float32 `db:"transfer_in"`                  //今日转入
	TotalAmount      float32 `db:"total_amount"`                 //总金额
	TotalRise        float32 `db:"total_rise"`                   //总收益
	SettledDate      int64   `db:"settled_date"`                 //结算日期,用于筛选需要结算的数据
	UpdateTime       int64   `db:"update_time"`
}

收益总记录

type RiseLog

type RiseLog struct {
	Id           int32   `db:"id" pk:"yes" auto:"yes"`
	PersonId     int64   `db:"person_id"`     //会员编号
	Title        string  `db:"title"`         //日志标题
	Amount       float32 `db:"amount"`        //金额
	Type         int     `db:"type"`          //类型
	TransferWith int     `db:"transfer_with"` //转入转出的方式
	State        int     `db:"state"`         //状态
	UnixDate     int64   `db:"unix_date"`     //日期
	Remark       string  `db:"remark"`        //备注,比如转账的交易号
	LogTime      int64   `db:"log_time"`      //日志时间
	UpdateTime   int64   `db:"update_time"`   //更新时间
}

收益日志

type TransferWith

type TransferWith int

转入转出方式

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL