From 5dc40fcd64b0513150f1d8335ab849e6d8cdc28e Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 04 七月 2025 19:42:49 +0800 Subject: [PATCH] 支付版本更新 根据资金流向使用V2或V3服务商版本支付 --- cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 1171 ++++++++++++++++++++++++++++++--------------------------- 1 files changed, 616 insertions(+), 555 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 c666c39..4242951 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 @@ -20,6 +20,8 @@ import com.dsh.account.enums.RechargeRecordEnum; import com.dsh.account.feignclient.activity.*; import com.dsh.account.feignclient.activity.model.*; +import com.dsh.account.feignclient.communityWorldCup.WorldCupPaymentClinet; +import com.dsh.account.feignclient.communityWorldCup.model.GetWorldCupPayment; import com.dsh.account.feignclient.competition.DeductionCompetitionsClient; import com.dsh.account.feignclient.competition.model.BillingDataRequestVo; import com.dsh.account.feignclient.course.CoursePackageClient; @@ -27,13 +29,8 @@ 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; -import com.dsh.account.feignclient.other.SiteClient; -import com.dsh.account.feignclient.other.StoreClient; -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.feignclient.other.*; +import com.dsh.account.feignclient.other.model.*; import com.dsh.account.mapper.*; import com.dsh.account.model.*; import com.dsh.account.model.AppUserByNameAndPhoneDTO; @@ -45,10 +42,13 @@ import com.dsh.account.model.vo.classDetails.RegisteredCourse; import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo; import com.dsh.account.model.vo.userBenefitDetail.*; +import com.dsh.account.service.IRefereeService; import com.dsh.account.service.TAppGiftService; import com.dsh.account.service.TAppUserService; +import com.dsh.account.service.UserIntegralChangesService; import com.dsh.account.util.*; import com.dsh.account.util.akeylogin.Md5Util; +import com.dsh.account.util.wx.WxV3PayConfig; import com.dsh.account.vo.GroupCityInfoVO; import com.dsh.account.vo.entity.DayData; import com.dsh.account.vo.entity.MonthData; @@ -116,7 +116,6 @@ @Resource private ImgConfigClient icfgClient; - @Resource private VideoOfCourseListClient voclClient; @@ -131,6 +130,7 @@ @Resource private UserConponClient ucponClient; + @Resource private CoursePackageClient cpageClient; @@ -149,14 +149,16 @@ @Resource private SiteClient stClient; - @Autowired + + @Resource private TAppUserMapper appUserMapper; @Autowired private TAppGiftService appGiftService; - @Autowired + @Resource private IntroduceRewardsClient introduceRewardsClient; + private String aliAppid = "2021004105665036";//支付宝appid @@ -177,6 +179,18 @@ @Resource private UserCouponPaymentClient userCouponPaymentClient; + + @Autowired + private IRefereeService refereeService; + + @Resource + private WorldCupPaymentClinet worldCupPaymentClinet; + + @Autowired + private UserIntegralChangesService userIntegralChangesService; + + @Resource + private GameRecordClient gameRecordClient; @@ -459,43 +473,40 @@ return ResultUtil.error("请先开启定位", ""); } Map<String, String> geocode = gdMapGeocodingUtil.geocode(addAppUserVo.getLon(), addAppUserVo.getLat()); - Integer num = 0; - Integer activityId = null; if (null != geocode) { - String province = geocode.get("province"); - String provinceCode = geocode.get("provinceCode"); - String city = geocode.get("city"); String cityCode = geocode.get("cityCode"); // 根据所在市code 查询是否有介绍有礼活动 - IntroduceRewards res = introduceRewardsClient.getGiftList(cityCode); + List<IntroduceRewards> res = introduceRewardsClient.getGiftList(cityCode); if (res != null) { - num = res.getGiveClass(); - activityId = res.getId(); - if (ToolUtil.isNotEmpty(addAppUserVo.getInvitePhone())) { - List<TAppUser> tAppUsers = this.baseMapper.selectList(new LambdaQueryWrapper<TAppUser>() - .eq(TAppUser::getPhone, addAppUserVo.getInvitePhone())); - if (tAppUsers.size() > 0) { - addAppUserVo.setReferralUserId(tAppUsers.get(0).getId()); + for (IntroduceRewards re : res) { + Integer num = re.getGiveClass(); + Integer activityId = re.getId(); + if (ToolUtil.isNotEmpty(addAppUserVo.getInvitePhone())) { + List<TAppUser> tAppUsers = this.baseMapper.selectList(new LambdaQueryWrapper<TAppUser>() + .eq(TAppUser::getPhone, addAppUserVo.getInvitePhone())); + if (tAppUsers.size() > 0) { + addAppUserVo.setReferralUserId(tAppUsers.get(0).getId()); + } } - } - if (num != 0) { - TAppGift tAppGift = new TAppGift(); - TAppUser phone = appUserService.getOne(new QueryWrapper<TAppUser>() - .eq("phone", addAppUserVo.getInvitePhone())); - if (phone == null) { - return ResultUtil.error("推荐人手机号未注册玩湃会员!"); - } else { - tAppGift.setUserName(phone.getName()); - tAppGift.setUserPhone(phone.getPhone()); + if (num != 0) { + TAppGift tAppGift = new TAppGift(); + TAppUser phone = appUserService.getOne(new QueryWrapper<TAppUser>() + .eq("phone", addAppUserVo.getInvitePhone())); + if (phone == null) { + return ResultUtil.error("推荐人手机号未注册玩湃会员!"); + } else { + tAppGift.setUserName(phone.getName()); + tAppGift.setUserPhone(phone.getPhone()); + } + tAppGift.setUserId(addAppUserVo.getReferralUserId()); + tAppGift.setNum(num); + tAppGift.setShareUserId(tAppUser.getId()); + tAppGift.setShareUserName(tAppUser.getPhone()); + tAppGift.setShareUserPhone(tAppUser.getPhone()); + tAppGift.setActivityId(activityId); + tAppGift.setInsertTime(new Date()); + appGiftService.save(tAppGift); } - tAppGift.setUserId(addAppUserVo.getReferralUserId()); - tAppGift.setNum(num); - tAppGift.setShareUserId(tAppUser.getId()); - tAppGift.setShareUserName(tAppUser.getPhone()); - tAppGift.setShareUserPhone(tAppUser.getPhone()); - tAppGift.setActivityId(activityId); - tAppGift.setInsertTime(new Date()); - appGiftService.save(tAppGift); } } } @@ -753,7 +764,6 @@ @Override public IndexOfUserBenefirVo queryBenefitDetails(Integer appUserId, String lon, String lat) { IndexOfUserBenefirVo benefirVo = new IndexOfUserBenefirVo(); - TAppUser appUser = this.getById(appUserId); if (appUser.getHeadImg() != null) { benefirVo.setUserHeadImg(appUser.getHeadImg()); @@ -775,6 +785,8 @@ List<IntegralCommodity> convertibleGoods = mcClient.getConvertibleGoods(location); benefirVo.setCommodities(convertibleGoods); benefirVo.setImage(icfgClient.getImageConfig()); + Referee referee = refereeService.getOne(new QueryWrapper<Referee>().eq("phone", appUser.getPhone()).eq("state", 1)); + benefirVo.setReferee(null == referee ? 0 : 1); return benefirVo; } @@ -807,6 +819,7 @@ consumeDetail.setConsumeTime(paymentCompetition.getTime()); consumeDetail.setConsumeAmount("-" + paymentCompetition.getAmount()); consumeDetail.setType(2); + consumeDetail.setDateTime(paymentCompetition.getDateTime()); details.add(consumeDetail); } } @@ -819,37 +832,21 @@ consumeDetail.setConsumeTime(paymentCompetition.getTime()); consumeDetail.setConsumeAmount("+" + paymentCompetition.getAmount()); consumeDetail.setType(1); + consumeDetail.setDateTime(paymentCompetition.getDateTime()); details.add(consumeDetail); } } -// 3.课包购买 -// 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(coursePackagePayment.getTime()); -// consumeDetail.setConsumeAmount("-" + coursePackagePayment.getAmount()); -// consumeDetail.setType(2); -// details.add(consumeDetail); -// } -// } - //2.0 - List<CourseCounsum> courseCounsums = paymentClient.getConsumes(requestVo); + //3.课包购买 + List<CoursePackageOrder> coursePackageOrder = paymentClient.getCoursePackageOrder(requestVo); - for (CourseCounsum courseCounsum : courseCounsums) { + for (CoursePackageOrder order : coursePackageOrder) { ConsumeDetail consumeDetail = new ConsumeDetail(); - String[] split = courseCounsum.getReason().split(";"); - consumeDetail.setConsumeName(split[0]); - consumeDetail.setConsumeTime(simpleDateFormat.format(courseCounsum.getInsertTime())); -// if (courseCounsum.getChangeType()==3){ - consumeDetail.setConsumeAmount("-" + split[1]); + consumeDetail.setConsumeName("课程报名"); + consumeDetail.setConsumeTime(simpleDateFormat.format(order.getInsertTime())); + consumeDetail.setConsumeAmount("-" + order.getCashPayment()); consumeDetail.setType(2); -// } -// -// consumeDetail.setConsumeAmount("-" + coursePackagePayment.getAmount()); -// consumeDetail.setType(2); + consumeDetail.setDateTime(order.getInsertTime().getTime()); details.add(consumeDetail); } @@ -864,27 +861,44 @@ consumeDetail.setConsumeAmount("-" + booking.getAmount()); consumeDetail.setConsumeTime(booking.getTime()); consumeDetail.setType(2); + consumeDetail.setDateTime(booking.getDateTime()); details.add(consumeDetail); } else { ConsumeDetail consumeDetail1 = new ConsumeDetail(); consumeDetail1.setConsumeName(RechargeRecordEnum.CANCEL_VENUE_RESERVATION.getMsg()); consumeDetail1.setConsumeAmount("+" + booking.getAmount()); consumeDetail1.setConsumeTime(booking.getTime()); + consumeDetail1.setDateTime(booking.getDateTime()); consumeDetail1.setType(1); details.add(consumeDetail1); + ConsumeDetail consumeDetail2 = new ConsumeDetail(); consumeDetail2.setConsumeName(RechargeRecordEnum.VENUE_RESERVATION.getMsg()); consumeDetail2.setConsumeAmount("-" + booking.getAmount()); consumeDetail2.setConsumeTime(booking.getTime1()); consumeDetail2.setType(2); + consumeDetail2.setDateTime(booking.getDateTime()); details.add(consumeDetail2); - } -// details.add(consumeDetail); } } // 5.智慧球场 + GetTGameRecord getTGameRecord = new GetTGameRecord(); + getTGameRecord.setAppUserId(appUserId); + getTGameRecord.setStartTiem(monthStart); + getTGameRecord.setEndTime(monthEnd); + List<TGameRecord> tGameRecord = gameRecordClient.getTGameRecord(getTGameRecord); + for (TGameRecord gameRecord : tGameRecord) { + ConsumeDetail consumeDetail = new ConsumeDetail(); + consumeDetail.setConsumeName(RechargeRecordEnum.SMART_STADIUM.getMsg()); + consumeDetail.setConsumeTime(simpleDateFormat.format(gameRecord.getTime())); + consumeDetail.setConsumeAmount("-" + gameRecord.getMoney()); + consumeDetail.setType(2); + consumeDetail.setDateTime(gameRecord.getTime().getTime()); + details.add(consumeDetail); + } + // 6.年度会员 List<VipPayment> vipPayments = vipPaymentMapper.selectList(new QueryWrapper<VipPayment>() .eq("payStatus", 2) @@ -897,6 +911,7 @@ consumeDetail.setConsumeTime(simpleDateFormat.format(vipPayment.getInsertTime())); consumeDetail.setConsumeAmount("-" + vipPayment.getAmount()); consumeDetail.setType(2); + consumeDetail.setDateTime(vipPayment.getPayTime().getTime()); details.add(consumeDetail); } } @@ -912,6 +927,7 @@ consumeDetail.setConsumeTime(simpleDateFormat.format(rechargeRecord.getInsertTime())); consumeDetail.setConsumeAmount("-" + rechargeRecord.getAmount()); consumeDetail.setType(2); + consumeDetail.setDateTime(rechargeRecord.getPayTime().getTime()); details.add(consumeDetail); } } @@ -922,21 +938,47 @@ details.addAll(consumeDetails); + //世界杯 + GetWorldCupPayment getWorldCupPayment = new GetWorldCupPayment(); + getWorldCupPayment.setAppUserId(appUserId); + getWorldCupPayment.setPayType("1,2"); + getWorldCupPayment.setStartTime(monthStart); + getWorldCupPayment.setEndTime(monthEnd); + List<WorldCupPayment> worldCupPayment = worldCupPaymentClinet.getWorldCupPayment(getWorldCupPayment); + for (WorldCupPayment cupPayment : worldCupPayment) { + ConsumeDetail consumeDetail = new ConsumeDetail(); + if(cupPayment.getPayStatus() != 3){ + consumeDetail.setConsumeName(RechargeRecordEnum.WORLD_CIP_PAYMENT.getMsg()); + consumeDetail.setConsumeTime(simpleDateFormat.format(cupPayment.getCreateTime())); + consumeDetail.setConsumeAmount("-" + cupPayment.getAmount()); + consumeDetail.setType(2); + consumeDetail.setDateTime(cupPayment.getPayTime().getTime()); + details.add(consumeDetail); + }else{ + consumeDetail = new ConsumeDetail(); + consumeDetail.setConsumeName(RechargeRecordEnum.WORLD_CIP_PAYMENT.getMsg()); + consumeDetail.setConsumeTime(simpleDateFormat.format(cupPayment.getCreateTime())); + consumeDetail.setConsumeAmount("-" + cupPayment.getAmount()); + consumeDetail.setType(2); + consumeDetail.setDateTime(cupPayment.getPayTime().getTime()); + details.add(consumeDetail); + + consumeDetail = new ConsumeDetail(); + consumeDetail.setConsumeName(RechargeRecordEnum.CANCEL_WORLD_CIP_PAYMENT.getMsg()); + consumeDetail.setConsumeTime(simpleDateFormat.format(cupPayment.getCreateTime())); + consumeDetail.setConsumeAmount("+" + cupPayment.getRefundAmount()); + consumeDetail.setType(1); + consumeDetail.setDateTime(cupPayment.getRefundTime().getTime()); + details.add(consumeDetail); + } + } + + 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 record1.getDateTime().compareTo(record2.getDateTime()) * -1; } }); @@ -946,6 +988,7 @@ .collect(Collectors.toList()); } } + return details; } @@ -1175,6 +1218,7 @@ if (tAppUser.getState() == 2) { return ResultUtil.error("您的账号已被冻结"); } + boolean newUser = false; List<TAppUser> tAppUsers1 = appUserMapper.selectList(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhone, dto.getPhone()).eq(TAppUser::getState, 1)); if (tAppUsers1.size() > 0) { TAppUser tAppUser1 = tAppUsers1.get(0); @@ -1192,56 +1236,49 @@ appUserMapper.updateById(tAppUser); token = getToken(tAppUser); map.put("token", token); - + newUser = true; } -// tAppUser.setPhone(dto.getPhone()); - - if (ToolUtil.isNotEmpty(dto.getInvitePhone())) { + if (newUser && ToolUtil.isNotEmpty(dto.getInvitePhone())) { if (ToolUtil.isEmpty(dto.getLat()) || ToolUtil.isEmpty(dto.getLon())) { return ResultUtil.error("请先开启定位"); } - TAppUser tAppUser1 = appUserMapper.selectOne(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhone, dto.getInvitePhone()).eq(TAppUser::getState, 1)); - if (tAppUser1 != null) { - Map<String, String> geocode = null; - try { - geocode = gdMapGeocodingUtil.geocode(dto.getLon(), dto.getLat()); - } catch (Exception e) { - e.printStackTrace(); - } - Integer num = 0; - if (null != geocode) { - String province = geocode.get("province"); - String provinceCode = geocode.get("provinceCode"); - String city = geocode.get("city"); - String cityCode = geocode.get("cityCode"); - IntroduceRewards giftList = introduceRewardsClient.getGiftList(cityCode); - num = giftList.getGiveClass(); - } - Integer userId = null; - if (ToolUtil.isNotEmpty(dto.getInvitePhone())) { - List<TAppUser> tAppUsers = this.baseMapper.selectList(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhone, dto.getInvitePhone())); - if (tAppUsers.size() > 0) { - userId = tAppUsers.get(0).getId(); - } - } - if (userId != null) { - TAppGift one = appGiftService.getOne(new LambdaQueryWrapper<TAppGift>().eq(TAppGift::getUserId, userId)); - if (one != null) { - one.setNum(one.getNum() + num); - appGiftService.updateById(one); - } else { - TAppGift tAppGift = new TAppGift(); - tAppGift.setUserId(userId); - tAppGift.setNum(num); - appGiftService.save(tAppGift); + TAppUser tAppUser1 = appUserMapper.selectOne(new LambdaQueryWrapper<TAppUser>() + .eq(TAppUser::getPhone, dto.getInvitePhone()).eq(TAppUser::getState, 1)); + if(null == tAppUser1){ + return ResultUtil.error("邀请人还未注册账号"); + } + Map<String, String> geocode = null; + try { + geocode = gdMapGeocodingUtil.geocode(dto.getLon(), dto.getLat()); + } catch (Exception e) { + e.printStackTrace(); + } + if (null != geocode) { + String cityCode = geocode.get("cityCode"); + // 根据所在市code 查询是否有介绍有礼活动 + List<IntroduceRewards> res = introduceRewardsClient.getGiftList(cityCode); + if (res != null) { + for (IntroduceRewards re : res) { + Integer num = re.getGiveClass(); + Integer activityId = re.getId(); + if (num != 0) { + TAppGift tAppGift = new TAppGift(); + tAppGift.setUserName(tAppUser1.getName()); + tAppGift.setUserPhone(tAppUser1.getPhone()); + tAppGift.setUserId(tAppUser1.getId()); + tAppGift.setNum(num); + tAppGift.setShareUserId(tAppUser.getId()); + tAppGift.setShareUserName(tAppUser.getPhone()); + tAppGift.setShareUserPhone(tAppUser.getPhone()); + tAppGift.setActivityId(activityId); + tAppGift.setInsertTime(new Date()); + appGiftService.save(tAppGift); + } } } } } - -// appUserMapper.updateById(tAppUser); - return ResultUtil.success(map); } @@ -1328,11 +1365,9 @@ } //查询该用户是否超出限领数量 Integer usercounts = userConponClient.queryCounts1(queryIds); - if (usercounts == coupon.getPickUpQuantity()) { return new ResultUtil<>(0, "限领数量已达最大"); } - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); //生成支付订单 @@ -1383,9 +1418,7 @@ } } } - - - System.out.println(exchangeType); + System.out.println("兑换积分商品"+exchangeType); try { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); @@ -1454,130 +1487,162 @@ return ResultUtil.error("超过发放数量"); } - - for (int i = 0; i < goodsNums; i++) { -// 新增积分商品兑换记录 - UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise(); - pointsMerchandise.setPointsMerchandiseId(exchangeType.getGoodId()); - pointsMerchandise.setUserId(userIdFormRedis); + //新增积分商品兑换记录 + UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise(); + pointsMerchandise.setPointsMerchandiseId(exchangeType.getGoodId()); + pointsMerchandise.setUserId(userIdFormRedis); + pointsMerchandise.setGoodsNumber(goodsNums); + if (exchangeType.getGoodsType() == 2) { + pointsMerchandise.setStatus(2); + pointsMerchandise.setVerificationTime(new Date()); + } else { + pointsMerchandise.setStatus(1); + } + pointsMerchandise.setState(1); + if (exchangeType.getExchangeType() == 1) { + pointsMerchandise.setPayStatus(2); + pointsMerchandise.setPaymentTime(new Date()); + } else { + pointsMerchandise.setPayStatus(1); + } + if (merchandise.getUseScope() == 3) { if (exchangeType.getGoodsType() == 2) { - pointsMerchandise.setStatus(2); - pointsMerchandise.setVerificationTime(new Date()); + CoursePackage coursePackage = cpageClient.queryCoursePackageById(merchandise.getCoursePackageId()); + pointsMerchandise.setStoreId(coursePackage.getStoreId()); } else { - pointsMerchandise.setStatus(1); + pointsMerchandise.setStoreId(exchangeType.getStoreId()); } - pointsMerchandise.setState(1); - if (exchangeType.getExchangeType() == 1) { - pointsMerchandise.setPayStatus(2); - } else { - pointsMerchandise.setPayStatus(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); - pointsMerchandise.setInsertTime(new Date()); - returnId = mcClient.saveDetailsUserPointMercase(pointsMerchandise); + } + pointsMerchandise.setCode(code); + pointsMerchandise.setInsertTime(new Date()); + pointsMerchandise.setPayType(exchangeType.getExchangeType()); + if(null != merchandise.getIntegral()){ + pointsMerchandise.setIntegral(merchandise.getIntegral() * goodsNums); + } + if(exchangeType.getExchangeType() == 2 || exchangeType.getExchangeType() == 3){ + pointsMerchandise.setCash(merchandise.getCash()); + pointsMerchandise.setCashPayType(exchangeType.getPayType()); + } + + Double m = new BigDecimal((merchandise.getIntegral() == null ? 0 : merchandise.getIntegral())).add((merchandise.getCash() == null ? BigDecimal.ZERO : merchandise.getCash())).doubleValue(); + if((m * goodsNums) == 0) { + pointsMerchandise.setPayStatus(2); + pointsMerchandise.setPaymentTime(new Date()); + } + returnId = mcClient.saveDetailsUserPointMercase(pointsMerchandise); + if((m * goodsNums) == 0 && pointsMerchandise.getPayStatus() == 2){ + returnModel.setReturnId(returnId); + return ResultUtil.success(returnModel); } + System.err.println("兑换方式"+exchangeType); switch (exchangeType.getExchangeType()) { // 积分 case 1: - boolean b = true; - for (int i = 0; i < goodsNums; i++) { - b = dealAppUserIntegral(userIdFormRedis, tAppUser, merchandise.getIntegral()); + boolean b = dealAppUserIntegral(userIdFormRedis, tAppUser, merchandise.getIntegral() * goodsNums); + if (b) switch (exchangeType.getGoodsType()) { + case 2: + code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId()); + CoursePackageOrder coursePackageOrder = new CoursePackageOrder(); + coursePackageOrder.setCode(code); + coursePackageOrder.setAppUserId(userIdFormRedis); + String ids = exchangeType.getStuIds().stream().map(s -> { + return String.valueOf(s); + }).collect(Collectors.joining(";")); + coursePackageOrder.setStudentIds(ids); + coursePackageOrder.setCoursePackageId(merchandise.getCoursePackageId()); + coursePackageOrder.setPayType(4); + CoursePackagePaymentConfig config = null; + for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) { + if (coursePackagePaymentConfig.getId().compareTo(merchandise.getCoursePackageConfigId()) == 0) { + coursePackageOrder.setClassHours(coursePackagePaymentConfig.getClassHours()); + coursePackageOrder.setOriginalPrice(coursePackagePaymentConfig.getCashPayment()); + + config = coursePackagePaymentConfig; + break; + } + } + coursePackageOrder.setPlayPaiCoin(merchandise.getIntegral()); + coursePackageOrder.setPayUserType(1); + coursePackageOrder.setPayStatus(2); + coursePackageOrder.setPayUserId(userIdFormRedis); + coursePackageOrder.setStatus(1); + coursePackageOrder.setState(1); + coursePackageOrder.setInsertTime(new Date()); + coursePackageOrder.setOrderType(2); + Long coursePackageOrderId = paymentClient.savePaymentCoursePackage(coursePackageOrder); + + AddCoursePackageOrderStudent addCoursePackageOrderStudent = new AddCoursePackageOrderStudent(); + addCoursePackageOrderStudent.setCoursePackageOrderId(coursePackageOrderId); + addCoursePackageOrderStudent.setCoursePackagePaymentConfig(config); + paymentClient.addCoursePackageOrderStudent(addCoursePackageOrderStudent); + 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; } - 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.setCode(code); - packagePayment.setInsertTime(new Date()); -// paymentClient.savePaymentCoursePackage(packagePayment); - - OrderDto orderDto = new OrderDto(); - orderDto.setAppUserId(userIdFormRedis); - String joinedString = String.join(",", exchangeType.getStuIds().stream().map(Object::toString).collect(Collectors.toList())); - orderDto.setStuIds(joinedString); - orderDto.setClassId(merchandise.getCoursePackageId()); - orderDto.setClassHours(packagePayment.getClassHours()); - paymentClient.orderClass(orderDto); - - - } - 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 { + else { return ResultUtil.error("用户积分不足!"); } break; case 2: // 积分+现金 - boolean dealt = true; - for (int i = 0; i < goodsNums; i++) { - dealt = dealAppUserIntegral(userIdFormRedis, tAppUser, merchandise.getIntegral()); - } - 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); + List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId()); + CoursePackageOrder coursePackageOrder = new CoursePackageOrder(); + coursePackageOrder.setCode(code); + coursePackageOrder.setAppUserId(userIdFormRedis); + String ids = exchangeType.getStuIds().stream().map(s -> { + return String.valueOf(s); + }).collect(Collectors.joining(";")); + coursePackageOrder.setStudentIds(ids); + coursePackageOrder.setCoursePackageId(merchandise.getCoursePackageId()); + coursePackageOrder.setPayType(5); + CoursePackagePaymentConfig config = null; + for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) { + if (coursePackagePaymentConfig.getId().compareTo(merchandise.getCoursePackageConfigId()) == 0) { + coursePackageOrder.setClassHours(coursePackagePaymentConfig.getClassHours()); + coursePackageOrder.setOriginalPrice(coursePackagePaymentConfig.getCashPayment()); + break; + } + } + coursePackageOrder.setCashPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size()))); + coursePackageOrder.setPlayPaiCoin(merchandise.getIntegral() * exchangeType.getStuIds().size()); + coursePackageOrder.setPayUserType(1); + coursePackageOrder.setPayStatus(1); + coursePackageOrder.setPayUserId(userIdFormRedis); + coursePackageOrder.setStatus(1); + coursePackageOrder.setState(1); + coursePackageOrder.setInsertTime(new Date()); + coursePackageOrder.setOrderType(2); + paymentClient.savePaymentCoursePackage(coursePackageOrder); + return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code,merchandise.getId()); + } else if (merchandise.getType() == 1){ + return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code,merchandise.getId()); + }else if(merchandise.getType() == 3){ + return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code,merchandise.getId()); } } catch (Exception e) { return ResultUtil.runErr(); } case 2: if (merchandise.getType() == 2) { - return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code, returnId); + return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code, merchandise.getId()); } else { - return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, returnId); + return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, merchandise.getId()); } default: break; @@ -1588,18 +1653,18 @@ case 1: try { if (merchandise.getType() == 2) { - return WechatPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code); + return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code,merchandise.getId()); } else { - return WechatPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code); + return WechatPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code,merchandise.getId()); } } catch (Exception e) { return ResultUtil.runErr(); } case 2: if (merchandise.getType() == 2) { - return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code, returnId); + return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code, merchandise.getId()); } else { - return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, returnId); + return AlipayPayment(merchandise.getType(), merchandise.getCash().multiply(new BigDecimal(goodsNums)), code, merchandise.getId()); } default: break; @@ -1618,7 +1683,6 @@ } - /** * 优惠券微信支付 * @param body @@ -1629,75 +1693,33 @@ public ResultUtil weChatPaymentCoupon(String body, UserCouponPayment userCouponPayment) throws Exception { String code = userCouponPayment.getCode(); Double cash = userCouponPayment.getCash(); - ResultUtil weixinpay = payMoneyUtil.weixinpay(body, "", code, cash.toString(), "/base/coupon/weChatPaymentCouponCallback", "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); - UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code); - if (userCouponPayment1.getStatus() == 2) { - break; - } - ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, ""); - if (resultUtil.getCode() == 200 && userCouponPayment1.getStatus() == 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) { - //有待支付的订单,这里不处理 - userCouponPayment1.setStatus(-1); - userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); - break; - } - if ("SUCCESS".equals(s)) { - userCouponPayment1.setStatus(2); - userCouponPayment1.setPaymentTime(new Date()); - userCouponPayment1.setOrderNumber(transaction_id); - userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); + Integer couponId = userCouponPayment.getCouponId(); + Coupon coupon = userConponClient.queryCouponById(couponId); + List<Integer> couponStoreIds = userConponClient.getCouponStoreIds(couponId); + System.err.println("购买优惠券"); + if (coupon!=null){ + if (!couponStoreIds.isEmpty()&&!couponStoreIds.contains(-1)){ + // 微信商户号 + String s2 = storeClient.getmerchantNumberByOperatorId(coupon.getCityManagerId()); + System.err.println("微信商户号"+s2); - UserCoupon userCoupon = new UserCoupon(); - userCoupon.setCouponId(userCouponPayment1.getCouponId()); - userCoupon.setUserId(userCouponPayment1.getUserId()); - userCoupon.setStatus(1); - userCoupon.setInsertTime(new Date()); - userConponClient.insertToAppuserCoupon(userCoupon); - - if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){ - //扣积分 - TAppUser user = appUserService.getById(userCouponPayment1.getUserId()); - user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue()); - appUserService.updateById(user); - } - break; - } - if ("USERPAYING".equals(s)) { - num++; - } - } + if(!StringUtils.hasLength(s2)){ + return ResultUtil.error("运营商未配置微信商户号,获取支付失败!"); } - } catch (Exception e) { - e.printStackTrace(); - } - } - }).start(); + ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2,"购买优惠券", + code,"/base/coupon/weChatPaymentCouponCallback1", + cash.toString()); + return weixinpay; + + }else{ + // 平台发布 + ResultUtil weixinpay = payMoneyUtil.weixinpay(body, "", code, cash.toString(), + "/base/coupon/weChatPaymentCouponCallback", "APP", ""); + return weixinpay; + } } - return weixinpay; + + return ResultUtil.error("支付失败!"); } @@ -1707,84 +1729,115 @@ * @return * @throws Exception */ + private String smid = "2088330203191220";//平台支付宝商户号 public ResultUtil aliPaymentCoupon(String body, UserCouponPayment userCouponPayment) throws Exception { String code = userCouponPayment.getCode(); Double cash = userCouponPayment.getCash(); + Integer couponId = userCouponPayment.getCouponId(); + Coupon coupon = userConponClient.queryCouponById(couponId); + List<Integer> couponStoreIds = userConponClient.getCouponStoreIds(couponId); + if (coupon!=null){ + if (!couponStoreIds.isEmpty()&&!couponStoreIds.contains(-1)){ + // 门店 向上查询运营商 + Store store = storeClient.queryStoreById(couponStoreIds.get(0)); + if (store.getOperatorId()==null || store.getOperatorId()==0){ + // 平台 + ResultUtil alipay = payMoneyUtil.alipay(smid, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(), + "/base/coupon/aliPaymentCouponCallback"); + return alipay; + }else{ + // 支付宝商户号 + String s2 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId()); + System.err.println("支付宝商户号"+s2); - ResultUtil alipay = payMoneyUtil.alipay(body, body, "", code, cash.toString(), "/base/coupon/aliPaymentCouponCallback"); - if (alipay.getCode() == 200) { - new Thread(new Runnable() { - @Override - public void run() { - try { - Thread.sleep(1000); - - int num = 1; - int wait = 0; - while (num <= 10) { - int min = 5000; - wait += (min * num); - Thread.sleep(wait); - UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code); - if (userCouponPayment1.getStatus() == 2) { - break; - } - AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(code); - if (null != alipayTradeQueryResponse) { - /** - * WAIT_BUYER_PAY(交易创建,等待买家付款)、 - * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、 - * TRADE_SUCCESS(交易支付成功)、 - * TRADE_FINISHED(交易结束,不可退款) - */ - String s = alipayTradeQueryResponse.getTradeStatus(); - - String tradeNo = alipayTradeQueryResponse.getTradeNo(); - if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) { - //有待支付的订单,这里不处理 - userCouponPayment1.setStatus(-1); - userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); - if ("TRADE_FINISHED".equals(s)) { - // todo 资金结算 - payMoneyUtil.confirm(code,tradeNo,cash.toString()); - break; - } - break; - } - if ("TRADE_SUCCESS".equals(s)) { - userCouponPayment1.setStatus(2); - userCouponPayment1.setPaymentTime(new Date()); - userCouponPayment1.setOrderNumber(tradeNo); - userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); - - UserCoupon userCoupon = new UserCoupon(); - userCoupon.setCouponId(userCouponPayment1.getCouponId()); - userCoupon.setUserId(userCouponPayment1.getUserId()); - userCoupon.setStatus(1); - userCoupon.setInsertTime(new Date()); - userConponClient.insertToAppuserCoupon(userCoupon); - - if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){ - //扣积分 - TAppUser user = appUserService.getById(userCouponPayment1.getUserId()); - user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue()); - appUserService.updateById(user); - } - break; - } - - if ("WAIT_BUYER_PAY".equals(s)) { - num++; - } - } + if(!StringUtils.hasLength(s2)){ + return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!"); } - } catch (Exception e) { - e.printStackTrace(); + ResultUtil alipay = payMoneyUtil.alipay(s2, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(), + "/base/coupon/aliPaymentCouponCallback"); + return alipay; } - } - }).start(); + }else { + // 平台发布 + ResultUtil alipay = payMoneyUtil.alipay(smid, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(), + "/base/coupon/aliPaymentCouponCallback"); + return alipay; + } } - return alipay; +// ResultUtil alipay = payMoneyUtil.alipay(smid, body, "",String.valueOf(userCouponPayment.getId()), code, cash.toString(), +// "/base/coupon/aliPaymentCouponCallback"); +// if (alipay.getCode() == 200) { +// new Thread(new Runnable() { +// @Override +// public void run() { +// try { +// Thread.sleep(1000); +// +// int num = 1; +// int wait = 0; +// while (num <= 10) { +// int min = 5000; +// wait += (min * num); +// Thread.sleep(wait); +// UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code); +// if (userCouponPayment1.getStatus() == 2) { +// break; +// } +// AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(code); +// if (null != alipayTradeQueryResponse) { +// /** +// * WAIT_BUYER_PAY(交易创建,等待买家付款)、 +// * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、 +// * TRADE_SUCCESS(交易支付成功)、 +// * TRADE_FINISHED(交易结束,不可退款) +// */ +// String s = alipayTradeQueryResponse.getTradeStatus(); +// +// String tradeNo = alipayTradeQueryResponse.getTradeNo(); +// if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) { +// //有待支付的订单,这里不处理 +// userCouponPayment1.setStatus(-1); +// userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); +// if ("TRADE_FINISHED".equals(s)) { +// // todo 资金结算 +// +// } +// break; +// } +// if ("TRADE_SUCCESS".equals(s)) { +// userCouponPayment1.setStatus(2); +// userCouponPayment1.setPaymentTime(new Date()); +// userCouponPayment1.setOrderNumber(tradeNo); +// userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); +// UserCoupon userCoupon = new UserCoupon(); +// userCoupon.setCouponId(userCouponPayment1.getCouponId()); +// userCoupon.setUserId(userCouponPayment1.getUserId()); +// userCoupon.setStatus(1); +// userCoupon.setInsertTime(new Date()); +// userConponClient.insertToAppuserCoupon(userCoupon); +// if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){ +// //扣积分 +// TAppUser user = appUserService.getById(userCouponPayment1.getUserId()); +// user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue()); +// appUserService.updateById(user); +// } +//// payMoneyUtil.confirm(smid,code,tradeNo,cash.toString()); +// break; +// +// } +// +// if ("WAIT_BUYER_PAY".equals(s)) { +// num++; +// } +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// }).start(); +// } + return ResultUtil.error("支付失败"); } /** @@ -1794,7 +1847,8 @@ * @return */ @Override - public ResultUtil paymentCouponCallback(String code, String orderNumber) { + public ResultUtil paymentCouponCallback(String code, String orderNumber) throws Exception { + System.err.println("进入回调"); UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code); if (userCouponPayment1.getStatus() == 2) { return ResultUtil.success(); @@ -1813,10 +1867,15 @@ if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){ //扣积分 - TAppUser user = appUserService.getById(userCouponPayment1.getUserId()); - user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue()); - appUserService.updateById(user); + SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); + vo.setAppUserId(userCouponPayment1.getUserId()); + vo.setIntegral(userCouponPayment1.getIntegral().intValue() * -1); + vo.setRemark("兑换优惠券"); + vo.setType(2); + userIntegralChangesService.saveUserIntegralChanges(vo); } + Coupon coupon = ucponClient.queryCouponById(userCouponPayment1.getCouponId()); + // 创建一个两分钟后执行的线程 return ResultUtil.success(); } @@ -1843,78 +1902,85 @@ } } - private ResultUtil AlipayPayment(BigDecimal cash, String code, Long returnId) { - ResultUtil alipay = payMoneyUtil.alipay("优惠卷", "优惠卷", String.valueOf(returnId), 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); - System.out.println("code:" + code); - List<UserPointsMerchandise> userPointsMerchandises = mcClient.queryUserPointMerchaseByCode(code); - System.out.println("list-----" + userPointsMerchandises); - if (userPointsMerchandises.get(0).getPayStatus() == 2) { - break; - } -// ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code); - AlipayTradeQueryResponse resultUtil = payMoneyUtil.queryALIOrder(code); - if (resultUtil.getCode().equals("10000") && 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"); + private ResultUtil AlipayPayment(Integer type, BigDecimal cash, String code, Integer returnId) { + PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(returnId); + System.err.println("查询积分商品"+pointsMerchandise); + List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerchandise.getId()); + String name = (type == 1 ? "购买实体商品" : type == 2 ? "报名运动营": type == 3 ? "购买门票" : "购买优惠券"); + switch (type) { + case 1: + if (!integers.isEmpty()) { + Store store1 = storeClient.queryStoreById(integers.get(0)); + if (store1.getOperatorId() == null || store1.getOperatorId() == 0) { + // 平台门票 + ResultUtil alipay = payMoneyUtil.alipay(smid, name, name, String.valueOf(returnId), code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentAliCallback"); + return alipay; + } else { + String s2 = storeClient.getmerchantNumberAliByOperatorId(store1.getOperatorId()); + System.err.println("支付宝商户号" + s2); - String tradeNo = resultUtil.getTradeNo(); - String tradeStatus = resultUtil.getTradeStatus(); - System.out.println("ssssss" + tradeStatus); - - if ("TRADE_SUCCESS".equals(tradeStatus)) { - for (UserPointsMerchandise userPointsMerchandise : userPointsMerchandises) { - userPointsMerchandise.setPayStatus(2); - userPointsMerchandise.setOrderNumber(tradeNo); - userPointsMerchandise.setPayType(2); - userPointsMerchandise.setInsertTime(null); - userPointsMerchandise.setUserId(null); - mcClient.updateDetailsUserPointMercase(userPointsMerchandise); - } - moneyOut(tradeNo, tradeNo); - break; - } - if ("TRADE_FINISHED".equals(tradeStatus)) { - // todo 资金结算 - payMoneyUtil.confirm(code,tradeNo,cash.toString()); - break; - } -// if("REFUND".equals(tradeStatus) || "NOTPAY".equals(tradeStatus) || "CLOSED".equals(tradeStatus) || "REVOKED".equals(tradeStatus) || "PAYERROR".equals(tradeStatus) || num == 10){ -// mcClient.deletePaymentRecord(code); -// break; -// } - - if ("WAIT_BUYER_PAY".equals(tradeStatus)) { - num++; - } - } + if (!StringUtils.hasLength(s2)) { + return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!"); } - } catch (Exception e) { - mcClient.deletePaymentRecord(code); - e.printStackTrace(); + ResultUtil alipay = payMoneyUtil.alipay(s2, name, name, String.valueOf(returnId), code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentAliCallback"); + return alipay; } + }else{ + // 平台门票 + ResultUtil alipay = payMoneyUtil.alipay(smid, name, name, String.valueOf(returnId), code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentAliCallback"); + return alipay; + } - }).start(); - } - return alipay; + case 2: + // 判断课包属于平台还是运营商 + CoursePackage coursePackage = cpageClient.queryCoursePackageById(pointsMerchandise.getCoursePackageId()); + Store store = storeClient.queryStoreById(coursePackage.getStoreId()); + if (store.getOperatorId() == null || store.getOperatorId() == 0) { + // 平台课包 + ResultUtil alipay = payMoneyUtil.alipay(smid, name, name, String.valueOf(returnId), code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentAliCallback"); + return alipay; + } else { + String s2 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId()); + System.err.println("支付宝商户号" + s2); + + if (!StringUtils.hasLength(s2)) { + return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!"); + } + ResultUtil alipay = payMoneyUtil.alipay(s2, name, name, String.valueOf(returnId), code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentAliCallback"); + return alipay; + } + case 3: + if (!integers.isEmpty()) { + Store store1 = storeClient.queryStoreById(integers.get(0)); + if (store1.getOperatorId() == null || store1.getOperatorId() == 0) { + // 平台门票 + ResultUtil alipay = payMoneyUtil.alipay(smid, name, name, String.valueOf(returnId), code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentAliCallback"); + return alipay; + } else { + String s2 = storeClient.getmerchantNumberAliByOperatorId(store1.getOperatorId()); + System.err.println("支付宝商户号" + s2); + if (!StringUtils.hasLength(s2)) { + return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!"); + } + ResultUtil alipay = payMoneyUtil.alipay(s2, name, name, String.valueOf(returnId), code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentAliCallback"); + return alipay; + } + }else{ + // 平台门票 + ResultUtil alipay = payMoneyUtil.alipay(smid, name, name, String.valueOf(returnId), code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentAliCallback"); + return alipay; + } + } + return ResultUtil.error("获取支付失败!"); + } public void moneyOut(String outNum, String tradeNo) throws AlipayApiException { @@ -2009,134 +2075,129 @@ } - 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) { - mcClient.deletePaymentRecord(code); - 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++; - } - } + private ResultUtil WechatPayment(Integer type, BigDecimal cash, String code,Integer id) throws Exception { + String name = (type == 1 ? "购买实体商品" : type == 2 ? "报名运动营": type == 3 ? "购买门票" : "购买优惠券"); + System.err.println("微信支付:"+name); + + PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(id); + System.err.println("查询积分商品"+pointsMerchandise); + List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerchandise.getId()); + + switch (type){ + case 1: + if (!integers.isEmpty()){ + Store store1 = storeClient.queryStoreById(integers.get(0)); + if (store1.getOperatorId() ==null || store1.getOperatorId() == 0){ + // 平台门票 + ResultUtil weixinpay = payMoneyUtil.weixinpay(name, "", code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", ""); + return weixinpay; + }else{ + String s2 = storeClient.getmerchantNumberByOperatorId(store1.getOperatorId()); + System.err.println("微信商户号"+s2); + + if(!StringUtils.hasLength(s2)){ + return ResultUtil.error("运营商未配置微信商户号,获取支付失败!"); } - } catch (Exception e) { - e.printStackTrace(); + ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2,name, code, + "/base/pointMer/exchangeGoodPaymentWeChatCallback1", + cash.toString()); + return weixinpay; } } - }).start(); + break; + case 2: + // 判断课包属于平台还是运营商 + CoursePackage coursePackage = cpageClient.queryCoursePackageById(pointsMerchandise.getCoursePackageId()); + Store store = storeClient.queryStoreById(coursePackage.getStoreId()); + if (store.getOperatorId() ==null || store.getOperatorId() == 0){ + // 平台课包 + ResultUtil weixinpay = payMoneyUtil.weixinpay(name, "", code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", ""); + return weixinpay; + }else{ + String s2 = storeClient.getmerchantNumberByOperatorId(store.getOperatorId()); + System.err.println("微信商户号"+s2); + + if(!StringUtils.hasLength(s2)){ + return ResultUtil.error("运营商未配置微信商户号,获取支付失败!"); + } + ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2,name, code, + "/base/pointMer/exchangeGoodPaymentWeChatCallback1", + cash.toString()); + return weixinpay; + } + case 3: + if (!integers.isEmpty()){ + Store store1 = storeClient.queryStoreById(integers.get(0)); + if (store1.getOperatorId() ==null || store1.getOperatorId() == 0){ + // 平台门票 + ResultUtil weixinpay = payMoneyUtil.weixinpay(name, "", code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", ""); + return weixinpay; + }else{ + String s2 = storeClient.getmerchantNumberByOperatorId(store1.getOperatorId()); + System.err.println("微信商户号"+s2); + + if(!StringUtils.hasLength(s2)){ + return ResultUtil.error("运营商未配置微信商户号,获取支付失败!"); + } + ResultUtil weixinpay = payMoneyUtil.weixinpayV3(s2,name, code, + "/base/pointMer/exchangeGoodPaymentWeChatCallback1", + cash.toString()); + return weixinpay; + } + }else{ + // 平台门票 + ResultUtil weixinpay = payMoneyUtil.weixinpay(name, "", code, cash.toString(), + "/base/pointMer/exchangeGoodPaymentWeChatCallback", "APP", ""); + return weixinpay; + + } } - return weixinpay; + + return ResultUtil.error("支付失败"); } + @Override - public ResultUtil exchangeAddPaymentCallback(String code, String orderNumber, Integer payType) { - List<UserPointsMerchandise> userPointsMerchandises = mcClient.queryUserPointMerchaseByCode(code); - if (userPointsMerchandises.get(0).getPayStatus() == 2) { + public ResultUtil exchangeAddPaymentCallback(String code, String orderNumber) { + System.err.println("进入回调"+code); + UserPointsMerchandise userPointsMerchandise = mcClient.queryUserPointMerchaseByCode(code).get(0); + System.err.println("商品"+userPointsMerchandise); + if (userPointsMerchandise.getPayStatus() == 2) { return ResultUtil.success(); } - 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: - 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(); - coupon.setCouponId(userPointsMerchandises.get(0).getPointsMerchandiseId()); - coupon.setUserId(userPointsMerchandises.get(0).getUserId()); - coupon.setStatus(1); - coupon.setInsertTime(new Date()); - ucponClient.insertToAppuserCoupon(coupon); - break; - default: - break; - } + userPointsMerchandise.setOrderNumber(orderNumber); + userPointsMerchandise.setPayStatus(2); + userPointsMerchandise.setPaymentTime(new Date()); + mcClient.updateDetailsUserPointMercase(userPointsMerchandise); + + TAppUser tAppUser = baseMapper.selectById(userPointsMerchandise.getUserId()); + dealAppUserIntegral(userPointsMerchandise.getUserId(), tAppUser, userPointsMerchandise.getIntegral()); + + Integer pointsMerchandiseId = userPointsMerchandise.getPointsMerchandiseId(); + PointsMerchandise pointsMerchandise = mcClient.selectPointsMerchandiseById(pointsMerchandiseId); + if(pointsMerchandise.getType() == 2){ + //课程 + CoursePackageOrder coursePackageOrder1 = paymentClient.getCoursePackageOrderByCode(code); + if(null != coursePackageOrder1){ + coursePackageOrder1.setPayStatus(2); + coursePackageOrder1.setOrderNumber(orderNumber); + coursePackageOrder1.setAppUserId(null); + paymentClient.updateCoursePackageOrder(coursePackageOrder1); + + GetCoursePackagePaymentConfig getCoursePackagePaymentConfig = new GetCoursePackagePaymentConfig(); + getCoursePackagePaymentConfig.setCoursePackageId(coursePackageOrder1.getCoursePackageId()); + getCoursePackagePaymentConfig.setClassHours(coursePackageOrder1.getClassHours()); + CoursePackagePaymentConfig coursePackagePaymentConfig = paymentClient.getCoursePackagePaymentConfig(getCoursePackagePaymentConfig); + + AddCoursePackageOrderStudent addCoursePackageOrderStudent = new AddCoursePackageOrderStudent(); + addCoursePackageOrderStudent.setCoursePackageOrderId(coursePackageOrder1.getId()); + addCoursePackageOrderStudent.setCoursePackagePaymentConfig(coursePackagePaymentConfig); + paymentClient.addCoursePackageOrderStudent(addCoursePackageOrderStudent); } - } 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: - List<TCoursePackagePayment> coursePackagePaymentOfCode = paymentClient.getCoursePackagePaymentOfCode(code); - - 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(); - coupon.setCouponId(userPointsMerchandises.get(0).getPointsMerchandiseId()); - coupon.setUserId(userPointsMerchandises.get(0).getUserId()); - coupon.setStatus(1); - coupon.setInsertTime(new Date()); - ucponClient.insertToAppuserCoupon(coupon); - break; - default: - break; - } - } return ResultUtil.success(); } -- Gitblit v1.7.1