同步小程序与管理端更新,完善抽烟记录和解绑冷静期
This commit is contained in:
@@ -497,7 +497,7 @@ func adminDeleteUser(c *httpapi.Ctx) error {
|
||||
}
|
||||
|
||||
var unbindStatusLabels = map[string]string{
|
||||
"pending": "待回应", "agreed": "已同意(已解绑)", "rejected": "已拒绝", "cancelled": "已撤销", "expired": "已过期",
|
||||
"pending": "待对方回应", "cooling": "冷静期", "completed": "解绑完成", "rejected": "已拒绝", "cancelled": "已撤销", "expired": "已过期",
|
||||
}
|
||||
|
||||
func adminUnbindRequests(c *httpapi.Ctx) error {
|
||||
@@ -506,20 +506,22 @@ func adminUnbindRequests(c *httpapi.Ctx) error {
|
||||
}
|
||||
rs, err := c.DB.Query(`
|
||||
SELECT
|
||||
ur.id, ur.couple_id, ur.status, ur.created_at, ur.responded_at,
|
||||
ur.id, ur.couple_id, ur.status, ur.created_at, ur.responded_at, ur.cooling_until, ur.completed_at, ur.cancelled_at,
|
||||
cancel_user.nickname AS cancelled_by_name,
|
||||
r.id as requester_id, r.user_id as requester_uid, r.nickname as requester_name, r.avatar as requester_avatar,
|
||||
c.couple_space_id, c.data_deleted, c.status as couple_status,
|
||||
u1.nickname as user1_name, u1.user_id as user1_uid,
|
||||
u2.nickname as user2_name, u2.user_id as user2_uid
|
||||
FROM unbind_requests ur
|
||||
JOIN users r ON ur.requester_id = r.id
|
||||
LEFT JOIN users cancel_user ON ur.cancelled_by = cancel_user.id
|
||||
JOIN couples c ON ur.couple_id = c.id
|
||||
LEFT JOIN users u1 ON c.user1_id = u1.id
|
||||
LEFT JOIN users u2 ON c.user2_id = u2.id
|
||||
WHERE NOT (c.status = 'active' AND ur.status = 'agreed')
|
||||
UNION
|
||||
SELECT
|
||||
NULL as id, c.id as couple_id, 'agreed' as status, NULL as created_at, NULL as responded_at,
|
||||
NULL as id, c.id as couple_id, 'completed' as status, NULL as created_at, NULL as responded_at, NULL as cooling_until, NULL as completed_at, NULL as cancelled_at, NULL as cancelled_by_name,
|
||||
NULL as requester_id, NULL as requester_uid, NULL as requester_name, NULL as requester_avatar,
|
||||
c.couple_space_id, c.data_deleted, c.status as couple_status,
|
||||
u1.nickname as user1_name, u1.user_id as user1_uid,
|
||||
@@ -575,12 +577,17 @@ func adminForceUnbind(c *httpapi.Ctx) error {
|
||||
if couple == nil {
|
||||
return c.Err(404, "情侣不存在")
|
||||
}
|
||||
if req, _ := c.DB.QueryOne("SELECT id, requester_id, responded_at FROM unbind_requests WHERE couple_id = ? AND status = 'agreed' ORDER BY id DESC LIMIT 1", cid); req == nil {
|
||||
return c.Err(400, "双方尚未同意解绑,无法执行操作。请先让双方在微信小程序中完成解绑确认")
|
||||
if err := c.DB.AdvanceUnbindings(); err != nil {
|
||||
return err
|
||||
}
|
||||
users, _ := c.DB.Query("SELECT id, user_id, nickname FROM users WHERE couple_id = ?", cid)
|
||||
softUnbind(c.DB, cid)
|
||||
return c.OK(M{"success": true, "msg": "已执行解绑操作(双方已同意),情侣「" + coupleUserNames(users) + "」的关系已解除,所有数据已保留"})
|
||||
current, err := c.DB.QueryOne("SELECT status FROM couples WHERE id=?", cid)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if current.Str("status") != "unbound" {
|
||||
return c.Err(409, "需双方同意并等待72小时冷静期结束,不能提前解绑")
|
||||
}
|
||||
return c.OK(M{"success": true, "msg": "冷静期已结束,系统已自动解绑并处理共同数据"})
|
||||
}
|
||||
|
||||
func adminRestoreCouple(c *httpapi.Ctx) error {
|
||||
@@ -595,15 +602,7 @@ func adminRestoreCouple(c *httpapi.Ctx) error {
|
||||
if couple == nil {
|
||||
return c.Err(400, "该情侣记录不存在或数据已被删除,无法恢复")
|
||||
}
|
||||
u1, u2 := couple.Int("user1_id"), couple.Int("user2_id")
|
||||
users, _ := c.DB.Query("SELECT id, user_id, nickname FROM users WHERE id IN (?, ?)", u1, u2)
|
||||
if len(users) < 2 {
|
||||
return c.Err(400, "用户数据异常,无法恢复情侣关系")
|
||||
}
|
||||
c.DB.Exec("UPDATE couples SET status = 'active' WHERE id = ?", cid)
|
||||
c.DB.Exec("UPDATE users SET couple_id = ?, updated_at = CURRENT_TIMESTAMP WHERE id IN (?, ?)", cid, u1, u2)
|
||||
c.DB.Exec("DELETE FROM unbind_requests WHERE couple_id = ?", cid)
|
||||
return c.OK(M{"success": true, "msg": "已恢复情侣关系「" + coupleUserNames(users) + "」,所有数据已恢复"})
|
||||
return c.Err(409, "旧空间已封存,恢复关系请由双方重新发起绑定,后台不能覆盖当前关系")
|
||||
}
|
||||
|
||||
func adminDeleteCoupleData(c *httpapi.Ctx) error {
|
||||
@@ -618,6 +617,9 @@ func adminDeleteCoupleData(c *httpapi.Ctx) error {
|
||||
if couple == nil {
|
||||
return c.Err(400, "该情侣记录不存在或状态异常,无法删除数据")
|
||||
}
|
||||
if couple.Int("data_deleted") == 1 {
|
||||
return c.OK(M{"success": true, "msg": "共同数据已删除,解绑记录保留"})
|
||||
}
|
||||
users, _ := c.DB.Query("SELECT id, user_id, nickname FROM users WHERE id IN (?, ?)", couple.Int("user1_id"), couple.Int("user2_id"))
|
||||
c.DB.Exec("UPDATE couples SET data_deleted = 1 WHERE id = ?", cid)
|
||||
executeUnbind(c.DB, cid)
|
||||
|
||||
Reference in New Issue
Block a user