From c743f4413a00fc063bbbd9d851b6d0c3fff10581 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期一, 31 七月 2023 10:04:02 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 406 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 304 insertions(+), 102 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 840eb67..8cb1126 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 @@ -12,12 +12,17 @@ import com.dsh.account.feignclient.competition.DeductionCompetitionsClient; 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.model.*; import com.dsh.account.feignclient.other.ImgConfigClient; import com.dsh.account.feignclient.other.RechargeConfigClient; +import com.dsh.account.feignclient.other.SiteClient; import com.dsh.account.feignclient.other.StoreClient; -import com.dsh.account.feignclient.other.model.*; +import com.dsh.account.feignclient.other.model.SiteBooking; +import com.dsh.account.feignclient.other.model.Store; +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; @@ -27,22 +32,25 @@ import com.dsh.account.model.vo.classDetails.CourseVenue; import com.dsh.account.model.vo.classDetails.ExerciseVideo; import com.dsh.account.model.vo.classDetails.RegisteredCourse; -import com.dsh.account.model.vo.classDetails.WeekedCourse; import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo; import com.dsh.account.model.vo.userBenefitDetail.*; import com.dsh.account.service.TAppUserService; 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.bind.annotation.RequestBody; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.math.BigDecimal; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -113,8 +121,17 @@ @Resource private MerChandiseStoreClient mcsClient; + @Resource + private CoursePackageConfigClient cpconClient; + + @Resource + private PayMoneyUtil payMoneyUtil; + + @Resource + private SiteClient stClient; + @Override - public ClassInfoVo queryUserOfStus(Integer id,String latitude,String longitude) { + public ClassInfoVo queryUserOfStus(Integer id) { TAppUser tAppUser = this.baseMapper.selectById(id); ClassInfoVo classInfoVo = new ClassInfoVo(); if (ToolUtil.isNotEmpty(tAppUser)){ @@ -133,34 +150,23 @@ classInfoVo.setHeight(tStudent.getHeight()); classInfoVo.setWeight(tStudent.getWeight()); classInfoVo.setBmi(tStudent.getBmi()); + classInfoVo.setBodyStatus(BMIBodyUtil.getBodyStatus(tStudent.getBmi())); List<RegisteredCourse> courseList = new ArrayList<>(); -// 总学时数 - int total = 0; -// 已扣数 - int deduct = 0; -// 剩余数 - int remain = 0; - List<StuCourseResp> stuCoursePayment = paymentClient.getStuCoursePayment(); + List<StuCourseResp> stuCoursePayment = paymentClient.getStuCoursePayment(tStudent.getId()); if (stuCoursePayment.size() > 0){ for (StuCourseResp tCoursePackagePayment : stuCoursePayment) { RegisteredCourse course = new RegisteredCourse(); course.setCourseId(tCoursePackagePayment.getCourseId()); course.setCourseName(tCoursePackagePayment.getCourseName()); - total = total + (ToolUtil.isEmpty(tCoursePackagePayment.getTotalCourseNums()) ? 0 : tCoursePackagePayment.getTotalCourseNums()); - deduct = deduct + (ToolUtil.isEmpty(tCoursePackagePayment.getDeductionNums()) ? 0 : tCoursePackagePayment.getDeductionNums()); - remain = remain + (ToolUtil.isEmpty(tCoursePackagePayment.getResidueNums())? 0 : tCoursePackagePayment.getResidueNums()); + 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); - - classInfoVo.setTotalNums(total); - classInfoVo.setDeductedNums(deduct); - classInfoVo.setRemainingNums(remain); - - List<CourseOfStoreVo> storeOfCourses = paymentClient.getStoreOfCourses(); - classInfoVo.setWeekCourseList(dealDatas(storeOfCourses,longitude,latitude)); List<ExerciseVideo> videos = new ArrayList<>(); @@ -183,36 +189,31 @@ * @param latitude * @return */ - public List<WeekedCourse> dealDatas(List<CourseOfStoreVo> storeOfCourses,String longitude ,@RequestBody String latitude){ - List<WeekedCourse> weekedCourses = new ArrayList<>(); - for (int i = 1; i < 8; i++) { - WeekedCourse weekedCourse = new WeekedCourse(); - List<CourseVenue> courseVenues = new ArrayList<>(); - Map<Integer, List<CourseOfStoreVo>> map = storeOfCourses.stream().collect(Collectors.groupingBy(CourseOfStoreVo::getStoreId)); - for (Map.Entry<Integer, List<CourseOfStoreVo>> integerListEntry : map.entrySet()) { - List<CourseOfStoreVo> value = integerListEntry.getValue(); - CourseVenue courseVenue = new CourseVenue(); - courseVenue.setStoreId(value.get(0).getStoreId()); - courseVenue.setAreaName(value.get(0).getStoreName()); - courseVenue.setSiteDistance(LonlatUtils.distance(Double.parseDouble(longitude), Double.parseDouble(latitude), - Double.parseDouble(value.get(0).getLon()), Double.parseDouble(value.get(0).getLat())) + ""); + public List<CourseVenue> dealDatas(List<CourseOfStoreVo> storeOfCourses, String longitude , String latitude){ + List<CourseVenue> courseVenues = new ArrayList<>(); + Map<Integer, List<CourseOfStoreVo>> map = storeOfCourses.stream().collect(Collectors.groupingBy(CourseOfStoreVo::getStoreId)); + for (Map.Entry<Integer, List<CourseOfStoreVo>> integerListEntry : map.entrySet()) { + Integer storeId = integerListEntry.getKey(); + List<CourseOfStoreVo> value = integerListEntry.getValue(); + 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())) + ""); - List<CourseVenue.CouList> courses = new ArrayList<>(); - for (CourseOfStoreVo courseOfStoreVo : value) { - CourseVenue.CouList couList = new CourseVenue.CouList(); - couList.setCourseID(courseOfStoreVo.getCourseId()); - couList.setCourseName(courseOfStoreVo.getCourseName()); - couList.setTimeStr(courseOfStoreVo.getClassStartTime() + "-" + courseOfStoreVo.getClassEndTime()); - couList.setDetail(""); - courses.add(couList); - } - courseVenue.setCourses(courses); - courseVenues.add(courseVenue); + List<CourseVenue.CouList> courses = new ArrayList<>(); + for (CourseOfStoreVo courseOfStoreVo : value) { + CourseVenue.CouList couList = new CourseVenue.CouList(); + couList.setCourseID(courseOfStoreVo.getCourseId()); + couList.setCourseName(courseOfStoreVo.getCourseName()); + couList.setTimeStr(courseOfStoreVo.getClassStartTime() + "-" + courseOfStoreVo.getClassEndTime()); + couList.setDetail("¥" + courseOfStoreVo.getCoursePrice() + "/会员扣2学时"); + courses.add(couList); } - weekedCourse.setDetails(courseVenues); - weekedCourses.add(weekedCourse); + courseVenue.setCourses(courses); + courseVenues.add(courseVenue); } - return weekedCourses; + return courseVenues; } @@ -488,9 +489,8 @@ } @Override - public BillingDetailsVo queryUserBillingDetails(String yearMonth, Integer recordId, Integer appUserId) { - BillingDetailsVo vo = new BillingDetailsVo(); - List<BillingDetailsVo.ConsumeDetail> details = new ArrayList<>(); + public List<ConsumeDetail> queryUserBillingDetails(String yearMonth, Integer recordId, Integer appUserId) { + List<ConsumeDetail> details = new ArrayList<>(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd HH:mm"); Date monthStart = null; @@ -506,7 +506,7 @@ List<PaymentCompetition> allCompetitionPayRecord = deducClient.getAllCompetitionPayRecord(appUserId); if (allCompetitionPayRecord.size() > 0 ){ for (PaymentCompetition paymentCompetition : allCompetitionPayRecord) { - BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail(); + ConsumeDetail consumeDetail = new ConsumeDetail(); consumeDetail.setConsumeName(RechargeRecordEnum.EVENT_REGISTRATION.getMsg()); consumeDetail.setConsumeTime(simpleDateFormat.format(paymentCompetition.getInsertTime())); consumeDetail.setConsumeAmount("-" + paymentCompetition.getAmount()); @@ -517,7 +517,7 @@ List<PaymentCompetition> cancelOrderOfUserPayRecord = deducClient.getCancelOrderOfUserPayRecord(appUserId); if (cancelOrderOfUserPayRecord.size() > 0 ){ for (PaymentCompetition paymentCompetition : cancelOrderOfUserPayRecord) { - BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail(); + ConsumeDetail consumeDetail = new ConsumeDetail(); consumeDetail.setConsumeName(RechargeRecordEnum.CANCEL_EVENT_REGISTRATION.getMsg()); consumeDetail.setConsumeTime(simpleDateFormat.format(paymentCompetition.getInsertTime())); consumeDetail.setConsumeAmount("+" + paymentCompetition.getAmount()); @@ -528,7 +528,7 @@ List<TCoursePackagePayment> amountPayRecord = paymentClient.getAmountPayRecord(appUserId); if (amountPayRecord.size() > 0 ){ for (TCoursePackagePayment coursePackagePayment : amountPayRecord) { - BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail(); + ConsumeDetail consumeDetail = new ConsumeDetail(); consumeDetail.setConsumeName(RechargeRecordEnum.COURSE_PACKAGE_PURCHASE.getMsg()); consumeDetail.setConsumeTime(simpleDateFormat.format(coursePackagePayment.getInsertTime())); consumeDetail.setConsumeAmount("-" + coursePackagePayment.getCashPayment()); @@ -536,6 +536,23 @@ } } // 4.场地预约 + List<SiteBooking> allSiteBookingList = stClient.getAllSiteBookingList(appUserId); + if (allSiteBookingList.size() > 0){ + for (SiteBooking booking : allSiteBookingList) { + ConsumeDetail consumeDetail = new ConsumeDetail(); + if (booking.getStatus() != 5){ + consumeDetail.setConsumeName(RechargeRecordEnum.VENUE_RESERVATION.getMsg()); + consumeDetail.setConsumeAmount("-" + booking.getPayMoney()); + consumeDetail.setConsumeTime(simpleDateFormat.format(booking.getPayTime())); + }else { + consumeDetail.setConsumeName(RechargeRecordEnum.CANCEL_VENUE_RESERVATION.getMsg()); + consumeDetail.setConsumeAmount("+" + booking.getPayMoney()); + consumeDetail.setConsumeTime(simpleDateFormat.format(booking.getCancelTime())); + } + details.add(consumeDetail); + } + } + // 5.智慧球场 // 6.年度会员 List<VipPayment> vipPayments = vipPaymentMapper.selectList(new QueryWrapper<VipPayment>() @@ -544,7 +561,7 @@ .between("insertTime", monthStart, monthEnd)); if (vipPayments.size() > 0) { for (VipPayment vipPayment : vipPayments) { - BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail(); + ConsumeDetail consumeDetail = new ConsumeDetail(); consumeDetail.setConsumeName(RechargeRecordEnum.ANNUAL_MEMBERSHIP.getMsg()); consumeDetail.setConsumeTime(simpleDateFormat.format(vipPayment.getInsertTime())); consumeDetail.setConsumeAmount("-" + vipPayment.getAmount()); @@ -558,16 +575,32 @@ .between("insertTime", monthStart, monthEnd)); if (rechargeRecords.size() > 0) { for (RechargeRecords rechargeRecord : rechargeRecords) { - BillingDetailsVo.ConsumeDetail consumeDetail = new BillingDetailsVo.ConsumeDetail(); + ConsumeDetail consumeDetail = new ConsumeDetail(); consumeDetail.setConsumeName(RechargeRecordEnum.RECHARGE.getMsg() + ":" + rechargeRecord.getPlayPaiCoins()); consumeDetail.setConsumeTime(simpleDateFormat.format(rechargeRecord.getInsertTime())); consumeDetail.setConsumeAmount("-" + rechargeRecord.getAmount()); details.add(consumeDetail); } } - - vo.setDetails(details); - return vo; + if (details.size() > 0 ){ + Collections.sort(details, new Comparator<ConsumeDetail>() { + @Override + public int compare(ConsumeDetail record1, ConsumeDetail record2) { + SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm"); + Date date1 = null; + Date date2 = null; + try { + date1 = dateFormat.parse(record1.getConsumeTime()); + date2 = dateFormat.parse(record2.getConsumeTime()); + } catch (ParseException e) { + e.printStackTrace(); + } + // 倒序排序 + return date2.compareTo(date1); + } + }); + } + return details; } @Override @@ -587,11 +620,12 @@ if (rechargeConfig.size() > 0 ){ for (Map<String, Object> stringObjectMap : rechargeConfig) { RechargeCentVo vo = new RechargeCentVo(); - vo.setAmount("¥ "+stringObjectMap.get("money")); + vo.setChargeId((Integer) stringObjectMap.get("money")); + vo.setAmount(""+stringObjectMap.get("money")); if (tAppUser.getIsVip() == 1){ - vo.setWpGold(stringObjectMap.get("MemberCoins")+"币"); + vo.setWpGold(stringObjectMap.get("MemberCoins")+""); }else { - vo.setWpGold(stringObjectMap.get("usersCoins")+"币"); + vo.setWpGold(stringObjectMap.get("usersCoins")+""); } centVos.add(vo); } @@ -600,14 +634,8 @@ } @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()); @@ -615,7 +643,7 @@ List<PointsMerchandise> vicinityGoods = mcClient.getVicinityGoods(commodityRequest); if (vicinityGoods.size() > 0) { for (PointsMerchandise vicinityGood : vicinityGoods) { - PointMallDetailsResponse.Goods commodity = new PointMallDetailsResponse.Goods(); + Goods commodity = new Goods(); switch (vicinityGood.getType()) { case 1: commodity.setGoodId(vicinityGood.getId()); @@ -672,7 +700,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()); @@ -698,17 +726,17 @@ switch (request.getRank()){ case 1: goods = goods.stream() - .sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getIntegral).reversed()) + .sorted(Comparator.comparing(Goods::getIntegral).reversed()) .collect(Collectors.toList()); break; case 2: goods = goods.stream() - .sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getIntegral)) + .sorted(Comparator.comparing(Goods::getIntegral)) .collect(Collectors.toList()); break; case 3: goods = goods.stream() - .sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getNums).reversed()) + .sorted(Comparator.comparing(Goods::getNums).reversed()) .collect(Collectors.toList()); break; default: @@ -721,8 +749,16 @@ .filter(merchandise -> merchandise.getGoodsType().equals(request.getGoodsType())) .collect(Collectors.toList()); } - detailsResponse.setGoods(goods); - return detailsResponse; + Pageable pageable = PageRequest.of(request.getPageNum() - 1, request.getPageSize()); + Page<Goods> page = getPage(goods, pageable); + return page.getContent(); + } + + // 对数据进行分页处理的方法 + 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 @@ -784,7 +820,7 @@ } @Override - public ResultUtil productRedemptionOperation(Integer userIdFormRedis, Integer goodId, Integer goodsType,Integer nums,Integer exchangeType,Integer payType) { + public ResultUtil productRedemptionOperation(Integer userIdFormRedis, Integer goodId, Integer goodsType,Integer nums,Integer exchangeType,Integer payType,List<Integer> stuIds) { PointsMerchandise merchandise = mcClient.selectPointsMerchandiseById(goodId); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); @@ -812,14 +848,34 @@ this.baseMapper.updateById(tAppUser); // 现金支付 - if (exchangeType == 1){ -// 积分兑换 - switch (goodsType){ + if (exchangeType == 2) { + switch (goodsType) { case 2: - for (int i = 0; i < nums; i++) { + for (int i = 0; i < stuIds.size(); i++) { + List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId()); + TCoursePackagePayment packagePayment = new TCoursePackagePayment(); -// packagePayment.setAppUserId(); - // TODO: 2023/7/14 + 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; + } + } + 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; @@ -836,29 +892,149 @@ default: break; } - }else { + switch (payType){ case 1: - return WechatPayment(merchandise.getCash(),code); + try { + if (merchandise.getType() == 2){ + return WechatPayment(merchandise.getCash().multiply(new BigDecimal(stuIds.size())),code); + }else { + return WechatPayment(merchandise.getCash().multiply(new BigDecimal(nums)),code); + } + }catch (Exception e){ + return ResultUtil.runErr(); + } case 2: - return AlipayPayment(merchandise.getCash(),code); + 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; } } - return null; + return ResultUtil.success(); } private ResultUtil AlipayPayment(BigDecimal cash, String code) { - - return ResultUtil.success(); + ResultUtil alipay = payMoneyUtil.alipay("课包续费", "", "", code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentAliCallback"); + if(alipay.getCode() == 200){ + new Thread(new Runnable() { + @Override + public void run() { + try { + int num = 1; + int wait = 0; + while (num <= 10){ + int min = 5000; + wait += (min * num); + Thread.sleep(wait); + List<UserPointsMerchandise> userPointsMerchandises = mcClient.queryUserPointMerchaseByCode(code); + if(userPointsMerchandises.get(0).getPayStatus() == 2){ + break; + } + ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code); + if(resultUtil.getCode() == 200 && userPointsMerchandises.get(0).getPayStatus() == 1){ + /** + * WAIT_BUYER_PAY(交易创建,等待买家付款)、 + * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、 + * TRADE_SUCCESS(交易支付成功)、 + * TRADE_FINISHED(交易结束,不可退款) + */ + Map<String, String> data1 = resultUtil.getData(); + String s = data1.get("tradeStatus"); + String tradeNo = data1.get("tradeNo"); +// if("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10){ +// coursePackagePayment.setState(3); +// couPayClient.delPaymentCoursePackage(coursePackagePayment.getId()); +// break; +// } + if("TRADE_SUCCESS".equals(s)){ + for (UserPointsMerchandise userPointsMerchandise : userPointsMerchandises) { + userPointsMerchandise.setPayStatus(2); + userPointsMerchandise.setOrderNumber(tradeNo); + userPointsMerchandise.setPayType(2); + mcClient.updateDetailsUserPointMercase(userPointsMerchandise); + } + break; + } + if("WAIT_BUYER_PAY".equals(s)){ + num++; + } + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + }).start(); + } + return alipay; } - private ResultUtil WechatPayment(BigDecimal cash, String code) { - - return ResultUtil.success(); + private ResultUtil WechatPayment(BigDecimal cash, String code) throws Exception { + ResultUtil weixinpay = payMoneyUtil.weixinpay("课包", "", code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", ""); + if(weixinpay.getCode() == 200){ + new Thread(new Runnable() { + @Override + public void run() { + try { + int num = 1; + int wait = 0; + while (num <= 10){ + int min = 5000; + wait += (min * num); + Thread.sleep(wait); + List<UserPointsMerchandise> userPointsMerchandises = mcClient.queryUserPointMerchaseByCode(code); + if(userPointsMerchandises.get(0).getPayStatus() == 2){ + break; + } + ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, ""); + if(resultUtil.getCode() == 200 && userPointsMerchandises.get(0).getPayStatus() == 1){ + /** + * SUCCESS—支付成功, + * REFUND—转入退款, + * NOTPAY—未支付, + * CLOSED—已关闭, + * REVOKED—已撤销(刷卡支付), + * USERPAYING--用户支付中, + * PAYERROR--支付失败(其他原因,如银行返回失败) + */ + Map<String, String> data1 = resultUtil.getData(); + String s = data1.get("trade_state"); + String transaction_id = data1.get("transaction_id"); +// if("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10){ +// coursePackagePayment.setState(3); +// couPayClient.delPaymentCoursePackage(coursePackagePayment.getId()); +// break; +// } + if("SUCCESS".equals(s)){ + for (UserPointsMerchandise userPointsMerchandise : userPointsMerchandises) { + userPointsMerchandise.setPayStatus(2); + userPointsMerchandise.setOrderNumber(transaction_id); + userPointsMerchandise.setPayType(1); + mcClient.updateDetailsUserPointMercase(userPointsMerchandise); + } + break; + } + if("USERPAYING".equals(s)){ + num++; + } + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + }).start(); + } + return weixinpay; } @Override @@ -867,17 +1043,22 @@ if (userPointsMerchandises.size() > 1){ for (int i = 0; i < userPointsMerchandises.size(); i++) { userPointsMerchandises.get(i).setOrderNumber(orderNumber+ "-" + (i+1)); + userPointsMerchandises.get(i).setPayType(payType); + userPointsMerchandises.get(i).setPayStatus(2); mcClient.updateDetailsUserPointMercase(userPointsMerchandises.get(i)); Integer pointsMerchandiseId = userPointsMerchandises.get(i).getPointsMerchandiseId(); PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(pointsMerchandiseId); switch (pointsMerchandise.getType()){ case 2: - TCoursePackagePayment packagePayment = new TCoursePackagePayment(); - -// packagePayment.setAppUserId(); - - paymentClient.savePaymentCoursePackage(packagePayment); + List<TCoursePackagePayment> coursePackagePaymentOfCode = paymentClient.getCoursePackagePaymentOfCode(code); + for (TCoursePackagePayment coursePackagePayment : coursePackagePaymentOfCode) { + coursePackagePayment.setPayStatus(2); + coursePackagePayment.setPayType(payType); + coursePackagePayment.setOrderNumber(orderNumber); + coursePackagePayment.setCashPayment(pointsMerchandise.getCash()); + paymentClient.updatePaymentCoursePackage(coursePackagePayment); + } break; case 4: UserCoupon coupon = new UserCoupon(); @@ -893,16 +1074,22 @@ } }else { userPointsMerchandises.get(0).setOrderNumber(orderNumber); + userPointsMerchandises.get(0).setPayType(payType); + userPointsMerchandises.get(0).setPayStatus(2); mcClient.updateDetailsUserPointMercase(userPointsMerchandises.get(0)); + Integer pointsMerchandiseId = userPointsMerchandises.get(0).getPointsMerchandiseId(); PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(pointsMerchandiseId); switch (pointsMerchandise.getType()){ case 2: - TCoursePackagePayment packagePayment = new TCoursePackagePayment(); + List<TCoursePackagePayment> coursePackagePaymentOfCode = paymentClient.getCoursePackagePaymentOfCode(code); -// packagePayment.setAppUserId(); - - paymentClient.savePaymentCoursePackage(packagePayment); + TCoursePackagePayment packagePayment =coursePackagePaymentOfCode.get(0); + packagePayment.setPayStatus(2); + packagePayment.setPayType(payType); + packagePayment.setOrderNumber(orderNumber); + packagePayment.setCashPayment(pointsMerchandise.getCash()); + paymentClient.updatePaymentCoursePackage(packagePayment); break; case 4: UserCoupon coupon = new UserCoupon(); @@ -950,4 +1137,19 @@ } + @Override + public List<CourseVenue> queryWeekOfCourseDetails(Integer appUserId ,Integer stuId, String time,String longitude,String latitude) { + List<CourseVenue> courseVenues = new ArrayList<>(); + WeeksOfCourseRest weeksOfCourseRest = new WeeksOfCourseRest(); + weeksOfCourseRest.setTime(time); + weeksOfCourseRest.setStuId(stuId); + weeksOfCourseRest.setAppUserId(appUserId); + List<CourseOfStoreVo> storeOfCourses = paymentClient.getStoreOfCourses(weeksOfCourseRest); + if (storeOfCourses.size() > 0 ){ + courseVenues = dealDatas(storeOfCourses,longitude,latitude); + } + return courseVenues; + } + + } -- Gitblit v1.7.1