nickchange
2023-11-17 a9564eae9f0169ca39329b2f14a8f13d13358a0a
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
@@ -23,18 +23,15 @@
import com.dsh.course.model.vo.response.Details;
import com.dsh.course.model.vo.response.ExchangeCoursePackageResponse;
import com.dsh.course.service.TCoursePackageDiscountService;
import com.dsh.course.util.DateTimeHelper;
import com.dsh.course.util.LocalDateTimeUtils;
import com.dsh.course.util.StrUtils;
import com.dsh.course.util.*;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.*;
/**
 * <p>
@@ -93,6 +90,25 @@
                        Date parse2 = null;
                        String startDate = jsonObject.getString("startDate");
                        String endDate = jsonObject.getString("endDate");
                        String startTime = jsonObject.getString("startTime");
                        String endTime = jsonObject.getString("endTime");
                        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
                        String currentTime = sdf.format(new Date());
                        boolean isWithinTimeRange = false;
                        try {
                            Date currentTimeDate = sdf.parse(currentTime);
                            Date startTimeDate = sdf.parse(startTime);
                            Date endTimeDate = sdf.parse(endTime);
                            if (currentTimeDate.after(startTimeDate) && currentTimeDate.before(endTimeDate)) {
                                isWithinTimeRange = true;
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        try {
                            parse1 = simpleDateFormat.parse(startDate);
                            parse2 = simpleDateFormat.parse(endDate);
@@ -128,13 +144,21 @@
                                resde.setDate(localTime);
                                resde.setOriginalPrice(paymentConfig.getCashPayment());
                                resde.setDiscountPrice(cashPayment);
                                if (isWithinTimeRange) {
                                resde.setStatus(1);
                                }else {
                                    resde.setStatus(2);
                                }
                                GetDistanceVo distanceVo = new GetDistanceVo();
                                distanceVo.setLatitude(lat);
                                distanceVo.setLongitude(lon);
                                distanceVo.setStoreId(coursePackage.getStoreId());
                                String s = sreClient.calculateDistance(distanceVo);
                                resde.setStoreDistance(s);
                                list.add(resde);
                            }
                        }
@@ -200,6 +224,25 @@
                        Date parse2 = null;
                        String startDate = jsonObject.getString("startDate");
                        String endDate = jsonObject.getString("endDate");
                        String startTime = jsonObject.getString("startTime");
                        String endTime = jsonObject.getString("endTime");
                        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
                        String currentTime = sdf.format(new Date());
                        boolean isWithinTimeRange = false;
                        try {
                            Date currentTimeDate = sdf.parse(currentTime);
                            Date startTimeDate = sdf.parse(startTime);
                            Date endTimeDate = sdf.parse(endTime);
                            if (currentTimeDate.after(startTimeDate) && currentTimeDate.before(endTimeDate)) {
                                isWithinTimeRange = true;
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        try {
                            parse1 = simpleDateFormat.parse(startDate);
                            parse2 = simpleDateFormat.parse(endDate);
@@ -233,10 +276,16 @@
                                CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId());
                                resde.setCourseHours(paymentConfig.getClassHours());
                                resde.setDonateHours(cashPayment);
                                resde.setCoin(paymentConfig.getPlayPaiCoin());
                                resde.setDataTime("今日");
                                resde.setDate(localTime);
                                resde.setOriginalPrice(paymentConfig.getCashPayment());
                                if (isWithinTimeRange) {
                                resde.setStatus(1);
                                }else {
                                    resde.setStatus(2);
                                }
                                GetDistanceVo distanceVo = new GetDistanceVo();
                                distanceVo.setLatitude(lat);
                                distanceVo.setLongitude(lon);
@@ -262,6 +311,7 @@
                                resde.setCourseHours(paymentConfig.getClassHours());
                                resde.setDonateHours(cashPayment);
                                String weekOfDate = "";
                                resde.setCoin(paymentConfig.getPlayPaiCoin());
                                if (weekStr != 7 && tempDate.equals(tomorrowDate)) {
                                    weekOfDate = "明日";
                                } else {
@@ -299,20 +349,43 @@
        packageResponse.setCoursePackageDiscountId(coursePackageId);
        TCoursePackage coursePackage = tcpMapper.selectById(coursePackageId);
        packageResponse.setType(coursePackage.getType());
        packageResponse.setCoverDrawing(coursePackage.getCoverDrawing());
        packageResponse.setIntroduceDrawing(coursePackage.getIntroduceDrawing());
        packageResponse.setCoursePackageName(coursePackage.getName());
        packageResponse.setDetailDrawing(coursePackage.getDetailDrawing());
//        packageResponse.setPayType(coursePackage.getPayType());
        if (coursePackage.getType()==2) {
            Date startTime = coursePackage.getStartTime();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
            String formattedDate = sdf.format(startTime);
            Date endTime = coursePackage.getEndTime();
            String formattedDate1 = sdf.format(endTime);
            packageResponse.setHoliTime(formattedDate +"-"+ formattedDate1);
        }
        Store store = sreClient.queryStoreById(coursePackage.getStoreId());
        packageResponse.setStoreNameAddr(store.getName() +"(" +store.getAddress()+")");
        GetDistanceVo distanceVo = new GetDistanceVo();
        distanceVo.setLatitude(lat);
        distanceVo.setLongitude(lon);
        distanceVo.setStoreId(coursePackage.getStoreId());
        String s = sreClient.calculateDistance(distanceVo);
        packageResponse.setDistance(Double.valueOf(s));
        if(ToolUtil.isNotEmpty(lon) && ToolUtil.isNotEmpty(lat)){
            Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, store.getLon() + "," + store.getLat());
            double wgs84 = new BigDecimal(distance.get("WGS84")).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
            packageResponse.setDistance(wgs84);
        }
//        distanceVo.setLatitude(lat);
//        distanceVo.setLongitude(lon);
//        distanceVo.setStoreId(coursePackage.getStoreId());
//        String s = sreClient.calculateDistance(distanceVo);
//
//
//        packageResponse.setDistance(Double.valueOf(s));
        if (coursePackageDiscount.getType() == 1 || coursePackageDiscount.getType() == 2){
            return packageResponse;
        }
@@ -321,9 +394,29 @@
        CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(coursePackageDiscount.getCoursePackagePaymentConfigId());
        if (coursePackageDiscount.getType() == 3 ||coursePackageDiscount.getType() == 4){
            Double cashPayment = jsonObject.getDouble("cashPayment");
            if(ToolUtil.isNotEmpty(paymentConfig.getCashPayment()) && paymentConfig.getCashPayment()>0 && ToolUtil.isNotEmpty(paymentConfig.getPlayPaiCoin()) && paymentConfig.getPlayPaiCoin()>0 ){
                packageResponse.setPayType(3);
            }else if(ToolUtil.isNotEmpty(paymentConfig.getCashPayment()) && paymentConfig.getCashPayment()>0){
                packageResponse.setPayType(1);
            }else if( ToolUtil.isNotEmpty(paymentConfig.getPlayPaiCoin()) && paymentConfig.getPlayPaiCoin()>0 ){
                packageResponse.setPayType(2);
            }
            packageResponse.setClassHours(paymentConfig.getClassHours());
            packageResponse.setCostPrice(paymentConfig.getCashPayment());
            if (paymentConfig.getPlayPaiCoin()!=null) {
                packageResponse.setWanpaiGold(paymentConfig.getPlayPaiCoin());
            }
            if (cashPayment!=null) {
            packageResponse.setDiscountPrice(cashPayment);
            }else {
                packageResponse.setDiscountPrice(paymentConfig.getCashPayment());
                packageResponse.setCostPrice(null);
            }
            Integer cashPayment1 = jsonObject.getInteger("hour");
            packageResponse.setFreeClassHours(cashPayment1);
        }else {
            packageResponse.setClassHours(paymentConfig.getClassHours());
@@ -351,7 +444,24 @@
            }
            packageResponse.setWeekTime(courWeeks.toString());
        }
        packageResponse.setTime(coursePackage.getClassStartTime()+"-"+coursePackage.getClassEndTime());
        String classStartTime = coursePackage.getClassStartTime();
        String classEndTime = coursePackage.getClassEndTime();
        ArrayList<String> classTime = new ArrayList<>();
        String[] split4 = classStartTime.split(",");
        String[] split3 = classEndTime.split(",");
        if(ToolUtil.isNotEmpty(classStartTime)){
            for (int i = 0; i < split4.length; i++) {
                String s = split4[i].substring(0,5) + "-" +  split3[i].substring(0,5);
                classTime.add(s);
            }
        }
        String classTimeAsString = String.join(" | ", classTime);
        packageResponse.setTime(classTimeAsString);
        return packageResponse;
    }