From acad524bfb7f376c09ff8e6600fab207780156e1 Mon Sep 17 00:00:00 2001
From: 44323 <443237572@qq.com>
Date: 星期四, 23 十一月 2023 18:46:05 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/PlayPai

---
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java |  175 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 141 insertions(+), 34 deletions(-)

diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
index 762f83f..f1fa8fa 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
+++ b/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>
@@ -69,7 +66,7 @@
         List<Details> list = new ArrayList<>();
 
         QueryWrapper<TCoursePackageDiscount> tCoursePackageDiscountQueryWrapper = new QueryWrapper<>();
-        tCoursePackageDiscountQueryWrapper.eq("auditStatus", 2);
+        tCoursePackageDiscountQueryWrapper.eq("auditStatus", 2).eq("status",1);
         List<TCoursePackageDiscount> tCoursePackageDiscounts = new ArrayList<>();
         int weekStr = LocalDateTimeUtils.getWeekStr();
         if (null == discountType || discountType == 1) {
@@ -79,13 +76,13 @@
                 for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
                     TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId());
 //                    判断预约人数是否已满
-                    Integer maxSubscribeNumber = coursePackage.getMaxSubscribeNumber();
-                    Integer integer = tcppMapper.selectCount(new QueryWrapper<TCoursePackagePayment>()
-                            .eq("appUserId",appUserId )
-                            .eq("status",1));
-                    if (integer >= maxSubscribeNumber){
-                        continue;
-                    }
+//                    Integer maxSubscribeNumber = coursePackage.getMaxSubscribeNumber();
+//                    Integer integer = tcppMapper.selectCount(new QueryWrapper<TCoursePackagePayment>()
+//                            .eq("appUserId",appUserId )
+//                            .eq("status",1));
+//                    if (integer >= maxSubscribeNumber){
+//                        continue;
+//                    }
                     try {
                         JSONArray jsonArray = JSON.parseArray(tCoursePackageDiscount.getContent());
                         JSONObject jsonObject = jsonArray.getJSONObject(0);
@@ -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);
@@ -116,7 +132,7 @@
 
                         if (isWithinRange) {
                             // 判断当前日期是否在开始时间和结束时间范围内
-                            if (isDateWithinRange(localTime, parse1, parse2)) {
+                            if (isDateWithinRange(localTime, parse1, parse2)){
                                 Details resde = new Details();
 
                                 resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId());
@@ -128,13 +144,21 @@
                                 resde.setDate(localTime);
                                 resde.setOriginalPrice(paymentConfig.getCashPayment());
                                 resde.setDiscountPrice(cashPayment);
-                                resde.setStatus(1);
+                                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());
-                                resde.setStatus(1);
+                                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,10 +394,30 @@
         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());
-            packageResponse.setDiscountPrice(cashPayment);
-        }else {
+            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());
 
             Integer cashPayment = jsonObject.getInteger("hour");
@@ -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;
     }
@@ -404,19 +514,16 @@
             ids.add(-1);
             queryDiscountList.setIds(ids);
         }
-        List<DiscountList> discountLists = this.baseMapper.queryDiscountList(discountListPage, queryDiscountList.getPCode(), queryDiscountList.getCCode(), queryDiscountList.getName(), queryDiscountList.getType(), queryDiscountList.getIds());
+        List<DiscountList> discountLists = this.baseMapper.queryDiscountList(discountListPage,
+                queryDiscountList.getPCode(), queryDiscountList.getCCode(),
+                queryDiscountList.getName(), queryDiscountList.getType(), queryDiscountList.getIds());
         for (DiscountList discountList : discountLists) {
             List<TCoursePackageDiscount> tCoursePackageDiscounts = this.baseMapper.selectList
                     (new LambdaQueryWrapper<TCoursePackageDiscount>()
                             .eq(TCoursePackageDiscount::getCoursePackageId,
                                     discountList.getCourseId())
                             .orderByAsc(TCoursePackageDiscount::getType));
-            long count = tCoursePackageDiscounts.stream().count();
-            if(count>0){
-                discountList.setStatus(2);
-            }else {
-                discountList.setStatus(1);
-            }
+
             String type="";
             for (int i = 0; i < tCoursePackageDiscounts.size(); i++) {
                 if(tCoursePackageDiscounts.get(i).getType()==1){

--
Gitblit v1.7.1