From dfb7c31b6591f9bb53182b3023f0be1d496a7d1a Mon Sep 17 00:00:00 2001 From: lisy <linlangsur163@163.com> Date: 星期一, 14 八月 2023 13:54:32 +0800 Subject: [PATCH] 管理后台:添加优惠券和积分商品的优化 --- cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java | 239 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 223 insertions(+), 16 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 387bc81..7358a5e 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 @@ -5,11 +5,9 @@ import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.common.utils.UuidUtils; 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; -import com.dsh.course.entity.TCoursePackageDiscount; -import com.dsh.course.entity.TCoursePackagePayment; +import com.dsh.course.entity.*; import com.dsh.course.feignclient.account.AppUserClient; import com.dsh.course.feignclient.account.StudentClient; import com.dsh.course.feignclient.account.model.AppUser; @@ -23,10 +21,7 @@ import com.dsh.course.mapper.TCoursePackageMapper; import com.dsh.course.feignclient.model.CourseOfStoreVo; import com.dsh.course.model.*; -import com.dsh.course.service.ICoursePackagePaymentConfigService; -import com.dsh.course.service.TCoursePackageDiscountService; -import com.dsh.course.service.TCoursePackagePaymentService; -import com.dsh.course.service.TCoursePackageService; +import com.dsh.course.service.*; import com.dsh.course.util.*; import com.dsh.course.util.httpClinet.HttpResult; import org.springframework.beans.factory.annotation.Autowired; @@ -79,6 +74,12 @@ @Autowired private PayMoneyUtil payMoneyUtil; + + @Autowired + private ICoursePackageSchedulingService coursePackageSchedulingService; + + @Autowired + private CoursePackageStudentService coursePackageStudentService; @@ -135,7 +136,7 @@ coursePackageListVo.setClassStartTime(coursePackage.getClassStartTime() + "-" + coursePackage.getClassEndTime()); coursePackageListVo.setApplicantsNumber(integer); coursePackageListVo.setPayType(coursePackage.getPayType()); - coursePackageListVo.setPlayPaiCoin(coursePackageListVo.getPlayPaiCoin()); + coursePackageListVo.setPlayPaiCoin(coursePackagePaymentConfig.getPlayPaiCoin()); //会员显示原价和会员价(最低)。非会员显示会员价和支付价(最低) if(appUser.getIsVip() == 0){//非会员 @@ -143,7 +144,7 @@ .eq("type", 1).eq("auditStatus", 2)); Double vipPrice = coursePackagePaymentConfig.getCashPayment(); for (TCoursePackageDiscount coursePackageDiscount : list2) { - Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("num1"); + Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("discountMember"); if(vipPrice.compareTo(num1) > 0){ vipPrice = num1; } @@ -232,7 +233,7 @@ .eq("type", 1).eq("auditStatus", 2)); Double vipPrice = coursePackagePaymentConfig.getCashPayment(); for (TCoursePackageDiscount coursePackageDiscount : list2) { - Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("num1"); + Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("discountMember"); if(vipPrice.compareTo(num1) > 0){ vipPrice = num1; } @@ -312,7 +313,7 @@ .eq("type", 1).eq("auditStatus", 2)); Double vipPrice = coursePackagePaymentConfig.getCashPayment(); for (TCoursePackageDiscount coursePackageDiscount : list2) { - Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("num1"); + Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("discountMember"); if(vipPrice.compareTo(num1) > 0){ vipPrice = num1; } @@ -401,7 +402,7 @@ .eq("type", 1).eq("auditStatus", 2)); Double vipPrice = coursePackagePaymentConfig.getCashPayment(); for (TCoursePackageDiscount coursePackageDiscount : list2) { - Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("num1"); + Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("discountMember"); if(vipPrice.compareTo(num1) > 0){ vipPrice = num1; } @@ -479,8 +480,9 @@ } if(coupon.getType() == 1){//满减 JSONObject jsonObject = JSON.parseObject(coupon.getContent()); - Double num1 = jsonObject.getDouble("num1"); - Double num2 = jsonObject.getDouble("num2"); +// {"conditionalAmount":50,"deductionAmount":10,"experienceName":""} + Double num1 = jsonObject.getDouble("conditionalAmount"); + Double num2 = jsonObject.getDouble("deductionAmount"); if(price.compareTo(num1) <= 0){ return ResultUtil.error("该优惠券无法使用"); } @@ -489,7 +491,7 @@ } if(coupon.getType() == 2){//代金券 JSONObject jsonObject = JSON.parseObject(coupon.getContent()); - Double num1 = jsonObject.getDouble("num1"); + Double num1 = jsonObject.getDouble("conditionalAmount"); if(price.compareTo(num1) <= 0){ return ResultUtil.error("该优惠券无法使用"); } @@ -744,4 +746,209 @@ appUserClient.updateAppUser(appUser); return ResultUtil.success(); } + + + /** + * 获取课包管理列表数据 + * @param queryCoursePackageLists + * @return + */ + @Override + public List<Map<String, Object>> queryCoursePackageLists(Page<Map<String, Object>> page, QueryCoursePackageLists queryCoursePackageLists) { + List<Map<String, Object>> list = this.baseMapper.queryCoursePackageLists(page, queryCoursePackageLists); + for (Map<String, Object> map : list) { + Integer id = Integer.valueOf(map.get("id").toString()); + Integer integer = coursePackagePaymentService.queryCountNumber(id); + map.put("paymentNumber", integer); + + boolean cash = false; + boolean coin = false; + List<CoursePackagePaymentConfig> coursePackagePaymentConfigs = coursePackagePaymentConfigService.list(new QueryWrapper<CoursePackagePaymentConfig>().eq("coursePackageId", id)); + for (CoursePackagePaymentConfig coursePackagePaymentConfig : coursePackagePaymentConfigs) { + if(0 != coursePackagePaymentConfig.getCashPayment()){ + cash = true; + } + if(0 != coursePackagePaymentConfig.getPlayPaiCoin()){ + coin = true; + } + } + map.put("payType", (cash ? "现金支付" : "") + (coin ? cash ? "&玩湃币支付" : "玩湃币支付" : "")); + } + return list; + } + + + /** + * 添加课包 + * @param coursePackage + * @return + */ + @Override + public Integer addCoursePackage(TCoursePackage coursePackage) { + try { + this.baseMapper.insert(coursePackage); + //生成排课数据 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = sdf1.parse(sdf.format(new Date()) + " 00:00:00"); + List<String> list = Arrays.asList(coursePackage.getClassWeeks().split(";")); + String classStartTime = coursePackage.getClassStartTime(); + String[] split = classStartTime.split(":"); + String classEndTime = coursePackage.getClassEndTime(); + String[] split1 = classEndTime.split(":"); + Calendar s = Calendar.getInstance(); + s.setTime(date); + s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1); + s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0])); + s.set(Calendar.MINUTE, Integer.valueOf(split[1])); + s.set(Calendar.SECOND, 0); + + Calendar e = Calendar.getInstance(); + e.setTime(date); + e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 13); + long timeInMillis = e.getTimeInMillis(); + + while (true){ + int w = s.get(Calendar.DAY_OF_WEEK); + WeekEnum weekEnum = WeekEnum.getWeekEnum(w); + if(list.contains(weekEnum.getChineseName())){ + Calendar classDate = Calendar.getInstance(); + classDate.setTime(s.getTime()); + classDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0])); + classDate.set(Calendar.MINUTE, Integer.valueOf(split[1])); + classDate.set(Calendar.SECOND, 0); + + Calendar endDate = Calendar.getInstance(); + endDate.setTime(s.getTime()); + endDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0])); + endDate.set(Calendar.MINUTE, Integer.valueOf(split1[1])); + endDate.set(Calendar.SECOND, 0); + + CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling(); + coursePackageScheduling.setCoursePackageId(coursePackage.getId()); + coursePackageScheduling.setClassDate(classDate.getTime()); + coursePackageScheduling.setEndDate(endDate.getTime()); + coursePackageScheduling.setStatus(1); + coursePackageSchedulingService.save(coursePackageScheduling); + } + s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1); + if(s.getTimeInMillis() > timeInMillis){ + break; + } + } + return coursePackage.getId(); + }catch (Exception e){ + e.printStackTrace(); + return null; + } + } + + + /** + * 修改数据 + * @param coursePackage + */ + @Override + public void updateCoursePackageById(TCoursePackage coursePackage) { + try { + List<CoursePackageStudent> coursePackageStudents = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("coursePackageId", coursePackage.getId())); + List<Long> collect = coursePackageStudents.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList()); + + QueryWrapper<CoursePackageScheduling> coursePackageSchedulingQueryWrapper = new QueryWrapper<CoursePackageScheduling>().eq("coursePackageId", coursePackage.getId()); + if(collect.size() > 0){ + coursePackageSchedulingQueryWrapper.notIn("id", collect); + } + coursePackageSchedulingService.remove(coursePackageSchedulingQueryWrapper); + + this.baseMapper.updateById(coursePackage); + //生成排课数据 + Date date = null; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>().eq("coursePackageId", coursePackage.getId()).last(" and classDate > now() order by classDate desc limit 0, 1")); + if(null != coursePackageScheduling){ + date = sdf1.parse(sdf.format(coursePackageScheduling.getClassDate()) + " 00:00:00"); + }else{ + date = sdf1.parse(sdf.format(new Date()) + " 00:00:00"); + } + List<String> list = Arrays.asList(coursePackage.getClassWeeks().split(";")); + String classStartTime = coursePackage.getClassStartTime(); + String[] split = classStartTime.split(":"); + String classEndTime = coursePackage.getClassEndTime(); + String[] split1 = classEndTime.split(":"); + Calendar s = Calendar.getInstance(); + s.setTime(date); + s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1); + + Calendar e = Calendar.getInstance(); + e.setTime(date); + if(null != coursePackageScheduling){ + long time = sdf1.parse(sdf.format(new Date()) + " 00:00:00").getTime(); + int d = Long.valueOf(14L - ((s.getTimeInMillis() - time) / 86400000L)).intValue(); + e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + d); + }else{ + e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 13); + } + long timeInMillis = e.getTimeInMillis(); + + while (true){ + int w = s.get(Calendar.DAY_OF_WEEK); + WeekEnum weekEnum = WeekEnum.getWeekEnum(w); + if(list.contains(weekEnum.getChineseName())){ + Calendar classDate = Calendar.getInstance(); + classDate.setTime(s.getTime()); + classDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0])); + classDate.set(Calendar.MINUTE, Integer.valueOf(split[1])); + classDate.set(Calendar.SECOND, 0); + + Calendar endDate = Calendar.getInstance(); + endDate.setTime(s.getTime()); + endDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0])); + endDate.set(Calendar.MINUTE, Integer.valueOf(split1[1])); + endDate.set(Calendar.SECOND, 0); + + CoursePackageScheduling coursePackageScheduling1 = new CoursePackageScheduling(); + coursePackageScheduling1.setCoursePackageId(coursePackage.getId()); + coursePackageScheduling1.setClassDate(classDate.getTime()); + coursePackageScheduling1.setEndDate(endDate.getTime()); + coursePackageScheduling1.setStatus(1); + coursePackageSchedulingService.save(coursePackageScheduling1); + } + s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1); + if(s.getTimeInMillis() > timeInMillis){ + break; + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + + /** + * 获取课包审核列表 + * @param page + * @param queryExamineCoursePackageLists + * @return + */ + @Override + public List<Map<String, Object>> queryExamineCoursePackageLists(Page<Map<String, Object>> page, QueryExamineCoursePackageLists queryExamineCoursePackageLists) { + List<Map<String, Object>> list = this.baseMapper.queryExamineCoursePackageLists(page, queryExamineCoursePackageLists); + for (Map<String, Object> map : list) { + Integer id = Integer.valueOf(map.get("id").toString()); + boolean cash = false; + boolean coin = false; + List<CoursePackagePaymentConfig> coursePackagePaymentConfigs = coursePackagePaymentConfigService.list(new QueryWrapper<CoursePackagePaymentConfig>().eq("coursePackageId", id)); + for (CoursePackagePaymentConfig coursePackagePaymentConfig : coursePackagePaymentConfigs) { + if(0 != coursePackagePaymentConfig.getCashPayment()){ + cash = true; + } + if(0 != coursePackagePaymentConfig.getPlayPaiCoin()){ + coin = true; + } + } + map.put("payType", (cash ? "现金支付" : "") + (coin ? cash ? "&玩湃币支付" : "玩湃币支付" : "")); + } + return list; + } } -- Gitblit v1.7.1