From 7d804890717cff72b82e4a615d34bb6c3d9ac66c Mon Sep 17 00:00:00 2001 From: shenjiachi Date: Mon, 25 Nov 2024 18:37:13 +0800 Subject: [PATCH] update --- app/hdl/financial_center/hdl_withdraw.go | 105 +++++++++++++++++++++++ app/md/financial_center/md_withdraw.go | 78 ++++++++++++++++- app/router/router.go | 1 + app/svc/financial_center/svc_withdraw.go | 87 +++++++++++++++++++ 4 files changed, 270 insertions(+), 1 deletion(-) create mode 100644 app/svc/financial_center/svc_withdraw.go diff --git a/app/hdl/financial_center/hdl_withdraw.go b/app/hdl/financial_center/hdl_withdraw.go index 06d559b..3acb213 100644 --- a/app/hdl/financial_center/hdl_withdraw.go +++ b/app/hdl/financial_center/hdl_withdraw.go @@ -4,6 +4,7 @@ import ( "applet/app/db" "applet/app/e" md "applet/app/md/financial_center" + svc "applet/app/svc/financial_center" "applet/app/utils" "code.fnuoos.com/EggPlanet/egg_models.git/src/implement" "code.fnuoos.com/EggPlanet/egg_models.git/src/model" @@ -128,3 +129,107 @@ func UpdateWithdrawSetting(c *gin.Context) { } e.OutSuc(c, affected, nil) } + +// GetWithdrawApplyList +// @Summary 财务中心-提现-提现申请列表(获取) +// @Tags 提现 +// @Description 提现申请列表(获取) +// @Accept json +// @Produce json +// @param Authorization header string true "验证参数Bearer和token空格拼接" +// @Param req body md.GetWithdrawApplyListReq false "筛选条件" +// @Success 200 {object} md.GetWithdrawApplyListResp "具体数据" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/financialCenter/withdraw/applyList [POST] +func GetWithdrawApplyList(c *gin.Context) { + var req *md.GetWithdrawApplyListReq + if err1 := c.ShouldBindJSON(&req); err1 != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err1.Error()) + return + } + + levelDb := implement.NewUserLevelDb(db.Db) + levels, err1 := levelDb.UserLevelAllByAsc() + if err1 != nil { + e.OutErr(c, e.ERR_DB_ORM, err1.Error()) + return + } + levelsList := make([]map[string]interface{}, 0) + levelsMap := make(map[int]string) + for _, level := range levels { + levelsList = append(levelsList, map[string]interface{}{ + "id": level.Id, + "name": level.LevelName, + }) + levelsMap[level.Id] = level.LevelName + } + + tagDb := implement.NewUserTagDb(db.Db) + tags, err2 := tagDb.UserTagAllByAsc() + if err2 != nil { + e.OutErr(c, e.ERR_DB_ORM, err2.Error()) + return + } + tagsList := make([]map[string]interface{}, 0) + tagsMap := make(map[int]string) + for _, tag := range tags { + tagsList = append(tagsList, map[string]interface{}{ + "id": tag.Id, + "name": tag.TagName, + }) + tagsMap[tag.Id] = tag.TagName + } + + applies, total, err3 := svc.WithDrawManagementGetApply(db.Db, req) + if err3 != nil { + e.OutErr(c, e.ERR_DB_ORM, err3.Error()) + return + } + + list := make([]md.GetWithdrawApplyListNode, len(*applies)) + for i, apply := range *applies { + list[i] = md.GetWithdrawApplyListNode{ + UserID: apply.UserID, + Nickname: apply.Nickname, + ParentID: apply.ParentID, + ParentPhone: apply.ParentPhone, + WithdrawType: apply.WithdrawType, + InviteCode: apply.InviteCode, + Amount: apply.Amount, + ActualReceipt: "", + SysFee: apply.SysFee, + State: apply.State, + ApplyAt: apply.ApplyAt, + PayAt: apply.PayAt, + Memo: apply.Memo, + } + if apply.Amount != "" && apply.SysFee != "" { + actualReceipt := utils.StrToFloat64(apply.Amount) - utils.StrToFloat64(apply.SysFee) + list[i].ActualReceipt = utils.Float64ToStr(actualReceipt) + } + switch apply.WithdrawType { + case 1: + list[i].AliPayName = apply.PayName + list[i].AliPayAccount = apply.PayAccount + case 2: + list[i].WechatPayName = apply.PayName + list[i].WechatPayAccount = apply.PayAccount + } + tag, ok := tagsMap[apply.Tag] + if ok { + list[i].Tag = tag + } + } + + resp := md.GetWithdrawApplyListResp{ + LevelsList: levelsList, + TagsList: tagsList, + List: list, + Paginate: md.Paginate{ + Limit: req.Limit, + Page: req.Page, + Total: total, + }, + } + e.OutSuc(c, resp, nil) +} diff --git a/app/md/financial_center/md_withdraw.go b/app/md/financial_center/md_withdraw.go index 48f4d34..4457536 100644 --- a/app/md/financial_center/md_withdraw.go +++ b/app/md/financial_center/md_withdraw.go @@ -1,6 +1,14 @@ package md -import "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" +import ( + "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" +) + +type Paginate struct { + Limit int `json:"limit"` // 每页大小 + Page int `json:"page"` // 页数 + Total int64 `json:"total"` // 总数据量 +} type GetWithdrawSettingResp struct { Id int64 `json:"id"` @@ -33,3 +41,71 @@ type UpdateWithdrawSettingReq struct { WithdrawTimeInterval string `json:"withdraw_time_interval"` // 提现时段 WithdrawFeeSet string `json:"withdraw_fee_set"` // 提现手续费设置 } + +type GetWithdrawApplyListReq struct { + Uid string `json:"uid"` // 用户 ID + Nickname string `json:"nickname"` // 用户昵称 + Phone string `json:"phone"` // 用户手机号 + ParentID string `json:"parent_id"` // 推荐人 ID + IsFirst string `json:"is_first"` // 是否首次提现 (0. 全部 1.是 2.否) + WithdrawType string `json:"withdraw_type"` // 提现方式(1:支付宝 2:微信) + WithdrawAccount string `json:"withdraw_account"` // 支付宝/微信昵称 + WithdrawName string `json:"withdraw_name"` // 支付宝姓名 + PaymentType string `json:"payment_type"` // 打款类型 1:手动;2:自动 + State string `json:"state"` // 状态 0申请中,1通过,2完成,3失败,4处理中(队列) + ApplyStartAt string `json:"apply_start_at"` // 申请开始时间 + ApplyEndAt string `json:"apply_end_at"` // 申请结束时间 + ExamineStartAt string `json:"examine_start_at"` // 审核开始时间 + ExamineEndAt string `json:"examine_end_at"` // 审核结束时间 + AmountBegin string `json:"amount_begin"` // 最小金额 + AmountEnd string `json:"amount_end"` // 最大金额 + Level string `json:"level"` // 会员等级 + Page int `json:"page"` // 页数 + Limit int `json:"limit"` //页面大小 +} + +type WithdrawApplyInfo struct { + UserID int64 `xorm:"usera.id"` // 会员 ID + Nickname string `xorm:"usera.nickname"` // 用户名称 + ParentID int64 `xorm:"parent_id"` // 推荐人ID + ParentPhone string `xorm:"userb.phone"` // 推荐人手机号 + PayName string `json:"apply.withdraw_name"` // 支付宝/微信昵称 + PayAccount string `json:"apply.withdraw_account"` // 支付宝/微信账号 + Tag int `json:"tag.id"` // 标签 + WithdrawType int `json:"wallet_flow.withdraw_type"` // 提现方式(1:支付宝 2:微信) + InviteCode string `json:"usera.system_invite_code"` // 邀请码 + Amount string `json:"apply.amount"` // 提现金额 + SysFee string `json:"wallet_flow.sys_fee"` // 手续费 + State int `json:"apply.state"` // 状态 0申请中,1通过,2完成,3失败,4处理中(队列) + ApplyAt string `json:"apply.create_at"` // 申请时间 + PayAt string `json:"wallet_flow.create_at"` // 到账时间 + Memo string `json:"apply.memo"` // 备注 +} + +type GetWithdrawApplyListResp struct { + LevelsList []map[string]interface{} `json:"levels_list"` // 等级列表 + TagsList []map[string]interface{} `json:"tags_list"` // 标签列表 + List []GetWithdrawApplyListNode `json:"list"` + Paginate Paginate `json:"paginate"` // 分页信息 +} + +type GetWithdrawApplyListNode struct { + UserID int64 `json:"user_id"` // 会员 ID + Nickname string `json:"nickname"` // 用户名称 + ParentID int64 `xorm:"parent_id"` // 推荐人ID + ParentPhone string `xorm:"parent_phone"` // 推荐人手机号 + AliPayName string `json:"ali_pay_name"` // 支付宝昵称 + WechatPayName string `json:"wechat_pay_name"` // 微信昵称 + AliPayAccount string `json:"ali_pay_account"` // 支付宝账号 + WechatPayAccount string `json:"wechat_pay_account"` // 微信账号 + Tag string `json:"tag"` // 标签 + WithdrawType int `json:"withdraw_type"` // 提现方式(1:支付宝 2:微信) + InviteCode string `json:"invite_code"` // 邀请码 + Amount string `json:"amount"` // 提现金额 + ActualReceipt string `json:"actual_receipt"` // 实际到账 + SysFee string `json:"sys_fee"` // 手续费 + State int `json:"state"` // 状态 0申请中,1通过,2完成,3失败,4处理中(队列) + ApplyAt string `json:"apply_at"` // 申请时间 + PayAt string `json:"pay_at"` // 到账时间 + Memo string `json:"memo"` // 备注 +} diff --git a/app/router/router.go b/app/router/router.go index 79ff925..c97ded3 100644 --- a/app/router/router.go +++ b/app/router/router.go @@ -193,6 +193,7 @@ func rFinancialCenter(r *gin.RouterGroup) { { rWithdraw.GET("/setting", financial_center.GetWithdrawSetting) rWithdraw.POST("/updateWithdrawSetting", financial_center.UpdateWithdrawSetting) + rWithdraw.GET("/applyList", financial_center.GetWithdrawApplyList) } } diff --git a/app/svc/financial_center/svc_withdraw.go b/app/svc/financial_center/svc_withdraw.go new file mode 100644 index 0000000..d5e9ed0 --- /dev/null +++ b/app/svc/financial_center/svc_withdraw.go @@ -0,0 +1,87 @@ +package financial_center + +import ( + md "applet/app/md/financial_center" + "xorm.io/xorm" +) + +func WithDrawManagementGetApply(engine *xorm.Engine, req *md.GetWithdrawApplyListReq) (*[]md.WithdrawApplyInfo, int64, error) { + applies := make([]md.WithdrawApplyInfo, 0) + session := engine.Table("fin_withdraw_apply").Alias("apply"). + Join("LEFT OUTER", []string{"user", "usera"}, "usera.id = apply.uid"). + Join("LEFT OUTER", []string{"user", "userb"}, "userb.id = usera.parent_uid"). + Join("LEFT OUTER", []string{"user_tag_records", "tag"}, "tag.uid = apply.id"). + Join("LEFT OUTER", []string{"user_wallet_flow", "wallet_flow"}, "wallet_flow.ord_id = apply.id") + + if req.Uid != "0" && req.Uid != "" { + session = session.Where("usera.uid = ?", req.Uid) + } + + if req.Nickname != "" { + session = session.Where("usera.nickname = ?", req.Nickname) + } + + if req.Phone != "" { + session = session.Where("usera.phone = ?", req.Phone) + } + + if req.ParentID != "0" && req.ParentID != "" { + session = session.Where("userb.parent_id = ?", req.ParentID) + } + + if req.IsFirst == "1" { + // 首次提现 + } + + if req.WithdrawType != "0" { + session = session.Where("apply.withdraw_kind = ?", req.WithdrawType) + } + + if req.WithdrawAccount != "" { + session = session.Where("apply.withdraw_account = ?", req.WithdrawAccount) + } + + if req.WithdrawName != "" { + session = session.Where("apply.withdraw_name = ?", req.WithdrawName) + } + + if req.PaymentType != "" { + session = session.Where("apply.type = ?", req.PaymentType) + } + + if req.State != "" { + session = session.Where("apply.state = ?", req.State) + } + + if req.ApplyStartAt != "" { + session = session.Where("apply.create_at > ?", req.ApplyStartAt) + } + if req.ApplyEndAt != "" { + session = session.Where("apply.create_at < ?", req.ApplyEndAt) + } + + if req.ExamineStartAt != "" { + session = session.Where("apply.update_at > ?", req.ExamineStartAt) + } + + if req.ExamineEndAt != "" { + session = session.Where("apply.update_at < ?", req.ExamineEndAt) + } + + if req.AmountBegin != "" { + session = session.Where("apply.amount > ?", req.AmountBegin) + } + + if req.AmountEnd != "" { + session = session.Where("apply.amount < ?", req.AmountEnd) + } + + if req.Level != "" { + session = session.Where("usera.level = ?", req.Level) + } + total, err := session.Limit(req.Limit, (req.Page-1)*req.Limit).Asc("apply.id").FindAndCount(&applies) + if err != nil { + return nil, 0, err + } + return &applies, total, nil +}