Subversion Repositories SmartDukaan

Rev

Rev 35952 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 35952 Rev 36324
Line 79... Line 79...
79
    JWTUtil jwtUtil;
79
    JWTUtil jwtUtil;
80
 
80
 
81
    @Autowired
81
    @Autowired
82
    private ResponseSender<?> responseSender;
82
    private ResponseSender<?> responseSender;
83
 
83
 
-
 
84
    // Referrals whose approval (or creation, if approval ts is missing) falls before
84
    //Changed to 2000 as per policy
85
    // TIER_POLICY_EFFECTIVE_DATE keep the flat legacy payout; everything from that date
-
 
86
    // onward uses the monthly tier: 1 → 3000, 2 → 4000, 3+ → 5000 (applied to the whole month).
85
    private static final int PER_REFERRAL_EARNING=2000;
87
    private static final int LEGACY_PER_REFERRAL_EARNING = 2000;
-
 
88
    private static final LocalDate TIER_POLICY_EFFECTIVE_DATE = LocalDate.of(2026, 1, 19);
86
 
89
 
87
    private static final Logger LOGGER = LogManager.getLogger(UserController.class);
90
    private static final Logger LOGGER = LogManager.getLogger(UserController.class);
88
 
91
 
89
    @Value("${notifications.api.host}")
92
    @Value("${notifications.api.host}")
90
    private String nodeHost;
93
    private String nodeHost;
Line 824... Line 827...
824
            long previousMonthEstimateRefferal = pendingRefferalBeforeCurrentMonth
827
            long previousMonthEstimateRefferal = pendingRefferalBeforeCurrentMonth
825
                    + previousapprovedRefferalAfterSixteen + previousapprovedRefferalbeforeSixteen;
828
                    + previousapprovedRefferalAfterSixteen + previousapprovedRefferalbeforeSixteen;
826
            long previousMonthConfirmedRefferal = previousapprovedRefferalAfterSixteen
829
            long previousMonthConfirmedRefferal = previousapprovedRefferalAfterSixteen
827
                    + previoustransferredRefferalAfterSixteen + previousapprovedRefferalbeforeSixteen
830
                    + previoustransferredRefferalAfterSixteen + previousapprovedRefferalbeforeSixteen
828
                    + previoustransferredRefferalbeforeSixteen;
831
                    + previoustransferredRefferalbeforeSixteen;
-
 
832
            List<Refferal> previousMonthConfirmedList = new ArrayList<>();
-
 
833
            previousMonthConfirmedList.addAll(previousMonthapprovedRefferalAfterSixteen);
-
 
834
            previousMonthConfirmedList.addAll(previousMonthtransferredRefferalAfterSixteen);
-
 
835
            previousMonthConfirmedList.addAll(previousMonthapprovedRefferalbeforeSixteen);
-
 
836
            previousMonthConfirmedList.addAll(previousMonthtransferredRefferalbeforeSixteen);
829
            rfm = refferAmountEarning(pendingRefferalBeforeCurrentMonth, previousMonthConfirmedRefferal,
837
            rfm = refferAmountEarning(allPendingRefferalBeforeCurrentMonth, previousMonthConfirmedList,
830
                    YearMonth.now().minusMonths(1));
838
                    YearMonth.now().minusMonths(1));
831
            refferAmountModel.add(rfm);
839
            refferAmountModel.add(rfm);
832
            LOGGER.info("previousMonthPendingApprovedRefferal" + previousMonthEstimateRefferal);
840
            LOGGER.info("previousMonthPendingApprovedRefferal" + previousMonthEstimateRefferal);
833
            LOGGER.info("previousMonthApprovedTransfferedRefferal" + previousMonthConfirmedRefferal);
841
            LOGGER.info("previousMonthApprovedTransfferedRefferal" + previousMonthConfirmedRefferal);
834
 
842
 
Line 842... Line 850...
842
            LOGGER.info("pendingofCurrentMonth" + pendingofCurrentMonth);
850
            LOGGER.info("pendingofCurrentMonth" + pendingofCurrentMonth);
843
            long pendingofCurrentMonthCount = pendingofCurrentMonth.size();
851
            long pendingofCurrentMonthCount = pendingofCurrentMonth.size();
844
            currentMonthEstimaterefferal = pendingofCurrentMonth.size() + approvedofCurrentMonth.size();
852
            currentMonthEstimaterefferal = pendingofCurrentMonth.size() + approvedofCurrentMonth.size();
845
            currentMonthConfirmedrefferal = approvedofCurrentMonth.size() + transferredofCurrentMonth.size();
853
            currentMonthConfirmedrefferal = approvedofCurrentMonth.size() + transferredofCurrentMonth.size();
846
 
854
 
-
 
855
            List<Refferal> currentMonthConfirmedList = new ArrayList<>();
-
 
856
            currentMonthConfirmedList.addAll(approvedofCurrentMonth);
-
 
857
            currentMonthConfirmedList.addAll(transferredofCurrentMonth);
-
 
858
 
847
            rfm = refferAmountEarning(pendingofCurrentMonthCount, currentMonthConfirmedrefferal, YearMonth.now());
859
            rfm = refferAmountEarning(pendingofCurrentMonth, currentMonthConfirmedList, YearMonth.now());
848
 
860
 
849
            refferAmountModel.add(rfm);
861
            refferAmountModel.add(rfm);
850
 
862
 
851
        } else if (LocalDateTime.now().isAfter(ldt)) {
863
        } else if (LocalDateTime.now().isAfter(ldt)) {
852
            drm.setStartDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(1));
864
            drm.setStartDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(1));
Line 873... Line 885...
873
                    .filter(x -> x.getCreatedTimestamp().isBefore(currentMonthdate)).collect(Collectors.toList());
885
                    .filter(x -> x.getCreatedTimestamp().isBefore(currentMonthdate)).collect(Collectors.toList());
874
 
886
 
875
            long approvedRefferalCount = previousMonthapprovedRefferalbeforeSixteen.size()
887
            long approvedRefferalCount = previousMonthapprovedRefferalbeforeSixteen.size()
876
                    + previousMonthtransferredRefferalbeforeSixteen.size() + preCurrMonthapproved.size()
888
                    + previousMonthtransferredRefferalbeforeSixteen.size() + preCurrMonthapproved.size()
877
                    + preCurrMonthtransferred.size();
889
                    + preCurrMonthtransferred.size();
-
 
890
            List<Refferal> previousMonthSettledList = new ArrayList<>();
-
 
891
            previousMonthSettledList.addAll(previousMonthapprovedRefferalbeforeSixteen);
-
 
892
            previousMonthSettledList.addAll(previousMonthtransferredRefferalbeforeSixteen);
-
 
893
            previousMonthSettledList.addAll(preCurrMonthapproved);
-
 
894
            previousMonthSettledList.addAll(preCurrMonthtransferred);
878
            rfm = new RefferalEarningModel();
895
            rfm = new RefferalEarningModel();
879
            rfm.setActualEarning(approvedRefferalCount * PER_REFERRAL_EARNING);
896
            rfm.setActualEarning(computeEarning(previousMonthSettledList));
880
 
897
 
881
            rfm.setYearMonth(YearMonth.now().minusMonths(1));
898
            rfm.setYearMonth(YearMonth.now().minusMonths(1));
882
            rfm.setPendingRefferal(0);
899
            rfm.setPendingRefferal(0);
883
            rfm.setApprovedRefferal(approvedRefferalCount);
900
            rfm.setApprovedRefferal(approvedRefferalCount);
884
            refferAmountModel.add(rfm);
901
            refferAmountModel.add(rfm);
Line 906... Line 923...
906
            currentMonthConfirmedrefferal = currentMonthapprovedRefferalAfterSixteen.size()
923
            currentMonthConfirmedrefferal = currentMonthapprovedRefferalAfterSixteen.size()
907
                    + currentMonthtransferredRefferalAfterSixteen.size()
924
                    + currentMonthtransferredRefferalAfterSixteen.size()
908
                    + currentMonthapprovedRefferalbeforeSixteen.size()
925
                    + currentMonthapprovedRefferalbeforeSixteen.size()
909
                    + currentMonthtransferredRefferalbeforeSixteen.size();
926
                    + currentMonthtransferredRefferalbeforeSixteen.size();
910
 
927
 
-
 
928
            List<Refferal> currentMonthConfirmedList = new ArrayList<>();
-
 
929
            currentMonthConfirmedList.addAll(currentMonthapprovedRefferalAfterSixteen);
-
 
930
            currentMonthConfirmedList.addAll(currentMonthtransferredRefferalAfterSixteen);
-
 
931
            currentMonthConfirmedList.addAll(currentMonthapprovedRefferalbeforeSixteen);
-
 
932
            currentMonthConfirmedList.addAll(currentMonthtransferredRefferalbeforeSixteen);
-
 
933
 
911
            rfm = refferAmountEarning(pendingrefferalcount, currentMonthConfirmedrefferal, YearMonth.now());
934
            rfm = refferAmountEarning(allpendingRefferal, currentMonthConfirmedList, YearMonth.now());
912
            refferAmountModel.add(rfm);
935
            refferAmountModel.add(rfm);
913
            LOGGER.info("currentMonthpendingApprovedrefferal" + currentMonthEstimaterefferal);
936
            LOGGER.info("currentMonthpendingApprovedrefferal" + currentMonthEstimaterefferal);
914
 
937
 
915
            LOGGER.info("currentMonthapprovedTransferredrefferal" + currentMonthConfirmedrefferal);
938
            LOGGER.info("currentMonthapprovedTransferredrefferal" + currentMonthConfirmedrefferal);
916
 
939
 
Line 919... Line 942...
919
        re.setTimestamp(LocalDateTime.now());
942
        re.setTimestamp(LocalDateTime.now());
920
        re.setRefferalEarningModel(refferAmountModel);
943
        re.setRefferalEarningModel(refferAmountModel);
921
        return responseSender.ok(re);
944
        return responseSender.ok(re);
922
    }
945
    }
923
 
946
 
924
    private RefferalEarningModel refferAmountEarning(long pendingRefferalValue, long confirmedRefferalValue,
947
    private RefferalEarningModel refferAmountEarning(List<Refferal> pendingList, List<Refferal> confirmedList,
925
                                                     YearMonth yearMonth) {
948
                                                     YearMonth yearMonth) {
926
        RefferalEarningModel rfm = new RefferalEarningModel();
949
        RefferalEarningModel rfm = new RefferalEarningModel();
927
        rfm.setYearMonth(yearMonth);
950
        rfm.setYearMonth(yearMonth);
928
        rfm.setPendingRefferal(pendingRefferalValue);
951
        rfm.setPendingRefferal(pendingList.size());
929
        rfm.setApprovedRefferal(confirmedRefferalValue);
952
        rfm.setApprovedRefferal(confirmedList.size());
930
        long estimateRefferalValue = pendingRefferalValue + confirmedRefferalValue;
-
 
931
 
953
 
932
        rfm.setMaximumEarning(estimateRefferalValue * PER_REFERRAL_EARNING);
954
        List<Refferal> potential = new ArrayList<>(confirmedList.size() + pendingList.size());
-
 
955
        potential.addAll(confirmedList);
-
 
956
        potential.addAll(pendingList);
933
 
957
 
-
 
958
        rfm.setMaximumEarning(computeEarning(potential));
934
        rfm.setMinimumEarning(confirmedRefferalValue * PER_REFERRAL_EARNING);
959
        rfm.setMinimumEarning(computeEarning(confirmedList));
935
 
960
 
936
        return rfm;
961
        return rfm;
937
    }
962
    }
938
 
963
 
-
 
964
    // 1 → 3000, 2 → 4000, 3+ → 5000; applied to every new-policy referral in the month.
-
 
965
    private static int tierRate(long count) {
-
 
966
        if (count == 0) return 0;
-
 
967
        if (count == 1) return 3000;
-
 
968
        if (count == 2) return 4000;
-
 
969
        return 5000;
-
 
970
    }
-
 
971
 
-
 
972
    private static boolean isLegacy(Refferal r) {
-
 
973
        LocalDateTime when = r.getApprovedTimestamp() != null ? r.getApprovedTimestamp() : r.getCreatedTimestamp();
-
 
974
        return when != null && when.toLocalDate().isBefore(TIER_POLICY_EFFECTIVE_DATE);
-
 
975
    }
-
 
976
 
-
 
977
    private static long computeEarning(List<Refferal> referrals) {
-
 
978
        long legacyCount = referrals.stream().filter(UserController::isLegacy).count();
-
 
979
        long newCount = referrals.size() - legacyCount;
-
 
980
        return legacyCount * LEGACY_PER_REFERRAL_EARNING + newCount * tierRate(newCount);
-
 
981
    }
-
 
982
 
939
    @RequestMapping(value = "/user/getReferals", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
983
    @RequestMapping(value = "/user/getReferals", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
940
    @ApiImplicitParams({
984
    @ApiImplicitParams({
941
            @ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header")})
985
            @ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header")})
942
    public ResponseEntity<?> getReferals(HttpServletRequest request, @RequestParam RefferalStatus status)
986
    public ResponseEntity<?> getReferals(HttpServletRequest request, @RequestParam RefferalStatus status)
943
            throws Exception {
987
            throws Exception {