У меня есть таблица user_followers. В ней есть два поля user_id и follow_id из пользовательской таблицы. Я должен вставить user_id, follow_id в эту таблицу после проверки, если эта пара уже существует и статус неактивен, тогда я просто изменю статус, который работает в моем коде. Но если эта пара не существует, то вставка произойдет.
таблица user_followers:
CREATE TABLE `user_followers` (
`id` BIGINT(255) NOT NULL AUTO_INCREMENT,
`user_id` BIGINT(100) NOT NULL,
`following_id` BIGINT(100) NOT NULL,
`status` ENUM('active','inactive') NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=latin1;
Контроллер
@RequestMapping(value = "/add/follower", method = RequestMethod.POST)
public JsonNode addFollower(HttpServletRequest httpServletRequest, @RequestBody String body) throws IOException {
long startTime = System.currentTimeMillis();
utility.printCallingUrl(httpServletRequest);
JSONObject request = new JSONObject(body);
JSONObject response = new JSONObject();
String auth = httpServletRequest.getHeader("Authorization");
String authentication = utility.getBasicAuth();
if (auth.equals(authentication)) {
try {
UserFollowers userFollower = new UserFollowers();
User user = userService.getUser(request.getLong("userId"));
User following = userService.getUser(request.getLong("followingId"));
userFollower = userFollowersService.getUserFollowerYYYY(user, following);
if (userFollower == null) {
userFollower.setFollower(user);
userFollower.setFollowing(following);
userFollower.setStatus("active");
userFollower = userFollowersService.createUserFollowers(userFollower);
response = new JSONObject(utility.convertPOJOtoStringHiding(userFollower));
} else if (userFollower != null && userFollower.getStatus().equals("inactive")) {
userFollower.setStatus("active");
userFollower = userFollowersService.updateUserFollower(userFollower);
response = new JSONObject(utility.convertPOJOtoStringHiding(userFollower));
} else {
response = new JSONObject();
}
} catch (Exception e) {
response = utility.createResponse(500, KeyWord.ERROR, e.toString());
utility.showMessage(e.toString());
}
} else {
response = utility.createResponse(500, KeyWord.ERROR, KeyWord.AUTHENTICATION);
}
return objectMapper.readTree(response.toString());
}
сервисная часть
public UserFollowers createUserFollowers(UserFollowers userFollowers) {
return userFollowersRepository.save(userFollowers);
}
часть хранилища
public UserFollowers getUserFollowerYYYY(User user, User following) {
return userFollowersRepository.findByFollowerAndFollowing(user, following);
}
Что еще, если часть в контроллере работает нормально, протестировано с данными. не знаю почему
if (userFollower == null) {
userFollower.setFollower(user);
userFollower.setFollowing(following);
userFollower.setStatus("active");
userFollower = userFollowersService.createUserFollowers(userFollower);
response = new JSONObject(utility.convertPOJOtoStringHiding(userFollower));
}
эта часть не работает.