| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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> |
| | |
| | | private TGoodsService goodsService; |
| | | @Autowired |
| | | private TActivityService activityService; |
| | | |
| | | @Resource |
| | | private TokenService tokenService; |
| | | @Resource |
| | |
| | | private AppCouponClient appCouponClient; |
| | | @Resource |
| | | private TCouponService couponService; |
| | | @Resource |
| | | private WxPaymentClient wxPaymentClient; |
| | | |
| | | |
| | | |
| | | |
| | |
| | | |
| | | } |
| | | |
| | | // @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(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | /** |