From 265cbe3cc187758cd024e91e39dfd488d8486a33 Mon Sep 17 00:00:00 2001 From: liujie <liujie> Date: 星期六, 16 九月 2023 10:55:23 +0800 Subject: [PATCH] app 2.0 --- cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java | 719 +++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 574 insertions(+), 145 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 8111282..717e7c5 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 @@ -1,5 +1,6 @@ package com.dsh.course.service.impl; +import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -12,24 +13,29 @@ 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.account.model.TCourseInfoRecord; import com.dsh.course.feignclient.activity.CouponClient; import com.dsh.course.feignclient.activity.UserCouponClient; import com.dsh.course.feignclient.activity.model.Coupon; +import com.dsh.course.feignclient.activity.model.SendCouponReq; import com.dsh.course.feignclient.activity.model.UserCoupon; import com.dsh.course.feignclient.other.StoreClient; import com.dsh.course.feignclient.other.model.Store; +import com.dsh.course.mapper.CoursePackageStudentMapper; import com.dsh.course.mapper.TCoursePackageMapper; import com.dsh.course.feignclient.model.CourseOfStoreVo; import com.dsh.course.model.*; import com.dsh.course.service.*; import com.dsh.course.util.*; import com.dsh.course.util.httpClinet.HttpResult; +import org.omg.CORBA.INTERNAL; import org.springframework.beans.factory.annotation.Autowired; 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.*; import java.util.stream.Collectors; @@ -80,7 +86,8 @@ @Autowired private CoursePackageStudentService coursePackageStudentService; - + @Resource + private CoursePackageStudentMapper cpsMapper; @@ -133,13 +140,214 @@ coursePackageListVo.setName(coursePackage.getName()); coursePackageListVo.setStoreName(null != store ? store.getName() : ""); coursePackageListVo.setCoverDrawing(coursePackage.getCoverDrawing()); - coursePackageListVo.setClassStartTime(coursePackage.getClassStartTime() + "-" + coursePackage.getClassEndTime()); + + // 2.0修改 + String classStartTime = coursePackage.getClassStartTime(); + String classEndTime = coursePackage.getClassEndTime(); + ArrayList<String> classTime = new ArrayList<>(); + String[] split = classStartTime.split(","); + String[] split3 = classEndTime.split(","); + for (int i = 0; i < split.length; i++) { + String s = split[i] + "-" + split3[i]; + classTime.add(s); + } + coursePackageListVo.setClassStartTime(classTime); + coursePackageListVo.setType(coursePackage.getType()); + + + coursePackageListVo.setApplicantsNumber(integer); coursePackageListVo.setPayType(coursePackage.getPayType()); coursePackageListVo.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("discountMember"); + 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"); + 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(); + } + } + } + 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("discountMember"); + 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); + } + + //销量排行 + if(ToolUtil.isNotEmpty(coursePackageList.getSalesRanking())){ + Collections.sort(listVos, new Comparator<CoursePackageListVo>() { + public int compare(CoursePackageListVo s1, CoursePackageListVo s2) { + return Integer.compare(s1.getApplicantsNumber(), s2.getApplicantsNumber()); + } + }); + } + //距离排行 + if(ToolUtil.isNotEmpty(coursePackageList.getDistanceSort())){ + Collections.sort(listVos, new Comparator<CoursePackageListVo>() { + public int compare(CoursePackageListVo s1, CoursePackageListVo s2) { + return Double.compare(s1.getDistance(), s2.getDistance()); + } + }); + } + return listVos; + } + + + @Override + public List<CoursePackageListVo> queryCourseListOne(CoursePackageList coursePackageList) throws Exception { +// AppUser appUser = appUserClient.queryAppUser(uid); + Map<String, String> geocode = gdMapGeocodingUtil.geocode(coursePackageList.getLon(), coursePackageList.getLat()); + String provinceCode = geocode.get("provinceCode"); + String cityCode = geocode.get("cityCode"); + QueryWrapper<TCoursePackage> wrapper = new QueryWrapper<TCoursePackage>().in("status", Arrays.asList(1, 2)) + .eq("auditStatus", 2).eq("state", 1).eq("provinceCode", provinceCode).eq("cityCode", cityCode); + if(null != coursePackageList.getCoursePackageTypeId()){ + wrapper.eq("coursePackageTypeId", coursePackageList.getCoursePackageTypeId()); + } + if(null != coursePackageList.getStoreId()){ + wrapper.eq("storeId", coursePackageList.getStoreId()); + } + if(null != coursePackageList.getStoreId()){ + wrapper.eq("storeId", coursePackageList.getStoreId()); + } + if(ToolUtil.isNotEmpty(coursePackageList.getSearch())){ + wrapper.like("name", coursePackageList.getSearch()); + List<Store> stores = storeClient.queryStoreListByName(coursePackageList.getSearch()); + List<Integer> collect = stores.stream().map(Store::getId).collect(Collectors.toList()); + if(collect.size() > 0){ + wrapper.or().in("storeId", collect); + } + } + List<TCoursePackage> list = this.list(wrapper.last(" order by sort, insertTime desc")); + List<CoursePackageListVo> listVos = new ArrayList<>(); + for (TCoursePackage coursePackage : list) { + Store store = storeClient.queryStoreById(coursePackage.getStoreId()); + Integer integer = coursePackagePaymentService.queryCountNumber(coursePackage.getId()); + CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigService.getOne(new QueryWrapper<CoursePackagePaymentConfig>() + .eq("coursePackageId", coursePackage.getId()).orderByAsc("classHours").last(" limit 0, 1")); + CoursePackageListVo coursePackageListVo = new CoursePackageListVo(); + coursePackageListVo.setId(coursePackage.getId()); + coursePackageListVo.setName(coursePackage.getName()); + coursePackageListVo.setStoreName(null != store ? store.getName() : ""); + coursePackageListVo.setCoverDrawing(coursePackage.getCoverDrawing()); + + // 2.0修改 + String classStartTime = coursePackage.getClassStartTime(); + String classEndTime = coursePackage.getClassEndTime(); + ArrayList<String> classTime = new ArrayList<>(); + String[] split = classStartTime.split(","); + String[] split3 = classEndTime.split(","); + for (int i = 0; i < split.length; i++) { + String s = split[i] + "-" + split3[i]; + classTime.add(s); + } + coursePackageListVo.setClassStartTime(classTime); + coursePackageListVo.setType(coursePackage.getType()); + + + + coursePackageListVo.setApplicantsNumber(integer); + coursePackageListVo.setPayType(coursePackage.getPayType()); + coursePackageListVo.setPlayPaiCoin(coursePackagePaymentConfig.getPlayPaiCoin()); + + //会员显示原价和会员价(最低)。非会员显示会员价和支付价(最低) + if(false){//非会员 List<TCoursePackageDiscount> list2 = coursePackageDiscountService.list(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId()) .eq("type", 1).eq("auditStatus", 2)); Double vipPrice = coursePackagePaymentConfig.getCashPayment(); @@ -276,155 +484,168 @@ */ @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()); - 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(); - coursePackageInfo.setDistance(wgs84); - } + 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()); + 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(); + 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("discountMember"); - if(vipPrice.compareTo(num1) > 0){ - vipPrice = num1; - } - } - coursePackagePaymentConfigVo.setVipPrice(vipPrice); + String[] split = coursePackage.getClassWeeks().split(";"); + coursePackageInfo.setWeeks(Arrays.asList(split)); - 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; - } + // 2.0 + String classStartTime = coursePackage.getClassStartTime(); + String classEndTime = coursePackage.getClassEndTime(); + ArrayList<String> classTime = new ArrayList<>(); + String[] split4 = classStartTime.split(","); + String[] split3 = classEndTime.split(","); + for (int i = 0; i < split4.length; i++) { + String s = split4[i] + "-" + split3[i]; + classTime.add(s); + } + coursePackageInfo.setTimes(classTime); + coursePackageInfo.setType(coursePackage.getType()); - 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(); + 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("discountMember"); + if(vipPrice.compareTo(num1) > 0){ + vipPrice = num1; } } - } - 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("discountMember"); - if(vipPrice.compareTo(num1) > 0){ - vipPrice = num1; - } - } - coursePackagePaymentConfigVo.setPaymentPrice(vipPrice); - coursePackagePaymentConfigVo.setOriginalPrice(coursePackagePaymentConfig.getCashPayment()); - } - list.add(coursePackagePaymentConfigVo); - }); - coursePackageInfo.setList(list); + coursePackagePaymentConfigVo.setVipPrice(vipPrice); - Student student = studentClient.queryDefaultStudent(uid); - StudentVo studentVo = new StudentVo(); - if(null != student){ - studentVo.setId(student.getId()); - studentVo.setPhone(student.getPhone()); - studentVo.setName(student.getName()); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); - studentVo.setAge(Integer.valueOf(sdf.format(new Date())) - Integer.valueOf(sdf.format(student.getBirthday()))); - } - coursePackageInfo.setStudent(studentVo); - return coursePackageInfo; + 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("discountMember"); + 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(); + if(null != student){ + studentVo.setId(student.getId()); + studentVo.setPhone(student.getPhone()); + studentVo.setName(student.getName()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); + studentVo.setAge(Integer.valueOf(sdf.format(new Date())) - Integer.valueOf(sdf.format(student.getBirthday()))); + } + coursePackageInfo.setStudent(studentVo); + return coursePackageInfo; } @@ -511,6 +732,8 @@ } return playPaiCoinPaymentCourse(appUser, price, paymentCourseVo); } + + return ResultUtil.success(); } @@ -551,8 +774,14 @@ coursePackagePaymentService.save(coursePackagePayment); } + Student student = studentClient.queryDefaultStudent(uid); + Integer sid=null; + if(student!=null){ + sid=student.getId(); + } ResultUtil weixinpay = payMoneyUtil.weixinpay("购买课程", "", code, paymentPrice.toString(), "/base/course/weChatPaymentCourseCallback", "APP", ""); if(weixinpay.getCode() == 200){ + Integer finalSid = sid; new Thread(new Runnable() { @Override public void run() { @@ -595,6 +824,10 @@ coursePackagePayment.setOrderNumber(transaction_id); } coursePackagePaymentService.updateBatchById(list); + // 2.0 + userCouponClient.sendUserCoupon(new SendCouponReq(uid,coursePackagePaymentConfig.getCouponIds())); + + addPackageStudent(paymentCourseVo.getId(),uid, finalSid,one.getId()); break; } if("USERPAYING".equals(s)){ @@ -648,8 +881,15 @@ coursePackagePaymentService.save(coursePackagePayment); } + Student student = studentClient.queryDefaultStudent(uid); + Integer sid=null; + if(student!=null){ + sid=student.getId(); + } + ResultUtil alipay = payMoneyUtil.alipay("购买课程", "购买课程", "", code, paymentPrice.toString(), "/base/course/aliPaymentCourseCallback"); if(alipay.getCode() == 200){ + Integer finalSid = sid; new Thread(new Runnable() { @Override public void run() { @@ -689,6 +929,16 @@ coursePackagePayment.setOrderNumber(tradeNo); } coursePackagePaymentService.updateBatchById(list); + + // 2.0 + userCouponClient.sendUserCoupon(new SendCouponReq(uid,coursePackagePaymentConfig.getCouponIds())); + + + + if(student!=null){ + + } + addPackageStudent(paymentCourseVo.getId(),uid, finalSid,one.getId()); break; } if("WAIT_BUYER_PAY".equals(s)){ @@ -739,12 +989,181 @@ coursePackagePayment.setState(1); coursePackagePayment.setInsertTime(new Date()); coursePackagePaymentService.save(coursePackagePayment); + Integer sId=null; + Student student = studentClient.queryDefaultStudent(appUser.getId()); + if(student!=null){ + sId=student.getId(); + } + addPackageStudent(paymentCourseVo.getId(),appUser.getId(),sId,coursePackagePayment.getId()); } Integer playPaiCoins = appUser.getPlayPaiCoins(); appUser.setPlayPaiCoins(playPaiCoins - paymentPrice.intValue()); appUserClient.updateAppUser(appUser); + + // 2.0 + String couponIds = coursePackagePaymentConfig.getCouponIds(); + if(ToolUtil.isNotEmpty(couponIds)){ + // 赠送优惠券 + userCouponClient.sendUserCoupon(new SendCouponReq(appUser.getId(),couponIds)); + } return ResultUtil.success(); + } + + + private void addPackageStudent(Integer courseId, Integer userId, Integer sId,Long paymentId){ + // 课包 + TCoursePackage tCoursePackage = this.baseMapper.selectById(courseId); + + + + String classWeeks = tCoursePackage.getClassWeeks(); + List<Integer> week = week(classWeeks); + + String[] split = tCoursePackage.getClassStartTime().split(","); + String[] split1 = tCoursePackage.getClassEndTime().split(","); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + // 本周周几 + int i = DateUtil.dayOfWeek(new Date())-1; + for (Integer integer : week) { + if(integer<i){ + // 找下一周的时间 + Calendar instance = Calendar.getInstance(); + instance.add(Calendar.DATE,7-(i-integer)); + Date time = instance.getTime(); + + for (int i1 = 0; i1 < split.length; i1++) { + + CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling(); + coursePackageScheduling.setCourseId(tCoursePackage.getId()); + try { + Date parse = format1.parse(format.format(time) + " " + split[i1]); + Date parse1 = format1.parse(format.format(time) + " " + split1[i1]); + coursePackageScheduling.setClassDate(parse); + coursePackageScheduling.setEndDate(parse1); + coursePackageScheduling.setStatus(1); + coursePackageSchedulingService.save(coursePackageScheduling); + + CoursePackageStudent student1 = new CoursePackageStudent(); + student1.setAppUserId(userId); + student1.setStudentId(sId); + student1.setCoursePackageId(tCoursePackage.getId()); + student1.setCoursePackagePaymentId(paymentId); + student1.setCoursePackageSchedulingId(coursePackageScheduling.getId()); + student1.setSignInOrNot(0); + student1.setReservationStatus(1); + student1.setInsertTime(new Date()); + cpsMapper.insert(student1); + } catch (ParseException e) { + e.printStackTrace(); + } + + } + + }else if(integer>i) { + Calendar instance = Calendar.getInstance(); + instance.add(Calendar.DATE,integer-i); + Date time = instance.getTime(); + + for (int i1 = 0; i1 < split.length; i1++) { + CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling(); + coursePackageScheduling.setCourseId(tCoursePackage.getId()); + try { + Date parse = format1.parse(format.format(time) + " " + split[i1]); + Date parse1 = format1.parse(format.format(time) + " " + split1[i1]); + coursePackageScheduling.setClassDate(parse); + coursePackageScheduling.setEndDate(parse1); + coursePackageScheduling.setStatus(1); + coursePackageSchedulingService.save(coursePackageScheduling); + + CoursePackageStudent student1 = new CoursePackageStudent(); + student1.setAppUserId(userId); + student1.setStudentId(sId); + student1.setCoursePackageId(tCoursePackage.getId()); + student1.setCoursePackagePaymentId(paymentId); + student1.setCoursePackageSchedulingId(coursePackageScheduling.getId()); + student1.setSignInOrNot(0); + student1.setReservationStatus(1); + student1.setInsertTime(new Date()); + cpsMapper.insert(student1); + } catch (ParseException e) { + e.printStackTrace(); + } + } + }else { + Calendar instance = Calendar.getInstance(); + instance.add(Calendar.DATE,7); + Date time = instance.getTime(); + + for (int i1 = 0; i1 < split.length; i1++) { + CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling(); + coursePackageScheduling.setCourseId(tCoursePackage.getId()); + try { + Date parse = format1.parse(format.format(time) + " " + split[i1]); + Date parse1 = format1.parse(format.format(time) + " " + split1[i1]); + coursePackageScheduling.setClassDate(parse); + coursePackageScheduling.setEndDate(parse1); + coursePackageScheduling.setStatus(1); + coursePackageSchedulingService.save(coursePackageScheduling); + + CoursePackageStudent student1 = new CoursePackageStudent(); + student1.setAppUserId(userId); + student1.setStudentId(sId); + student1.setCoursePackageId(tCoursePackage.getId()); + student1.setCoursePackagePaymentId(paymentId); + student1.setCoursePackageSchedulingId(coursePackageScheduling.getId()); + student1.setSignInOrNot(0); + student1.setReservationStatus(1); + student1.setInsertTime(new Date()); + cpsMapper.insert(student1); + } catch (ParseException e) { + e.printStackTrace(); + } + } + } + } + // 2.0 + TCourseInfoRecord tCourseInfoRecord = new TCourseInfoRecord(); + tCourseInfoRecord.setUserId(userId); + tCourseInfoRecord.setCourseId(courseId); + tCourseInfoRecord.setName("报名假期班"); + tCourseInfoRecord.setNum(tCoursePackage.getNeedNum()); + tCourseInfoRecord.setTime(new Date()); + tCourseInfoRecord.setType(2); + appUserClient.addCourseInfoRecord(tCourseInfoRecord); + + + } + private List<Integer> week(String week){ + String[] split = week.split(";"); + ArrayList<Integer> integers = new ArrayList<>(); + for (String s : split) { + switch (s){ + case "周一": + integers.add(1); + break; + case "周二": + integers.add(2); + break; + case "周三": + integers.add(3); + break; + case "周四": + integers.add(4); + break; + case "周五": + integers.add(5); + break; + case "周六": + integers.add(6); + break; + case "周日": + integers.add(7); + break; + } + } + return integers; } @@ -961,4 +1380,14 @@ public String getHours(Integer coursePackageId) { return this.baseMapper.getHours(coursePackageId); } + + @Override + public ResultUtil paymentCourseCouponList(Integer uid, Integer coursePackagePaymentConfigId) { + CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigService.getById(coursePackagePaymentConfigId); + if(ToolUtil.isEmpty(coursePackagePaymentConfig.getCouponIds())){ + coursePackagePaymentConfig.setCouponIds("-1"); + } + List<Coupon> coupons = couponClient.getCoupons(coursePackagePaymentConfig.getCouponIds()); + return ResultUtil.success(coupons); + } } -- Gitblit v1.7.1