Browse Source

add reverse:for v1.8.1 代理购买直推上级分佣

tags/v1.8.2
huangjiajun 2 years ago
parent
commit
1b02282625
6 changed files with 198 additions and 0 deletions
  1. +23
    -0
      db/db_extend_commission.go
  2. +18
    -0
      db/db_regional_agent_user.go
  3. +18
    -0
      db/model/extend_agent_commission_relate.go
  4. +25
    -0
      db/model/regional_agent_user.go
  5. +1
    -0
      md/extend_price_reward.go
  6. +113
    -0
      svc/extend_agent_commission.go

+ 23
- 0
db/db_extend_commission.go View File

@@ -0,0 +1,23 @@
package db

import (
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db/model"
"xorm.io/xorm"
)

func GetExtendAgentCommissionRelate(eg *xorm.Engine, oid, pvd string) (*model.ExtendAgentCommissionRelate, error) {
var ord model.ExtendAgentCommissionRelate
has, err := eg.Where("oid=? and pvd=?", oid, pvd).Get(&ord)
if has == false || err != nil {
return nil, err
}
return &ord, nil
}
func GetExtendAgentCommissionRelateWithSession(session *xorm.Session, oid, pvd string) (*model.ExtendAgentCommissionRelate, error) {
var ord model.ExtendAgentCommissionRelate
has, err := session.Where("oid=? and pvd=?", oid, pvd).Get(&ord)
if has == false || err != nil {
return nil, err
}
return &ord, nil
}

+ 18
- 0
db/db_regional_agent_user.go View File

@@ -0,0 +1,18 @@
package db

import (
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db/model"
zhios_order_relate_logx "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/logx"
"fmt"
"xorm.io/xorm"
)

// GetCountByRegionalAgentUserInfoByParams 通过传入的参数查询数据(单条)
func GetCountByRegionalAgentUserInfoByParams(Db *xorm.Engine, params map[string]interface{}) (*model.RegionalAgentUser, error) {
var m model.RegionalAgentUser
var query = fmt.Sprintf("%s =?", params["key"])
if has, err := Db.Where(query, params["value"]).And("deleted_time is null").Get(&m); err != nil || has == false {
return nil, zhios_order_relate_logx.Error(err)
}
return &m, nil
}

+ 18
- 0
db/model/extend_agent_commission_relate.go View File

@@ -0,0 +1,18 @@
package model

import (
"time"
)

type ExtendAgentCommissionRelate struct {
Id int `json:"id" xorm:"not null pk autoincr INT(11)"`
Uid int `json:"uid" xorm:"default 0 comment('奖励用户id') INT(11)"`
FormUid int `json:"form_uid" xorm:"default 0 comment('来自用户id') INT(11)"`
Pvd string `json:"pvd" xorm:"default '' comment('渠道') VARCHAR(255)"`
Oid string `json:"oid" xorm:"default '' comment('子订单') VARCHAR(255)"`
CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
Amount string `json:"amount" xorm:"default 0.0000 comment('金额') DECIMAL(11,4)"`
Rate string `json:"rate" xorm:"default 0.0000 comment('当时比例') DECIMAL(11,4)"`
SettleTime time.Time `json:"settle_time" xorm:"DATETIME"`
CoinId int `json:"coin_id" xorm:"default 0 comment('积分id 0为佣金') INT(11)"`
}

+ 25
- 0
db/model/regional_agent_user.go View File

@@ -0,0 +1,25 @@
package model

import (
"time"
)

type RegionalAgentUser struct {
Id int64 `json:"id" xorm:"pk autoincr BIGINT(20)"`
SchemeId int `json:"scheme_id" xorm:"not null comment('方案id') INT(11)"`
Uid int `json:"uid" xorm:"not null comment('参与区域代理的用户id') index(mgbgu_uid_ord_id_group_id_index) INT(11)"`
RegionId int `json:"region_id" xorm:"not null comment('区域id') index(mgbgu_uid_ord_id_group_id_index) INT(11)"`
IsFailure int `json:"is_failure" xorm:"not null default 0 comment('是否已失效:0否 1是') TINYINT(1)"`
FailureTime int `json:"failure_time" xorm:"not null comment('剩下失效时间(单位:月)0代表永久') INT(11)"`
ProvinceId int64 `json:"province_id" xorm:"comment('省级区域id') BIGINT(20)"`
CityId int64 `json:"city_id" xorm:"comment('市级区域id') BIGINT(20)"`
DistrictId int64 `json:"district_id" xorm:"comment('区/县级id') BIGINT(20)"`
SiteId int64 `json:"site_id" xorm:"comment('网点id') BIGINT(20)"`
RegionalName string `json:"regional_name" xorm:"not null comment('地区名:(例如:广东省;广东省-珠海市;广东省-珠海市-香洲区;广东省-珠海市-香洲区-港湾一号)') VARCHAR(255)"`
Level int `json:"level" xorm:"not null default 0 comment('等级(1:省级;2:市级;3:区/县 级;4:网点)') TINYINT(1)"`
CreateTime time.Time `json:"create_time" xorm:"not null default 'CURRENT_TIMESTAMP' comment('创建时间') index(mgbgu_uid_ord_id_group_id_index) TIMESTAMP"`
UpdateTime time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' comment('更新时间') TIMESTAMP"`
DeletedTime time.Time `json:"deleted_time" xorm:"comment('删除时间') TIMESTAMP"`
DateType int `json:"date_type" xorm:"not null comment('1:包月,2:包季,3:包年,4:永久') TINYINT(1)"`
AutoRenewal int `json:"auto_renewal" xorm:"not null comment('是否自动续费0否 1是') TINYINT(1)"`
}

+ 1
- 0
md/extend_price_reward.go View File

@@ -18,4 +18,5 @@ type ExtendPriceRewardListDetail struct {
BaseVal string `json:"base_val"`
Bili string `json:"bili"`
PositionBili string `json:"position_bili"`
ExtendAgentBili string `json:"extend_agent_bili"`
}

+ 113
- 0
svc/extend_agent_commission.go View File

@@ -0,0 +1,113 @@
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"
"encoding/json"
"time"
"xorm.io/xorm"
)

//加入区域代理直推上级分佣 抽成部分
/***
commission 总佣金
bili 抽成 除以100之后的
uid 用户id
oid 订单号
pvd 渠道
*/
func AddExtendAgentCommission(eg *xorm.Engine, args map[string]string) {
user, err := db.UserProfileFindByID(eg, args["uid"])
if err != nil || user == nil {
return
}
if user.ParentUid == 0 {
return
}
//判断是不是代理
//查出用户是否区域代理
agentUser, err := db.GetCountByRegionalAgentUserInfoByParams(eg, map[string]interface{}{
"key": "uid",
"value": user.Uid,
})
if agentUser == nil || err != nil {
return
}
// 有效期计算
if agentUser.IsFailure == 1 {
return
}
now := time.Now().Unix()
if agentUser.FailureTime > 0 && agentUser.FailureTime < int(now) {
return
}

commissionOpt, err := db.DbsPlanCommissionById(eg, zhios_order_relate_utils.StrToInt(args["plan_commission_id"]))
if err != nil || commissionOpt == nil || commissionOpt.Id == 0 {
return
}
var subsidyTmp = make(map[int]*md.ExtendRewardLvGrade)
var tmp map[int]*md.ExtendRewardLvGrade
if err := json.Unmarshal([]byte(commissionOpt.Data), &tmp); err != nil {
return
}
for _, v := range tmp {
subsidyTmp[v.Lv] = v
}
userProfile, err := db.UserProfileFindByID(eg, args["uid"])
if err != nil || userProfile == nil {
return
}
if userProfile.ParentUid == 0 {
return
}
//查询用户等级
parentUser, err := db.UserFindByID(eg, userProfile.ParentUid)
if err != nil || parentUser == nil {
return
}
lvGrade := subsidyTmp[parentUser.Level]
var rewardList = make(map[string]md.ExtendPriceRewardList)
for _, v := range lvGrade.ExtendPriceRewardList {
rewardList[v.CoinID] = v
}
//判断有没有存过
relate, _ := db.GetExtendAgentCommissionRelate(eg, args["oid"], args["pvd"])
if relate != nil {
return
}

for k, v := range rewardList {
var amount float64 = 0
rewardData := v
reward := md.ExtendPriceRewardListDetail{}
if agentUser.Level == 1 {
reward = rewardData.ProvinceAgent
}
if agentUser.Level == 2 {
reward = rewardData.CityAgent
}
if agentUser.Level == 3 {
reward = rewardData.AreaAgent
}
amount = zhios_order_relate_utils.StrToFloat64(args["commission"]) * zhios_order_relate_utils.StrToFloat64(reward.ExtendAgentBili) / 100
if amount == 0 {
continue
}
var ord = model.ExtendAgentCommissionRelate{
Uid: user.ParentUid,
FormUid: user.Uid,
Pvd: args["pvd"],
Oid: args["oid"],
CreateTime: time.Now(),
Amount: zhios_order_relate_utils.Float64ToStrByPrec(amount, 4),
Rate: args["bili"],
CoinId: zhios_order_relate_utils.StrToInt(k),
}
eg.InsertOne(&ord)
}

return
}

Loading…
Cancel
Save