luodangjia
2024-10-23 a00dbefc3837ab7781f9d50cd8ddb1261a416b79
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
@@ -12,10 +12,13 @@
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.dto.ExchangeBackDto;
import com.ruoyi.common.core.dto.PointChangeDto;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.BasePage;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.api.feignClient.OrderClient;
import com.ruoyi.order.api.model.TShoppingOrder;
@@ -84,6 +87,7 @@
    @PostMapping("/saveGoods")
    @ApiOperation(tags = {"管理后台-商品管理"},value = "商品添加")
    @Log(title = "【商品管理】添加商品", businessType = BusinessType.INSERT)
    public AjaxResult saveActivity(@RequestBody TGoods dto) {
        goodsService.save(dto);
        return AjaxResult.success();
@@ -93,6 +97,7 @@
    @GetMapping("/delete")
    @ApiOperation(tags = {"管理后台-商品管理"},value = "商品删除")
    @Log(title = "【商品管理】删除商品", businessType = BusinessType.DELETE)
    public AjaxResult delete(String ids) {
        goodsService.removeBatchByIds(Arrays.asList(ids.split(",")));
        return AjaxResult.success();
@@ -102,6 +107,7 @@
    @PostMapping("/updateVip")
    @ApiOperation(tags = {"管理后台-商品管理"},value = "商品修改")
    @Log(title = "【商品管理】修改商品", businessType = BusinessType.UPDATE)
    public AjaxResult updateActivity(@RequestBody TGoods dto) {
        goodsService.updateById(dto);
        return AjaxResult.success();
@@ -119,14 +125,26 @@
    @GetMapping("/getInfoByType")
    @ApiOperation(tags = {"小程序-兑换商城"},value = "商品查看详情")
    public AjaxResult getInfoByType(Integer goodType,Integer id) {
    public R getInfoByType(Integer goodType,Integer id) {
        if (goodType==1){
        TGoods byId = goodsService.getById(id);
        return AjaxResult.ok(byId);}
        if (byId==null||byId.getStatus()==2){
            return R.fail(2,"内容不存在");
        }
//            List<Integer> data = orderClient.getSalesCountByGoodsId(String.valueOf(id)).getData();
//            for (int i = 0; i < list.size(); i++) {
//                list.get(i).setSalesCount(data.get(i));
//            }
        return R.ok(byId);
        }
        else {
            TCoupon byId = couponService.getById(id);
            return AjaxResult.ok(byId);
    }
            if (byId==null||byId.getStatus()==2){
                return R.fail(2,"内容不存在");
            }
                return R.ok(byId);
            }
    }
@@ -185,6 +203,7 @@
        //检查当前用户积分是否够
        Long userId = tokenService.getLoginUserApplet().getUserId();
        Integer point = 0;
        TAppUser user = appUserClient.getUserById(userId).getData();
        if (exchangeDto.getGoodType()==1) {
            //查询当前商品信息
@@ -194,8 +213,11 @@
            Long count = orderClient.getExchangeById(exchangeDto.getGoodId(), userId,exchangeDto.getGoodType()).getData();
            if (good.getLimitExchangeTimes() != -1 && count >= good.getLimitExchangeTimes()) {
                return AjaxResult.error("当前用户已兑换"+count+"张");
            }else {
                //减少库存
                good.setInventory(good.getInventory()-exchangeDto.getNum());
                goodsService.updateById(good);
            }
        TAppUser user = appUserClient.getUserById(userId).getData();
        if (user.getPoints()<good.getRedeemPoints()){
            return AjaxResult.error("当前用户积分不足");
             }
@@ -204,31 +226,51 @@
            point = coupon.getRedeemPoints();
            Long count = orderClient.getExchangeById(exchangeDto.getGoodId(), userId,exchangeDto.getGoodType()).getData();
            if (user.getPoints()<point){
                return AjaxResult.error("当前用户积分不足");
            }
            if (coupon.getInventoryQuantity() != -1 && count >= coupon.getInventoryQuantity()) {
                return AjaxResult.error("当前用户已到达兑换"+coupon+"次");
            }else {
                coupon.setInventoryQuantity(coupon.getInventoryQuantity()-1);
                couponService.updateById(coupon);
            }
        }
        exchangeDto.setPoint(point);
        exchangeDto.setUserId(userId);
        //生成积分兑换成功的订单
        R<Long> longR = orderClient.exchangeCreate(exchangeDto);
        R<ExchangeBackDto> longR = orderClient.exchangeCreate(exchangeDto);
        if (exchangeDto.getGoodType()==2) {
            TCoupon coupon = couponService.getById(exchangeDto.getGoodId());
            //如果是优惠卷,赠送优惠卷给用户
            GrantCouponDto grantCouponDto = new GrantCouponDto();
            grantCouponDto.setUserIds(userId.toString());
            grantCouponDto.setCouponId(exchangeDto.getGoodId());
            grantCouponDto.setWaysToObtain(1);
            grantCouponDto.setEndTime(LocalDateTime.now());
            grantCouponDto.setType(3);
            switch (coupon.getValidityPeriodMode()){
                case 1:
                    grantCouponDto.setEndTime(coupon.getEndTime());
                    break;
                case 2:
                    grantCouponDto.setEndTime(LocalDateTime.now().plusDays(coupon.getDays()));
                    break;
            }
            appCouponClient.grantCoupon(grantCouponDto);
        }
        //生成消耗积分的记录
        PointChangeDto pointChangeDto = new PointChangeDto();
        pointChangeDto.setUserId(userId);
        pointChangeDto.setPoints(point);
        pointChangeDto.setRemark(longR.getData().toString());
        pointChangeDto.setRemark(String.valueOf(longR.getData().getId()));
        pointChangeDto.setType(6);
        pointChangeDto.setCode(longR.getData().getCode());
        appUserClient.changeDown(pointChangeDto);
        return AjaxResult.success();
        return AjaxResult.success(longR.getData().getId());
    }
@@ -249,7 +291,11 @@
        BigDecimal vipDiscount = new BigDecimal(0);
        if (exchangeDto.getGoodType()==1){
            TGoods good = goodsService.getById(exchangeDto.getGoodId());
            if (good.getStatus()==2){
                return R.fail("当前商品已下架");
            }
            BigDecimal originalPrice = good.getPreferentialPrice();
            exchangeDto.setTitle("【商品购买】"+good.getName());
            if (isVip){
                if (good.getVipPrice()!=null){
                    vipDiscount = originalPrice.subtract(good.getVipPrice()).multiply(BigDecimal.valueOf(exchangeDto.getNum()));
@@ -258,7 +304,12 @@
            }
            orderPrice =  orderPrice.add(originalPrice.multiply(BigDecimal.valueOf(exchangeDto.getNum())));
        }else {
            TCoupon coupon = couponService.getById(exchangeDto.getGoodId());
            if (coupon.getStatus()==2){
                return R.fail("当前商品已下架");
            }
            exchangeDto.setTitle("【优惠卷购买】"+coupon.getName());
            BigDecimal originalPrice = coupon.getPaymentAmount();
            if (isVip){
                if (coupon.getVipPaymentAmount()!=null) {
@@ -282,11 +333,14 @@
            }
            payPrice = orderPrice.subtract(coupon.getDiscountAmount());
            discountPrice = coupon.getDiscountAmount();
        }else {
            payPrice = orderPrice;
        }
        exchangeDto.setPayPrice(orderPrice);
        exchangeDto.setPayPrice(payPrice);
        exchangeDto.setDiscountPrice(discountPrice);
        exchangeDto.setVipDiscount(vipDiscount);
        exchangeDto.setUserId(userId);
        exchangeDto.setPhone(user.getPhone());
        //创建订单
        TShoppingOrder shopOrder = orderClient.shopCreate(exchangeDto).getData();
        if (exchangeDto.getPayMethod()==1) {