member

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Dec 15, 2021 License: GPL-2.0 Imports: 3 Imported by: 0

README

会员模块

会员等级

会员等级由系统统一设置。

会员所属

会员应有来源商户、来源会员

银行卡信息

会员只能修改一次, 管理员退回可再次修改。 同时应保有修改记录。以防止提现因银行卡产生纠纷。

Documentation

Overview

*

  • Copyright 2015 @ 56x.net.
  • name : account
  • author : jarryliu
  • date : 2015-07-24 08:48
  • description :
  • history :

*

  • Copyright 2014 @ 56x.net.
  • name :
  • author : jarryliu
  • date : 2014-02-05 20:12
  • description :
  • history :

*

  • Copyright 2015 @ 56x.net.
  • name : gift.go
  • author : jarryliu
  • date : 2016-06-24 16:50
  • description :
  • history :

*

  • Copyright 2015 @ 56x.net.
  • name : invitaton_manager
  • author : jarryliu
  • date : -- :
  • description :
  • history :

*

  • Copyright 2015 @ 56x.net.
  • name : level_manager
  • author : jarryliu
  • date : 2016-05-26 11:33
  • description :
  • history :

Index

Constants

View Source
const (
	// 自定义的业务类型
	KindMine int = 30
	// 会员充值
	KindCharge = 1
	// 消耗
	KindConsume = 2
	// 客服调整
	KindAdjust = 3
	// 支付抵扣
	KindDiscount = 4
	// 退款
	KindRefund int = 5
	// 兑换充值, 比如将钱包充值到余额
	KindExchange int = 6
	// 转入
	KindTransferIn int = 7
	// 转出
	KindTransferOut int = 8
	// 失效
	KindExpired int = 9
	// 冻结
	KindFreeze int = 10
	// 解冻
	KindUnfreeze int = 11
)
View Source
const (

	// 提现
	//KindBalanceApplyCash = 11
	// 转账
	KindBalanceTransfer int = 12
	StatusOK                = 1
)
View Source
const (
	// 赠送
	TypeIntegralPresent = 1
	// 积分冻结
	TypeIntegralFreeze = 3
	// 积分解冻
	TypeIntegralUnfreeze = 4
	// 购物赠送
	TypeIntegralShoppingPresent = 5
	// 支付抵扣
	TypeIntegralPaymentDiscount = 6
)
View Source
const (
	StateStopped = 0 //已停用
	StateOk      = 1 //正常
	BankNoLock   = 0
	BankLocked   = 1
)
View Source
const (
	// 收藏店铺
	FavTypeShop = iota + 1
	// 收藏商品
	FavTypeGoods
)
View Source
const (
	// 普通会员
	PremiumNormal int = 0
	// 金会员
	PremiumGold int = 1
	// 白金会员
	PremiumWhiteGold int = 2
	// 黑钻会员
	PremiumSuper int = 3
)
View Source
const (
	// 自动升级
	LAutoUpgrade = 1
	// 客服更改
	LServiceAgentUpgrade = 2
	// 程序升级,todo: 暂时未对其进行区分
	LProgramUpgrade = 3
)
View Source
const (
	// 已激活
	FlagActive = 1 << iota
	// 已锁定的
	FlagLocked = 2
	// 已认证的
	FlagTrusted = 4
	// 已完善的资料
	FlagProfileCompleted = 8
)
View Source
const (
	RegisterModeNormal         = 1 // 正常注册
	RegisterModeClosed         = 2 // 关闭注册
	RegisterModeMustRedirect   = 3 // 必须直接注册
	RegisterModeMustInvitation = 4 // 必须邀请注册

)
View Source
const (
	// 默认操作用户
	DefaultRelateUser int64 = 0
)

Variables

View Source
var (
	ErrIncorrectInfo = domain.NewError(
		"err_incorrect_info", "非法数据")

	ErrRegOff = domain.NewError(
		"err_reg_off", "CODE:1010,系统暂停注册")

	ErrRegMissingInviteCode = domain.NewError(
		"err_reg_must_invitation", "CODE:1011,请填写邀请码")

	ErrRegOffInvitation = domain.NewError(
		"err_reg_off_invitation", "CODE:1012,系统关闭邀请注册")

	ErrInviteCode = domain.NewError(
		"member_err_invation_code", "CODE:1013,邀请码错误")

	ErrSessionTimeout = domain.NewError(
		"member_session_time_out", "会员会话超时")

	ErrMemberLocked = domain.NewError(
		"err_member_locked", "会员已被停用")

	ErrMemberHasActive = domain.NewError(
		"err_member_has_active", "会员已激活")

	ErrPremiumValue = domain.NewError(
		"err_member_premium_value", "premium not match")

	ErrInvalidSession = domain.NewError(
		"member_invalid_session", "异常会话")

	ErrNoSuchAddress = domain.NewError(
		"member_no_such_deliver_address", "配送地址错误")

	ErrLevelUsed = domain.NewError(
		"member_level_used", "此等级已被会员使用")

	ErrMaxLevel = domain.NewError(
		"err_member_max_level", "已经为最高等级")

	ErrLevelUpPass = domain.NewError(
		"err_member_level_up_pass", "会员升级已经审核")

	ErrLevelUpReject = domain.NewError(
		"err_member_level_up_reject", "会员升级已经被退回")

	ErrLevelUpConfirm = domain.NewError(
		"err_member_level_up_confirm", "会员升级已经确认")
	ErrLevelUpLaterConfirm = domain.NewError(
		"err_member_level_up_later_confirm", "请稍后二分钟后确认")

	ErrNoSuchLevelUpLog = domain.NewError(
		"err_member_no_such_level_up_log", "不存在升级信息")

	ErrLevelDisabled = domain.NewError(
		"member_level_disabled", "等级未启用")

	ErrExistsSameProgramSignalLevel = domain.NewError(
		"member_exists_same_program_signal_level", "存在相同可编程签名的等级")

	ErrMustMoreThanMaxLevel = domain.NewError(
		"member_level_must_more_than_max_level", "经验值必须大于最大等级")

	ErrLessThanLevelRequireExp = domain.NewError(
		"member_level_less_than_exp", "经验值必须大于前一等级")

	ErrMoreThanLevelRequireExp = domain.NewError(
		"member_level_more_than_exp", "经验值必须小于后一等级")

	ErrNoSuchMember = domain.NewError(
		"member_no_such_member", "会员不存在")

	ErrNoValidInviter = domain.NewError(
		"member_no_valid_inviter", "邀请人不正确")

	ErrExistsInviter = domain.NewError(
		"member_exists_inviter", "已绑定邀请人")

	ErrInvalidInviter = domain.NewError(
		"member_invalid_inviter", "不合法的邀请人(邀请人为下级)")

	ErrDeliverAddressLen = domain.NewError(
		"err_deliver_address_len", "请填写详细的配送地址")

	ErrDeliverContactPersonName = domain.NewError(
		"err_deliver_contact_person_name", "收货人不正确")

	ErrDeliverContactPhone = domain.NewError(
		"err_deliver_phone_is_null", "联系人电话有误")

	ErrNotSetArea = domain.NewError(
		"err_not_set_area", "地址不正确")

	ErrBankCardIsExists = domain.NewError(
		"err_member_bank_card_is_exists", "银行卡已绑定")

	ErrBankInfo = domain.NewError(
		"err_member_bank_info", "银行卡信息不正确")

	ErrBankName = domain.NewError(
		"err_member_bank_name", "请选择开户银行")

	ErrBankAccountName = domain.NewError(
		"err_member_bank_account_name", "开户银行户名不正确")

	ErrBankAccount = domain.NewError(
		"err_member_bank_account", "开户银行账号不正确")

	ErrBankNetwork = domain.NewError(
		"err_member_bank_network", "开户银行支行不正确")

	ErrBankNoSuchCard = domain.NewError(
		"err_bank_no_such_card", "银行卡未绑定")

	ErrIncorrectAmount = domain.NewError(
		"err_balance_amount", "金额错误")

	ErrLessTakeAmount = domain.NewError(
		"err_account_less_take_amount", "单笔最低提现金额为%s")

	ErrOutTakeAmount = domain.NewError(
		"err_account_out_take_amount", "单笔最高提现金额为%s")

	ErrTakeOutLevelNoPerm = domain.NewError(
		"err_account_take_out_level_no_perm", "%s会员无法提现")

	ErrTakeOutNotTrust = domain.NewError(
		"err_account_take_out_not_trust", "必须通过实名认证后才可提现")

	ErrIncorrectQuota = domain.NewError(
		"err_member_incorrent_quote", "金额/数量错误")

	ErrOutOfBalance = domain.NewError(
		"err_out_of_balance", "余额不足")

	ErrAccountOutOfTakeOutTimes = domain.NewError(
		"err_account_out_of_take_out_times", "今日已达到提现次数上限")

	ErrTransferAccountSMemberLevelNoPerm = domain.NewError(
		"err_account_transfer_accounts_level_no_perm", "%s不允许转账")

	ErrUserLength = domain.NewError(
		"err_user_length", "用户名至少6位",
	)

	ErrUserValidErr = domain.NewError(
		"err_user_valid_err", "用户名为6位以上字符和数字的组合")

	ErrSameUser = domain.NewError(
		"err_same_user", "用户名与原来相同")

	ErrUserExist = domain.NewError(
		"err_member_user_exist", "用户名已存在")

	ErrNilNickName = domain.NewError(
		"err_member_nil_nick_name", "昵称不能为空")

	ErrNullAvatar = domain.NewError(
		"err_member_null_avatar", "请上传头像")

	ErrAddress = domain.NewError(
		"err_member_address", "请填写详细地址")

	ErrEmailValidErr = domain.NewError(
		"err_member_email_valid_err", "邮箱不正确")

	ErrPhoneValidErr = domain.NewError(
		"err_member_phone_valid_err", "手机号码不正确")

	ErrPhoneHasBind = domain.NewError(
		"err_member_phone_has_bind", "手机号码已经使用")

	ErrMissingPhone = domain.NewError(
		"err_member_missing_phone", "请填写手机号码")

	ErrMissingIM = domain.NewError(
		"err_member_missing_im", "请填写IM")

	ErrBadPhoneFormat = domain.NewError(
		"err_bad_phone_format", "手机号码不正确")

	ErrQqValidErr = domain.NewError(
		"err_qq_valid_err", "QQ号码不正确")

	ErrNotSetTradePassword = domain.NewError("err_not_set_trade_pwd", "交易密码未设置")

	ErrIncorrectTradePassword       = domain.NewError("err_incorrect_trade_pwd", "交易密码错误")
	ErrNoSuchLogTitleOrRemark       = domain.NewError("err_member_no_such_log_title_or_remark", "缺少账户变动的标题和备注")
	ErrNotSupportAccountType        = domain.NewError("err_account_not_support", "账户类型不支持此操作")
	ErrNotSupportPaymentAccountType = domain.NewError("err_account_not_support_payment", "不支持支付的账户类型")

	ErrAccountNotEnoughAmount = domain.NewError("err_not_enough_amount", "账户余额不足")

	ErrWithdrawState = domain.NewError("err_member_take_out_state", "提现申请状态错误")

	ErrNotSupportTakeOutBusinessKind = domain.NewError("err_not_support_take_out_business_kind", "不支持的提现业务类型")

	ErrBusinessKind = domain.NewError(
		"err_not_support_business_kind", "不支持的业务类型")

	ErrNotSupportChargeMethod = domain.NewError(
		"err_account_not_support_charge_method", "不支持的充值方式")

	ErrNotSupportTransfer = domain.NewError(
		"err_account_not_support_transfer", "不支持的转账方式")

	ErrNoSuchRelateUser = domain.NewError(
		"err_account_no_such_relate_user", "未提供操作人编号")

	ErrMissingTrustedInfo = domain.NewError(
		"err_missing_trusted_info", "信息不完整、无法完成实名认证")

	ErrEmptyReviewRemark = domain.NewError(
		"err_member_empty_remark", "原因不能为空")

	ErrNotTrusted = domain.NewError(
		"err_member_not_trusted", "尚未实名认证")

	ErrNoChangedTrustInfo = domain.NewError(
		"err_member_no_changed_trust_info", "请修改实名信息后再进行提交")

	ErrRealName = domain.NewError(
		"err_real_name", "请输入真实姓名")

	ErrTrustCardId = domain.NewError(
		"err_member_trust_car_id", "身份证号码不正确")

	ErrCarIdExists = domain.NewError(
		"err_member_trust_car_id", "身份证号码已使用")

	ErrTrustMissingImage = domain.NewError(
		"err_member_trust_missing_image", "请上传认证照片")

	ErrTrustMissingCardImage = domain.NewError(
		"err_member_trust_missing_card_image", "请上传证件照片")

	ErrFavored = domain.NewError(
		"err_favored", "已经收藏过了")

	ErrAccountBalanceNotEnough = domain.NewError(
		"err_account_balance_not_enough ", "账户余额不足")

	ErrNoSuchIntegral = domain.NewError(
		"err_account_no_such_integral", "账户积分不足")

	ErrMissingOuterNo = domain.NewError(
		"err_account_missing_outer_no", "缺少订单号")
	ErrReceiptsNoIdentity = domain.NewError(
		"err_member_receipts_no_identity", "无法识别收款码")
	ErrReceiptsNoName = domain.NewError(
		"err_member_receipts_no_name", "未填写收款账户")
	ErrReceiptsNameLen = domain.NewError(
		"err_member_receipts_name_len", "收款账户超出长度")
	ErrReceiptsRepeated = domain.NewError(
		"err_member_collection_repeated", "已添加相同类型的收款码")
)

Functions

This section is empty.

Types

type Account

type Account struct {
	// 会员编号
	MemberId int64 `db:"member_id" pk:"yes"`
	// 积分
	Integral int `db:"integral"`
	// 不可用积分
	FreezeIntegral int `db:"freeze_integral"`
	// 余额
	Balance int64 `db:"balance"`
	// 不可用余额
	FreezeBalance int64 `db:"freeze_balance"`
	// 失效的账户余额
	ExpiredBalance int64 `db:"expired_balance"`
	// 钱包代码
	WalletCode string `db:"wallet_code"`
	//奖金账户余额
	WalletBalance int64 `db:"wallet_balance"`
	//冻结赠送金额
	FreezeWallet int64 `db:"freeze_wallet"`
	//失效的赠送金额
	ExpiredWallet int64 `db:"expired_wallet"`
	//总赠送金额
	TotalWalletAmount int64 `db:"total_wallet_amount"`
	//流动账户余额
	FlowBalance int64 `db:"flow_balance"`
	//当前理财账户余额
	GrowBalance int64 `db:"grow_balance"`
	//理财总投资金额,不含收益
	GrowAmount int64 `db:"grow_amount"`
	//当前收益金额
	GrowEarnings int64 `db:"grow_earnings"`
	//累积收益金额
	GrowTotalEarnings int64 `db:"grow_total_earnings"`
	//总消费金额
	TotalExpense int64 `db:"total_expense"`
	//总充值金额
	TotalCharge int64 `db:"total_charge"`
	//总支付额
	TotalPay int64 `db:"total_pay"`
	// 优先(默认)支付选项
	PriorityPay int `db:"priority_pay"`
	//更新时间
	UpdateTime int64 `db:"update_time"`
}

账户值对象

type AccountType

type AccountType int
const (
	// 余额账户
	AccountBalance AccountType = 1
	// 积分账户
	AccountIntegral AccountType = 2
	// 钱包账户
	AccountWallet AccountType = 3
	// 流通金账户
	AccountFlow AccountType = 4
	// 增长金账户
	AccountGrow AccountType = 7
)

type BalanceLog

type BalanceLog struct {
	Id       int64  `db:"id" auto:"yes" pk:"yes"`
	MemberId int64  `db:"member_id"`
	OuterNo  string `db:"outer_no"`
	// 业务类型
	Kind int `db:"kind"`

	Title string `db:"title"`
	// 金额
	Amount int64 `db:"amount"`
	// 手续费
	CsnFee int64 `db:"csn_fee"`
	// 关联操作人,仅在客服操作时,记录操作人
	RelateUser int64 `db:"rel_user"`
	// 状态
	ReviewState int32 `db:"review_state"`
	// 备注
	Remark string `db:"remark"`
	// 创建时间
	CreateTime int64 `db:"create_time"`
	// 更新时间
	UpdateTime int64 `db:"update_time"`
}

余额日志

type BankCard

type BankCard struct {
	// 编号
	Id int64 `db:"id" pk:"yes" auto:"yes"`
	// 会员编号
	MemberId int64 `db:"member_id"`
	// 银行账号
	BankAccount string `db:"bank_account"`
	// 户名
	AccountName string `db:"account_name"`
	// 银行编号
	BankId int `db:"bank_id"`
	// 银行名称
	BankName string `db:"bank_name"`
	// 银行卡代码
	BankCode string `db:"bank_code"`
	// 网点
	Network string `db:"network"`
	// 快捷支付授权码
	AuthCode string `db:"auth_code"`
	// 状态
	State int16 `db:"state"`
	// 添加时间
	CreateTime int64 `db:"create_time"`
}

银行卡

func (BankCard) Locked

func (b BankCard) Locked() bool

func (BankCard) Right

func (b BankCard) Right() bool

type BankInfo_

type BankInfo_ struct {
	//会员编号
	MemberId int64 `db:"member_id" pk:"yes"`
	//名称
	BankName string `db:"name"`
	//账号
	Account string `db:"account"`
	//账户名
	AccountName string `db:"account_name"`
	//支行网点
	Network string `db:"network"`
	//状态
	State int `db:"state"`
	//是否锁定
	IsLocked int `db:"is_locked"`
	//更新时间
	UpdateTime int64 `db:"update_time"`
}

银行卡信息,因为重要且非频繁更新的数据 所以需要用IsLocked来标记是否锁定

type BuyerGroup

type BuyerGroup struct {
	// 编号
	ID        int32  `db:"id" pk:"yes" auto:"yes"`
	Name      string `db:"name"`
	IsDefault int32  `db:"is_default"`
}

买家(客户)分组

type ComplexMember

type ComplexMember struct {
	// 昵称
	Name string
	// 真实姓名
	RealName string
	// 头像
	Avatar string
	// 手机号码
	Phone string
	// 经验值
	Exp int
	// 等级
	Level int
	// 等级名称
	LevelName string
	// 邀请码
	InviteCode string
	// 实名认证状态
	TrustAuthState int
	// 交易密码是否已设置
	TradePasswordHasSet bool
	// 高级会员类型
	PremiumUser int
	// 会员标志
	Flag int
	// 更新时间
	UpdateTime int64
}

会员概览信息

type ConsigneeAddress

type ConsigneeAddress struct {
	//编号
	Id int64 `db:"id" pk:"yes" auto:"yes"`
	//会员编号
	MemberId int64 `db:"member_id"`
	//收货人
	ConsigneeName string `db:"consignee_name"`
	//电话
	ConsigneePhone string `db:"consignee_phone"`
	//省
	Province int32 `db:"province"`
	//市
	City int32 `db:"city"`
	//区
	District int32 `db:"district"`
	//地区(省市区连接文本)
	Area string `db:"area"`
	//地址
	DetailAddress string `db:"detail_address"`
	//是否默认
	IsDefault int `db:"is_default"`
}

收货地址

type Favorite

type Favorite struct {
	// 编号
	Id int32 `db:"id" pk:"yes" auto:"yes"`
	// 会员编号
	MemberId int64 `db:"member_id"`
	// 收藏类型
	FavType int `db:"fav_type"`
	// 引用编号
	ReferId int64 `db:"refer_id"`
	// 收藏时间
	CreateTime int64 `db:"create_time"`
}

收藏

type FlowAccountLog

type FlowAccountLog struct {
	Id int64 `db:"id" auto:"yes" pk:"yes"`
	// 会员编号
	MemberId int64 `db:"member_id"`
	// 外部单号
	OuterNo string `db:"outer_no"`
	// 业务类型
	Kind int `db:"kind"`
	// 标题
	Title string `db:"title"`
	// 金额
	Amount int64 `db:"amount"`
	// 手续费
	CsnFee int64 `db:"csn_fee"`
	// 引用编号
	RelateUser int64 `db:"rel_user"`
	// 审核状态
	ReviewState int `db:"review_state"`
	// 备注
	Remark string `db:"remark"`
	// 创建时间
	CreateTime int64 `db:"create_time"`
	// 更新时间
	UpdateTime int64 `db:"update_time"`
}

活动账户日志信息(todo: 活动账户还在用,暂时不删除)

type IAccount

type IAccount interface {
	// 获取领域对象编号
	GetDomainId() int64

	// 获取账户值
	GetValue() *Account

	// 保存
	Save() (int64, error)

	// 电子钱包
	Wallet() wallet.IWallet

	// 设置优先(默认)支付方式, account 为账户类型
	SetPriorityPay(account AccountType, enabled bool) error

	// 退款
	Refund(account AccountType, title string, amount int, outerNo string, remark string) error

	// 充值,金额放大100倍
	Charge(account AccountType, title string, amount int, outerNo string, remark string) error

	// 客服调整
	Adjust(account AccountType, title string, amount int, remark string, relateUser int64) error

	// 消耗
	Consume(account AccountType, title string, amount int, outerNo string, remark string) error

	// 抵扣, 如果账户扣除后不存在为消耗,反之为抵扣
	Discount(account AccountType, title string, amount int, outerNo string, remark string) error

	// 冻结余额
	Freeze(title string, outerNo string, amount int, relateUser int64) error

	// 解冻金额
	Unfreeze(title string, outerNo string, amount int, relateUser int64) error

	// 冻结赠送金额
	FreezeWallet(title string, outerNo string, amount int, relateUser int64) error

	// 解冻赠送金额
	UnfreezeWallet(title string, outerNo string, amount int, relateUser int64) error

	// 支付单抵扣消费,tradeNo为支付单单号
	PaymentDiscount(tradeNo string, amount int, remark string) error

	// 冻结积分,当new为true不扣除积分,反之扣除积分
	FreezesIntegral(title string, value int, new bool, relateUser int64) error

	// 解冻积分
	UnfreezesIntegral(title string, value int) error

	// 获取钱包账户日志
	GetWalletLog(id int64) wallet.WalletLog

	// 申请提现,applyType:提现方式,返回info_id,交易号 及错误
	RequestWithdrawal(takeKind int, title string, amount int,
		tradeFee int, bankAccountNo string) (int64, string, error)

	// 确认提现
	ReviewWithdrawal(id int64, pass bool, remark string) error

	// 完成提现
	FinishWithdrawal(id int64, tradeNo string) error

	// 将冻结金额标记为失效
	FreezeExpired(account AccountType, amount int, remark string) error

	// 转账
	TransferAccount(account AccountType, toMember int64, amount int,
		tradeFee int, remark string) error

	// 接收转账
	ReceiveTransfer(account AccountType, fromMember int64, tradeNo string,
		amount int, remark string) error

	// 转账余额到其他账户
	TransferBalance(account AccountType, amount int, tradeNo string, toTitle, fromTitle string) error

	// 转账活动账户,kind为转账类型,如 KindBalanceTransfer等
	// commission手续费
	TransferFlow(kind int, amount int, commission float32, tradeNo string,
		toTitle string, fromTitle string) error

	// 将活动金转给其他人
	TransferFlowTo(memberId int64, kind int, amount int, commission float32,
		tradeNo string, toTitle string, fromTitle string) error
}

type IDeliverAddress

type IDeliverAddress interface {
	GetDomainId() int64
	GetValue() ConsigneeAddress
	SetValue(*ConsigneeAddress) error
	Save() (int64, error)
}

收货地址

type IFavoriteManager

type IFavoriteManager interface {
	// 收藏
	Favorite(favType int, referId int64) error
	// 是否已收藏
	Favored(favType int, referId int64) bool
	// 取消收藏
	Cancel(favType int, referId int64) error
}

收藏服务

type IGiftCardManager

type IGiftCardManager interface {

	// 可用的优惠券分页数据
	PagedAvailableCoupon(start, end int) (total int, rows []*dto.SimpleCoupon)

	// 所有的优惠券
	PagedAllCoupon(start, end int) (total int, rows []*dto.SimpleCoupon)

	// 过期的优惠券
	PagedExpiresCoupon(start, end int) (total int, rows []*dto.SimpleCoupon)
}

type IInvitationManager

type IInvitationManager interface {
	// 获取邀请人数组
	InviterArray(memberId int64, depth int) []int64

	// 判断是否由会员邀请
	InvitationBy(memberId int64) bool

	// 获取我邀请的会员
	GetInvitationMembers(begin, end int) (total int, rows []*dto.InvitationMember)

	// 获取我的邀请码
	MyCode() string

	// 获取邀请会员下级邀请数量
	GetSubInvitationNum(memberIdArr []int32) map[int32]int

	// 获取邀请我的会员
	GetInvitationMeMember() *Member

	// 更换邀请人,async是否异步更新
	UpdateInviter(inviterId int64, sync bool) error
}

type ILevelManager

type ILevelManager interface {
	// 获取等级设置
	GetLevelSet() []*Level

	// 获取最高已启用的等级
	GetHighestLevel() *Level

	// 获取等级,todo:返回error
	GetLevelById(id int) *Level

	// 根据可编程字符获取会员等级
	GetLevelByProgramSign(sign string) *Level

	// 获取下一个等级
	GetNextLevelById(id int) *Level

	// 删除等级
	DeleteLevel(id int) error

	// 保存等级
	SaveLevel(*Level) (int, error)

	// 根据经验值获取等级值
	GetLevelIdByExp(exp int) int
}

type IMember

type IMember interface {
	// 获取聚合根编号
	GetAggregateRootId() int64
	// 会员汇总信息
	Complex() *ComplexMember
	// 会员资料服务
	Profile() IProfileManager
	// 会员收藏服务
	Favorite() IFavoriteManager
	// 礼品卡服务
	GiftCard() IGiftCardManager
	// 邀请管理
	Invitation() IInvitationManager
	// 获取值
	GetValue() Member
	// 设置值
	SetValue(*Member) error
	// 获取账户
	GetAccount() IAccount
	// 发送验证码,传入操作及消息类型,并返回验证码,及错误
	SendCheckCode(operation string, mssType int) (string, error)
	// 对比验证码
	CompareCode(code string) error
	// 激活
	Active() error
	// 锁定会员,如miniutes为-1, 则永久锁定
	Lock(minutes int, remark string) error
	// 解锁会员
	Unlock() error
	// 判断是否包含标志
	ContainFlag(f int) bool
	// 获取关联的会员
	GetRelation() *InviteRelation
	// 绑定邀请人,如果已邀请,force为true时更新
	BindInviter(memberId int64, force bool) error
	// 增加经验值
	AddExp(exp int) error
	// 升级为高级会员
	Premium(v int, expires int64) error
	// 获取等级
	GetLevel() *Level
	// 标志赋值, 如果flag小于零, 则异或运算
	GrantFlag(flag int) error
	// 更改会员等级,@paymentId:支付单编号,@review:是否需要审核
	ChangeLevel(level int, paymentId int, review bool) error

	// 审核升级请求
	ReviewLevelUp(id int, pass bool) error

	// 标记已经处理升级
	ConfirmLevelUp(id int) error

	// 更换用户名
	ChangeUser(string) error

	// 更新登录时间
	UpdateLoginTime() error

	// 保存
	Save() (int64, error)
}

type IMemberManager

type IMemberManager interface {
	// 等级服务
	LevelManager() ILevelManager
	// 检查手机绑定,同时检查手机格式
	CheckPhoneBind(phone string, memberId int64) error
	// 检查注册信息是否正确
	PrepareRegister(v *Member, pro *Profile, invitationCode string) (
		invitationId int64, err error)
	// 检查邀请注册
	CheckInviteRegister(code string) (inviterId int64, err error)
	// 获取所有买家分组
	GetAllBuyerGroups() []*BuyerGroup
	// 获取买家分组
	GetBuyerGroup(id int32) *BuyerGroup
	// 保存买家分组
	SaveBuyerGroup(*BuyerGroup) (int32, error)
}

会员服务

type IMemberRepo

type IMemberRepo interface {
	// 获取管理服务
	GetManager() IMemberManager

	// 获取资料或初始化
	GetProfile(memberId int64) *Profile

	// 保存资料
	SaveProfile(v *Profile) error

	// 获取会员等级
	GetMemberLevels_New() []*Level

	// 获取等级对应的会员数
	GetMemberNumByLevel_New(id int) int

	// 删除会员等级
	DeleteMemberLevel_New(id int) error

	// 保存会员等级
	SaveMemberLevel_New(v *Level) (int, error)

	// 根据用户名获取会员
	GetMemberByUser(user string) *Member

	// 根据手机号码获取会员
	GetMemberValueByPhone(phone string) *Member

	// 获取会员
	GetMember(memberId int64) IMember

	// 创建会员
	CreateMember(*Member) IMember

	// 删除会员
	DeleteMember(memberId int64) error

	// 创建会员,仅作为某些操作使用,不保存
	CreateMemberById(memberId int64) IMember

	// 保存
	SaveMember(v *Member) (int64, error)

	// 获取会员最后更新时间
	GetMemberLatestUpdateTime(id int64) int64

	// 根据邀请码获取会员编号
	GetMemberIdByInviteCode(code string) int64

	// 根据手机号获取会员编号
	GetMemberIdByPhone(phone string) int64

	// 根据邮箱地址获取会员编号
	GetMemberIdByEmail(email string) int64

	// 获取会员编号
	GetMemberIdByUser(user string) int64

	// 根据编码获取会员
	GetMemberIdByCode(code string) int64

	// 用户名是否存在
	CheckUserExist(user string, memberId int64) bool

	// 手机号码是否使用
	CheckPhoneBind(phone string, memberId int64) bool

	// 保存绑定
	SaveRelation(*InviteRelation) error

	// 获取账户
	GetAccount(memberId int64) *Account

	// 保存账户,传入会员编号
	SaveAccount(*Account) (int64, error)
	// 获取银行卡
	BankCards(memberId int64) []BankCard
	// 保存银行卡信息
	SaveBankCard(card *BankCard) error
	// 移除银行卡
	RemoveBankCard(id int64, no string) error
	// 获取收款码
	ReceiptsCodes(memberId int64) []ReceiptsCode
	// 保存收款码
	SaveReceiptsCode(code *ReceiptsCode, memberId int64) (int, error)
	// 保存积分记录
	SaveIntegralLog(*IntegralLog) error

	// 保存余额日志
	SaveBalanceLog(*BalanceLog) (int32, error)

	// 保存钱包账户日志
	SaveWalletAccountLog(*WalletAccountLog) (int32, error)

	// 获取钱包账户日志信息
	GetWalletLog(id int32) *WalletAccountLog

	// 增加会员当天提现次数
	AddTodayTakeOutTimes(memberId int64) error

	// 获取会员每日提现次数
	GetTodayTakeOutTimes(memberId int64) int

	// 获取会员关联
	GetRelation(memberId int64) *InviteRelation

	// 获取经验值对应的等级
	GetLevelValueByExp(mchId int64, exp int64) int

	// 获取会员升级记录
	GetLevelUpLog(id int) *LevelUpLog

	// 保存会员升级记录
	SaveLevelUpLog(l *LevelUpLog) (int32, error)

	// 保存地址
	SaveDeliver(*ConsigneeAddress) (int64, error)

	// 获取全部配送地址
	GetDeliverAddress(memberId int64) []*ConsigneeAddress

	// 获取配送地址
	GetSingleDeliverAddress(memberId, addressId int64) *ConsigneeAddress

	// 删除配送地址
	DeleteAddress(memberId, addressId int64) error

	// 邀请
	GetMyInvitationMembers(memberId int64, begin, end int) (total int, rows []*dto.InvitationMember)

	// 获取下级会员数量
	GetSubInvitationNum(memberId int64, memberIdArr []int32) map[int32]int

	// 获取推荐我的人
	GetInvitationMeMember(memberId int64) *Member

	// 保存余额变动信息
	SaveFlowAccountInfo(v *FlowAccountLog) (int32, error)

	// 保存理财账户信息
	SaveGrowAccount(memberId int64, balance, totalAmount,
		growEarnings, totalGrowEarnings float32, updateTime int64) error

	//收藏,favType 为收藏类型, referId为关联的ID
	Favorite(memberId int64, favType int, referId int64) error
	//是否已收藏
	Favored(memberId int64, favType int, referId int64) bool
	//取消收藏
	CancelFavorite(memberId int64, favType int, referId int64) error
	// 获取会员分页的优惠券列表
	GetMemberPagedCoupon(memberId int64, start, end int, where string) (total int, rows []*dto.SimpleCoupon)
	// Select MmBuyerGroup
	SelectMmBuyerGroup(where string, v ...interface{}) []*BuyerGroup
	// Save MmBuyerGroup
	SaveMmBuyerGroup(v *BuyerGroup) (int, error)

	// Save 会员锁定历史
	SaveLockHistory(v *MmLockHistory) (int, error)
	// Save 会员锁定记录
	SaveLockInfo(v *MmLockInfo) (int, error)
	// Delete 会员锁定记录
	DeleteLockInfos(memberId int64) error
	// 注册解锁任务
	RegisterUnlockJob(info *MmLockInfo)
	// 获取会员邀请的会员编号列表
	GetInviteChildren(id int64) []int64
}

type IProfileManager

type IProfileManager interface {
	// 获取资料
	GetProfile() Profile
	// 保存资料
	SaveProfile(v *Profile) error
	// 更改手机号码,不验证手机格式
	ChangePhone(string) error
	// 设置头像
	ChangeAvatar(string) error
	// 资料是否完善
	ProfileCompleted() bool
	// 检查资料是否完善
	CheckProfileComplete() error
	// 修改密码,旧密码可为空; 传入原始密码。密码均为密文
	ModifyPassword(NewPassword, oldPwd string) error
	// 修改交易密码,旧密码可为空; 传入原始密码。密码均为密文
	ModifyTradePassword(NewPassword, oldPwd string) error
	// 获取提现银行信息
	GetBankCards() []BankCard
	// 获取绑定的银行卡
	GetBankCard(cardNo string) *BankCard
	// 添加银行卡
	AddBankCard(*BankCard) error
	// 移除银行卡
	RemoveBankCard(cardNo string) error
	// 获取收款码
	ReceiptsCodes() []ReceiptsCode
	// 保存收款码
	SaveReceiptsCode(c *ReceiptsCode) error
	// 实名认证信息
	GetTrustedInfo() TrustedInfo
	// 保存实名认证信息
	SaveTrustedInfo(v *TrustedInfo) error
	// 审核实名认证,若重复审核将返回错误
	ReviewTrustedInfo(pass bool, remark string) error
	// 创建配送地址
	CreateDeliver(*ConsigneeAddress) IDeliverAddress
	// 获取配送地址
	GetDeliverAddress() []IDeliverAddress
	// 获取配送地址
	GetAddress(addressId int64) IDeliverAddress
	// 设置默认地址
	SetDefaultAddress(addressId int64) error
	// 获取默认收货地址
	GetDefaultAddress() IDeliverAddress
	// 删除配送地址
	DeleteAddress(addressId int64) error
}

会员资料服务

type IntegralLog

type IntegralLog struct {
	// 编号
	Id int `db:"id" pk:"yes" auto:"yes"`
	// 会员编号
	MemberId int `db:"member_id"`
	// 类型
	Kind int `db:"kind"`
	// 标题
	Title string `db:"title"`
	// 关联的编号
	OuterNo string `db:"outer_no"`
	// 积分值
	Value int `db:"value"`
	// 备注
	Remark string `db:"remark"`
	// 关联用户
	RelateUser int `db:"rel_user"`
	// 审核状态
	ReviewState int16 `db:"review_state"`
	// 创建时间
	CreateTime int64 `db:"create_time"`
	// 更新时间
	UpdateTime int64 `db:"update_time"`
}

积分记录

type InviteRelation

type InviteRelation struct {
	// 会员编号
	MemberId int64 `db:"member_id" pk:"yes"`
	// 会员卡号
	CardCard string `db:"card_no"`
	// 邀请人(会员)
	InviterId int64 `db:"inviter_id"`
	// 邀请会员编号(depth2)
	InviterD2 int64 `db:"inviter_d2"`
	// 邀请会员编号(depth3)
	InviterD3 int64 `db:"inviter_d3"`
	// 注册关联商户编号
	RegMchId int64 `db:"reg_mchid"`
}

会员邀请关联表

type Level

type Level struct {
	// 编号
	ID int `db:"id" auto:"yes" pk:"yes"`
	// 等级名称
	Name string `db:"name"`
	// 需要经验值
	RequireExp int `db:"require_exp"`
	// 可编程等级签名,可根据此签名来进行编程
	ProgramSignal string `db:"program_signal"`
	// 是否启用
	Enabled int `db:"enabled"`
	// 是否为正式会员/非正式
	IsOfficial int `db:"is_official"`
	// 是否允许自动升级
	AllowUpgrade int `db:"allow_upgrade"`
}

会员等级

type LevelUpLog

type LevelUpLog struct {
	Id int `db:"id" pk:"yes" auto:"yes"`
	// 会员编号
	MemberId int64 `db:"member_id"`
	// 原来等级
	OriginLevel int `db:"origin_level"`
	// 现在等级
	TargetLevel int `db:"target_level"`
	// 是否为免费升级的会员
	IsFree int `db:"is_free"`
	// 支付单编号
	PaymentId int `db:"payment_id"`
	// 是否审核及处理
	ReviewState int `db:"review_state"`
	// 升级方式,1:自动升级 2:客服更改 3:系统升级
	UpgradeMode int `db:"upgrade_mode"`
	// 升级时间
	CreateTime int64 `db:"create_time"`
}

会员升级日志

type Member

type Member struct {
	// 编号
	Id int64 `db:"id" auto:"yes" pk:"yes"`
	// 用户编码
	Code string `db:"code"`
	// 昵称
	Name string `db:"name"`
	// 真实姓名
	RealName string `db:"real_name"`
	// 用户名
	User string `db:"user"`
	// 加密盐
	Salt string `db:"salt"`
	// 密码
	Pwd string `db:"pwd"`
	// 头像
	Avatar string `db:"avatar"`
	// 交易密码
	TradePassword string `db:"trade_pwd"`
	// 经验值
	Exp int `db:"exp"`
	// 等级
	Level int `db:"level"`
	// 邀请码
	InviteCode string `db:"invite_code"`
	// 高级用户类型
	PremiumUser int `db:"premium_user"`
	// 高级用户过期时间
	PremiumExpires int64 `db:"premium_expires"`
	// 手机号码
	Phone string `db:"phone"`
	// 电子邮箱
	Email string `db:"email"`
	// 注册来源
	RegFrom string `db:"reg_from"`
	// 注册IP
	RegIp string `db:"reg_ip"`
	// 注册时间
	RegTime int64 `db:"reg_time"`
	// 校验码
	CheckCode string `db:"check_code"`
	// 校验码过期时间
	CheckExpires int64 `db:"check_expires"`
	// 会员标志
	Flag int `db:"flag"`
	// 状态
	State int `db:"state"`
	// 登录时间
	LoginTime int64 `db:"login_time"`
	// 最后登录时间
	LastLoginTime int64 `db:"last_login_time"`
	// 更新时间
	UpdateTime int64 `db:"update_time"`
	// 动态令牌,用于登录或API调用
	DynamicToken string `db:"-"`
	// 超时时间
	TimeoutTime int64 `db:"-"`
}

type MmLockHistory

type MmLockHistory struct {
	// 编号
	Id int `db:"id" pk:"yes" auto:"yes"`
	// 会员编号
	MemberId int64 `db:"member_id"`
	// 锁定时间
	LockTime int64 `db:"lock_time"`
	// 锁定持续分钟数
	Duration int `db:"duration"`
	// 备注
	Remark string `db:"remark"`
}

会员锁定历史

type MmLockInfo

type MmLockInfo struct {
	// 编号
	Id int `db:"id" pk:"yes" auto:"yes"`
	// 会员编号
	MemberId int64 `db:"member_id"`
	// 锁定时间
	LockTime int64 `db:"lock_time"`
	// 解锁时间
	UnlockTime int64 `db:"unlock_time"`
	// 备注
	Remark string `db:"remark"`
}

会员锁定记录

type Profile

type Profile struct {
	//会员编号
	MemberId int64 `db:"member_id" pk:"yes" auto:"no"`
	//昵称
	Name string `db:"name"`
	//头像
	Avatar string `db:"avatar"`
	//性别
	Gender int32 `db:"gender"`
	//生日
	BirthDay string `db:"birthday"`
	//电话
	Phone string `db:"phone"`
	//地址
	Address string `db:"address"`
	//即时通讯
	Im string `db:"im"`
	//电子邮件
	Email string `db:"email"`
	// 省
	Province int32 `db:"province"`
	// 市
	City int32 `db:"city"`
	// 区
	District int32 `db:"district"`
	//备注
	Remark string `db:"remark"`

	// 扩展1
	Ext1 string `db:"ext_1"`
	// 扩展2
	Ext2 string `db:"ext_2"`
	// 扩展3
	Ext3 string `db:"ext_3"`
	// 扩展4
	Ext4 string `db:"ext_4"`
	// 扩展5
	Ext5 string `db:"ext_5"`
	// 扩展6
	Ext6 string `db:"ext_6"`
	//更新时间
	UpdateTime int64 `db:"update_time"`
}

会员资料

type ReceiptsCode

type ReceiptsCode struct {
	// 编号
	Id int `db:"id" pk:"yes" auto:"yes"`
	// 会员编号
	MemberId int64 `db:"member_id"`
	// 账户标识,如:alipay
	Identity string `db:"identity"`
	// 账户名称
	Name string `db:"name"`
	// 账号
	AccountId string `db:"account_id"`
	// 收款码地址
	CodeUrl string `db:"code_url"`
	// 是否启用
	State int `db:"state"`
}

收款码

type TrustedInfo

type TrustedInfo struct {
	// 会员编号
	MemberId int64 `db:"member_id" pk:"yes"`
	// 真实姓名
	RealName string `db:"real_name"`
	// 国家代码
	CountryCode string `db:"country_code"`
	// 证件类型
	CardType int `db:"card_type"`
	// 证件号码
	CardId string `db:"card_id"`
	// 证件图片
	CardImage string `db:"card_image"`
	// 证件反面图片
	CardReverseImage string `db:"card_reverse_image"`
	// 认证图片,人与身份证的图像等
	TrustImage string `db:"trust_image"`
	// 是否人工审核认证
	ManualReview int `db:"manual_review"`
	// 是否审核通过
	ReviewState int `db:"review_state"`
	// 审核时间
	ReviewTime int64 `db:"review_time"`
	// 审核备注
	Remark string `db:"remark"`
	// 更新时间
	UpdateTime int64 `db:"update_time"`
}

实名认证信息

type WalletAccountLog

type WalletAccountLog struct {
	Id int64 `db:"id" auto:"yes" pk:"yes"`
	// 会员编号
	MemberId int64 `db:"member_id"`
	// 外部单号
	OuterNo string `db:"outer_no"`
	// 业务类型
	Kind int `db:"kind"`
	// 标题
	Title string `db:"title"`
	// 金额
	Amount int64 `db:"amount"`
	// 手续费
	CsnFee int64 `db:"csn_fee"`
	// 关联操作人,仅在客服操作时,记录操作人
	RelateUser int64 `db:"rel_user"`
	// 状态
	ReviewState int32 `db:"review_state"`
	// 备注
	Remark string `db:"remark"`
	// 创建时间
	CreateTime int64 `db:"create_time"`
	// 更新时间
	UpdateTime int64 `db:"update_time"`
}

钱包账户日志

Jump to

Keyboard shortcuts

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