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 += `