This commit is contained in:
苏尹岚
2020-12-29 15:09:20 +08:00
parent e456ee1be9
commit 04acffa985
3 changed files with 57 additions and 43 deletions

View File

@@ -375,7 +375,7 @@ func UpdateMessageGroup(ctx *jxcontext.Context, groupID int, payload map[string]
return num, err return num, err
} }
func DeleteMessageGroup(ctx *jxcontext.Context, groupID int, userID string) (errCode string, err error) { func DeleteMessageGroup(ctx *jxcontext.Context, groupID int, userID string, flag bool) (errCode string, err error) {
var ( var (
db = dao.GetDB() db = dao.GetDB()
messageGroup = &model.MessageGroup{ messageGroup = &model.MessageGroup{
@@ -385,52 +385,65 @@ func DeleteMessageGroup(ctx *jxcontext.Context, groupID int, userID string) (err
if err = dao.GetEntity(db, messageGroup, "GroupID"); err != nil { if err = dao.GetEntity(db, messageGroup, "GroupID"); err != nil {
return errCode, err return errCode, err
} }
//token中用户与传入user不一致就判定为踢人 //解散群
if ctx.GetUserID() != userID { if flag {
if messageGroup.UserID != ctx.GetUserID() { messageGroup.DeletedAt = time.Now()
messageGroupMembers, err := dao.GetMessageGroupMembers(db, groupID, 0, ctx.GetUserID()) messageGroup.LastOperator = ctx.GetUserName()
dao.UpdateEntity(db, messageGroup, "DeletedAt", "LastOperator")
messageGroupMembers, _ := dao.GetMessageGroupMembers(db, groupID, 0, "")
for _, v := range messageGroupMembers {
v.DeletedAt = time.Now()
v.LastOperator = ctx.GetUserName()
dao.UpdateEntity(db, v, "DeletedAt", "LastOperator")
}
} else {
//token中用户与传入user不一致就判定为踢人
if ctx.GetUserID() != userID {
if messageGroup.UserID != ctx.GetUserID() {
messageGroupMembers, err := dao.GetMessageGroupMembers(db, groupID, 0, ctx.GetUserID())
if err != nil {
return errCode, err
}
if messageGroupMembers[0].Type == model.GroupMemberTypeNormal {
return errCode, fmt.Errorf("只有创建者和管理员才能踢人!")
}
}
messageGroupMembers, err := dao.GetMessageGroupMembers(db, groupID, 0, userID)
if err != nil { if err != nil {
return errCode, err return errCode, err
} }
if messageGroupMembers[0].Type == model.GroupMemberTypeNormal { messageGroupMembers[0].DeletedAt = time.Now()
return errCode, fmt.Errorf("只有创建者和管理员才能踢人!") messageGroupMembers[0].LastOperator = ctx.GetUserName()
dao.UpdateEntity(db, messageGroupMembers[0], "DeletedAt", "LastOperator")
} else {
quitPrice := messageGroup.QuitPrice
userBill, err := dao.GetUserBill(db, userID, "")
userBillGroupMaster, err := dao.GetUserBill(db, messageGroup.UserID, "")
if err != nil {
return errCode, err
} }
} if userBill.AccountBalance < quitPrice {
messageGroupMembers, err := dao.GetMessageGroupMembers(db, groupID, 0, userID) return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足,请充值!")
if err != nil { }
return errCode, err dao.Begin(db)
} defer func() {
messageGroupMembers[0].DeletedAt = time.Now() if r := recover(); r != nil {
messageGroupMembers[0].LastOperator = ctx.GetUserName() dao.Rollback(db)
dao.UpdateEntity(db, messageGroupMembers[0], "DeletedAt", "LastOperator") panic(r)
} else { }
quitPrice := messageGroup.QuitPrice }()
userBill, err := dao.GetUserBill(db, userID, "") //账户支出
userBillGroupMaster, err := dao.GetUserBill(db, messageGroup.UserID, "") if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeQuitGroup, quitPrice, 0); err != nil {
if err != nil {
return errCode, err
}
if userBill.AccountBalance < quitPrice {
return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足,请充值!")
}
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db)
panic(r) return errCode, err
} }
}() //群主收到退团金额
//账户支出 if err = financial.AddIncomeUpdateAccount(db, userBillGroupMaster, model.BillTypeQuitGroup, quitPrice, 0); err != nil {
if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeQuitGroup, quitPrice, 0); err != nil { dao.Rollback(db)
dao.Rollback(db) return errCode, err
return errCode, err }
dao.Commit(db)
} }
//群主收到退团金额
if err = financial.AddIncomeUpdateAccount(db, userBillGroupMaster, model.BillTypeQuitGroup, quitPrice, 0); err != nil {
dao.Rollback(db)
return errCode, err
}
dao.Commit(db)
} }
return errCode, err return errCode, err
} }

View File

@@ -267,8 +267,8 @@ func GetMessageGroupMembers(db *DaoDB, groupID, groupType int, memberUserID stri
FROM message_group_member a FROM message_group_member a
` `
if groupType != 0 { if groupType != 0 {
sql += ` JOIN message_group b ON b.group_id = a.group_id AND b.type = ?` sql += ` JOIN message_group b ON b.group_id = a.group_id AND b.type = ? AND b.deleted_at = ?`
sqlParams = append(sqlParams, groupType) sqlParams = append(sqlParams, groupType, utils.DefaultTimeValue)
} }
sql += ` sql += `
WHERE a.deleted_at = ? WHERE a.deleted_at = ?

View File

@@ -364,12 +364,13 @@ func (c *EventController) UpdateMessageGroup() {
// @Param token header string true "认证token" // @Param token header string true "认证token"
// @Param groupID formData int true "组号" // @Param groupID formData int true "组号"
// @Param userID formData string true "userID" // @Param userID formData string true "userID"
// @Param flag formData bool false "是否是解散群"
// @Success 200 {object} controllers.CallResult // @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult
// @router /DeleteMessageGroup [post] // @router /DeleteMessageGroup [post]
func (c *EventController) DeleteMessageGroup() { func (c *EventController) DeleteMessageGroup() {
c.callDeleteMessageGroup(func(params *tEventDeleteMessageGroupParams) (retVal interface{}, errCode string, err error) { c.callDeleteMessageGroup(func(params *tEventDeleteMessageGroupParams) (retVal interface{}, errCode string, err error) {
errCode, err = event.DeleteMessageGroup(params.Ctx, params.GroupID, params.UserID) errCode, err = event.DeleteMessageGroup(params.Ctx, params.GroupID, params.UserID, params.Flag)
return retVal, errCode, err return retVal, errCode, err
}) })
} }