Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.jishop.member.controller;

import com.jishop.member.annotation.CurrentUser;
import com.jishop.member.domain.User;
import com.jishop.member.dto.request.*;
import com.jishop.member.dto.response.FindUserResponse;
Expand All @@ -8,6 +9,7 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.RequestBody;

@Tag(name = "유저 서비스 API")
Expand All @@ -29,4 +31,8 @@ public interface UserController {
ResponseEntity<String> updatePhone(User user, UserPhoneRequest request);
@Operation(summary = "회원 탈퇴")
ResponseEntity<String> deleteUser(User user);
@Operation(summary = "sms 수신 동의")
void updateAdSMS( User user, UserAdSMSRequest request);
@Operation(summary = "email 수신 동의")
void updateAdEmail(User user, UserAdEmailRequest request);
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ public ResponseEntity<String> recoveryPW(@RequestBody @Validated RecoveryPWReque
}

@PatchMapping("/password")
public ResponseEntity<String> updatePW(@CurrentUser User user, @RequestBody @Validated UserNewPasswordRequest request) {
public ResponseEntity<String> updatePW(@CurrentUser User user,
@RequestBody @Validated UserNewPasswordRequest request) {
authService.updatePW(user, request);

return ResponseEntity.ok().body("비밀번호 뱐경완료!");
Expand All @@ -60,14 +61,16 @@ public UserResponse getUser(@CurrentUser User user) {
* 이름, 전화번호
*/
@PatchMapping("/name")
public ResponseEntity<String> updateUserName(@CurrentUser User user, @RequestBody @Validated UserNameRequest request) {
public ResponseEntity<String> updateUserName(@CurrentUser User user,
@RequestBody @Validated UserNameRequest request) {
authService.updateUserName(user, request);

return ResponseEntity.ok("이름 변경 완료!");
}

@PatchMapping("/phone")
public ResponseEntity<String> updatePhone(@CurrentUser User user, @RequestBody @Validated UserPhoneRequest request) {
public ResponseEntity<String> updatePhone(@CurrentUser User user,
@RequestBody @Validated UserPhoneRequest request) {
authService.updatePhone(user, request);

return ResponseEntity.ok("번호 변경 완료!");
Expand All @@ -78,4 +81,16 @@ public ResponseEntity<String> deleteUser(@CurrentUser User user) {
authService.deleteUser(user);
return ResponseEntity.ok("탈퇴 처리 완료!");
}

@PatchMapping("/adSMS")
public void updateAdSMS(@CurrentUser User user,
@RequestBody @Validated UserAdSMSRequest request) {
authService.updateAdSMSAgree(user, request);
}

@PatchMapping("/adEmail")
public void updateAdEmail(@CurrentUser User user,
@RequestBody @Validated UserAdEmailRequest request) {
authService.updateAdEmailAgree(user, request);
}
}
17 changes: 16 additions & 1 deletion backend/JiShop/src/main/java/com/jishop/member/domain/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,20 @@ public class User extends BaseEntity implements Serializable {
private boolean picAgreement;
private boolean adAgreement;

private boolean adSMSAgree;
private boolean adEmailAgree;

//소셜 회원가입
@Builder
public User(boolean ageAgreement, boolean useAgreement, boolean picAgreement, boolean adAgreement, String loginId, String password, String name, String birthDate, String gender, String phone, LoginType provider) {
public User(boolean ageAgreement, boolean useAgreement, boolean picAgreement, boolean adAgreement,
boolean adSMSAgree, boolean adEmailAgree, String loginId, String password,
String name, String birthDate, String gender, String phone, LoginType provider) {
this.ageAgreement = ageAgreement;
this.useAgreement = useAgreement;
this.picAgreement = picAgreement;
this.adAgreement = adAgreement;
this.adSMSAgree = adSMSAgree;
this.adEmailAgree = adEmailAgree;
this.loginId = loginId;
this.password = password;
this.name = name;
Expand All @@ -60,4 +67,12 @@ public void updateName(String name) {
public void updatePhone(String phone) {
this.phone = phone;
}

public void updateAdSMSAgree(boolean adSMSAgree) {
this.adSMSAgree = adSMSAgree;
}

public void updateAdEmailAgree(boolean adEmailAgree) {
this.adEmailAgree = adEmailAgree;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,22 @@ public record SignUpFormRequest(
){
// 비밀번호 업데이트
public SignUpFormRequest withPassword(String password){
return new SignUpFormRequest(this.ageAgreement, this.useAgreement, this.picAgreement, this.adAgreement, this.loginId, password, this.name, this.birthDate, this.gender, this.phone, this.provider);
return new SignUpFormRequest(this.ageAgreement, this.useAgreement, this.picAgreement,
this.adAgreement, this.loginId, password, this.name, this.birthDate, this.gender,
this.phone, this.provider);
}

public User toEntity(){
boolean adSMSAgree = this.adAgreement;
boolean adEmailAgree = this.adAgreement;

return new User(
this.ageAgreement,
this.useAgreement,
this.picAgreement,
this.adAgreement,
adSMSAgree,
adEmailAgree,
this.loginId,
this.password,
this.name,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.jishop.member.dto.request;

public record UserAdEmailRequest(
boolean adEmailAgree
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.jishop.member.dto.request;

public record UserAdSMSRequest(
boolean adSMSAgree
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,14 @@
public record UserResponse(
String name,
String phone,
String email
String email,
boolean adAgreement,
boolean adSMSAgree,
boolean adEmailAgree
) {
// todo: 나중에 로컬회원과 소셜회원 구별해서 로그인 아이디 내려주기
public static UserResponse from(User user) {
return new UserResponse(user.getName(), user.getPhone(), user.getLoginId());
return new UserResponse(user.getName(), user.getPhone(), user.getLoginId(), user.isAdAgreement(),
user.isAdSMSAgree(), user.isAdEmailAgree());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,6 @@ public interface AuthService {
void updatePhone(User user, UserPhoneRequest request);
void deleteUser(User user);
Long checkLogin(User user);
void updateAdSMSAgree(User user, UserAdSMSRequest request);
void updateAdEmailAgree(User user, UserAdEmailRequest request);
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,21 @@
import com.jishop.member.service.AuthService;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.Duration;

@Service
@Transactional
@RequiredArgsConstructor
public class AuthServiceImpl implements AuthService {

private final UserRepository userRepository;
private final PasswordEncoder passwordEncoder;
private final RedisTemplate<String, Object> redisTemplate;

@Override
public void signIn(SignInFormRequest form, HttpSession session) {
Expand Down Expand Up @@ -69,6 +73,7 @@ public void updatePW(User user, UserNewPasswordRequest request){

String password = passwordEncoder.encode(request.password());
user.updatePassword(password);
updateUserCache(user);
}

// todo: 회원 정보 조회
Expand All @@ -79,10 +84,12 @@ public UserResponse getUser(User user){
// todo: 회원 정보 수정 (이름, 전화번호)
public void updateUserName(User user, UserNameRequest request) {
user.updateName(request.name());
updateUserCache(user);
}

public void updatePhone(User user, UserPhoneRequest request) {
user.updatePhone(request.phone());
updateUserCache(user);
}

public void deleteUser(User user) {
Expand All @@ -92,5 +99,22 @@ public void deleteUser(User user) {
public Long checkLogin(User user) {
return user.getId();
}

public void updateAdSMSAgree(User user, UserAdSMSRequest request){
user.updateAdSMSAgree(request.adSMSAgree());
updateUserCache(user);
}

public void updateAdEmailAgree(User user, UserAdEmailRequest request){
user.updateAdEmailAgree(request.adEmailAgree());
updateUserCache(user);
}

private void updateUserCache(User user) {
String cacheKey = "user::" + user.getId();
// 캐시 업데이트 (기존 캐시 삭제 후 최신 정보로 재설정)
redisTemplate.delete(cacheKey);
redisTemplate.opsForValue().set(cacheKey, user, Duration.ofMinutes(30));
}
}