diff --git a/business/jxstore/event/event.go b/business/jxstore/event/event.go index b2ec6cd11..8e117e6b3 100644 --- a/business/jxstore/event/event.go +++ b/business/jxstore/event/event.go @@ -8,6 +8,7 @@ import ( "time" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxstore/financial" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" @@ -248,6 +249,88 @@ func AddMessageGroup(ctx *jxcontext.Context, groupID int, userID string) (err er } func UpdateMessageGroup(ctx *jxcontext.Context, groupID int, payload map[string]interface{}) (num int64, err error) { - + var ( + db = dao.GetDB() + messageGroup = &model.MessageGroup{ + GroupID: groupID, + } + ) + if err = dao.GetEntity(db, &messageGroup, "GroupID"); err != nil { + return 0, err + } + valid := dao.StrictMakeMapByStructObject(payload, messageGroup, ctx.GetUserName()) + if len(valid) > 0 { + dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() + if num, err = dao.UpdateEntityLogically(db, messageGroup, valid, ctx.GetUserName(), nil); err != nil { + dao.Rollback(db) + return 0, err + } + dao.Commit(db) + } return num, err } + +func DeleteMessageGroup(ctx *jxcontext.Context, groupID int, userID string) (errCode string, err error) { + var ( + db = dao.GetDB() + messageGroup = &model.MessageGroup{ + GroupID: groupID, + } + ) + if err = dao.GetEntity(db, &messageGroup, "GroupID"); err != nil { + return errCode, err + } + //token中用户与传入user不一致就判定为踢人 + if ctx.GetUserID() != userID { + if messageGroup.UserID != ctx.GetUserID() { + messageGroupMembers, err := dao.GetMessageGroupMembers(db, groupID, ctx.GetUserID()) + if err != nil { + return errCode, err + } + if messageGroupMembers[0].Type == model.GroupMemberTypeNormal { + return errCode, fmt.Errorf("只有创建者和管理员才能踢人!") + } + } + messageGroupMembers, err := dao.GetMessageGroupMembers(db, groupID, userID) + if err != nil { + return errCode, err + } + messageGroupMembers[0].DeletedAt = time.Now() + messageGroupMembers[0].LastOperator = ctx.GetUserName() + dao.UpdateEntity(db, messageGroupMembers[0], "DeletedAt", "LastOperator") + } else { + quitPrice := messageGroup.QuitPrice + userBill, err := dao.GetUserBill(db, userID, "") + if err != nil { + return errCode, err + } + if userBill.AccountBalance < quitPrice { + return model.ErrCodeAccountBalanceNotEnough, err + } + dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() + //账户支出明细 + //1、账户支出增加一条记录 + if err = financial.AddBillExpend(db, userBill.BillID, model.BillTypeQuitGroup, quitPrice); err != nil { + dao.Rollback(db) + } + //2、账户表余额减少相应值 + userBill.AccountBalance -= quitPrice + if _, err = dao.UpdateEntity(db, userBill, "AccountBalance"); err != nil { + dao.Rollback(db) + } + dao.Commit(db) + } + return errCode, err +} diff --git a/business/model/bill.go b/business/model/bill.go index 6e8b928d2..bb6117966 100644 --- a/business/model/bill.go +++ b/business/model/bill.go @@ -1,15 +1,18 @@ package model const ( - BillTypeDeposit = 1 //发布任务 - BillTypeJob = 2 //做任务实得 - BillTypeMember = 3 //开通会员 - BillTypeJobCancelOverdue = 4 //任务过期或取消 - BillTypeJobAuditUnPassWithCancelOverdue = 5 //任务不通过时,任务已取消或过期 - BillTypeSpJob = 6 //特殊任务扣除 + BillTypeDeposit = 10 //发布任务 + BillTypeJob = 11 //做任务实得 + BillTypeJobCancelOverdue = 12 //任务过期或取消 + BillTypeJobAuditUnPassWithCancelOverdue = 13 //任务不通过时,任务已取消或过期 + BillTypeSpJob = 14 //特殊任务扣除 - BillTypeCash = 9 //提现 - BillTypeInvest = 8 //充值 + BillTypeMember = 20 //开通会员 + + BillTypeQuitGroup = 30 //退群 + + BillTypeCash = 8 //提现 + BillTypeInvest = 6 //充值 ) //账单收入表 diff --git a/controllers/event.go b/controllers/event.go index dac1e322f..d0cfeddcd 100644 --- a/controllers/event.go +++ b/controllers/event.go @@ -251,3 +251,18 @@ func (c *EventController) UpdateMessageGroup() { return retVal, "", err }) } + +// @Title 退出用户组(踢人) +// @Description 退出用户组(踢人) +// @Param token header string true "认证token" +// @Param groupID formData int true "组号" +// @Param userID formData string true "userID" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /DeleteMessageGroup [delete] +func (c *EventController) DeleteMessageGroup() { + c.callDeleteMessageGroup(func(params *tEventDeleteMessageGroupParams) (retVal interface{}, errCode string, err error) { + errCode, err = event.DeleteMessageGroup(params.Ctx, params.GroupID, params.UserID) + return retVal, errCode, err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 6edfb3c21..a0cebbbf8 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -142,6 +142,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:EventController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:EventController"], + beego.ControllerComments{ + Method: "DeleteMessageGroup", + Router: `/DeleteMessageGroup`, + AllowHTTPMethods: []string{"delete"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:EventController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:EventController"], beego.ControllerComments{ Method: "GetImMessageRecord",