@@ -0,0 +1,83 @@ | |||
package db | |||
import ( | |||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db/model" | |||
"errors" | |||
"time" | |||
"xorm.io/xorm" | |||
) | |||
//初始化资金池基础设置 | |||
func InitCapitalPool(engine *xorm.Engine) error { | |||
pool := &model.CapitalPoolAgent{ | |||
IsUse: 0, | |||
IsAuto: 0, | |||
BonusType: "1", | |||
BonusDateType: 1, | |||
BonusTime: "", | |||
BonusLevelType: 1, | |||
UserLevelGroup: "", | |||
CreateAt: time.Now(), | |||
UpdateAt: time.Now(), | |||
SettleCardinality: "commission", | |||
} | |||
addCapitalPool, err := AddCapitalPool(engine, pool) | |||
if err != nil { | |||
return err | |||
} | |||
if addCapitalPool != 1 { | |||
return errors.New("插入条数有误!") | |||
} | |||
return nil | |||
} | |||
//新增资金池基础设置 | |||
func AddCapitalPool(engine *xorm.Engine, pool *model.CapitalPoolAgent) (int64, error) { | |||
one, err := engine.InsertOne(pool) | |||
return one, err | |||
} | |||
//编辑资金池基础设置 | |||
func UpdateCapitalPool(engine *xorm.Engine, pool *model.CapitalPoolAgent) (int64, error) { | |||
session := engine.NewSession() | |||
defer session.Close() | |||
err := session.Begin() | |||
if err != nil { | |||
return 0, err | |||
} | |||
update, err := session.ID(pool.Id).AllCols().Update(pool) | |||
if err != nil { | |||
session.Rollback() | |||
return 0, err | |||
} | |||
session.Commit() | |||
return update, err | |||
} | |||
//获取资金池基础设置 | |||
func GetCapitalPool(engine *xorm.Engine) (pool model.CapitalPoolAgent, err error) { | |||
get, err := engine.Where("1 = 1").Get(&pool) | |||
if err != nil { | |||
return model.CapitalPoolAgent{}, err | |||
} | |||
if !get { | |||
err := InitCapitalPool(engine) | |||
if err != nil { | |||
return model.CapitalPoolAgent{}, err | |||
} | |||
capitalPool, err := GetCapitalPool(engine) | |||
if err != nil { | |||
return model.CapitalPoolAgent{}, err | |||
} | |||
if capitalPool.SettleCardinality == "" { | |||
capitalPool.SettleCardinality = "commission" | |||
} | |||
return capitalPool, err | |||
} else { | |||
if pool.SettleCardinality == "" { | |||
pool.SettleCardinality = "commission" | |||
} | |||
} | |||
return | |||
} |
@@ -0,0 +1,26 @@ | |||
package model | |||
import ( | |||
"time" | |||
) | |||
type CapitalPoolAgent struct { | |||
Id int `json:"id" xorm:"not null pk autoincr comment('主键id') INT(11)"` | |||
IsUse int `json:"is_use" xorm:"not null comment('是否开启(否:0;是:1)') TINYINT(1)"` | |||
IsAuto int `json:"is_auto" xorm:"not null default 0 comment('是否自动分红(否:0;是:1)') TINYINT(1)"` | |||
BonusType string `json:"bonus_type" xorm:"not null default '0' comment('分红类型(1佣金,2积分,3区块币)多个以逗号隔开') VARCHAR(255)"` | |||
BonusDateType int `json:"bonus_date_type" xorm:"not null default 0 comment('日期类型(1每天,2固定时间)') TINYINT(1)"` | |||
BonusTime string `json:"bonus_time" xorm:"default '0' comment('分红日期(1,15,30)多个日期已逗号分隔开;ps 只有日期类型是2才是有数据') VARCHAR(255)"` | |||
BonusLevelType int `json:"bonus_level_type" xorm:"not null default 0 comment('用户等级分红类型(1,指定等级,2大于或等于指定等级)') TINYINT(1)"` | |||
UserLevelGroup string `json:"user_level_group" xorm:"not null comment('指定用户等级组json') TEXT"` | |||
UserGroup string `json:"user_group" xorm:"not null comment('指定用户组json') LONGTEXT"` | |||
OpenSecurities int `json:"open_securities" xorm:"not null comment('是否开启分红劵功能') TINYINT(1)"` | |||
SecuritiesId string `json:"securities_id" xorm:"not null default '' comment('虚拟币id') VARCHAR(255)"` | |||
ExchangeSecuritiesId string `json:"exchange_securities_id" xorm:"comment('兑换分红券虚拟币id') VARCHAR(255)"` | |||
ExchangeRate string `json:"exchange_rate" xorm:"comment('兑换比例,固定为x:1') VARCHAR(255)"` | |||
UserLevelLimit string `json:"user_level_limit" xorm:"comment('用户等级限制组json') TEXT"` | |||
CreateAt time.Time `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' comment('创建时间') TIMESTAMP"` | |||
UpdateAt time.Time `json:"update_at" xorm:"default 'CURRENT_TIMESTAMP' comment('更新时间') TIMESTAMP"` | |||
SettleCardinality string `json:"settle_cardinality" xorm:"comment('基数') VARCHAR(255)"` | |||
QuantityAllocation int `json:"quantity_allocation" xorm:"not null comment('数量分配 0按人数 1按份数') TINYINT(1)"` | |||
} |
@@ -0,0 +1,20 @@ | |||
package model | |||
import ( | |||
"time" | |||
) | |||
type CapitalPoolAgentOrd struct { | |||
Id int `json:"id" xorm:"not null pk autoincr comment('主键id') INT(11)"` | |||
Uid int `json:"uid" xorm:"not null comment('用户id') INT(11)"` | |||
Pvd string `json:"pvd" xorm:"not null comment('订单渠道:自营,导购,o2o。。。。') VARCHAR(255)"` | |||
OrdId int64 `json:"ord_id" xorm:"not null default 0 comment('订单id') BIGINT(20)"` | |||
Commission string `json:"commission" xorm:"not null comment('订单总佣金') DECIMAL(12,6)"` | |||
Price string `json:"price" xorm:"not null comment('付款金额') DECIMAL(12,6)"` | |||
CommissionType string `json:"commission_type" xorm:"not null default '0' comment('佣金类型(CNY,虚拟币1Id,虚拟币2Id)') VARCHAR(100)"` | |||
CapitalPoolRate string `json:"capital_pool_rate" xorm:"not null comment('资金池存入比例') DECIMAL(6,4)"` | |||
DepositValue string `json:"deposit_value" xorm:"not null comment('存入金额') DECIMAL(12,6)"` | |||
CreateAt time.Time `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' comment('创建时间') TIMESTAMP"` | |||
UpdateAt time.Time `json:"update_at" xorm:"default 'CURRENT_TIMESTAMP' comment('更新时间') TIMESTAMP"` | |||
SettleCardinality string `json:"settle_cardinality" xorm:"comment('基数') VARCHAR(255)"` | |||
} |
@@ -0,0 +1,71 @@ | |||
package md | |||
type PoolBonus struct { | |||
BonusLevelType int `json:"bonus_level_type"` | |||
BonusValue float64 `json:"bonus_value"` //分红金额 | |||
BonusCoinType map[string]string `json:"bonus_coin_type"` //分红币种和金额比例 | |||
SecuritiesId string `json:"securities_id"` | |||
QuantityAllocation string `json:"quantity_allocation"` | |||
BonusUserLevelGroup []*BonusUserLevel //分红的前置条件 | |||
BonusUserGroup []*BonusUserGroup //分红的前置条件 | |||
} | |||
type BonusUserLevel struct { | |||
CoinTypeList []*CoinTypeList `json:"coin_type_list"` | |||
LevelID string `json:"level_id"` | |||
LevelWeight string `json:"level_weight"` | |||
SecuritiesValue string `json:"securities_value"` | |||
ChildLevelId string `json:"child_level_id"` | |||
Num string `json:"num"` | |||
} | |||
type CoinTypeList struct { | |||
CoinID string `json:"coin_id"` | |||
CoinRate string `json:"coin_rate"` | |||
} | |||
type BonusUserGroup struct { | |||
CoinTypeList []*CoinTypeList `json:"coin_type_list"` | |||
Uid string `json:"uid"` | |||
Phone string `json:"phone"` | |||
SecuritiesValue string `json:"securities_value"` | |||
ChildLevelId string `json:"child_level_id"` | |||
Num string `json:"num"` | |||
} | |||
type BonusCapitalInfo struct { | |||
BonusLevelType int `json:"bonus_level_type"` | |||
BonusCoinType map[string]string `json:"bonus_coin_type"` //分红币种和金额比例 | |||
BonusValue float64 `json:"bonus_value"` //分红金额 | |||
//BonusCoinType map[string]string `json:"bonus_coin_type"`//分红币种和分红金额 | |||
UserLevelGroupBonus []*UserLevelGroupBonus `json:"user_level_group_bonus"` | |||
UserGroupBonus []*UserGroupBonus `json:"user_group_bonus"` | |||
Massage string `json:"massage"` | |||
} | |||
type UserLevelGroupBonus struct { | |||
UserLevelId string `json:"user_level_id"` //等级id | |||
UserNum string `json:"user_num"` //用户人数 | |||
BonusCoinTypeList []*BonusCoinType `json:"bonus_coin_type_list"` // | |||
} | |||
type UserGroupBonus struct { | |||
Uid string `json:"uid"` //id | |||
UserNum string `json:"user_num"` //用户人数 | |||
BonusCoinTypeList []*BonusCoinType `json:"bonus_coin_type_list"` // | |||
Phone string `json:"phone"` //id | |||
} | |||
type BonusCoinType struct { | |||
CoinID string `json:"coin_id"` //币种类型 | |||
CoinValue string `json:"coin_value"` //分红总金额 | |||
AverageValue string `json:"average_value"` //人均分红金额 | |||
} | |||
type BonusOrdParam struct { | |||
Uid string `json:"uid" remark:"用户id"` | |||
Pvd string `json:"pvd" remark:"订单渠道:自营,导购,o2o。。。。"` | |||
OrdId string `json:"ord_id" remark:"订单id"` | |||
Commission string `json:"commission" remark:"订单总佣金"` | |||
CommissionType string `json:"commission_type" remark:"佣金类型(CNY,虚拟币1Id,虚拟币2Id)"` | |||
CapitalPoolRate string `json:"capital_pool_rate" remark:"资金池存入比例"` | |||
DepositValue string `json:"deposit_value" remark:"存入金额"` | |||
Price string `json:"price" remark:"价格"` | |||
PriceValue string `json:"price_value" remark:"价格"` | |||
} |
@@ -0,0 +1,43 @@ | |||
package svc | |||
import ( | |||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db" | |||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db/model" | |||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/md" | |||
zhios_order_relate_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils" | |||
"errors" | |||
"github.com/jinzhu/copier" | |||
"time" | |||
"xorm.io/xorm" | |||
) | |||
func AddBonusOrd(engine *xorm.Engine, t *md.BonusOrdParam) error { | |||
//获取分红基础设置 | |||
pool, err := db.GetCapitalPool(engine) | |||
if err != nil || pool.Id == 0 { | |||
return errors.New("分红设置有误") | |||
} | |||
if pool.IsUse == 0 { | |||
return errors.New("功能没有开始使用,插入分红失败") | |||
} | |||
var capitalPoolOrd model.CapitalPoolAgentOrd | |||
copier.Copy(&capitalPoolOrd, &t) | |||
capitalPoolOrd.Uid = zhios_order_relate_utils.StrToInt(t.Uid) | |||
capitalPoolOrd.OrdId = zhios_order_relate_utils.AnyToInt64(t.OrdId) | |||
capitalPoolOrd.CreateAt = time.Now() | |||
capitalPoolOrd.UpdateAt = time.Now() | |||
capitalPoolOrd.SettleCardinality = pool.SettleCardinality | |||
if pool.SettleCardinality == "price" { //价格为基数 | |||
capitalPoolOrd.DepositValue = t.PriceValue | |||
capitalPoolOrd.Commission = t.PriceValue | |||
} | |||
one, err := engine.InsertOne(&capitalPoolOrd) | |||
if err != nil || one == 0 { | |||
if err == nil { | |||
err = errors.New("插入数据有误!") | |||
} | |||
return err | |||
} | |||
return nil | |||
} |