Merge branch 'develop' into feature/callbackpaymentintent

This commit is contained in:
Lincpay Tech
2025-12-03 17:31:08 +05:30
5 changed files with 49 additions and 15 deletions
@@ -11,7 +11,7 @@ import lombok.NoArgsConstructor;
@Builder @Builder
public class UserDetailsDTO { public class UserDetailsDTO {
private Long id; private String userId;
private String userEmailId; private String userEmailId;
@@ -25,6 +25,9 @@ public class UserEntity extends Auditable<String> {
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long id;
@Column(name = "user_id", unique = true)
private String userId;
@Column(name = "mobile", nullable = false, unique = true, length = 20) @Column(name = "mobile", nullable = false, unique = true, length = 20)
private String mobile; private String mobile;
@@ -9,5 +9,8 @@ import com.billpaymentservice.bbps.entites.UserEntity;
@Repository @Repository
public interface UserRepository extends JpaRepository<UserEntity, Long> { public interface UserRepository extends JpaRepository<UserEntity, Long> {
Optional<UserEntity> findByMobile(String mobile); Optional<UserEntity> findByMobile(String mobile);
// check user id exists
boolean existsByUserId(String userId);
} }
@@ -93,8 +93,7 @@ public class AuthServiceImpl implements AuthService {
Object userDetailsDTO = null; Object userDetailsDTO = null;
if (user != null) { if (user != null) {
userDetailsDTO = UserDetailsDTO.builder().id(user.getId()).userEmailId(user.getEmail()) userDetailsDTO = helper.mapUserToUserDetailsDTO(user);
.userMobNo(user.getMobile()).userName(user.getName()).build();
} }
AuthResponses authResp = new AuthResponses(token, "Success", "Login Success", 200, userDetailsDTO, AuthResponses authResp = new AuthResponses(token, "Success", "Login Success", 200, userDetailsDTO,
@@ -148,6 +147,7 @@ public class AuthServiceImpl implements AuthService {
return ResponseModel.builder().message(ar.getMessage()).status("Failure").statusCode(409).data(ar) return ResponseModel.builder().message(ar.getMessage()).status("Failure").statusCode(409).data(ar)
.build(); .build();
} }
UserEntity userEntity = helper.createNewUser(request); UserEntity userEntity = helper.createNewUser(request);
userRepository.save(userEntity); userRepository.save(userEntity);
String token = jwtUtil.generateToken(userEntity.getMobile()); String token = jwtUtil.generateToken(userEntity.getMobile());
@@ -3,7 +3,7 @@ package com.billpaymentservice.bbps.util;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import java.util.Random; import java.util.UUID;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -11,6 +11,7 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.billpaymentservice.bbps.dto.UserDetailsDTO;
import com.billpaymentservice.bbps.dto.auth.RegisterRequest; import com.billpaymentservice.bbps.dto.auth.RegisterRequest;
import com.billpaymentservice.bbps.entites.BBPSMastersData; import com.billpaymentservice.bbps.entites.BBPSMastersData;
import com.billpaymentservice.bbps.entites.BharatConnectMaster; import com.billpaymentservice.bbps.entites.BharatConnectMaster;
@@ -24,6 +25,7 @@ import com.billpaymentservice.bbps.repository.BillValidationRepository;
import com.billpaymentservice.bbps.repository.BillerDataRepository; import com.billpaymentservice.bbps.repository.BillerDataRepository;
import com.billpaymentservice.bbps.repository.InboundTraceLogRepository; import com.billpaymentservice.bbps.repository.InboundTraceLogRepository;
import com.billpaymentservice.bbps.repository.OutboundTraceLogRepository; import com.billpaymentservice.bbps.repository.OutboundTraceLogRepository;
import com.billpaymentservice.bbps.repository.UserRepository;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
@Component @Component
@@ -32,6 +34,7 @@ public class Helper {
private static final Logger LOGGER = LoggerFactory.getLogger(Helper.class); private static final Logger LOGGER = LoggerFactory.getLogger(Helper.class);
private final InboundTraceLogRepository inboundTraceLogRepository; private final InboundTraceLogRepository inboundTraceLogRepository;
private final OutboundTraceLogRepository outboundTraceLogRepository; private final OutboundTraceLogRepository outboundTraceLogRepository;
private final UserRepository userRepository;
private static final String CHARACTERS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; private static final String CHARACTERS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
private static final SecureRandom secureRandom = new SecureRandom(); private static final SecureRandom secureRandom = new SecureRandom();
@@ -40,12 +43,13 @@ public class Helper {
// Constructor Injection // Constructor Injection
public Helper(BBPSMasterDataRepo bbpsMasterDataRepo, InboundTraceLogRepository inboundTraceLogRepository, public Helper(BBPSMasterDataRepo bbpsMasterDataRepo, InboundTraceLogRepository inboundTraceLogRepository,
OutboundTraceLogRepository outboundTraceLogRepository, BillerDataRepository billerDataRepository, OutboundTraceLogRepository outboundTraceLogRepository, BillerDataRepository billerDataRepository,
BillMasterRepository billMasterRepository, BillValidationRepository billValidationRepository) { BillMasterRepository billMasterRepository, BillValidationRepository billValidationRepository,
UserRepository userRepository) {
this.inboundTraceLogRepository = inboundTraceLogRepository; this.inboundTraceLogRepository = inboundTraceLogRepository;
this.outboundTraceLogRepository = outboundTraceLogRepository; this.outboundTraceLogRepository = outboundTraceLogRepository;
this.bbpsMasterDataRepo = bbpsMasterDataRepo; this.bbpsMasterDataRepo = bbpsMasterDataRepo;
this.userRepository = userRepository;
} }
/** /**
@@ -174,23 +178,47 @@ public class Helper {
public UserEntity createNewUser(RegisterRequest request) { public UserEntity createNewUser(RegisterRequest request) {
UserEntity user = new UserEntity(); UserEntity user = new UserEntity();
// user.setId(generateUserId()); // user.setId(generateUserId());
user.setMobile(request.getMobile()); user.setMobile(request.getMobile());
user.setName(request.getName()); user.setName(request.getName());
user.setEmail(request.getEmail()); user.setEmail(request.getEmail());
user.setMid(request.getMid()); user.setMid(request.getMid());
user.setCreateDateTime(new Date()); user.setCreateDateTime(new Date());
// Generate a unique userId (UUID)
String uniqueUserId = generateUniqueUserId();
user.setUserId(uniqueUserId);
return user; return user;
} }
public <T> T convertJsonToObject(String json, Class<T> clazz) { public Object mapUserToUserDetailsDTO(UserEntity user) {
try { if (user != null) {
return objectMapper.readValue(json, clazz); return UserDetailsDTO.builder().userId(user.getUserId() != null ? user.getUserId() : null) // Set null if
} catch (Exception e) { .userEmailId(user.getEmail() != null ? user.getEmail() : null)
throw new CustomException("Invalid JSON from payment API", "FAILED", 400, json); .userMobNo(user.getMobile() != null ? user.getMobile() : null)
} .userName(user.getName() != null ? user.getName() : null).build();
}
return null; // or handle accordingly if user is null
} }
public <T> T convertJsonToObject(String json, Class<T> clazz) {
try {
return objectMapper.readValue(json, clazz);
} catch (Exception e) {
throw new CustomException("Invalid JSON from payment API", "FAILED", 400, json);
}
}
private String generateUniqueUserId() {
String userId = UUID.randomUUID().toString(); // Generate UUID
// Check if the userId already exists in the database (theoretically rare but
// can happen)
while (userRepository.existsByUserId(userId)) {
// If it exists, generate a new one
userId = UUID.randomUUID().toString();
}
return userId;
}
} }