| | |
| | | @Transactional |
| | | 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); |
| | | PointsMerchandise merchandise = mcClient.selectPointsMerchandiseById(exchangeType.getGoodId()); |
| | | if (ToolUtil.isEmpty(merchandise)){ |
| | | return ResultUtil.error("商品不存在"); |
| | | } |
| | | |
| | | |
| | | TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis); |
| | | |
| | | |
| | | if(merchandise.getUserPopulation()==2){ |
| | | if(tAppUser.getIsVip()==0){ |
| | | return ResultUtil.error("该商品只能年度会员购买"); |
| | | try { |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); |
| | | String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); |
| | | PointsMerchandise merchandise = mcClient.selectPointsMerchandiseById(exchangeType.getGoodId()); |
| | | if (ToolUtil.isEmpty(merchandise)){ |
| | | return ResultUtil.error("商品不存在"); |
| | | } |
| | | } |
| | | |
| | | TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis); |
| | | |
| | | |
| | | if(merchandise.getUserPopulation()==3){ |
| | | List<TStudent> students = tsmapper.selectList(new LambdaQueryWrapper<TStudent>().eq(TStudent::getAppUserId, userIdFormRedis)); |
| | | if(students.size()==0){ |
| | | return ResultUtil.error("该商品只能已有学员用户购买"); |
| | | if(merchandise.getUserPopulation()==2){ |
| | | if(tAppUser.getIsVip()==0){ |
| | | return ResultUtil.error("该商品只能年度会员购买"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if(merchandise.getUserPopulation()==3){ |
| | | List<TStudent> students = tsmapper.selectList(new LambdaQueryWrapper<TStudent>().eq(TStudent::getAppUserId, userIdFormRedis)); |
| | | if(students.size()==0){ |
| | | return ResultUtil.error("该商品只能已有学员用户购买"); |
| | | } |
| | | } |
| | | |
| | | 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("超过限领数量"); |
| | | } |
| | | int count1 = mcClient.queryUserHasGoodsNums1(goodResp); |
| | | if (ToolUtil.isNotEmpty(count1) && count1 >= merchandise.getQuantityIssued()){ |
| | | return ResultUtil.error("超过发放数量"); |
| | | } |
| | | 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("超过限领数量"); |
| | | } |
| | | int count1 = mcClient.queryUserHasGoodsNums1(goodResp); |
| | | if (ToolUtil.isNotEmpty(count1) && count1 >= merchandise.getQuantityIssued()){ |
| | | return ResultUtil.error("超过发放数量"); |
| | | } |
| | | |
| | | for (int i = 0; i < goodsNums; i++) { |
| | | // 新增积分商品兑换记录 |
| | | UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise(); |
| | | pointsMerchandise.setPointsMerchandiseId(exchangeType.getGoodId()); |
| | | pointsMerchandise.setUserId(userIdFormRedis); |
| | | pointsMerchandise.setStatus(1); |
| | | pointsMerchandise.setState(1); |
| | | 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); |
| | | mcClient.saveDetailsUserPointMercase(pointsMerchandise); |
| | | } |
| | | |
| | | |
| | | switch (exchangeType.getExchangeType()){ |
| | | 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; |
| | | } |
| | | 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; |
| | | } |
| | | 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); |
| | | paymentClient.savePaymentCoursePackage(packagePayment); |
| | | 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); |
| | | 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); |
| | | ucponClient.insertToAppuserCoupon(coupon); |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | }else { |
| | | return ResultUtil.error("用户积分不足!"); |
| | | } |
| | | break; |
| | | case 2: |
| | | // 积分+现金 |
| | | boolean 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); |
| | | } |
| | | } catch (Exception e) { |
| | | return ResultUtil.runErr(); |
| | | } |
| | | break; |
| | | case 4: |
| | | for (int i = 0; i < goodsNums; i++) { |
| | | UserCoupon coupon = new UserCoupon(); |
| | | coupon.setCouponId(exchangeType.getGoodId()); |
| | | coupon.setUserId(userIdFormRedis); |
| | | coupon.setStatus(1); |
| | | ucponClient.insertToAppuserCoupon(coupon); |
| | | 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); |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | }else { |
| | | return ResultUtil.error("用户积分不足!"); |
| | | } |
| | | break; |
| | | case 2: |
| | | // 积分+现金 |
| | | boolean 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); |
| | | break; |
| | | case 3: |
| | | 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(); |
| | | } |
| | | } 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; |
| | | case 3: |
| | | switch (exchangeType.getPayType()) { |
| | | case 1: |
| | | try { |
| | | case 2: |
| | | if (merchandise.getType() == 2) { |
| | | return WechatPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code); |
| | | return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code); |
| | | } else { |
| | | return WechatPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code); |
| | | return AlipayPayment(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; |
| | | } |
| | | |
| | | for (int i = 0; i < goodsNums; i++) { |
| | | // 新增积分商品兑换记录 |
| | | UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise(); |
| | | pointsMerchandise.setPointsMerchandiseId(exchangeType.getGoodId()); |
| | | pointsMerchandise.setUserId(userIdFormRedis); |
| | | pointsMerchandise.setStatus(1); |
| | | pointsMerchandise.setState(1); |
| | | if (merchandise.getUseScope() == 3){ |
| | | if (exchangeType.getGoodsType() == 2){ |
| | | CoursePackage coursePackage = cpageClient.queryCoursePackageById(merchandise.getCoursePackageId()); |
| | | pointsMerchandise.setStoreId(coursePackage.getStoreId()); |
| | | }else { |
| | | pointsMerchandise.setStoreId(exchangeType.getStoreId()); |
| | | } |
| | | default: |
| | | break; |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | pointsMerchandise.setCode(code); |
| | | mcClient.saveDetailsUserPointMercase(pointsMerchandise); |
| | | |
| | | |
| | | |
| | | return ResultUtil.success(); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return null; |
| | | } |
| | | |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | public boolean dealAppUserIntegral(Integer appUserId,TAppUser appUser,Integer points){ |
| | |
| | | } |
| | | |
| | | private ResultUtil AlipayPayment(BigDecimal cash, String code) { |
| | | ResultUtil alipay = payMoneyUtil.alipay("课包续费", "", "", code, cash.toString(), |
| | | System.out.println("金额:"+cash); |
| | | ResultUtil alipay = payMoneyUtil.alipay("课包续费", "课包续费", "", code, cash.toString(), |
| | | "/base/pointMer/exchangeGoodPaymentAliCallback"); |
| | | if(alipay.getCode() == 200){ |
| | | new Thread(new Runnable() { |
| | |
| | | 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; |
| | | } |