2017-05-15 2 views
0

J'ai créé Api pour Verify mobile et je veux mettre une certaine logique donc que je peux restreindre l'utilisateur qui essaie de vérifier otp après 4 heures . I ont créé deux Apis un premier envoi otp à l'utilisateur et le paramètre d'entrée est numéro de mobile. deuxième API vérifier que le numéro mobile en comparant le BdP inséré par l'utilisateur et stockées dans la base de données lors de la première APIComment limiter l'utilisateur à vérifier le mobile par OTP après 4 heures de OTPgeneration

@RestController 
@RequestMapping("/api/v1") 
public class MobileController2 { 


    private String To = null; 
    OtpGenerator otp = new OtpGenerator(); 
    @Autowired 
    private MobileRepository mobileRepository; 
    Sms sms = new Sms(); 
    Date date = new Date(); 
    Timestamp timestamp1 = new Timestamp(date.getTime()); 
    Calendar cal = Calendar.getInstance(); 
    SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 


    @PostMapping(value = "/mobile", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) 
    public ResponseEntity<Mobile> createMobile(@RequestBody Mobile mobile) { 
     int hashcode = otp.RandomOtp(); 
     this.To = mobile.getMob(); 
     String Message = hashcode + " is your Pharmerz verification code "; 

     if (mobileRepository.findByUserid(mobile.getUserid()) != null) { 
      Mobile mobileprevious = mobileRepository.findByUserid(mobile.getUserid()); 
      mobileprevious.setMob(mobile.getMob()); 
      mobileprevious.setHASHCODE("" + hashcode); 
      mobileprevious.setUpdated(mobile.getUpdated()); 
      mobileprevious.setVERIFIED(0); 
      mobileRepository.save(mobileprevious); 
      sms.sms_generation(To, Message); 
      return new ResponseEntity<Mobile>(mobileprevious, HttpStatus.OK); 
     } else { 
      mobile.setHASHCODE("" + hashcode); 
      mobile.setVERIFIED(0); 
      mobileRepository.save(mobile); 

      sms.sms_generation(To, Message); 
      return new ResponseEntity<Mobile>(mobile, HttpStatus.OK); 

     } 
    } 



    @PostMapping(value = "/verifymobile", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) 
    public ResponseEntity<Mobile> verifyMobile(@RequestBody Mobile mobile) { 

     String userid = mobile.getUserid(); 
     String userotp = mobile.getHASHCODE(); 
     Mobile mobileobject = mobileRepository.findByUserid(userid); 
     if (mobileobject.getHASHCODE().equals(userotp)) { 
      System.out.println("Matched"); 
      mobileobject.setHASHCODE(""); 
      mobileobject.setVERIFIED(1); 

      mobileRepository.save(mobileobject); 
      String Acknowledge = "Thank you for verifying on Pharmerz"; 
      sms.sms_generation(To, Acknowledge); 

      return new ResponseEntity<Mobile>(mobileobject, HttpStatus.OK); 

     } else { 
      System.out.println("Miss matched"); 
      return new ResponseEntity<Mobile>(HttpStatus.BAD_REQUEST); 
     } 
    } 

} 
+0

Des commentaires sur ma réponse? Je sais que vous avez probablement espéré pour moi; mais je suis assez sûr: rien d'autre ne sera montré ici ... – GhostCat

+0

J'ai résolu ce problème en vérifiant la différence pour l'heure de la zone. –

+0

Je prends cela comme: ma réponse a été utile, mais n'a pas vraiment résolu votre problème? – GhostCat

Répondre

4

vous donnant une non-réponse ici: apprendre à écrire des messages journaux utiles et comment faire usage d'outils tels que debuggers ou profilers.

Signification: personne peut déboguer un tel problème à distance. Il pourrait y avoir toutes sortes de causes profondes qui vous donnent ce comportement.

Vous devez pas en arrière et

  • comprendre que mettre la chaîne « journal des erreurs » dans votre journal d'erreur ne permet pas quoi que ce soit.
  • comprendre que l'impression sur la console ... n'est pas non plus un moyen fiable d'atteindre les "logs" de votre code. Surtout quand vous avez le même message "Wrong ou Old Otp" dans trois endroits différents. Cela s'appelle duplication de code et en soi un mauvaise pratique!
  • apprendre à utiliser des outils qui vous donnent un aperçu sur le santé de votre application.

En d'autres termes: l'objectif principal de vous connecter informations dans votre application est de vous permettre de débogage des problèmes après qu'ils ont eu lieu. Exactement pour vous soutenir dans des situations comme celle-ci.