a
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 = ?
|
||||||
|
|||||||
@@ -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
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user