无关风月
2024-08-22 114f1230624e41bdbd69db8d8ca90e291d015126
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
@@ -1,6 +1,9 @@
package com.ruoyi.other.controller;
import java.time.LocalDateTime;
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.TAppUser;
import com.ruoyi.common.core.domain.R;
@@ -9,13 +12,13 @@
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.other.api.domain.TActivity;
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.api.dto.AdvertisingDTO;
import com.ruoyi.order.api.vo.ExchangeDto;
import com.ruoyi.other.api.dto.GoodsDTO;
import com.ruoyi.other.service.TActivityService;
import com.ruoyi.other.service.TAdvertisingService;
import com.ruoyi.other.service.TCouponService;
import com.ruoyi.other.service.TGoodsService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -45,6 +48,10 @@
    private AppUserClient appUserClient;
    @Resource
    private OrderClient orderClient;
    @Resource
    private AppCouponClient appCouponClient;
    @Resource
    private TCouponService couponService;
@@ -100,29 +107,48 @@
    @ApiOperation(tags = {"小程序-兑换商城"},value = "兑换商品")
    @PostMapping(value = "/app/shop")
    public AjaxResult<PageInfo<TGoods>> shop(@RequestBody ExchangeDto exchangeDto) {
        //查询当前商品信息
        TGoods good = goodsService.getById(exchangeDto.getGoodId());
        //检查当前用户积分是否够
        Long userId = tokenService.getLoginUserApplet().getUserId();
        Integer point = 0;
        if (exchangeDto.getGoodType()==1) {
            //查询当前商品信息
            TGoods good = goodsService.getById(exchangeDto.getGoodId());
            point = good.getRedeemPoints();
            //检查当前用户是否到达兑换上限
            Long count = orderClient.getExchangeById(exchangeDto.getGoodId(), userId,exchangeDto.getGoodType()).getData();
            if (good.getLimitExchangeTimes() != -1 && count >= good.getLimitExchangeTimes()) {
                return AjaxResult.error("当前用户已到达兑换上限");
            }
        TAppUser user = appUserClient.getUserById(userId).getData();
        if (user.getPoints()<good.getRedeemPoints()){
            return AjaxResult.error("当前用户积分不足");
             }
        }else {
            TCoupon coupon = couponService.getById(exchangeDto.getGoodId());
            point = coupon.getRedeemPoints();
            Long count = orderClient.getExchangeById(exchangeDto.getGoodId(), userId,exchangeDto.getGoodType()).getData();
            if (coupon.getInventoryQuantity() != -1 && count >= coupon.getInventoryQuantity()) {
                return AjaxResult.error("当前用户已到达兑换上限");
            }
        }
        //检查当前用户是否到达兑换上限
        Long count = orderClient.getExchangeById(exchangeDto.getGoodId(), userId).getData();
        if (good.getLimitExchangeTimes()!=-1&&count>=good.getLimitExchangeTimes()){
            return AjaxResult.error("当前用户已到达兑换上限");
        }
        exchangeDto.setPoint(point);
        //生成积分兑换成功的订单
        orderClient.exchangeCreate(exchangeDto);
        //如果是优惠卷,赠送优惠卷给用户
        if (exchangeDto.getGoodType()==2) {
            //如果是优惠卷,赠送优惠卷给用户
            GrantCouponDto grantCouponDto = new GrantCouponDto();
            grantCouponDto.setUserIds(userId.toString());
            grantCouponDto.setCouponId(exchangeDto.getGoodId());
            grantCouponDto.setWaysToObtain(1);
            grantCouponDto.setEndTime(LocalDateTime.now());
            appCouponClient.grantCoupon(grantCouponDto);
        }
        //生成消耗积分的记录
        return AjaxResult.success();