| | |
| | | public ResultUtil productRedemptionOperation(Integer userIdFormRedis, GoodsExchangeVo exchangeType) { |
| | | System.out.println("exchangeType:--->"); |
| | | System.out.println(exchangeType); |
| | | PointsMerchandise merchandise = mcClient.selectPointsMerchandiseById(exchangeType.getGoodId()); |
| | | |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); |
| | | String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); |
| | | for (int i = 0; i < exchangeType.getNums(); i++) { |
| | | PointsMerchandise merchandise = mcClient.selectPointsMerchandiseById(exchangeType.getGoodId()); |
| | | if (ToolUtil.isEmpty(merchandise)){ |
| | | return ResultUtil.error("商品不存在"); |
| | | } |
| | | TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis); |
| | | if (ToolUtil.isEmpty(tAppUser)){ |
| | | return ResultUtil.error("用户不存在"); |
| | | } |
| | | // todo 积分商品明细 查询是否超出限领数量 |
| | | switch (exchangeType.getGoodsType()){ |
| | | case 1: |
| | | |
| | | break; |
| | | case 2: |
| | | |
| | | break; |
| | | case 3: |
| | | |
| | | break; |
| | | case 4: |
| | | |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | int goodsNums = 0; |
| | | if (ToolUtil.isEmpty(exchangeType.getNums())){ |
| | | goodsNums = 1; |
| | | }else { |
| | | goodsNums = exchangeType.getNums(); |
| | | } |
| | | for (int i = 0; i < goodsNums; i++) { |
| | | // 新增积分商品兑换记录 |
| | | UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise(); |
| | | pointsMerchandise.setPointsMerchandiseId(exchangeType.getGoodId()); |
| | | pointsMerchandise.setUserId(userIdFormRedis); |
| | | pointsMerchandise.setStatus(1); |
| | | if (merchandise.getUseScope() == 3){ |
| | | if (exchangeType.getGoodsType() == 2){ |
| | | CoursePackage coursePackage = cpageClient.queryCoursePackageById(merchandise.getCoursePackageId()); |
| | | pointsMerchandise.setStoreId(coursePackage.getStoreId()); |
| | | }else { |
| | | pointsMerchandise.setStoreId(exchangeType.getStoreId()); |
| | | } |
| | | } |
| | | pointsMerchandise.setCode(code); |
| | | mcClient.saveDetailsUserPointMercase(pointsMerchandise); |
| | | } |
| | | |
| | | // 扣减积分 |
| | | TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis); |
| | | |
| | | |
| | | // 积分变更记录 |
| | | UserIntegralChanges userIntegralChanges = new UserIntegralChanges(); |
| | | userIntegralChanges.setAppUserId(userIdFormRedis); |
| | | userIntegralChanges.setOldIntegral(tAppUser.getIntegral()); |
| | | userIntegralChanges.setType(2); |
| | | tAppUser.setIntegral(null == tAppUser.getIntegral() ? merchandise.getIntegral() : tAppUser.getIntegral() +merchandise.getIntegral()); |
| | | userIntegralChanges.setNewIntegral(tAppUser.getIntegral()); |
| | | userIntegralChanges.setInsertTime(new Date()); |
| | | uicMapper.insert(userIntegralChanges); |
| | | |
| | | this.baseMapper.updateById(tAppUser); |
| | | // 现金支付 |
| | | if (exchangeType.getExchangeType() == 2 || exchangeType.getExchangeType() == 3) { |
| | | switch (exchangeType.getGoodsType()) { |
| | | case 2: |
| | | for (int i = 0; i < exchangeType.getStuIds().size(); 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; |
| | | switch (exchangeType.getExchangeType()){ |
| | | // 积分 |
| | | case 1: |
| | | boolean b = dealAppUserIntegral(userIdFormRedis,tAppUser,merchandise.getIntegral()); |
| | | if (b){ |
| | | switch (exchangeType.getGoodsType()){ |
| | | case 2: |
| | | Integer stuNums = 0; |
| | | if (ToolUtil.isNotEmpty(exchangeType.getStuIds())){ |
| | | stuNums = exchangeType.getStuIds().size(); |
| | | }else { |
| | | stuNums = 1; |
| | | } |
| | | for (int i = 0; i < stuNums; i++) { |
| | | List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId()); |
| | | TCoursePackagePayment packagePayment = new TCoursePackagePayment(); |
| | | packagePayment.setAppUserId(userIdFormRedis); |
| | | packagePayment.setStudentId(exchangeType.getStuIds().get(i)); |
| | | packagePayment.setCoursePackageId(merchandise.getCoursePackageId()); |
| | | for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) { |
| | | if (Objects.equals(coursePackagePaymentConfig.getId(), merchandise.getCoursePackageConfigId())) { |
| | | packagePayment.setClassHours(coursePackagePaymentConfig.getClassHours()); |
| | | packagePayment.setTotalClassHours(coursePackagePaymentConfig.getClassHours()); |
| | | packagePayment.setLaveClassHours(coursePackagePaymentConfig.getClassHours()); |
| | | packagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment()); |
| | | break; |
| | | } |
| | | } |
| | | packagePayment.setPlayPaiCoin(merchandise.getIntegral()); |
| | | packagePayment.setAbsencesNumber(0); |
| | | packagePayment.setPayUserType(1); |
| | | packagePayment.setPayStatus(2); |
| | | packagePayment.setPayUserId(userIdFormRedis); |
| | | packagePayment.setStatus(1); |
| | | packagePayment.setState(1); |
| | | packagePayment.setInsertTime(new Date()); |
| | | packagePayment.setCode(code); |
| | | paymentClient.savePaymentCoursePackage(packagePayment); |
| | | } |
| | | break; |
| | | case 4: |
| | | for (int i = 0; i < goodsNums; i++) { |
| | | UserCoupon coupon = new UserCoupon(); |
| | | coupon.setCouponId(exchangeType.getGoodId()); |
| | | coupon.setUserId(userIdFormRedis); |
| | | coupon.setStatus(1); |
| | | coupon.setInsertTime(new Date()); |
| | | ucponClient.insertToAppuserCoupon(coupon); |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | }else { |
| | | return ResultUtil.error("用户积分不足!"); |
| | | } |
| | | break; |
| | | case 2: |
| | | // 积分+现金 |
| | | boolean dealt = dealAppUserIntegral(userIdFormRedis,tAppUser,merchandise.getIntegral()); |
| | | if (dealt){ |
| | | switch (exchangeType.getGoodsType()){ |
| | | // 1实物 2课包 3门票 4优惠券 |
| | | case 2: |
| | | Integer stuNums = 0; |
| | | if (ToolUtil.isNotEmpty(exchangeType.getStuIds())){ |
| | | stuNums = exchangeType.getStuIds().size(); |
| | | }else { |
| | | stuNums = 1; |
| | | } |
| | | for (int i = 0; i < stuNums; i++) { |
| | | List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId()); |
| | | TCoursePackagePayment packagePayment = new TCoursePackagePayment(); |
| | | packagePayment.setAppUserId(userIdFormRedis); |
| | | packagePayment.setStudentId(exchangeType.getStuIds().get(i)); |
| | | packagePayment.setCoursePackageId(merchandise.getCoursePackageId()); |
| | | for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) { |
| | | if (Objects.equals(coursePackagePaymentConfig.getId(), merchandise.getCoursePackageConfigId())) { |
| | | packagePayment.setClassHours(coursePackagePaymentConfig.getClassHours()); |
| | | packagePayment.setTotalClassHours(coursePackagePaymentConfig.getClassHours()); |
| | | packagePayment.setLaveClassHours(coursePackagePaymentConfig.getClassHours()); |
| | | packagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment()); |
| | | break; |
| | | } |
| | | } |
| | | packagePayment.setPlayPaiCoin(merchandise.getIntegral()); |
| | | packagePayment.setAbsencesNumber(0); |
| | | packagePayment.setPayUserType(1); |
| | | packagePayment.setPayStatus(1); |
| | | packagePayment.setPayUserId(userIdFormRedis); |
| | | packagePayment.setStatus(1); |
| | | packagePayment.setState(1); |
| | | packagePayment.setInsertTime(new Date()); |
| | | packagePayment.setCode(code); |
| | | paymentClient.savePaymentCoursePackage(packagePayment); |
| | | } |
| | | break; |
| | | case 4: |
| | | for (int i = 0; i < goodsNums; i++) { |
| | | UserCoupon coupon = new UserCoupon(); |
| | | coupon.setCouponId(exchangeType.getGoodId()); |
| | | coupon.setUserId(userIdFormRedis); |
| | | coupon.setStatus(1); |
| | | coupon.setInsertTime(new Date()); |
| | | ucponClient.insertToAppuserCoupon(coupon); |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | }else { |
| | | return ResultUtil.error("用户积分不足!"); |
| | | } |
| | | switch (exchangeType.getPayType()) { |
| | | case 1: |
| | | try { |
| | | if (merchandise.getType() == 2) { |
| | | return WechatPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code); |
| | | } else { |
| | | return WechatPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code); |
| | | } |
| | | } catch (Exception e) { |
| | | return ResultUtil.runErr(); |
| | | } |
| | | packagePayment.setPlayPaiCoin(merchandise.getIntegral()); |
| | | packagePayment.setAbsencesNumber(0); |
| | | packagePayment.setPayUserType(1); |
| | | packagePayment.setPayStatus(1); |
| | | packagePayment.setPayUserId(userIdFormRedis); |
| | | packagePayment.setStatus(1); |
| | | packagePayment.setState(1); |
| | | packagePayment.setInsertTime(new Date()); |
| | | packagePayment.setCode(code); |
| | | paymentClient.savePaymentCoursePackage(packagePayment); |
| | | } |
| | | break; |
| | | case 4: |
| | | for (int i = 0; i < exchangeType.getNums(); i++) { |
| | | UserCoupon coupon = new UserCoupon(); |
| | | coupon.setCouponId(exchangeType.getGoodId()); |
| | | coupon.setUserId(userIdFormRedis); |
| | | coupon.setStatus(1); |
| | | coupon.setInsertTime(new Date()); |
| | | ucponClient.insertToAppuserCoupon(coupon); |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | switch (exchangeType.getPayType()){ |
| | | case 1: |
| | | try { |
| | | if (merchandise.getType() == 2){ |
| | | return WechatPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())),code); |
| | | case 2: |
| | | if (merchandise.getType() == 2) { |
| | | return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code); |
| | | } else { |
| | | return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code); |
| | | } |
| | | default: |
| | | break; |
| | | } |
| | | break; |
| | | case 3: |
| | | // 现金 |
| | | switch (exchangeType.getGoodsType()){ |
| | | case 2: |
| | | Integer stuNums = 0; |
| | | if (ToolUtil.isNotEmpty(exchangeType.getStuIds())){ |
| | | stuNums = exchangeType.getStuIds().size(); |
| | | }else { |
| | | return WechatPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getNums())),code); |
| | | stuNums = 1; |
| | | } |
| | | }catch (Exception e){ |
| | | return ResultUtil.runErr(); |
| | | } |
| | | case 2: |
| | | if (merchandise.getType() == 2){ |
| | | AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())),code); |
| | | }else { |
| | | AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getNums())),code); |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | for (int i = 0; i < stuNums; i++) { |
| | | List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId()); |
| | | TCoursePackagePayment packagePayment = new TCoursePackagePayment(); |
| | | packagePayment.setAppUserId(userIdFormRedis); |
| | | packagePayment.setStudentId(exchangeType.getStuIds().get(i)); |
| | | packagePayment.setCoursePackageId(merchandise.getCoursePackageId()); |
| | | for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) { |
| | | if (Objects.equals(coursePackagePaymentConfig.getId(), merchandise.getCoursePackageConfigId())) { |
| | | packagePayment.setClassHours(coursePackagePaymentConfig.getClassHours()); |
| | | packagePayment.setTotalClassHours(coursePackagePaymentConfig.getClassHours()); |
| | | packagePayment.setLaveClassHours(coursePackagePaymentConfig.getClassHours()); |
| | | packagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment()); |
| | | break; |
| | | } |
| | | } |
| | | packagePayment.setCashPayment(merchandise.getCash()); |
| | | packagePayment.setAbsencesNumber(0); |
| | | packagePayment.setPayUserType(1); |
| | | packagePayment.setPayStatus(1); |
| | | packagePayment.setPayUserId(userIdFormRedis); |
| | | packagePayment.setStatus(1); |
| | | packagePayment.setState(1); |
| | | packagePayment.setInsertTime(new Date()); |
| | | packagePayment.setCode(code); |
| | | paymentClient.savePaymentCoursePackage(packagePayment); |
| | | } |
| | | break; |
| | | case 4: |
| | | for (int i = 0; i < goodsNums; i++) { |
| | | UserCoupon coupon = new UserCoupon(); |
| | | coupon.setCouponId(exchangeType.getGoodId()); |
| | | coupon.setUserId(userIdFormRedis); |
| | | coupon.setStatus(1); |
| | | coupon.setInsertTime(new Date()); |
| | | ucponClient.insertToAppuserCoupon(coupon); |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | switch (exchangeType.getPayType()) { |
| | | case 1: |
| | | try { |
| | | if (merchandise.getType() == 2) { |
| | | return WechatPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code); |
| | | } else { |
| | | return WechatPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code); |
| | | } |
| | | } catch (Exception e) { |
| | | return ResultUtil.runErr(); |
| | | } |
| | | case 2: |
| | | if (merchandise.getType() == 2) { |
| | | return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code); |
| | | } else { |
| | | return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code); |
| | | } |
| | | default: |
| | | break; |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | public boolean dealAppUserIntegral(Integer appUserId,TAppUser appUser,Integer points){ |
| | | try { |
| | | if (ToolUtil.isEmpty(appUser.getIntegral()) || (ToolUtil.isNotEmpty(appUser.getIntegral()) && appUser.getIntegral() < points)){ |
| | | return false; |
| | | } |
| | | // 积分变更记录 |
| | | UserIntegralChanges userIntegralChanges = new UserIntegralChanges(); |
| | | userIntegralChanges.setAppUserId(appUserId); |
| | | userIntegralChanges.setOldIntegral(appUser.getIntegral()); |
| | | userIntegralChanges.setType(2); |
| | | appUser.setIntegral(null == appUser.getIntegral() ? points : appUser.getIntegral() - points); |
| | | userIntegralChanges.setNewIntegral(appUser.getIntegral()); |
| | | userIntegralChanges.setInsertTime(new Date()); |
| | | uicMapper.insert(userIntegralChanges); |
| | | |
| | | this.baseMapper.updateById(appUser); |
| | | return true; |
| | | }catch (Exception e){ |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | private ResultUtil AlipayPayment(BigDecimal cash, String code) { |
| | | ResultUtil alipay = payMoneyUtil.alipay("课包续费", "", "", code, cash.toString(), |
| | |
| | | List<StoreResponse> responses = new ArrayList<>(); |
| | | if (goodsType == 4){ |
| | | List<Integer> couponStoreIds = ucponClient.getCouponStoreIds(pointsMerId); |
| | | for (Integer couponStoreId : couponStoreIds) { |
| | | StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStoreId); |
| | | if(ToolUtil.isNotEmpty(courseOfStore)){ |
| | | StoreResponse response = new StoreResponse(); |
| | | response.setStoreId(couponStoreId); |
| | | response.setStoreName(courseOfStore.getStoreName()); |
| | | responses.add(response); |
| | | if (couponStoreIds.size() > 0 ){ |
| | | for (Integer couponStoreId : couponStoreIds) { |
| | | StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStoreId); |
| | | if(ToolUtil.isNotEmpty(courseOfStore)){ |
| | | StoreResponse response = new StoreResponse(); |
| | | response.setStoreId(couponStoreId); |
| | | response.setStoreName(courseOfStore.getStoreName()); |
| | | responses.add(response); |
| | | } |
| | | } |
| | | } |
| | | |
| | | }else { |
| | | List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerId); |
| | | for (Integer integer : integers) { |
| | | StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(integer); |
| | | if(ToolUtil.isNotEmpty(courseOfStore)){ |
| | | StoreResponse response = new StoreResponse(); |
| | | response.setStoreId(integer); |
| | | response.setStoreName(courseOfStore.getStoreName()); |
| | | responses.add(response); |
| | | if (integers.size() > 0 ){ |
| | | for (Integer integer : integers) { |
| | | StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(integer); |
| | | if(ToolUtil.isNotEmpty(courseOfStore)){ |
| | | StoreResponse response = new StoreResponse(); |
| | | response.setStoreId(integer); |
| | | response.setStoreName(courseOfStore.getStoreName()); |
| | | responses.add(response); |
| | | } |
| | | } |
| | | } |
| | | } |