diff --git a/src/main/java/com/bao/dating/controller/ContactsController.java b/src/main/java/com/bao/dating/controller/ContactsController.java index 5aba7b6..58247bf 100644 --- a/src/main/java/com/bao/dating/controller/ContactsController.java +++ b/src/main/java/com/bao/dating/controller/ContactsController.java @@ -3,6 +3,8 @@ package com.bao.dating.controller; import com.bao.dating.context.UserContext; import com.bao.dating.service.ContactsService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -12,6 +14,7 @@ import java.util.List; import java.util.Map; @RestController +@RequestMapping("/api/contacts") public class ContactsController { @Resource private ContactsService contactsService; @@ -42,4 +45,56 @@ public class ContactsController { result.put("data", friends); return result; } + + + + /** + * 拉黑联系人接口 + * @param userId 当前用户ID + * @param contactUserId 被拉黑联系人ID + * @return 接口响应 + */ + @PostMapping("/blacklist/{userId}/{contactUserId}") + public ResponseEntity> blacklistContact( + @PathVariable Long userId, + @PathVariable Long contactUserId) { + Map result = new HashMap<>(); + boolean success = contactsService.blacklistContact(userId, contactUserId); + if (success) { + result.put("code", 200); + result.put("msg", "拉黑联系人成功"); + result.put("data", null); + return ResponseEntity.ok(result); + } else { + result.put("code", 500); + result.put("msg", "拉黑联系人失败,联系人不存在或参数错误"); + result.put("data", null); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(result); + } + } + + /** + * 删除联系人接口 + * @param userId 当前用户ID + * @param contactUserId 被删除联系人ID + * @return 接口响应 + */ + @PostMapping("/delete/{userId}/{contactUserId}") + public ResponseEntity> deleteContact( + @PathVariable Long userId, + @PathVariable Long contactUserId) { + Map result = new HashMap<>(); + boolean success = contactsService.deleteContact(userId, contactUserId); + if (success) { + result.put("code", 200); + result.put("msg", "删除联系人成功"); + result.put("data", null); + return ResponseEntity.ok(result); + } else { + result.put("code", 500); + result.put("msg", "删除联系人失败,联系人不存在或参数错误"); + result.put("data", null); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(result); + } + } } diff --git a/src/main/java/com/bao/dating/mapper/ContactMapper.java b/src/main/java/com/bao/dating/mapper/ContactMapper.java index 3bb5f4c..72aa03b 100644 --- a/src/main/java/com/bao/dating/mapper/ContactMapper.java +++ b/src/main/java/com/bao/dating/mapper/ContactMapper.java @@ -17,4 +17,20 @@ public interface ContactMapper { */ List> selectFriendsByUserId(@Param("userId") Long userId); + + /** + * 拉黑联系人 + * @param userId 当前用户ID + * @param contactUserId 被拉黑的联系人ID + * @return 影响行数 + */ + int blacklistContact(@Param("userId") Long userId, @Param("contactUserId") Long contactUserId); + + /** + * 删除联系人(逻辑删除) + * @param userId 当前用户ID + * @param contactUserId 被删除的联系人ID + * @return 影响行数 + */ + int deleteContact(@Param("userId") Long userId, @Param("contactUserId") Long contactUserId); } diff --git a/src/main/java/com/bao/dating/service/ContactsService.java b/src/main/java/com/bao/dating/service/ContactsService.java index 1efe464..d4f268b 100644 --- a/src/main/java/com/bao/dating/service/ContactsService.java +++ b/src/main/java/com/bao/dating/service/ContactsService.java @@ -15,6 +15,20 @@ public interface ContactsService { List> getFriendsByUserId(Long userId); + /** + * 拉黑联系人 + * @param userId 当前用户ID + * @param contactUserId 被拉黑联系人ID + * @return 操作是否成功 + */ + boolean blacklistContact(Long userId, Long contactUserId); + /** + * 删除联系人(逻辑删除) + * @param userId 当前用户ID + * @param contactUserId 被删除联系人ID + * @return 操作是否成功 + */ + boolean deleteContact(Long userId, Long contactUserId); } diff --git a/src/main/java/com/bao/dating/service/impl/ContactServiceImpl.java b/src/main/java/com/bao/dating/service/impl/ContactServiceImpl.java index 78c7020..f6ee1cf 100644 --- a/src/main/java/com/bao/dating/service/impl/ContactServiceImpl.java +++ b/src/main/java/com/bao/dating/service/impl/ContactServiceImpl.java @@ -5,6 +5,7 @@ import com.bao.dating.service.ContactsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @@ -19,4 +20,34 @@ public class ContactServiceImpl implements ContactsService { // 直接调用Mapper查询,无额外封装 return contactMapper.selectFriendsByUserId(userId); } + + /** + * 拉黑联系人 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean blacklistContact(Long userId, Long contactUserId) { + // 参数校验 + if (userId == null || contactUserId == null || userId.equals(contactUserId)) { + return false; + } + // 执行拉黑操作 + int affectRows = contactMapper.blacklistContact(userId, contactUserId); + return affectRows > 0; + } + + /** + * 删除联系人 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean deleteContact(Long userId, Long contactUserId) { + // 参数校验 + if (userId == null || contactUserId == null || userId.equals(contactUserId)) { + return false; + } + // 执行删除操作 + int affectRows = contactMapper.deleteContact(userId, contactUserId); + return affectRows > 0; + } } diff --git a/src/main/resources/com/bao/dating/mapper/ContactMapper.xml b/src/main/resources/com/bao/dating/mapper/ContactMapper.xml index 40c7e8c..a2e2719 100644 --- a/src/main/resources/com/bao/dating/mapper/ContactMapper.xml +++ b/src/main/resources/com/bao/dating/mapper/ContactMapper.xml @@ -21,5 +21,29 @@ AND c.relation_type != 3 -- 排除黑名单 AND c.user_id != c.contact_user_id -- 排除自己 + + + + + UPDATE contacts + SET relation_type = 3, + contact_status = 3, + updated_at = CURRENT_TIMESTAMP + WHERE user_id = #{userId} + AND contact_user_id = #{contactUserId} + AND contact_status != 2 + + + + + UPDATE contacts + SET contact_status = 2, + updated_at = CURRENT_TIMESTAMP + WHERE user_id = #{userId} + AND contact_user_id = #{contactUserId} + AND contact_status != 2 + + +