From 641e05cfd7f4a8ff4ee7edca7ac515d62eb51f0b 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, 16 Nov 2020 16:31:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=85=E6=8F=90=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/job.go | 26 +++++++++++++++++--------- business/jxstore/cms/user2.go | 3 +++ business/model/dao/dao_user.go | 28 +++++++++++++++++++++++++++- business/model/dao/event.go | 2 +- 4 files changed, 48 insertions(+), 11 deletions(-) diff --git a/business/jxstore/cms/job.go b/business/jxstore/cms/job.go index f46e41505..d6a658468 100644 --- a/business/jxstore/cms/job.go +++ b/business/jxstore/cms/job.go @@ -488,6 +488,7 @@ func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment string) (e jobOrder.Comment = comment jobOrder.AuditAt = time.Now() jobOrder.LastOperator = ctx.GetUserName() + userBillJobOrder, err := dao.GetUserBill(db, jobOrder.UserID, "") dao.Begin(db) defer func() { if r := recover(); r != nil { @@ -507,23 +508,30 @@ func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment string) (e } else if len(messageGroupMembers) == 1 { if messageGroupsResult, err := dao.GetMessageGroups(db, "", messageGroupMembers[0].GroupID, model.GroupTypeMulit, false, ""); err == nil { if len(messageGroupsResult) == 1 { - if userBillGroupMaster, err := dao.GetUserBill(db, messageGroupsResult[0].UserID, ""); err == nil { - if err = financial.AddIncomeUpdateAccount(db, userBillGroupMaster, model.BillTypeDivide, job.AvgPrice*messageGroupsResult[0].DividePercentage/100); err != nil { + //不分成 + if messageGroupsResult[0].DividePercentage != 0 { + if userBillGroupMaster, err := dao.GetUserBill(db, messageGroupsResult[0].UserID, ""); err == nil { + if err = financial.AddIncomeUpdateAccount(db, userBillGroupMaster, model.BillTypeDivide, job.AvgPrice*messageGroupsResult[0].DividePercentage/100); err != nil { + dao.Rollback(db) + return err + } + } + //接收人账户收入 + if err = financial.AddIncomeUpdateAccount(db, userBillJobOrder, model.BillTypeJobDivide, job.AvgPrice*(100-messageGroupsResult[0].DividePercentage)/100); err != nil { + dao.Rollback(db) + return err + } + } else { + //接收人账户收入 + if err = financial.AddIncomeUpdateAccount(db, userBillJobOrder, model.BillTypeJob, job.AvgPrice); err != nil { dao.Rollback(db) return err } - } - //接收人账户收入 - userBillJobOrder, err := dao.GetUserBill(db, jobOrder.UserID, "") - if err = financial.AddIncomeUpdateAccount(db, userBillJobOrder, model.BillTypeJobDivide, job.AvgPrice*(100-messageGroupsResult[0].DividePercentage)/100); err != nil { - dao.Rollback(db) - return err } } } } else if len(messageGroupMembers) == 0 { //若没有在某个群组,则得到全部 //接收人账户收入 - userBillJobOrder, err := dao.GetUserBill(db, jobOrder.UserID, "") if err = financial.AddIncomeUpdateAccount(db, userBillJobOrder, model.BillTypeJob, job.AvgPrice); err != nil { dao.Rollback(db) return err diff --git a/business/jxstore/cms/user2.go b/business/jxstore/cms/user2.go index f27f016c9..d5a555336 100644 --- a/business/jxstore/cms/user2.go +++ b/business/jxstore/cms/user2.go @@ -496,6 +496,9 @@ func GetSelfInfo(ctx *jxcontext.Context) (getSelfInfoResult *dao.GetSelfInfoResu } else { err = err3 } + if price, err := dao.GetUserAllWaitCashPrice(dao.GetDB(), getSelfInfoResult.User.UserID); err == nil { + getSelfInfoResult.WaitCashPrice = price + } } } return getSelfInfoResult, err diff --git a/business/model/dao/dao_user.go b/business/model/dao/dao_user.go index f1b134514..1bde0bc55 100644 --- a/business/model/dao/dao_user.go +++ b/business/model/dao/dao_user.go @@ -21,7 +21,8 @@ type UserDeliveryAddressEx struct { type GetSelfInfoResult struct { model.User model.UserBill - UserMembers []*model.UserMember `json:"userMembers"` + WaitCashPrice int `json:"waitCashPrice"` + UserMembers []*model.UserMember `json:"userMembers"` } func GetUserByID(db *DaoDB, fieldName, fieldValue string) (user *model.User, err error) { @@ -232,3 +233,28 @@ func GetUserMember(db *DaoDB, userID string, memberType int) (userMembers []*mod err = GetRows(db, &userMembers, sql, sqlParams) return userMembers, err } + +type GetUserAllWaitCashPriceResult struct { + UserID string `orm:"column(user_id)" json:"userID"` + Price int `json:"price"` +} + +func GetUserAllWaitCashPrice(db *DaoDB, userID string) (price int, err error) { + var result = &GetUserAllWaitCashPriceResult{} + sql := ` + SELECT SUM(IF(d.id IS NOT NULL, IF(d.divide_percentage = 0, b.avg_price, b.avg_price*(100-d.divide_percentage)/100),b.avg_price)) price, a.user_id + FROM job_order a + JOIN job b ON a.job_id = b.id + LEFT JOIN message_group_member c ON a.user_id = c.member_user_id + LEFT JOIN message_group d ON d.group_id = c.group_id AND d.type = ? + WHERE a.user_id = ? + AND a.status = ? + ` + sqlParams := []interface{}{ + model.GroupTypeMulit, + userID, + model.JobOrderStatusWaitAudit, + } + err = GetRow(db, &result, sql, sqlParams) + return result.Price, err +} diff --git a/business/model/dao/event.go b/business/model/dao/event.go index 54395d6e2..b70f4c4c8 100644 --- a/business/model/dao/event.go +++ b/business/model/dao/event.go @@ -246,7 +246,7 @@ func GetMessageGroupMembers(db *DaoDB, groupID, groupType int, memberUserID stri FROM message_group_member a ` if groupType != 0 { - sql += ` JOIN message_group b ON b.group_id = a.group_id AND b.group_type = ?` + sql += ` JOIN message_group b ON b.group_id = a.group_id AND b.type = ?` sqlParams = append(sqlParams, groupType) } sql += `