From 35c07cedf67346e9d79449ed185af39a567fa60b Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期三, 05 七月 2023 08:31:11 +0800 Subject: [PATCH] 更新部分功能接口 --- cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java | 341 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 265 insertions(+), 76 deletions(-) diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java index ebc9270..cade892 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java @@ -9,13 +9,14 @@ import com.dsh.course.entity.TCoursePackage; import com.dsh.course.entity.TCoursePackageDiscount; import com.dsh.course.feignclient.account.AppUserClient; +import com.dsh.course.feignclient.account.StudentClient; import com.dsh.course.feignclient.account.model.AppUser; +import com.dsh.course.feignclient.account.model.Student; import com.dsh.course.feignclient.other.StoreClient; import com.dsh.course.feignclient.other.model.Store; import com.dsh.course.mapper.TCoursePackageMapper; import com.dsh.course.feignclient.model.CourseOfStoreVo; -import com.dsh.course.model.CoursePackageList; -import com.dsh.course.model.CoursePackageListVo; +import com.dsh.course.model.*; import com.dsh.course.service.ICoursePackagePaymentConfigService; import com.dsh.course.service.TCoursePackageDiscountService; import com.dsh.course.service.TCoursePackagePaymentService; @@ -27,6 +28,8 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -59,6 +62,9 @@ @Resource private AppUserClient appUserClient; + + @Resource + private StudentClient studentClient; @@ -106,7 +112,7 @@ Store store = storeClient.queryStoreById(coursePackage.getStoreId()); Integer integer = coursePackagePaymentService.queryCountNumber(coursePackage.getId()); CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigService.getOne(new QueryWrapper<CoursePackagePaymentConfig>() - .eq("coursePackageId", coursePackage.getId()).last(" order by if(payType = 1, cashPayment, playPaiCoin)")); + .eq("coursePackageId", coursePackage.getId()).orderByAsc("classHours limit 0, 1")); CoursePackageListVo coursePackageListVo = new CoursePackageListVo(); coursePackageListVo.setId(coursePackage.getId()); coursePackageListVo.setName(coursePackage.getName()); @@ -114,86 +120,113 @@ coursePackageListVo.setCoverDrawing(coursePackage.getCoverDrawing()); coursePackageListVo.setClassStartTime(coursePackage.getClassStartTime() + "-" + coursePackage.getClassEndTime()); coursePackageListVo.setApplicantsNumber(integer); + coursePackageListVo.setPayType(coursePackage.getPayType()); + coursePackageListVo.setPlayPaiCoin(coursePackageListVo.getPlayPaiCoin()); - coursePackageListVo.setOriginalPrice(coursePackagePaymentConfig.getPayType() == 1 ? coursePackagePaymentConfig.getCashPayment() : coursePackagePaymentConfig.getPlayPaiCoin().doubleValue()); - TCoursePackageDiscount coursePackageDiscount = coursePackageDiscountService.getOne(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackageId", coursePackage.getId()).eq("auditStatus", 2).eq("type", 1)); - if(1 == appUser.getIsVip() && null != coursePackageDiscount){ - //{"num1":100} - JSONObject jsonObject = JSON.parseObject(coursePackageDiscount.getContent()); - coursePackageListVo.setVipPrice(jsonObject.getDouble("num1")); - } - coursePackageDiscount = coursePackageDiscountService.getOne(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackageId", coursePackage.getId()).eq("auditStatus", 2).eq("type", 3)); - if(null == coursePackageDiscount){ - coursePackageListVo.setPaymentPrice(coursePackageListVo.getOriginalPrice()); - }else{ + //会员显示原价和会员价(最低)。非会员显示会员价和支付价(最低) + if(appUser.getIsVip() == 0){//非会员 + List<TCoursePackageDiscount> list2 = coursePackageDiscountService.list(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId()) + .eq("type", 1).eq("auditStatus", 2)); + Double vipPrice = coursePackagePaymentConfig.getCashPayment(); + for (TCoursePackageDiscount coursePackageDiscount : list2) { + Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("num1"); + if(vipPrice.compareTo(num1) > 0){ + vipPrice = num1; + } + } + coursePackageListVo.setVipPrice(vipPrice); + + Double paymentPrice = coursePackagePaymentConfig.getCashPayment(); + List<TCoursePackageDiscount> list3 = coursePackageDiscountService.list(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId()) + .eq("type", 3).eq("auditStatus", 2)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - /** - * [{ - * "startDate": "2023-01-01 00:00:00", - * "endDate": "2023-12-31 23:59:59", - * "startTime": "02:00:00", - * "endTime": "23:00:00", - * "weeks": [1, 2, 7], - * "cashPayment": 100 - * }] - */ - JSONArray jsonArray = JSON.parseArray(coursePackageDiscount.getContent()); - for (int i = 0; i < jsonArray.size(); i++) { - JSONObject jsonObject = jsonArray.getJSONObject(i); - String startDate = jsonObject.getString("startDate"); - String endDate = jsonObject.getString("endDate"); - String startTime = jsonObject.getString("startTime"); - String endTime = jsonObject.getString("endTime"); - List<Integer> weeks = jsonObject.getJSONArray("weeks").toJavaList(Integer.class); - Double cashPayment = jsonObject.getDouble("cashPayment"); - Date startDate_date = sdf.parse(startDate); - Date endDate_date = sdf.parse(endDate); - long timeMillis = System.currentTimeMillis(); - if(timeMillis >= startDate_date.getTime() && timeMillis < endDate_date.getTime()){ - Date date = new Date(); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - int week = calendar.get(Calendar.DAY_OF_WEEK); - boolean isFirstSunday = (calendar.getFirstDayOfWeek() == Calendar.SUNDAY); - if(isFirstSunday){ - week = week - 1; - if(week == 0){ - week = 7; + for (TCoursePackageDiscount coursePackageDiscount : list3) { + /** + * [{ + * "startDate": "2023-01-01 00:00:00", + * "endDate": "2023-12-31 23:59:59", + * "startTime": "02:00:00", + * "endTime": "23:00:00", + * "weeks": [1, 2, 7], + * "cashPayment": 100 + * }] + */ + JSONArray jsonArray = JSON.parseArray(coursePackageDiscount.getContent()); + for (int i = 0; i < jsonArray.size(); i++) { + try { + JSONObject jsonObject = jsonArray.getJSONObject(i); + String startDate = jsonObject.getString("startDate"); + String endDate = jsonObject.getString("endDate"); + String startTime = jsonObject.getString("startTime"); + String endTime = jsonObject.getString("endTime"); + List<Integer> weeks = jsonObject.getJSONArray("weeks").toJavaList(Integer.class); + Double cashPayment = jsonObject.getDouble("cashPayment"); + Date startDate_date = sdf.parse(startDate); + Date endDate_date = sdf.parse(endDate); + long timeMillis = System.currentTimeMillis(); + if(timeMillis >= startDate_date.getTime() && timeMillis < endDate_date.getTime()){ + Date date = new Date(); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int week = calendar.get(Calendar.DAY_OF_WEEK); + boolean isFirstSunday = (calendar.getFirstDayOfWeek() == Calendar.SUNDAY); + if(isFirstSunday){ + week = week - 1; + if(week == 0){ + week = 7; + } + } + if(!weeks.contains(week)){ + continue; + } + + String[] split1 = startTime.split(":"); + Integer hour1 = Integer.valueOf(split1[0]); + Calendar s = Calendar.getInstance(); + s.setTime(date); + s.set(Calendar.HOUR_OF_DAY, hour1); + s.set(Calendar.MINUTE, Integer.valueOf(split1[1])); + s.set(Calendar.SECOND, Integer.valueOf(split1[2])); + + String[] split2 = endTime.split(":"); + Integer hour2 = Integer.valueOf(split2[0]); + Calendar e = Calendar.getInstance(); + e.setTime(date); + e.set(Calendar.HOUR_OF_DAY, hour2); + e.set(Calendar.MINUTE, Integer.valueOf(split2[1])); + e.set(Calendar.SECOND, Integer.valueOf(split2[2])); + + if(hour1 > hour2){ + if(s.getTimeInMillis() > date.getTime()){ + s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) - 1); + }else{ + e.set(Calendar.DAY_OF_YEAR, e.get(Calendar.DAY_OF_YEAR) + 1); + } + } + if(timeMillis >= s.getTimeInMillis() && timeMillis < e.getTimeInMillis() && paymentPrice.compareTo(cashPayment) > 0){ + paymentPrice = cashPayment; + } } - } - if(!weeks.contains(week)){ - continue; - } - - String[] split = startTime.split(":"); - Integer hour1 = Integer.valueOf(split[0]); - Calendar s = Calendar.getInstance(); - s.setTime(date); - s.set(Calendar.HOUR_OF_DAY, hour1); - s.set(Calendar.MINUTE, Integer.valueOf(split[1])); - s.set(Calendar.SECOND, Integer.valueOf(split[2])); - - String[] split1 = endTime.split(":"); - Integer hour2 = Integer.valueOf(split1[0]); - Calendar e = Calendar.getInstance(); - e.setTime(date); - e.set(Calendar.HOUR_OF_DAY, hour2); - e.set(Calendar.MINUTE, Integer.valueOf(split1[1])); - e.set(Calendar.SECOND, Integer.valueOf(split1[2])); - - if(hour1 > hour2){ - if(s.getTimeInMillis() > date.getTime()){ - s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) - 1); - }else{ - e.set(Calendar.DAY_OF_YEAR, e.get(Calendar.DAY_OF_YEAR) + 1); - } - } - if(timeMillis >= s.getTimeInMillis() && timeMillis < e.getTimeInMillis()){ - coursePackageListVo.setPaymentPrice(cashPayment); + }catch (Exception e){ + e.printStackTrace(); } } } + coursePackageListVo.setPaymentPrice(paymentPrice); + }else{ + List<TCoursePackageDiscount> list2 = coursePackageDiscountService.list(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId()) + .eq("type", 1).eq("auditStatus", 2)); + Double vipPrice = coursePackagePaymentConfig.getCashPayment(); + for (TCoursePackageDiscount coursePackageDiscount : list2) { + Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("num1"); + if(vipPrice.compareTo(num1) > 0){ + vipPrice = num1; + } + } + coursePackageListVo.setPaymentPrice(vipPrice); + coursePackageListVo.setOriginalPrice(coursePackagePaymentConfig.getCashPayment()); } + Map<String, Double> distance = GeodesyUtil.getDistance(coursePackageList.getLon() + "," + coursePackageList.getLat(), store.getLon() + "," + store.getLat()); coursePackageListVo.setDistance(distance.get("WGS84") / 1000); listVos.add(coursePackageListVo); @@ -217,4 +250,160 @@ } return listVos; } + + + /** + * 获取课包详情 + * @param uid + * @param id + * @return + * @throws Exception + */ + @Override + public CoursePackageInfo queryCourseInfo(Integer uid, Integer id, String lon, String lat) throws Exception { + AppUser appUser = appUserClient.queryAppUser(uid); + TCoursePackage coursePackage = this.getById(id); + CoursePackageInfo coursePackageInfo = new CoursePackageInfo(); + coursePackageInfo.setId(id); + coursePackageInfo.setCoverDrawing(coursePackage.getCoverDrawing()); + coursePackageInfo.setName(coursePackage.getName()); + Store store = storeClient.queryStoreById(coursePackage.getStoreId()); + coursePackageInfo.setStoreName(store.getName()); + coursePackageInfo.setStoreCoverDrawing(store.getCoverDrawing()); + coursePackageInfo.setStoreAddress(store.getAddress()); + coursePackageInfo.setLon(store.getLon()); + coursePackageInfo.setLat(store.getLat()); + 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(); + coursePackageInfo.setDistance(wgs84); + + String[] split = coursePackage.getClassWeeks().split(";"); + coursePackageInfo.setWeeks(Arrays.asList(split)); + coursePackageInfo.setTimes(coursePackage.getClassStartTime() + "-" + coursePackage.getClassEndTime()); + coursePackageInfo.setDetailDrawing(coursePackage.getDetailDrawing()); + coursePackageInfo.setIntroduceDrawing(coursePackage.getIntroduceDrawing()); + List<CoursePackagePaymentConfigVo> list = new ArrayList<>(); + List<CoursePackagePaymentConfig> list1 = coursePackagePaymentConfigService.list(new QueryWrapper<CoursePackagePaymentConfig>().eq("coursePackageId", id).orderByAsc("classHours")); + list1.forEach(coursePackagePaymentConfig -> { + CoursePackagePaymentConfigVo coursePackagePaymentConfigVo = new CoursePackagePaymentConfigVo(); + coursePackagePaymentConfigVo.setId(coursePackagePaymentConfig.getId()); + coursePackagePaymentConfigVo.setClassHours(coursePackagePaymentConfig.getClassHours()); + coursePackagePaymentConfigVo.setPayType(coursePackage.getPayType()); + coursePackagePaymentConfigVo.setPlayPaiCoin(coursePackagePaymentConfig.getPlayPaiCoin()); + //会员显示原价和会员价(最低)。非会员显示会员价和支付价(最低) + if(appUser.getIsVip() == 0){//非会员 + List<TCoursePackageDiscount> list2 = coursePackageDiscountService.list(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId()) + .eq("type", 1).eq("auditStatus", 2)); + Double vipPrice = coursePackagePaymentConfig.getCashPayment(); + for (TCoursePackageDiscount coursePackageDiscount : list2) { + Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("num1"); + if(vipPrice.compareTo(num1) > 0){ + vipPrice = num1; + } + } + coursePackagePaymentConfigVo.setVipPrice(vipPrice); + + Double paymentPrice = coursePackagePaymentConfig.getCashPayment(); + List<TCoursePackageDiscount> list3 = coursePackageDiscountService.list(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId()) + .eq("type", 3).eq("auditStatus", 2)); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + for (TCoursePackageDiscount coursePackageDiscount : list3) { + /** + * [{ + * "startDate": "2023-01-01 00:00:00", + * "endDate": "2023-12-31 23:59:59", + * "startTime": "02:00:00", + * "endTime": "23:00:00", + * "weeks": [1, 2, 7], + * "cashPayment": 100 + * }] + */ + JSONArray jsonArray = JSON.parseArray(coursePackageDiscount.getContent()); + for (int i = 0; i < jsonArray.size(); i++) { + try { + JSONObject jsonObject = jsonArray.getJSONObject(i); + String startDate = jsonObject.getString("startDate"); + String endDate = jsonObject.getString("endDate"); + String startTime = jsonObject.getString("startTime"); + String endTime = jsonObject.getString("endTime"); + List<Integer> weeks = jsonObject.getJSONArray("weeks").toJavaList(Integer.class); + Double cashPayment = jsonObject.getDouble("cashPayment"); + Date startDate_date = sdf.parse(startDate); + Date endDate_date = sdf.parse(endDate); + long timeMillis = System.currentTimeMillis(); + if(timeMillis >= startDate_date.getTime() && timeMillis < endDate_date.getTime()){ + Date date = new Date(); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int week = calendar.get(Calendar.DAY_OF_WEEK); + boolean isFirstSunday = (calendar.getFirstDayOfWeek() == Calendar.SUNDAY); + if(isFirstSunday){ + week = week - 1; + if(week == 0){ + week = 7; + } + } + if(!weeks.contains(week)){ + continue; + } + + String[] split1 = startTime.split(":"); + Integer hour1 = Integer.valueOf(split1[0]); + Calendar s = Calendar.getInstance(); + s.setTime(date); + s.set(Calendar.HOUR_OF_DAY, hour1); + s.set(Calendar.MINUTE, Integer.valueOf(split1[1])); + s.set(Calendar.SECOND, Integer.valueOf(split1[2])); + + String[] split2 = endTime.split(":"); + Integer hour2 = Integer.valueOf(split2[0]); + Calendar e = Calendar.getInstance(); + e.setTime(date); + e.set(Calendar.HOUR_OF_DAY, hour2); + e.set(Calendar.MINUTE, Integer.valueOf(split2[1])); + e.set(Calendar.SECOND, Integer.valueOf(split2[2])); + + if(hour1 > hour2){ + if(s.getTimeInMillis() > date.getTime()){ + s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) - 1); + }else{ + e.set(Calendar.DAY_OF_YEAR, e.get(Calendar.DAY_OF_YEAR) + 1); + } + } + if(timeMillis >= s.getTimeInMillis() && timeMillis < e.getTimeInMillis() && paymentPrice.compareTo(cashPayment) > 0){ + paymentPrice = cashPayment; + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + } + coursePackagePaymentConfigVo.setPaymentPrice(paymentPrice); + }else{ + List<TCoursePackageDiscount> list2 = coursePackageDiscountService.list(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId()) + .eq("type", 1).eq("auditStatus", 2)); + Double vipPrice = coursePackagePaymentConfig.getCashPayment(); + for (TCoursePackageDiscount coursePackageDiscount : list2) { + Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("num1"); + if(vipPrice.compareTo(num1) > 0){ + vipPrice = num1; + } + } + coursePackagePaymentConfigVo.setPaymentPrice(vipPrice); + coursePackagePaymentConfigVo.setOriginalPrice(coursePackagePaymentConfig.getCashPayment()); + } + list.add(coursePackagePaymentConfigVo); + }); + coursePackageInfo.setList(list); + + Student student = studentClient.queryDefaultStudent(uid); + StudentVo studentVo = new StudentVo(); + studentVo.setId(student.getId()); + studentVo.setPhone(student.getPhone()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); + studentVo.setAge(Integer.valueOf(sdf.format(new Date())) - Integer.valueOf(sdf.format(student.getBirthday()))); + coursePackageInfo.setStudent(studentVo); + return coursePackageInfo; + } } -- Gitblit v1.7.1