From 25c2e11cf8045a2a59bc5c661a7d96e5b372b318 Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期六, 24 八月 2024 09:48:07 +0800 Subject: [PATCH] 8.24.1 --- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java | 97 ++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 84 insertions(+), 13 deletions(-) diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java index 14de43b..3e7d414 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java @@ -1,10 +1,13 @@ package com.ruoyi.other.controller; +import java.math.BigDecimal; import java.time.LocalDateTime; +import com.alibaba.fastjson.JSON; import com.ruoyi.account.api.dto.GrantCouponDto; import com.ruoyi.account.api.feignClient.AppCouponClient; import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.model.TAppCoupon; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.dto.AppGoodQuery; @@ -14,6 +17,7 @@ import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.api.feignClient.OrderClient; +import com.ruoyi.order.api.model.TShoppingOrder; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TGoods; import com.ruoyi.common.core.dto.ExchangeDto; @@ -22,12 +26,16 @@ import com.ruoyi.other.service.TActivityService; import com.ruoyi.other.service.TCouponService; import com.ruoyi.other.service.TGoodsService; +import com.ruoyi.payment.api.feignClient.WxPaymentClient; +import com.ruoyi.payment.api.vo.PaymentOrder; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.swing.*; import java.util.Arrays; +import java.util.Map; /** * <p> @@ -44,6 +52,7 @@ private TGoodsService goodsService; @Autowired private TActivityService activityService; + @Resource private TokenService tokenService; @Resource @@ -54,6 +63,9 @@ private AppCouponClient appCouponClient; @Resource private TCouponService couponService; + @Resource + private WxPaymentClient wxPaymentClient; + @@ -159,19 +171,78 @@ } -// @ApiOperation(tags = {"小程序-兑换商城"},value = "支付商品") -// @PostMapping(value = "/app/pay") -// public AjaxResult<PageInfo<TGoods>> pay(@RequestBody ExchangeDto exchangeDto) { -// -// //创建订单 -// -// //计算价格 -// -// //调起支付 -// -// -// -// } + @ApiOperation(tags = {"小程序-现金商城"},value = "支付商品") + @PostMapping(value = "/app/pay") + public R<Map<String, Object>> pay(@RequestBody ExchangeDto exchangeDto) { + Long userId = tokenService.getLoginUserApplet().getUserId(); + TAppUser user = appUserClient.getUserById(userId).getData(); + boolean isVip = false; + if (user.getVipEndTime().isAfter(LocalDateTime.now())){ + isVip = true; + } + //计算价格 + BigDecimal orderPrice = new BigDecimal(0); + BigDecimal payPrice = new BigDecimal(0); + BigDecimal discountPrice = new BigDecimal(0); + BigDecimal vipDiscount = new BigDecimal(0); + if (exchangeDto.getGoodType()==1){ + TGoods good = goodsService.getById(exchangeDto.getGoodId()); + BigDecimal originalPrice = good.getPreferentialPrice(); + if (isVip){ + if (good.getVipPrice()!=null){ + vipDiscount = originalPrice.subtract(good.getVipPrice()).multiply(BigDecimal.valueOf(exchangeDto.getNum())); + originalPrice = good.getVipPrice(); + } + } + orderPrice.add(originalPrice.multiply(BigDecimal.valueOf(exchangeDto.getNum()))); + }else { + TCoupon coupon = couponService.getById(exchangeDto.getGoodId()); + BigDecimal originalPrice = coupon.getPaymentAmount(); + if (isVip){ + if (coupon.getVipPaymentAmount()!=null) { + vipDiscount = originalPrice.subtract(coupon.getVipPaymentAmount()).multiply(BigDecimal.valueOf(exchangeDto.getNum())); + originalPrice = coupon.getVipPaymentAmount(); + } + } + orderPrice.add(originalPrice); + } + + exchangeDto.setOrderPrice(orderPrice); + //查看是否使用优惠券 + if(exchangeDto.getCouponId()!=null) { + TAppCoupon appCoupon = appUserClient.couponGetById(exchangeDto.getCouponId()).getData(); + TCoupon coupon = JSON.toJavaObject(JSON.parseObject(appCoupon.getCouponJson()), TCoupon.class); + if (coupon.getValidityPeriodMode()==1){ + if (orderPrice.compareTo(coupon.getMeetTheConditions())<0){ + return R.fail("不满足使用优惠券条件"); + } + + } + payPrice = orderPrice.subtract(coupon.getDiscountAmount()); + discountPrice = coupon.getDiscountAmount(); + } + exchangeDto.setPayPrice(payPrice); + exchangeDto.setDiscountPrice(discountPrice); + exchangeDto.setVipDiscount(vipDiscount); + //创建订单 + TShoppingOrder shopOrder = orderClient.shopCreate(exchangeDto).getData(); + if (exchangeDto.getPayMethod()==1) { + //调起支付 + PaymentOrder paymentOrder = new PaymentOrder(); + paymentOrder.setCode(shopOrder.getCode()); + paymentOrder.setAmount(shopOrder.getPaymentAmount()); + paymentOrder.setOpenId(user.getWxOpenid()); + paymentOrder.setDescription("购买商品"); + return wxPaymentClient.orderPay(paymentOrder); + }else { + //todo 罗 支付宝支付 + return R.ok(); + } + + + + + } /** -- Gitblit v1.7.1