From 631a5aa09e0147ca81fffcb1434e57b1cd1ba6f6 Mon Sep 17 00:00:00 2001 From: lisy <linlangsur163@163.com> Date: 星期三, 09 八月 2023 09:34:53 +0800 Subject: [PATCH] app端口:积分变动记录增加变动类型字段,代码同步更新;积分兑换操作的数量校验功能完善 --- cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 577 ++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 402 insertions(+), 175 deletions(-) diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java index deb3dc6..98b8e2f 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java @@ -10,10 +10,12 @@ import com.dsh.account.feignclient.activity.UserConponClient; import com.dsh.account.feignclient.activity.model.*; import com.dsh.account.feignclient.competition.DeductionCompetitionsClient; +import com.dsh.account.feignclient.competition.model.BillingDataRequestVo; import com.dsh.account.feignclient.competition.model.PaymentCompetition; import com.dsh.account.feignclient.course.CoursePackageClient; import com.dsh.account.feignclient.course.CoursePackageConfigClient; import com.dsh.account.feignclient.course.CoursePaymentClient; +import com.dsh.account.feignclient.course.VideoOfCourseListClient; import com.dsh.account.feignclient.course.model.*; import com.dsh.account.feignclient.other.ImgConfigClient; import com.dsh.account.feignclient.other.RechargeConfigClient; @@ -24,10 +26,7 @@ import com.dsh.account.feignclient.other.model.StoreDetailOfCourse; import com.dsh.account.feignclient.other.model.TImgConfig; import com.dsh.account.mapper.*; -import com.dsh.account.model.AddAppUserVo; -import com.dsh.account.model.JoinPlayPaiVo; -import com.dsh.account.model.LoginSMSCodeVo; -import com.dsh.account.model.LoginWeChatVo; +import com.dsh.account.model.*; import com.dsh.account.model.dto.Coupon; import com.dsh.account.model.vo.classDetails.CourseVenue; import com.dsh.account.model.vo.classDetails.ExerciseVideo; @@ -38,6 +37,10 @@ import com.dsh.account.util.*; import com.dsh.account.util.akeylogin.Md5Util; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import org.springframework.web.multipart.MultipartFile; @@ -92,6 +95,10 @@ @Resource private ImgConfigClient icfgClient; + + + @Resource + private VideoOfCourseListClient voclClient; @Resource private VipPaymentMapper vipPaymentMapper; @@ -150,7 +157,9 @@ List<RegisteredCourse> courseList = new ArrayList<>(); List<StuCourseResp> stuCoursePayment = paymentClient.getStuCoursePayment(tStudent.getId()); + List<Integer> coursePackIds = new ArrayList<>(); if (stuCoursePayment.size() > 0){ + coursePackIds = stuCoursePayment.stream().map(StuCourseResp::getCourseId).collect(Collectors.toList()); for (StuCourseResp tCoursePackagePayment : stuCoursePayment) { RegisteredCourse course = new RegisteredCourse(); course.setCourseId(tCoursePackagePayment.getCourseId()); @@ -158,14 +167,14 @@ course.setTotalNums(ToolUtil.isEmpty(tCoursePackagePayment.getTotalCourseNums()) ? 0 : tCoursePackagePayment.getTotalCourseNums()); course.setDeductedNums(ToolUtil.isEmpty(tCoursePackagePayment.getDeductionNums()) ? 0 : tCoursePackagePayment.getDeductionNums()); course.setRemainingNums(ToolUtil.isEmpty(tCoursePackagePayment.getResidueNums())? 0 : tCoursePackagePayment.getResidueNums()); + course.setPeriodOfValidity(tCoursePackagePayment.getPeriodOfValidity()); courseList.add(course); } } classInfoVo.setCourseList(courseList); - - List<ExerciseVideo> videos = new ArrayList<>(); - - classInfoVo.setExerciseVideoList(videos); + List<ExerciseVideo> stuCourseOfVideoList = voclClient.getStuCourseOfVideoList(coursePackIds); + System.out.println(stuCourseOfVideoList); + classInfoVo.setExerciseVideoList(stuCourseOfVideoList); }else { classInfoVo.setIsThere(2); List<TImgConfig> tImgConfigs = configClient.getNoneStuImgs(); @@ -193,9 +202,12 @@ CourseVenue courseVenue = new CourseVenue(); courseVenue.setStoreId(storeId); courseVenue.setAreaName(value.get(0).getCourseName()); - courseVenue.setSiteDistance(LonlatUtils.distance(Double.parseDouble(longitude), Double.parseDouble(latitude), - Double.parseDouble(value.get(0).getLon()), Double.parseDouble(value.get(0).getLat())) + ""); - + if (ToolUtil.isEmpty(longitude) && ToolUtil.isEmpty(latitude)){ + courseVenue.setSiteDistance(0+""); + }else { + courseVenue.setSiteDistance(LonlatUtils.distance(Double.parseDouble(longitude), Double.parseDouble(latitude), + Double.parseDouble(value.get(0).getLon()), Double.parseDouble(value.get(0).getLat())) + ""); + } List<CourseVenue.CouList> courses = new ArrayList<>(); for (CourseOfStoreVo courseOfStoreVo : value) { CourseVenue.CouList couList = new CourseVenue.CouList(); @@ -203,6 +215,7 @@ couList.setCourseName(courseOfStoreVo.getCourseName()); couList.setTimeStr(courseOfStoreVo.getClassStartTime() + "-" + courseOfStoreVo.getClassEndTime()); couList.setDetail("¥" + courseOfStoreVo.getCoursePrice() + "/会员扣2学时"); + couList.setStatus(courseOfStoreVo.getStatus()); courses.add(couList); } courseVenue.setCourses(courses); @@ -473,12 +486,15 @@ TAppUser appUser = this.getById(appUserId); benefirVo.setUserHeadImg(appUser.getHeadImg()); benefirVo.setUserName(appUser.getName()); + benefirVo.setWpCoin(ToolUtil.isEmpty(appUser.getPlayPaiCoins()) ? 0 : appUser.getPlayPaiCoins()); + benefirVo.setUserIntegral(ToolUtil.isEmpty(appUser.getIntegral()) ? 0 : appUser.getIntegral()); if (appUser.getIsVip() == 1){ benefirVo.setIsMember("年度会员"); }else { benefirVo.setIsMember("普通用户"); } - benefirVo.setCommodities(mcClient.getConvertibleGoods()); + List<IntegralCommodity> convertibleGoods = mcClient.getConvertibleGoods(); + benefirVo.setCommodities(convertibleGoods); benefirVo.setImage(icfgClient.getImageConfig()); return benefirVo; } @@ -488,6 +504,7 @@ List<ConsumeDetail> details = new ArrayList<>(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd HH:mm"); + SimpleDateFormat result = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date monthStart = null; Date monthEnd = null; if (StringUtils.hasText(yearMonth)) { @@ -497,52 +514,62 @@ monthStart = DateTimeHelper.getCurrentMouthStart(); monthEnd = DateTimeHelper.getCurrentMouthEnd(); } + + BillingDataRequestVo requestVo = new BillingDataRequestVo(); + requestVo.setMonthStart(result.format(monthStart)); + requestVo.setMonthEnd(result.format(monthEnd)); + requestVo.setAppUserId(appUserId); // 1.赛事报名 - List<PaymentCompetition> allCompetitionPayRecord = deducClient.getAllCompetitionPayRecord(appUserId); - if (allCompetitionPayRecord.size() > 0 ){ - for (PaymentCompetition paymentCompetition : allCompetitionPayRecord) { + BillingRequestVo allCompetitionPayRecord = deducClient.getAllCompetitionPayRecord(requestVo); + if (ToolUtil.isNotEmpty(allCompetitionPayRecord.getRequests())){ + for (BillingRequest paymentCompetition : allCompetitionPayRecord.getRequests()) { ConsumeDetail consumeDetail = new ConsumeDetail(); consumeDetail.setConsumeName(RechargeRecordEnum.EVENT_REGISTRATION.getMsg()); - consumeDetail.setConsumeTime(simpleDateFormat.format(paymentCompetition.getInsertTime())); + consumeDetail.setConsumeTime(paymentCompetition.getTime()); consumeDetail.setConsumeAmount("-" + paymentCompetition.getAmount()); details.add(consumeDetail); + consumeDetail.setType(1); } } // 2.取消赛事报名 - List<PaymentCompetition> cancelOrderOfUserPayRecord = deducClient.getCancelOrderOfUserPayRecord(appUserId); - if (cancelOrderOfUserPayRecord.size() > 0 ){ - for (PaymentCompetition paymentCompetition : cancelOrderOfUserPayRecord) { + BillingRequestVo cancelOrderOfUserPayRecord = deducClient.getCancelOrderOfUserPayRecord(requestVo); + if (ToolUtil.isNotEmpty(cancelOrderOfUserPayRecord.getRequests())){ + for (BillingRequest paymentCompetition : cancelOrderOfUserPayRecord.getRequests()) { ConsumeDetail consumeDetail = new ConsumeDetail(); consumeDetail.setConsumeName(RechargeRecordEnum.CANCEL_EVENT_REGISTRATION.getMsg()); - consumeDetail.setConsumeTime(simpleDateFormat.format(paymentCompetition.getInsertTime())); + consumeDetail.setConsumeTime(paymentCompetition.getTime()); consumeDetail.setConsumeAmount("+" + paymentCompetition.getAmount()); + consumeDetail.setType(1); details.add(consumeDetail); } } // 3.课包购买 - List<TCoursePackagePayment> amountPayRecord = paymentClient.getAmountPayRecord(appUserId); - if (amountPayRecord.size() > 0 ){ - for (TCoursePackagePayment coursePackagePayment : amountPayRecord) { + BillingRequestVo amountPayRecord = paymentClient.getAmountPayRecord(requestVo); + if (ToolUtil.isNotEmpty(amountPayRecord.getRequests())){ + for (BillingRequest coursePackagePayment : amountPayRecord.getRequests()) { ConsumeDetail consumeDetail = new ConsumeDetail(); consumeDetail.setConsumeName(RechargeRecordEnum.COURSE_PACKAGE_PURCHASE.getMsg()); - consumeDetail.setConsumeTime(simpleDateFormat.format(coursePackagePayment.getInsertTime())); - consumeDetail.setConsumeAmount("-" + coursePackagePayment.getCashPayment()); + consumeDetail.setConsumeTime(coursePackagePayment.getTime()); + consumeDetail.setConsumeAmount("-" + coursePackagePayment.getAmount()); + consumeDetail.setType(2); details.add(consumeDetail); } } // 4.场地预约 - List<SiteBooking> allSiteBookingList = stClient.getAllSiteBookingList(appUserId); - if (allSiteBookingList.size() > 0){ - for (SiteBooking booking : allSiteBookingList) { + RequestOfTypeVo allSiteBookingList = stClient.getAllSiteBookingList(requestVo); + if (ToolUtil.isNotEmpty(allSiteBookingList.getRequest())){ + for (BillingRequestOfType booking : allSiteBookingList.getRequest()) { ConsumeDetail consumeDetail = new ConsumeDetail(); if (booking.getStatus() != 5){ consumeDetail.setConsumeName(RechargeRecordEnum.VENUE_RESERVATION.getMsg()); - consumeDetail.setConsumeAmount("-" + booking.getPayMoney()); - consumeDetail.setConsumeTime(simpleDateFormat.format(booking.getPayTime())); + consumeDetail.setConsumeAmount("-" + booking.getAmount()); + consumeDetail.setConsumeTime(booking.getTime()); + consumeDetail.setType(2); }else { consumeDetail.setConsumeName(RechargeRecordEnum.CANCEL_VENUE_RESERVATION.getMsg()); - consumeDetail.setConsumeAmount("+" + booking.getPayMoney()); - consumeDetail.setConsumeTime(simpleDateFormat.format(booking.getCancelTime())); + consumeDetail.setConsumeAmount("+" + booking.getAmount()); + consumeDetail.setConsumeTime(booking.getTime()); + consumeDetail.setType(1); } details.add(consumeDetail); } @@ -560,6 +587,7 @@ consumeDetail.setConsumeName(RechargeRecordEnum.ANNUAL_MEMBERSHIP.getMsg()); consumeDetail.setConsumeTime(simpleDateFormat.format(vipPayment.getInsertTime())); consumeDetail.setConsumeAmount("-" + vipPayment.getAmount()); + consumeDetail.setType(2); details.add(consumeDetail); } } @@ -574,6 +602,7 @@ consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.getMsg() + ":" + rechargeRecord.getPlayPaiCoins()); consumeDetail.setConsumeTime(simpleDateFormat.format(rechargeRecord.getInsertTime())); consumeDetail.setConsumeAmount("-" + rechargeRecord.getAmount()); + consumeDetail.setType(2); details.add(consumeDetail); } } @@ -594,6 +623,12 @@ return date2.compareTo(date1); } }); + + if (ToolUtil.isNotEmpty(recordId)){ + details = details.stream() + .filter(response -> Objects.equals(response.getType(), recordId)) + .collect(Collectors.toList()); + } } return details; } @@ -612,15 +647,16 @@ List<RechargeCentVo> centVos = new ArrayList<>(); TAppUser tAppUser = this.baseMapper.selectById(appUserId); List<Map<String, Object>> rechargeConfig = reconMapper.getRechargeConfig(); + System.out.println(rechargeConfig); if (rechargeConfig.size() > 0 ){ for (Map<String, Object> stringObjectMap : rechargeConfig) { RechargeCentVo vo = new RechargeCentVo(); - vo.setChargeId((Integer) stringObjectMap.get("money")); - vo.setAmount(""+stringObjectMap.get("money")); + Double money = (Double) stringObjectMap.get("money"); + vo.setAmount(BigDecimal.valueOf(money) ); if (tAppUser.getIsVip() == 1){ - vo.setWpGold(stringObjectMap.get("MemberCoins")+""); + vo.setWpGold((Integer) stringObjectMap.get("MemberCoins")); }else { - vo.setWpGold(stringObjectMap.get("usersCoins")+""); + vo.setWpGold((Integer) stringObjectMap.get("usersCoins")); } centVos.add(vo); } @@ -629,22 +665,16 @@ } @Override - public PointMallDetailsResponse queryAppUserIntegral(MallRequest request, Integer userIdFormRedis) { - PointMallDetailsResponse detailsResponse = new PointMallDetailsResponse(); - List<PointMallDetailsResponse.Goods> goods = new ArrayList<>(); - - TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis); - detailsResponse.setName(tAppUser.getName()); - detailsResponse.setIntegral(tAppUser.getIntegral()); - detailsResponse.setHeadImg(tAppUser.getHeadImg()); + public List<Goods> queryAppUserIntegral(MallRequest request ) { + List<Goods> goods = new ArrayList<>(); CommodityRequest commodityRequest = new CommodityRequest(); commodityRequest.setLon(request.getLon()); commodityRequest.setLat(request.getLat()); - List<PointsMerchandise> vicinityGoods = mcClient.getVicinityGoods(commodityRequest); - if (vicinityGoods.size() > 0) { - for (PointsMerchandise vicinityGood : vicinityGoods) { - PointMallDetailsResponse.Goods commodity = new PointMallDetailsResponse.Goods(); + PointMerchandiseVo vicinityGoods = mcClient.getVicinityGoods(commodityRequest); + if (ToolUtil.isNotEmpty(vicinityGoods.getMerchandises())) { + for (PointsMerchandise vicinityGood : vicinityGoods.getMerchandises()) { + Goods commodity = new Goods(); switch (vicinityGood.getType()) { case 1: commodity.setGoodId(vicinityGood.getId()); @@ -701,7 +731,7 @@ List<Coupon> allCoupons = ucponClient.getAllCoupons(commodityRequest); if (allCoupons.size() > 0) { for (Coupon allCoupon : allCoupons) { - PointMallDetailsResponse.Goods commodity = new PointMallDetailsResponse.Goods(); + Goods commodity = new Goods(); commodity.setGoodId(allCoupon.getId()); commodity.setGoodName(allCoupon.getName()); commodity.setCondition(allCoupon.getRedemptionMethod()); @@ -719,26 +749,34 @@ } } if (StringUtils.hasText(request.getSearch())){ - goods = goods.stream() - .filter(merchandise -> merchandise.getGoodName().contains(request.getSearch())) - .collect(Collectors.toList()); + if (goods.size() > 0 ){ + goods = goods.stream() + .filter(merchandise -> merchandise.getGoodName().contains(request.getSearch())) + .collect(Collectors.toList()); + } } if (null != request.getRank()){ switch (request.getRank()){ case 1: - goods = goods.stream() - .sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getIntegral).reversed()) - .collect(Collectors.toList()); + if (goods.size() > 0 ){ + goods = goods.stream() + .sorted(Comparator.comparing(Goods::getIntegral).reversed()) + .collect(Collectors.toList()); + } break; case 2: - goods = goods.stream() - .sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getIntegral)) - .collect(Collectors.toList()); + if (goods.size() > 0 ){ + goods = goods.stream() + .sorted(Comparator.comparing(Goods::getIntegral)) + .collect(Collectors.toList()); + } break; case 3: - goods = goods.stream() - .sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getNums).reversed()) - .collect(Collectors.toList()); + if (goods.size() > 0 ){ + goods = goods.stream() + .sorted(Comparator.comparing(Goods::getNums).reversed()) + .collect(Collectors.toList()); + } break; default: break; @@ -746,26 +784,29 @@ } if (null != request.getGoodsType()){ - goods = goods.stream() - .filter(merchandise -> merchandise.getGoodsType().equals(request.getGoodsType())) - .collect(Collectors.toList()); + if (goods.size() > 0 ){ + goods = goods.stream() + .filter(merchandise -> merchandise.getGoodsType().equals(request.getGoodsType())) + .collect(Collectors.toList()); + } } - detailsResponse.setGoods(goods); - return detailsResponse; + + //当前第几页 + int pageNo = request.getPageNum(); + //一页五条 + int size = request.getPageSize(); + + //分页 + goods = goods.stream().skip((pageNo - 1) * size).limit(size). + collect(Collectors.toList()); + return goods; } - @Override - public ResultUtil uploadAppUserHeadImg(Integer appUserId, MultipartFile file, HttpServletRequest request) { - try { - String filePath = OssUploadUtil.ossUpload(request,file); - TAppUser tAppUser = this.baseMapper.selectById(appUserId); - tAppUser.setHeadImg(filePath); - this.baseMapper.updateById(tAppUser); - } catch (IOException e) { - ResultUtil.error("头像上传失败!"); - } - - return ResultUtil.success(); + // 对数据进行分页处理的方法 + private static Page<Goods> getPage(List<Goods> dataList, Pageable pageable) { + int start = (int) pageable.getOffset(); + int end = Math.min((start + pageable.getPageSize()), dataList.size()); + return new PageImpl<>(dataList.subList(start, end), pageable, dataList.size()); } @Override @@ -813,105 +854,285 @@ } @Override - public ResultUtil productRedemptionOperation(Integer userIdFormRedis, Integer goodId, Integer goodsType,Integer nums,Integer exchangeType,Integer payType,List<Integer> stuIds) { - PointsMerchandise merchandise = mcClient.selectPointsMerchandiseById(goodId); + public ResultUtil productRedemptionOperation(Integer userIdFormRedis, GoodsExchangeVo exchangeType) { + System.out.println("exchangeType:--->"); + System.out.println(exchangeType); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); - for (int i = 0; i < nums; i++) { + PointsMerchandise merchandise = mcClient.selectPointsMerchandiseById(exchangeType.getGoodId()); + if (ToolUtil.isEmpty(merchandise)){ + return ResultUtil.error("商品不存在"); + } + TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis); + if (ToolUtil.isEmpty(tAppUser)){ + return ResultUtil.error("用户不存在"); + } + int goodsNums = 0; + if (ToolUtil.isEmpty(exchangeType.getNums())){ + goodsNums = 1; + }else { + goodsNums = exchangeType.getNums(); + } + AppUserGoodResp goodResp = new AppUserGoodResp(); + goodResp.setAppUserId(userIdFormRedis); + goodResp.setGoodId(merchandise.getId()); + int count = mcClient.queryUserHasGoodsNums(goodResp); + if (ToolUtil.isNotEmpty(count) && count >= merchandise.getPickUpQuantity()){ + return ResultUtil.error("超过限领数量"); + } + + for (int i = 0; i < goodsNums; i++) { +// 新增积分商品兑换记录 UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise(); - pointsMerchandise.setPointsMerchandiseId(goodId); + pointsMerchandise.setPointsMerchandiseId(exchangeType.getGoodId()); pointsMerchandise.setUserId(userIdFormRedis); + pointsMerchandise.setStatus(1); + if (merchandise.getUseScope() == 3){ + if (exchangeType.getGoodsType() == 2){ + CoursePackage coursePackage = cpageClient.queryCoursePackageById(merchandise.getCoursePackageId()); + pointsMerchandise.setStoreId(coursePackage.getStoreId()); + }else { + pointsMerchandise.setStoreId(exchangeType.getStoreId()); + } + } pointsMerchandise.setCode(code); mcClient.saveDetailsUserPointMercase(pointsMerchandise); } -// 扣减积分 - TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis); - - -// 积分变更记录 - UserIntegralChanges userIntegralChanges = new UserIntegralChanges(); - userIntegralChanges.setAppUserId(userIdFormRedis); - userIntegralChanges.setOldIntegral(tAppUser.getIntegral()); - userIntegralChanges.setType(2); - tAppUser.setIntegral(null == tAppUser.getIntegral() ? merchandise.getIntegral() : tAppUser.getIntegral() +merchandise.getIntegral()); - userIntegralChanges.setNewIntegral(tAppUser.getIntegral()); - userIntegralChanges.setInsertTime(new Date()); - uicMapper.insert(userIntegralChanges); - - this.baseMapper.updateById(tAppUser); -// 现金支付 - if (exchangeType == 2) { - switch (goodsType) { - case 2: - for (int i = 0; i < stuIds.size(); i++) { - List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId()); - - TCoursePackagePayment packagePayment = new TCoursePackagePayment(); - packagePayment.setAppUserId(userIdFormRedis); - packagePayment.setStudentId(stuIds.get(i)); - packagePayment.setCoursePackageId(merchandise.getCoursePackageId()); - for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) { - if (Objects.equals(coursePackagePaymentConfig.getId(),merchandise.getCoursePackageConfigId())){ - packagePayment.setClassHours(coursePackagePaymentConfig.getClassHours()); - packagePayment.setTotalClassHours(coursePackagePaymentConfig.getClassHours()); - packagePayment.setLaveClassHours(coursePackagePaymentConfig.getClassHours()); - packagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment()); - break; + switch (exchangeType.getExchangeType()){ +// 积分 + case 1: + boolean b = dealAppUserIntegral(userIdFormRedis,tAppUser,merchandise.getIntegral()); + if (b){ + switch (exchangeType.getGoodsType()){ + case 2: + Integer stuNums = 0; + if (ToolUtil.isNotEmpty(exchangeType.getStuIds())){ + stuNums = exchangeType.getStuIds().size(); + }else { + stuNums = 1; } + for (int i = 0; i < stuNums; i++) { + List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId()); + TCoursePackagePayment packagePayment = new TCoursePackagePayment(); + packagePayment.setAppUserId(userIdFormRedis); + packagePayment.setStudentId(exchangeType.getStuIds().get(i)); + packagePayment.setCoursePackageId(merchandise.getCoursePackageId()); + for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) { + if (Objects.equals(coursePackagePaymentConfig.getId(), merchandise.getCoursePackageConfigId())) { + packagePayment.setClassHours(coursePackagePaymentConfig.getClassHours()); + packagePayment.setTotalClassHours(coursePackagePaymentConfig.getClassHours()); + packagePayment.setLaveClassHours(coursePackagePaymentConfig.getClassHours()); + packagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment()); + break; + } + } + packagePayment.setPlayPaiCoin(merchandise.getIntegral()); + packagePayment.setAbsencesNumber(0); + packagePayment.setPayUserType(1); + packagePayment.setPayStatus(2); + packagePayment.setPayUserId(userIdFormRedis); + packagePayment.setStatus(1); + packagePayment.setState(1); + packagePayment.setInsertTime(new Date()); + packagePayment.setCode(code); + paymentClient.savePaymentCoursePackage(packagePayment); + } + break; + case 4: + for (int i = 0; i < goodsNums; i++) { + UserCoupon coupon = new UserCoupon(); + coupon.setCouponId(exchangeType.getGoodId()); + coupon.setUserId(userIdFormRedis); + coupon.setStatus(1); + coupon.setInsertTime(new Date()); + ucponClient.insertToAppuserCoupon(coupon); + } + break; + default: + break; + } + }else { + return ResultUtil.error("用户积分不足!"); + } + break; + case 2: +// 积分+现金 + boolean dealt = dealAppUserIntegral(userIdFormRedis,tAppUser,merchandise.getIntegral()); + if (dealt){ + switch (exchangeType.getGoodsType()){ +// 1实物 2课包 3门票 4优惠券 + case 2: + Integer stuNums = 0; + if (ToolUtil.isNotEmpty(exchangeType.getStuIds())){ + stuNums = exchangeType.getStuIds().size(); + }else { + stuNums = 1; + } + for (int i = 0; i < stuNums; i++) { + List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId()); + TCoursePackagePayment packagePayment = new TCoursePackagePayment(); + packagePayment.setAppUserId(userIdFormRedis); + packagePayment.setStudentId(exchangeType.getStuIds().get(i)); + packagePayment.setCoursePackageId(merchandise.getCoursePackageId()); + for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) { + if (Objects.equals(coursePackagePaymentConfig.getId(), merchandise.getCoursePackageConfigId())) { + packagePayment.setClassHours(coursePackagePaymentConfig.getClassHours()); + packagePayment.setTotalClassHours(coursePackagePaymentConfig.getClassHours()); + packagePayment.setLaveClassHours(coursePackagePaymentConfig.getClassHours()); + packagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment()); + break; + } + } + packagePayment.setPlayPaiCoin(merchandise.getIntegral()); + packagePayment.setAbsencesNumber(0); + packagePayment.setPayUserType(1); + packagePayment.setPayStatus(1); + packagePayment.setPayUserId(userIdFormRedis); + packagePayment.setStatus(1); + packagePayment.setState(1); + packagePayment.setInsertTime(new Date()); + packagePayment.setCode(code); + paymentClient.savePaymentCoursePackage(packagePayment); + } + break; + case 4: + for (int i = 0; i < goodsNums; i++) { + UserCoupon coupon = new UserCoupon(); + coupon.setCouponId(exchangeType.getGoodId()); + coupon.setUserId(userIdFormRedis); + coupon.setStatus(1); + coupon.setInsertTime(new Date()); + ucponClient.insertToAppuserCoupon(coupon); + } + break; + default: + break; + } + }else { + return ResultUtil.error("用户积分不足!"); + } + switch (exchangeType.getPayType()) { + case 1: + try { + if (merchandise.getType() == 2) { + return WechatPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code); + } else { + return WechatPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code); + } + } catch (Exception e) { + return ResultUtil.runErr(); } - packagePayment.setPlayPaiCoin(merchandise.getIntegral()); - packagePayment.setAbsencesNumber(0); - packagePayment.setPayUserType(1); - packagePayment.setPayStatus(1); - packagePayment.setPayUserId(userIdFormRedis); - packagePayment.setStatus(1); - packagePayment.setState(1); - packagePayment.setInsertTime(new Date()); - packagePayment.setCode(code); - paymentClient.savePaymentCoursePackage(packagePayment); - } - break; - case 4: - for (int i = 0; i < nums; i++) { - UserCoupon coupon = new UserCoupon(); - coupon.setCouponId(goodId); - coupon.setUserId(userIdFormRedis); - coupon.setStatus(1); - coupon.setInsertTime(new Date()); - ucponClient.insertToAppuserCoupon(coupon); - } - break; - default: - break; - } - - switch (payType){ - case 1: - try { - if (merchandise.getType() == 2){ - return WechatPayment(merchandise.getCash().multiply(new BigDecimal(stuIds.size())),code); + case 2: + if (merchandise.getType() == 2) { + return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code); + } else { + return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code); + } + default: + break; + } + break; + case 3: +// 现金 + switch (exchangeType.getGoodsType()){ + case 2: + Integer stuNums = 0; + if (ToolUtil.isNotEmpty(exchangeType.getStuIds())){ + stuNums = exchangeType.getStuIds().size(); }else { - return WechatPayment(merchandise.getCash().multiply(new BigDecimal(nums)),code); + stuNums = 1; } - }catch (Exception e){ - return ResultUtil.runErr(); - } - case 2: - if (merchandise.getType() == 2){ - AlipayPayment(merchandise.getCash().multiply(new BigDecimal(stuIds.size())),code); - }else { - AlipayPayment(merchandise.getCash().multiply(new BigDecimal(nums)),code); - } - break; - default: - break; - } + for (int i = 0; i < stuNums; i++) { + List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId()); + TCoursePackagePayment packagePayment = new TCoursePackagePayment(); + packagePayment.setAppUserId(userIdFormRedis); + packagePayment.setStudentId(exchangeType.getStuIds().get(i)); + packagePayment.setCoursePackageId(merchandise.getCoursePackageId()); + for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) { + if (Objects.equals(coursePackagePaymentConfig.getId(), merchandise.getCoursePackageConfigId())) { + packagePayment.setClassHours(coursePackagePaymentConfig.getClassHours()); + packagePayment.setTotalClassHours(coursePackagePaymentConfig.getClassHours()); + packagePayment.setLaveClassHours(coursePackagePaymentConfig.getClassHours()); + packagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment()); + break; + } + } + packagePayment.setCashPayment(merchandise.getCash()); + packagePayment.setAbsencesNumber(0); + packagePayment.setPayUserType(1); + packagePayment.setPayStatus(1); + packagePayment.setPayUserId(userIdFormRedis); + packagePayment.setStatus(1); + packagePayment.setState(1); + packagePayment.setInsertTime(new Date()); + packagePayment.setCode(code); + paymentClient.savePaymentCoursePackage(packagePayment); + } + break; + case 4: + for (int i = 0; i < goodsNums; i++) { + UserCoupon coupon = new UserCoupon(); + coupon.setCouponId(exchangeType.getGoodId()); + coupon.setUserId(userIdFormRedis); + coupon.setStatus(1); + coupon.setInsertTime(new Date()); + ucponClient.insertToAppuserCoupon(coupon); + } + break; + default: + break; + } + switch (exchangeType.getPayType()) { + case 1: + try { + if (merchandise.getType() == 2) { + return WechatPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code); + } else { + return WechatPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code); + } + } catch (Exception e) { + return ResultUtil.runErr(); + } + case 2: + if (merchandise.getType() == 2) { + return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code); + } else { + return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code); + } + default: + break; + } + break; + default: + break; } - return ResultUtil.success(); } + public boolean dealAppUserIntegral(Integer appUserId,TAppUser appUser,Integer points){ + try { + if (ToolUtil.isEmpty(appUser.getIntegral()) || (ToolUtil.isNotEmpty(appUser.getIntegral()) && appUser.getIntegral() < points)){ + return false; + } + // 积分变更记录 + UserIntegralChanges userIntegralChanges = new UserIntegralChanges(); + userIntegralChanges.setAppUserId(appUserId); + userIntegralChanges.setOldIntegral(appUser.getIntegral()); + userIntegralChanges.setType(2); + appUser.setIntegral(null == appUser.getIntegral() ? points : appUser.getIntegral() - points); + userIntegralChanges.setNewIntegral(appUser.getIntegral()); + userIntegralChanges.setInsertTime(new Date()); + userIntegralChanges.setCategory(2); + uicMapper.insert(userIntegralChanges); + + this.baseMapper.updateById(appUser); + return true; + }catch (Exception e){ + return false; + } + } private ResultUtil AlipayPayment(BigDecimal cash, String code) { ResultUtil alipay = payMoneyUtil.alipay("课包续费", "", "", code, cash.toString(), @@ -1105,24 +1326,29 @@ List<StoreResponse> responses = new ArrayList<>(); if (goodsType == 4){ List<Integer> couponStoreIds = ucponClient.getCouponStoreIds(pointsMerId); - for (Integer couponStoreId : couponStoreIds) { - StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStoreId); - if(ToolUtil.isNotEmpty(courseOfStore)){ - StoreResponse response = new StoreResponse(); - response.setStoreId(couponStoreId); - response.setStoreName(courseOfStore.getStoreName()); - responses.add(response); + if (couponStoreIds.size() > 0 ){ + for (Integer couponStoreId : couponStoreIds) { + StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStoreId); + if(ToolUtil.isNotEmpty(courseOfStore)){ + StoreResponse response = new StoreResponse(); + response.setStoreId(couponStoreId); + response.setStoreName(courseOfStore.getStoreName()); + responses.add(response); + } } } + }else { List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerId); - for (Integer integer : integers) { - StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(integer); - if(ToolUtil.isNotEmpty(courseOfStore)){ - StoreResponse response = new StoreResponse(); - response.setStoreId(integer); - response.setStoreName(courseOfStore.getStoreName()); - responses.add(response); + if (integers.size() > 0 ){ + for (Integer integer : integers) { + StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(integer); + if(ToolUtil.isNotEmpty(courseOfStore)){ + StoreResponse response = new StoreResponse(); + response.setStoreId(integer); + response.setStoreName(courseOfStore.getStoreName()); + responses.add(response); + } } } } @@ -1138,6 +1364,7 @@ weeksOfCourseRest.setStuId(stuId); weeksOfCourseRest.setAppUserId(appUserId); List<CourseOfStoreVo> storeOfCourses = paymentClient.getStoreOfCourses(weeksOfCourseRest); + System.out.println(storeOfCourses); if (storeOfCourses.size() > 0 ){ courseVenues = dealDatas(storeOfCourses,longitude,latitude); } -- Gitblit v1.7.1