From a9e9d303082dce0baf7b6f94abfd8deaa0c09acb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 19 Oct 2020 15:25:31 +0800 Subject: [PATCH] member --- business/jxstore/cms/user2.go | 109 +++++++++++++++++++++------------- business/model/user.go | 1 - 2 files changed, 67 insertions(+), 43 deletions(-) diff --git a/business/jxstore/cms/user2.go b/business/jxstore/cms/user2.go index 4a4f9e626..60798dd60 100644 --- a/business/jxstore/cms/user2.go +++ b/business/jxstore/cms/user2.go @@ -6,6 +6,8 @@ import ( "sync" "time" + "git.rosy.net.cn/jx-callback/business/jxstore/financial" + "git.rosy.net.cn/baseapi" "git.rosy.net.cn/jx-callback/business/jxutils/excel" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" @@ -587,47 +589,70 @@ func RefreshUserMemberStatus(ctx *jxcontext.Context) (err error) { } func InvestMember(ctx *jxcontext.Context, memberID int) (err error) { - // var ( - // db = dao.GetDB() - // memberCards []*model.MemberCard - // memberCard *model.MemberCard - // ) - // userMembers, err := dao.GetUserMember(db, ctx.GetUserID(), model.MemberTypeNormal) - // configList, err := dao.QueryConfigs(db, model.ConfigTypeName[model.ConfigTypeMemberCard], model.ConfigTypeMemberCard, "") - // if len(configList) <= 0 { - // return fmt.Errorf("未找到会员卡配置!") - // } - // config := configList[0] - // err = jxutils.Strings2Objs(config.Value, &memberCards) - // if err != nil { - // return err - // } - // for _, v := range memberCards { - // if v.ID == memberID { - // memberCard = v - // } - // } - // dao.Begin(db) - // defer func() { - // if r := recover(); r != nil { - // dao.Rollback(db) - // panic(r) - // } - // }() - // //证明已经开了会员了,相当于续费 - // if len(userMembers) > 0 { - // userMember := userMembers[0] - // if memberID == model.MemberCardTypeMonth { - // userMember.EndAt = userMember.EndAt.AddDate(0, 1, 0) - // } else { - // userMember.EndAt = userMember.EndAt.AddDate(1, 0, 0) - // } - // } else { - // userMember2 := &model.UserMember{} - // dao.WrapAddIDCULDEntity(userMember2, ctx.GetUserName()) - // } - // //账户余额支出 - // //支出明细、 - // dao.Commit(db) + var ( + db = dao.GetDB() + memberCards []*model.MemberCard + memberCard *model.MemberCard + ) + userMembers, err := dao.GetUserMember(db, ctx.GetUserID(), model.MemberTypeNormal) + configList, err := dao.QueryConfigs(db, model.ConfigTypeName[model.ConfigTypeMemberCard], model.ConfigTypeMemberCard, "") + userBill, err := dao.GetUserBill(db, ctx.GetUserID(), "") + if len(configList) <= 0 { + return fmt.Errorf("未找到会员卡配置!") + } + config := configList[0] + err = jxutils.Strings2Objs(config.Value, &memberCards) + if err != nil { + return err + } + for _, v := range memberCards { + if v.ID == memberID { + memberCard = v + } + } + dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() + //证明已经开了会员了,相当于续费 + if len(userMembers) > 0 { + userMember := userMembers[0] + if memberID == model.MemberCardTypeMonth { + userMember.EndAt = userMember.EndAt.AddDate(0, 1, 0) + } else { + userMember.EndAt = userMember.EndAt.AddDate(1, 0, 0) + } + if _, err = dao.UpdateEntity(db, userMember, "EndAt"); err != nil { + dao.Rollback(db) + } + } else { + userMember2 := &model.UserMember{ + UserID: ctx.GetUserID(), + MemberType: model.MemberTypeNormal, + MemberTypeID: memberID, + } + if memberID == model.MemberCardTypeMonth { + userMember2.EndAt = time.Now().AddDate(0, 1, 0) + } else { + userMember2.EndAt = time.Now().AddDate(1, 0, 0) + } + dao.WrapAddIDCULDEntity(userMember2, ctx.GetUserName()) + if err = dao.CreateEntity(db, userMember2); err != nil { + dao.Rollback(db) + } + } + //支出明细 + if err = financial.AddBillExpend(db, userBill.BillID, model.BillTypeMember, memberCard.Price); err != nil { + dao.Rollback(db) + } + //账户余额支出 + userBill.AccountBalance -= memberCard.Price + if _, err = dao.UpdateEntity(db, userBill, "AccountBalance"); err != nil { + dao.Rollback(db) + } + dao.Commit(db) return err } diff --git a/business/model/user.go b/business/model/user.go index ade8b4082..8c893e7f2 100644 --- a/business/model/user.go +++ b/business/model/user.go @@ -214,7 +214,6 @@ type UserMember struct { func (v *UserMember) TableIndex() [][]string { return [][]string{ []string{"UserID"}, - []string{"OrderID"}, } }