From ee9cb0da4a43bcf523ebb157678f64a2895fba1a Mon Sep 17 00:00:00 2001 From: nickchange <126672920+nickchange@users.noreply.github.com> Date: 星期二, 10 十月 2023 15:30:38 +0800 Subject: [PATCH] 10.10 --- cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java | 351 ++++++++++++++++++++++++++++++---------------------------- 1 files changed, 182 insertions(+), 169 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 aa8c8de..f0e8c04 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 @@ -3,7 +3,9 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.course.entity.CoursePackagePaymentConfig; import com.dsh.course.entity.TCoursePackage; @@ -16,12 +18,13 @@ import com.dsh.course.mapper.TCoursePackageDiscountMapper; import com.dsh.course.mapper.TCoursePackageMapper; import com.dsh.course.mapper.TCoursePackagePaymentMapper; +import com.dsh.course.model.DiscountList; +import com.dsh.course.model.QueryDiscountList; +import com.dsh.course.model.vo.response.Details; import com.dsh.course.model.vo.response.ExchangeCoursePackageResponse; -import com.dsh.course.model.vo.response.WeekLimitedResponse; import com.dsh.course.service.TCoursePackageDiscountService; import com.dsh.course.util.DateTimeHelper; import com.dsh.course.util.LocalDateTimeUtils; -import com.dsh.course.util.ResultUtil; import com.dsh.course.util.StrUtils; import org.springframework.stereotype.Service; @@ -59,12 +62,11 @@ @Override - public WeekLimitedResponse getWeeksBenefitCourse(Integer appUserId, Integer discountType, String lon, String lat) { + public List<Details> getWeeksBenefitCourse(Integer appUserId, Integer discountType, String lon, String lat) { Date localTime = DateTimeHelper.getWXTime(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - WeekLimitedResponse response = new WeekLimitedResponse(); - List<WeekLimitedResponse.Details> list = new ArrayList<>(); + List<Details> list = new ArrayList<>(); QueryWrapper<TCoursePackageDiscount> tCoursePackageDiscountQueryWrapper = new QueryWrapper<>(); tCoursePackageDiscountQueryWrapper.eq("auditStatus", 2); @@ -72,7 +74,6 @@ int weekStr = LocalDateTimeUtils.getWeekStr(); if (null == discountType || discountType == 1) { tCoursePackageDiscountQueryWrapper.eq("type", 3); - response.setDiscountType(1); tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper); if (tCoursePackageDiscounts.size() > 0) { for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) { @@ -85,16 +86,6 @@ if (integer >= maxSubscribeNumber){ continue; } - /** - * [{ - * "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 - * }] - */ try { JSONArray jsonArray = JSON.parseArray(tCoursePackageDiscount.getContent()); JSONObject jsonObject = jsonArray.getJSONObject(0); @@ -126,7 +117,7 @@ if (isWithinRange) { // 判断当前日期是否在开始时间和结束时间范围内 if (isDateWithinRange(localTime, parse1, parse2)) { - WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details(); + Details resde = new Details(); resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId()); resde.setImage(coursePackage.getCoverDrawing()); @@ -142,7 +133,8 @@ distanceVo.setLatitude(lat); distanceVo.setLongitude(lon); distanceVo.setStoreId(coursePackage.getStoreId()); - resde.setStoreDistance(sreClient.calculateDistance(distanceVo)); + String s = sreClient.calculateDistance(distanceVo); + resde.setStoreDistance(s); list.add(resde); } } @@ -154,7 +146,7 @@ Date tempDate = tempCalendar.getTime(); int weekNumOfDate = DateTimeHelper.getWeekNumOfDate(tempDate); if (isDateWithinRange(tempDate, parse1, parse2) && weeks.contains(weekNumOfDate)) { - WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details(); + Details resde = new Details(); resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId()); resde.setImage(coursePackage.getCoverDrawing()); @@ -186,133 +178,125 @@ e.printStackTrace(); } } - } else { - tCoursePackageDiscountQueryWrapper.eq("type", 4); - response.setDiscountType(2); - tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper); - if (tCoursePackageDiscounts.size() > 0) { - for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) { - TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId()); + } + }else { + tCoursePackageDiscountQueryWrapper.eq("type", 4); + tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper); + if (tCoursePackageDiscounts.size() > 0) { + 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; - } -// [{ -// "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], -// "hour": 10 -// }] + 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); + Date parse1 = null; + Date parse2 = null; + String startDate = jsonObject.getString("startDate"); + String endDate = jsonObject.getString("endDate"); try { - JSONArray jsonArray = JSON.parseArray(tCoursePackageDiscount.getContent()); - JSONObject jsonObject = jsonArray.getJSONObject(0); - Date parse1 = null; - Date parse2 = null; - String startDate = jsonObject.getString("startDate"); - String endDate = jsonObject.getString("endDate"); - try { - parse1 = simpleDateFormat.parse(startDate); - parse2 = simpleDateFormat.parse(endDate); - } catch (ParseException e) { - throw new RuntimeException(e); - } - List<Integer> weeks = jsonObject.getJSONArray("weeks").toJavaList(Integer.class); - Integer cashPayment = jsonObject.getInteger("hour"); - - Date tomorrowDate = null; - if (weekStr != 7) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(localTime); - calendar.add(Calendar.DAY_OF_WEEK, 1); - tomorrowDate = calendar.getTime(); - } - - boolean isWithinRange = false; - if (weeks.contains(weekStr)) { - isWithinRange = true; - } - - if (isWithinRange) { - // 判断当前日期是否在开始时间和结束时间范围内 - if (isDateWithinRange(localTime, parse1, parse2)) { - WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details(); - - resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId()); - resde.setImage(coursePackage.getCoverDrawing()); - resde.setCoursePackageName(coursePackage.getName()); - CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId()); - resde.setCourseHours(paymentConfig.getClassHours()); - resde.setDonateHours(cashPayment); - resde.setDataTime("今日"); - resde.setDate(localTime); - resde.setOriginalPrice(paymentConfig.getCashPayment()); - resde.setStatus(1); - GetDistanceVo distanceVo = new GetDistanceVo(); - distanceVo.setLatitude(lat); - distanceVo.setLongitude(lon); - distanceVo.setStoreId(coursePackage.getStoreId()); - resde.setStoreDistance(sreClient.calculateDistance(distanceVo)); - list.add(resde); - } - } - Calendar tempCalendar = Calendar.getInstance(); - tempCalendar.setTime(localTime); - tempCalendar.add(Calendar.DAY_OF_WEEK, 1); - - while (tempCalendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) { - Date tempDate = tempCalendar.getTime(); - int weekNumOfDate = DateTimeHelper.getWeekNumOfDate(tempDate); - if (isDateWithinRange(tempDate, parse1, parse2) && weeks.contains(weekNumOfDate)) { - WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details(); - - resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId()); - resde.setImage(coursePackage.getCoverDrawing()); - resde.setCoursePackageName(coursePackage.getName()); - CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId()); - resde.setCourseHours(paymentConfig.getClassHours()); - resde.setDonateHours(cashPayment); - String weekOfDate = ""; - if (weekStr != 7 && tempDate.equals(tomorrowDate)) { - weekOfDate = "明日"; - } else { - weekOfDate = DateTimeHelper.getWeekOfDate(tempDate); - } - resde.setDataTime(weekOfDate); - resde.setDate(tempDate); - resde.setOriginalPrice(paymentConfig.getCashPayment()); - resde.setStatus(2); - GetDistanceVo distanceVo = new GetDistanceVo(); - distanceVo.setLatitude(lat); - distanceVo.setLongitude(lon); - distanceVo.setStoreId(coursePackage.getStoreId()); - resde.setStoreDistance(sreClient.calculateDistance(distanceVo)); - list.add(resde); - } - tempCalendar.add(Calendar.DAY_OF_WEEK, 1); - } - - } catch (Exception e) { - e.printStackTrace(); + parse1 = simpleDateFormat.parse(startDate); + parse2 = simpleDateFormat.parse(endDate); + } catch (ParseException e) { + throw new RuntimeException(e); } + List<Integer> weeks = jsonObject.getJSONArray("weeks").toJavaList(Integer.class); + Integer cashPayment = jsonObject.getInteger("hour"); + + Date tomorrowDate = null; + if (weekStr != 7) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(localTime); + calendar.add(Calendar.DAY_OF_WEEK, 1); + tomorrowDate = calendar.getTime(); + } + + boolean isWithinRange = false; + if (weeks.contains(weekStr)) { + isWithinRange = true; + } + + if (isWithinRange) { + // 判断当前日期是否在开始时间和结束时间范围内 + if (isDateWithinRange(localTime, parse1, parse2)) { + Details resde = new Details(); + + resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId()); + resde.setImage(coursePackage.getCoverDrawing()); + resde.setCoursePackageName(coursePackage.getName()); + CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId()); + resde.setCourseHours(paymentConfig.getClassHours()); + resde.setDonateHours(cashPayment); + resde.setDataTime("今日"); + resde.setDate(localTime); + resde.setOriginalPrice(paymentConfig.getCashPayment()); + resde.setStatus(1); + GetDistanceVo distanceVo = new GetDistanceVo(); + distanceVo.setLatitude(lat); + distanceVo.setLongitude(lon); + distanceVo.setStoreId(coursePackage.getStoreId()); + resde.setStoreDistance(sreClient.calculateDistance(distanceVo)); + list.add(resde); + } + } + Calendar tempCalendar = Calendar.getInstance(); + tempCalendar.setTime(localTime); + tempCalendar.add(Calendar.DAY_OF_WEEK, 1); + + while (tempCalendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) { + Date tempDate = tempCalendar.getTime(); + int weekNumOfDate = DateTimeHelper.getWeekNumOfDate(tempDate); + if (isDateWithinRange(tempDate, parse1, parse2) && weeks.contains(weekNumOfDate)) { + Details resde = new Details(); + + resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId()); + resde.setImage(coursePackage.getCoverDrawing()); + resde.setCoursePackageName(coursePackage.getName()); + CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId()); + resde.setCourseHours(paymentConfig.getClassHours()); + resde.setDonateHours(cashPayment); + String weekOfDate = ""; + if (weekStr != 7 && tempDate.equals(tomorrowDate)) { + weekOfDate = "明日"; + } else { + weekOfDate = DateTimeHelper.getWeekOfDate(tempDate); + } + resde.setDataTime(weekOfDate); + resde.setDate(tempDate); + resde.setOriginalPrice(paymentConfig.getCashPayment()); + resde.setStatus(2); + GetDistanceVo distanceVo = new GetDistanceVo(); + distanceVo.setLatitude(lat); + distanceVo.setLongitude(lon); + distanceVo.setStoreId(coursePackage.getStoreId()); + resde.setStoreDistance(sreClient.calculateDistance(distanceVo)); + list.add(resde); + } + tempCalendar.add(Calendar.DAY_OF_WEEK, 1); + } + + } catch (Exception e) { + e.printStackTrace(); } } } } - return response; + System.out.println("list"+list); + return list; } @Override public ExchangeCoursePackageResponse getWeekFreeCourseDetails(Integer coursePackageDiscountId,String lat,String lon) { ExchangeCoursePackageResponse packageResponse = new ExchangeCoursePackageResponse(); TCoursePackageDiscount coursePackageDiscount = this.baseMapper.selectById(coursePackageDiscountId); - packageResponse.setCoursePackageDiscountId(coursePackageDiscount.getId()); Integer coursePackageId = coursePackageDiscount.getCoursePackageId(); + packageResponse.setCoursePackageDiscountId(coursePackageId); TCoursePackage coursePackage = tcpMapper.selectById(coursePackageId); @@ -327,9 +311,11 @@ distanceVo.setLatitude(lat); distanceVo.setLongitude(lon); distanceVo.setStoreId(coursePackage.getStoreId()); - long l = sreClient.calculateDistance(distanceVo); - packageResponse.setDistance(l); - + String s = sreClient.calculateDistance(distanceVo); + packageResponse.setDistance(Double.valueOf(s)); + if (coursePackageDiscount.getType() == 1 || coursePackageDiscount.getType() == 2){ + return packageResponse; + } JSONArray jsonArray = JSON.parseArray(coursePackageDiscount.getContent()); JSONObject jsonObject = jsonArray.getJSONObject(0); CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(coursePackageDiscount.getCoursePackagePaymentConfigId()); @@ -354,37 +340,13 @@ packageResponse.setDiscountPrice(vipPrice); packageResponse.setWanpaiGold(paymentConfig.getPlayPaiCoin()); } - List<Integer> weeks = StrUtils.dealStrToList(coursePackage.getClassWeeks()); - if (weeks.size() > 0){ + String[] split = coursePackage.getClassWeeks().split(";"); + if (split.length > 0){ StringBuilder courWeeks = new StringBuilder("每"); - for (Integer integer : weeks) { - switch (integer){ - case 1: - courWeeks.append("周一、"); - break; - case 2: - courWeeks.append("周二、"); - break; - case 3: - courWeeks.append("周三、"); - break; - case 4: - courWeeks.append("周四、"); - break; - case 5: - courWeeks.append("周五、"); - break; - case 6: - courWeeks.append("周六、"); - break; - case 7: - courWeeks.append("周末、"); - break; - default: - break; - } + for (String integer : split) { + courWeeks.append(integer).append("、"); } - if (courWeeks.length() > 0 && courWeeks.charAt(courWeeks.length() - 1) == ','){ + if (courWeeks.length() > 0 && courWeeks.charAt(courWeeks.length() - 1) == '、'){ courWeeks.deleteCharAt(courWeeks.length() - 1); } packageResponse.setWeekTime(courWeeks.toString()); @@ -393,13 +355,64 @@ return packageResponse; } - @Override - public ResultUtil paymentDiscountCoursePack(Integer coursePackageDiscountId, Integer appuserId) { - // TODO: 2023/7/13 折扣课包支付 - return null; + public List<DiscountList> queryDiscountListAudit(QueryDiscountList queryDiscountList) { + Page<DiscountList> discountListPage = new Page<>(queryDiscountList.getOffset(), queryDiscountList.getLimit()); + List<DiscountList> discountLists = this.baseMapper.queryDiscountListAudit(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()).ne(TCoursePackageDiscount::getAuditStatus,2).orderByAsc(TCoursePackageDiscount::getType)); + long count = tCoursePackageDiscounts.stream().filter(e -> e.getAuditStatus().equals(2)).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){ + type += "会员折扣、"; + }else if(tCoursePackageDiscounts.get(i).getType()==3){ + type += "限时折扣、"; + }else if(tCoursePackageDiscounts.get(i).getType()==4){ + type += "赠送课时、"; + } + } + if(type.length()>0){ + type = type.substring(0,type.length()-1); + } + discountList.setType(type); + } + return discountLists; } - + @Override + public List<DiscountList> queryDiscountList(QueryDiscountList queryDiscountList) { + Page<DiscountList> discountListPage = new Page<>(queryDiscountList.getOffset(), queryDiscountList.getLimit()); + 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()).eq(TCoursePackageDiscount::getAuditStatus,2).orderByAsc(TCoursePackageDiscount::getType)); + long count = tCoursePackageDiscounts.stream().filter(e -> e.getStatus().equals(2)).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){ + type += "会员折扣、"; + }else if(tCoursePackageDiscounts.get(i).getType()==3){ + type += "限时折扣、"; + }else if(tCoursePackageDiscounts.get(i).getType()==4){ + type += "赠送课时、"; + } + } + if(type.length()>0){ + type = type.substring(0,type.length()-1); + } + discountList.setType(type); + } + return discountLists; + } private static boolean isDateWithinRange(Date date, Date startTime, Date endTime) { return date.after(startTime) && date.before(endTime); -- Gitblit v1.7.1