123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- package model
- import (
- "fmt"
- "math"
- "strconv"
- colapi "go-common/app/service/main/coupon/api"
- col "go-common/app/service/main/coupon/model"
- "go-common/library/time"
- )
- // vip_price_config suit_type
- const (
- AllUser int8 = iota
- OldVIP
- NewVIP
- OldSubVIP
- NewSubVIP
- OldPackVIP
- NewPackVIP
- )
- // order type
- const (
- NoRenew int8 = iota
- OtherRenew
- IOSRenew
- )
- // order type by month for vip_user_discount_history table
- const (
- OneMonthSub int8 = iota + 1
- ThreeMonthSub
- OneYearSub
- )
- // const month
- const (
- OneMonth = int8(1)
- ThreeMonth = int8(3)
- OneYear = int8(12)
- )
- // const vip_price_config beforeSuitType
- const (
- All int8 = iota
- VIP
- Sub
- Pack
- )
- // const panel month sort
- const (
- PanelMonthDESC int8 = iota
- PanelMonthASC
- )
- // const PanelType
- const (
- PanelTypeNormal = "normal"
- PanelTypeFriend = "friend"
- PanelTypeCheck = "check"
- PanelTypeEle = "ele"
- )
- const (
- // PlatVipPriceConfigOther 其他平台
- PlatVipPriceConfigOther int64 = iota + 1
- // PlatVipPriceConfigIOS IOS平台
- PlatVipPriceConfigIOS
- // PlatVipPriceConfigIPADHD ipad hd平台
- PlatVipPriceConfigIPADHD
- // PlatVipPriceConfigFriendsGift 好友赠送
- PlatVipPriceConfigFriendsGift
- // PlatVipPriceConfigInternational 安卓国际版
- PlatVipPriceConfigInternational
- // PlatVipPriceConfigIphoneB iphone蓝版
- PlatVipPriceConfigIphoneB
- // PlatVipPriceConfigCheck 审核态价格
- PlatVipPriceConfigCheck = 20
- )
- // const select
- const (
- PanelNotSelected int32 = iota
- PanelSelected
- )
- // VipPriceConfig price config.
- type VipPriceConfig struct {
- ID int64 `json:"id"`
- Plat int64 `json:"platform"`
- PdName string `json:"product_name"`
- PdID string `json:"product_id"`
- SuitType int8 `json:"suit_type"`
- TopSuitType int8 `json:"-"`
- Month int16 `json:"month"`
- SubType int8 `json:"sub_type"`
- OPrice float64 `json:"original_price"`
- DPrice float64 `json:"discount_price"`
- Selected int32 `json:"selected"`
- Remark string `json:"remark"`
- Status int8 `json:"status"`
- Forever bool `json:"-"`
- Operator string `json:"operator"`
- OpID int64 `json:"oper_id"`
- Superscript string `json:"superscript"`
- StartBuild int64 `json:"start_build"`
- EndBuild int64 `json:"end_build"`
- PanelType string `json:"panel_type"`
- CTime time.Time `json:"ctime"`
- MTime time.Time `json:"mtime"`
- }
- // VipPirceResp vip pirce resp.
- type VipPirceResp struct {
- Vps []*VipPanelInfo `json:"price_list"`
- CouponInfo *col.CouponAllowancePanelInfo `json:"coupon_info"`
- CouponSwith int8 `json:"coupon_switch"`
- CodeSwitch int8 `json:"code_switch"`
- GiveSwitch int8 `json:"give_switch"`
- ExistCoupon int8 `json:"exist_coupon"`
- Privileges *PrivilegesResp `json:"privileges"`
- }
- // VipPirceResp5 vip pirce resp.
- type VipPirceResp5 struct {
- Vps []*VipPanelInfo `json:"price_list"`
- CouponInfo *col.CouponAllowancePanelInfo `json:"coupon_info"`
- CouponSwith int8 `json:"coupon_switch"`
- CodeSwitch int8 `json:"code_switch"`
- GiveSwitch int8 `json:"give_switch"`
- Privileges map[int8]*PrivilegesResp `json:"privileges"`
- }
- // VipPirceRespV9 vip pirce resp v9.
- type VipPirceRespV9 struct {
- Vps []*VipPanelInfo `json:"price_list"`
- Coupon *colapi.UsableAllowanceCouponV2Reply `json:"coupon"`
- CouponSwith int8 `json:"coupon_switch"`
- CodeSwitch int8 `json:"code_switch"`
- GiveSwitch int8 `json:"give_switch"`
- Privileges map[int8]*PrivilegesResp `json:"privileges"`
- }
- // VipDPriceConfig price discount config.
- type VipDPriceConfig struct {
- ID int64 `json:"id"`
- PdID string `json:"product_id"`
- DPrice float64 `json:"discount_price"`
- STime time.Time `json:"stime"`
- ETime time.Time `json:"etime"`
- Remark string `json:"remark"`
- Operator string `json:"operator"`
- OpID int64 `json:"oper_id"`
- CTime time.Time `json:"ctime"`
- MTime time.Time `json:"mtime"`
- FirstPrice float64 `json:"first_price"`
- }
- // DoTopSuitType .
- func (vpc *VipPriceConfig) DoTopSuitType() {
- switch vpc.SuitType {
- case OldPackVIP, NewPackVIP:
- vpc.TopSuitType = Pack
- case OldSubVIP, NewSubVIP:
- vpc.TopSuitType = Sub
- case OldVIP, NewVIP:
- vpc.TopSuitType = VIP
- case AllUser:
- vpc.TopSuitType = All
- }
- }
- // DoCheckRealPrice ,
- func (vpc *VipPriceConfig) DoCheckRealPrice(mvp map[int64]*VipDPriceConfig) {
- if vp, ok := mvp[vpc.ID]; ok {
- vpc.PdID = vp.PdID
- vpc.DPrice = vp.DPrice
- vpc.Remark = vp.Remark
- if vp.FirstPrice > 0 && vpc.SubType == AutoRenew {
- vpc.DPrice = vp.FirstPrice
- }
- }
- if vpc.DPrice == 0 {
- vpc.DPrice = vpc.OPrice
- }
- }
- // DoSubMonthKey .
- func (vpc *VipPriceConfig) DoSubMonthKey() string {
- return fmt.Sprintf("%d%d", vpc.Month, vpc.SubType)
- }
- // FormatRate .
- func (vpc *VipPriceConfig) FormatRate() string {
- if vpc.DPrice == 0 {
- return ""
- }
- if vpc.DPrice/vpc.OPrice == 1 {
- return ""
- }
- return strconv.FormatFloat(math.Floor((vpc.DPrice/vpc.OPrice)*100)/10, 'f', -1, 64) + "折"
- }
- // DoPayOrderTypeKey .
- func (po *PayOrder) DoPayOrderTypeKey() string {
- if po.OrderType == IOSRenew {
- po.OrderType = OtherRenew
- }
- return fmt.Sprintf("%d%d", po.BuyMonths, po.OrderType)
- }
- // IsSub .
- func (po *PayOrder) IsSub() bool {
- return po.OrderType == OtherRenew || po.OrderType == IOSRenew
- }
- // VipPirce vip pirce.
- type VipPirce struct {
- Panel *VipPanelInfo `json:"pirce_info"`
- Coupon *col.CouponAllowanceInfo `json:"coupon_info"`
- }
- // VipPanelExplain vip panel explain.
- type VipPanelExplain struct {
- BackgroundURL string `json:"background_url"`
- Explain string `json:"user_explain"`
- }
- // FilterBuild filter price build .
- func (vpc *VipPriceConfig) FilterBuild(build int64) bool {
- if (vpc.StartBuild != 0 && vpc.StartBuild > build) || (vpc.EndBuild != 0 && vpc.EndBuild < build) {
- return false
- }
- return true
- }
- // ArgProductLimit args product limit.
- type ArgProductLimit struct {
- Mid int64
- Months int32
- PanelType string
- }
|