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"` //更新时间 }
收益日志
Click to show internal directories.
Click to hide internal directories.