diff --git a/application/api/model/UserCp.php b/application/api/model/UserCp.php index aa3bee4..bf44399 100644 --- a/application/api/model/UserCp.php +++ b/application/api/model/UserCp.php @@ -43,7 +43,7 @@ class UserCp extends Model 'createtime' => time(), 'status' => 1 ]; - Db::name('user_cp_find')->insert($data); + $r = Db::name('user_cp_find')->insertGetId($data); //修改状态 Db::name('user_cp_find')->where(['id' => $res['id']])->update(['status' => 1]); @@ -74,24 +74,14 @@ class UserCp extends Model ]; Db::name('user_cp_gift_log')->insert($datas); - $rees = Db::name('user_cp_zone') - ->where(['status' => 1]) - ->where('(user_id1 = '.$from_user_id.' OR user_id2 = '.$from_user_id.')') - ->find(); + // 检查并更新CP空间状态 + $this->updateCpZoneStatus($from_user_id, $re, $res['id'] ?? 0); + $this->updateCpZoneStatus($to_user_id, $re, $res['id'] ?? 0); - if($rees && $re != $rees['id']){ - //修改状态 - Db::name('user_cp_zone')->where(['id' => $rees['id']])->update(['status' => 2]); - } + // 检查并更新CP查找记录状态 + $this->updateCpFindStatus($to_user_id, $r, $res['id'] ?? 0); + $this->updateCpFindStatus($from_user_id, $r, $res['id'] ?? 0); - $ress = Db::name('user_cp_zone') - ->where(['status' => 1]) - ->where('(user_id1 = '.$to_user_id.' OR user_id2 = '.$to_user_id.')') - ->find(); - if($ress && $re != $ress['id']){ - //修改状态 - Db::name('user_cp_zone')->where(['id' => $ress['id']])->update(['status' => 2]); - } // 给两个用户添加CP装扮 $pendant_ids = Db::name('user_cp_level')->where(['deletetime' => 0])->order('level asc')->value('pendant_id'); @@ -132,6 +122,49 @@ class UserCp extends Model } } + + /* + * 更新CP空间状态 + * @param int $user_id 用户ID + * @param int $current_zone_id 当前创建的CP空间ID + * @param int $related_find_id 相关的查找记录ID + */ + private function updateCpZoneStatus($user_id, $current_zone_id) + { + $zone = Db::name('user_cp_zone') + ->where(['status' => 1]) + ->where('(user_id1 = ' . $user_id . ' OR user_id2 = ' . $user_id . ')') + ->find(); + + if ($zone && $current_zone_id != $zone['id']) { + Db::name('user_cp_zone')->where(['id' => $zone['id']])->update(['status' => 2]); + } + } + + /* + * 更新CP查找记录状态 + * @param int $user_id 用户ID + * @param int $current_find_id 当前创建的查找记录ID + * @param int $related_find_id 相关的查找记录ID + */ + private function updateCpFindStatus($user_id, $current_find_id, $related_find_id = 0) + { + $find_records = Db::name('user_cp_find') + ->where(['status' => 1]) + ->where('(from_user_id = ' . $user_id . ' OR to_user_id = ' . $user_id . ')') + ->select(); + + if ($find_records) { + foreach ($find_records as $record) { + if ($record['id'] != $current_find_id && $record['id'] != $related_find_id) { + Db::name('user_cp_find')->where(['id' => $record['id']])->update(['status' => 2]); + } + } + } + } + + + /* * 为CP用户分配装扮或特效 * @param array $user_ids 用户ID数组