From d617e84caebaf2e7aa09c55cb2bd89c5a23ef8ac Mon Sep 17 00:00:00 2001 From: huliguo <2023611923@qq.com> Date: 星期六, 28 六月 2025 15:58:33 +0800 Subject: [PATCH] bug修改 --- ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml | 3 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java | 27 ++++-- ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/DelShopLotteryDrawDto.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java | 15 +++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 58 ++++++++++++++ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java | 20 +++++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/CancelOrderDTO.java | 11 ++ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java | 3 ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml | 1 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventEditDTO.java | 6 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerGoodsController.java | 31 ++++--- ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLotteryEventController.java | 4 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventPageDto.java | 1 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtGoodsPageDto.java | 3 14 files changed, 156 insertions(+), 29 deletions(-) diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerGoodsController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerGoodsController.java index 8bdf72c..4fc2052 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerGoodsController.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerGoodsController.java @@ -57,20 +57,23 @@ page.setOptimizeCountSql(false); List<MerGoodsPageVo> merGoodsPageVoList = goodsService.pageMerShopGoods(page, merGoodsPageDto); Shop shop = remoteShopService.getShop(merGoodsPageDto.getShopId()).getData(); - Shop belongShop = remoteShopService.getShop(shop.getBelongShopId()).getData(); - merGoodsPageVoList.forEach(merGoodsPageVo -> { - ShopGoods shopGoods = shopGoodsService.getByShopIdAndGoodsId(belongShop.getShopId(), merGoodsPageVo.getGoodsId()); - //后台开启经销商统一售价,且经销商设置了统一售价,加盟商不能修改价格 - if (1 == belongShop.getModifyPricePermission() && null != shopGoods) { - merGoodsPageVo.setModifyPricePermission(0); - merGoodsPageVo.setIsUnifiedPrice(1); - merGoodsPageVo.setUnifiedPrice(shopGoods.getSalesPrice()); - merGoodsPageVo.setUnifiedServerNum(shopGoods.getServiceNum()); - } else { - merGoodsPageVo.setModifyPricePermission(1); - merGoodsPageVo.setIsUnifiedPrice(0); - } - }); + if (null != shop.getBelongShopId()){ + Shop belongShop = remoteShopService.getShop(shop.getBelongShopId()).getData(); + merGoodsPageVoList.forEach(merGoodsPageVo -> { + ShopGoods shopGoods = shopGoodsService.getByShopIdAndGoodsId(belongShop.getShopId(), merGoodsPageVo.getGoodsId()); + //后台开启经销商统一售价,且经销商设置了统一售价,加盟商不能修改价格 + if (1 == belongShop.getModifyPricePermission() && null != shopGoods) { + merGoodsPageVo.setModifyPricePermission(0); + merGoodsPageVo.setIsUnifiedPrice(1); + merGoodsPageVo.setUnifiedPrice(shopGoods.getSalesPrice()); + merGoodsPageVo.setUnifiedServerNum(shopGoods.getServiceNum()); + } else { + merGoodsPageVo.setModifyPricePermission(1); + merGoodsPageVo.setIsUnifiedPrice(0); + } + }); + } + return R.ok(page.setRecords(merGoodsPageVoList)); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLotteryEventController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLotteryEventController.java index 68ab24a..6444bad 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLotteryEventController.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLotteryEventController.java @@ -80,10 +80,10 @@ return R.fail("抽奖活动不存在"); } if (LocalDateTime.now().isAfter(lotteryEvent.getStartTime())) { - return R.fail("删除失败"); + return R.fail("活动已开始,不能删除!"); } if (!lotteryEvent.getShopId().equals(dto.getShopId())) { - return R.fail("删除失败"); + return R.fail("删除失败,该活动不属于该店铺"); } lotteryEvent.setDelFlag(1); lotteryEventService.updateById(lotteryEvent); diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/DelShopLotteryDrawDto.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/DelShopLotteryDrawDto.java index a2be9f9..12c457b 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/DelShopLotteryDrawDto.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/DelShopLotteryDrawDto.java @@ -10,7 +10,7 @@ @Data public class DelShopLotteryDrawDto { @ApiModelProperty("门店id") - private Long shopId; + private Integer shopId; @ApiModelProperty("抽奖活动id") private String id; } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtGoodsPageDto.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtGoodsPageDto.java index ed9fd6b..4770a5c 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtGoodsPageDto.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtGoodsPageDto.java @@ -17,6 +17,9 @@ @ApiModelProperty(value = "商品名称") private String goodsName; + @ApiModelProperty(value = "商品编码") + private String goodsNo; + @ApiModelProperty(value = "商品类型1周期2服务3体验4单品") private Integer goodsType; diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventEditDTO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventEditDTO.java index 221e2db..8ff7074 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventEditDTO.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventEditDTO.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonRawValue; import com.ruoyi.system.api.domain.dto.MgtBaseDto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -26,9 +27,9 @@ @NotEmpty(message = "活动简介不能为空") private String activityProfile; - @ApiModelProperty("开启方式(1=新注册用户,2=下单,3=分享小程序,4=普通抽奖,5=答题抽奖)") + @ApiModelProperty("开启方式(1=新注册用户,2=下单,3=分享小程序,4=普通抽奖,5=答题抽奖,6=线下抽奖)") @Min(value = 1,message = "开启方式选值错误") - @Max(value = 5,message = "开启方式选值错误") + @Max(value = 6,message = "开启方式选值错误") @NotNull(message = "开启方式不能为空") private Integer activityType; @@ -73,6 +74,7 @@ @ApiModelProperty("详情介绍") @NotEmpty(message = "详情介绍不能为空") + @JsonRawValue private String activityContent; @ApiModelProperty("抽奖奖品设置") diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventPageDto.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventPageDto.java index b9e0058..194a232 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventPageDto.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventPageDto.java @@ -27,6 +27,7 @@ @ApiModelProperty(value = "平台创建标志 0-未包含平台创建 1-包含",hidden = true) private Integer flag=1; + @ApiModelProperty(value = "分页偏移量",hidden = true) private Integer offset; diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java index bc77fe4..808ef27 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java @@ -265,6 +265,8 @@ .eq(TLotteryEvent::getActivityType, dto.getActivityType())//类型相同的 .between(TLotteryEvent::getStartTime, dto.getStartTime(), dto.getEndTime())//开始时间在这个活动的(开始-结束)范围内的 .or() + .eq(TLotteryEvent::getDelFlag, 0)//未删除的 + .eq(TLotteryEvent::getActivityType, dto.getActivityType())//类型相同的 .between(TLotteryEvent::getEndTime, dto.getStartTime(), dto.getEndTime())//结束时间在这个活动的(开始-结束)范围内的 ); if (null != lotteryEvents && !lotteryEvents.isEmpty()) { @@ -482,6 +484,7 @@ //1.奖品数据删除 /* lotteryEventPrizeService.remove(new LambdaQueryWrapper<TLotteryEventPrize>() .eq(TLotteryEventPrize::getLotteryEventId,lotteryEvent.getId()));*/ + lotteryEventPrizeService.deleteByLotteryEventId(lotteryEvent.getId()); //2.答题类型 if (lotteryEvent.getActivityType().equals(5)) { diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml index 85671ec..7b39e7e 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml +++ b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml @@ -401,6 +401,9 @@ <if test="param.goodsType != null and param.goodsType != ''"> AND tg.goods_type = #{param.goodsType} </if> + <if test="param.goodsNo != null and param.goodsNo != ''"> + AND tg.goods_no LIKE CONCAT('%',#{param.goodsNo},'%') + </if> <if test="param.goodsClassId != null and param.goodsClassId != ''"> AND tg.goods_class_id = #{param.goodsClassId} </if> diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml index 38f11cb..5a29d3f 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml +++ b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml @@ -97,6 +97,7 @@ </otherwise> </choose> </if> + order by create_time desc limit #{dto.offset},#{dto.pageSize} </select> <select id="pageMgtLotteryEventCount" resultType="java.lang.Long"> diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java index b39c986..101e7ec 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java @@ -5,7 +5,9 @@ import com.ruoyi.system.api.domain.dto.MgtBaseDto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.hibernate.validator.constraints.Range; +import javax.validation.constraints.AssertTrue; import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.Date; @@ -51,6 +53,7 @@ private Integer useScope; @ApiModelProperty(value = "有效期类型1.时间段2.领取之日起") + @Range(min = 1, max = 2, message = "有效期类型只能是1或2") private Integer validTimeType; @ApiModelProperty(value = "有效开始时间") @@ -103,5 +106,22 @@ @ApiModelProperty("分享图片") private String sharePic; + // 自定义校验逻辑 + @AssertTrue(message = "当有效期类型为时间段时,有效开始时间和有效截止时间不能为空") + public boolean isValidTimeRange() { + if (validTimeType == null) return true; // 由@NotNull校验 + if (validTimeType == 1) { + return validStartTime != null && validEndTime != null; + } + return true; + } + @AssertTrue(message = "当有效期类型为领取之日起时,有效期不能为空且必须大于0") + public boolean isValidDay() { + if (validTimeType == null) return true; + if (validTimeType == 2) { + return validDay != null && validDay > 0; + } + return true; + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java index 172951c..aa4c921 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java @@ -3,11 +3,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.poi.ExcelUtil; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.security.utils.SecurityUtils; -import com.ruoyi.order.domain.dto.MgtMemberOrderPageDto; -import com.ruoyi.order.domain.dto.MgtMemberOrderTotalDto; -import com.ruoyi.order.domain.dto.MgtShopAllOrderPageDto; -import com.ruoyi.order.domain.dto.MgtShopOrderPageDto; +import com.ruoyi.order.domain.dto.*; import com.ruoyi.order.domain.vo.*; import com.ruoyi.order.service.order.OrderService; import com.ruoyi.system.api.domain.dto.MgtBaseGetDto; @@ -193,10 +192,20 @@ util.exportExcel(response, shopAllOrderPageVoList, "商户订单记录"); } - //todo 取消 - - //todo 退款 - + //取消 + @RequestMapping(value = "/cancelOrderBySys", method = RequestMethod.POST) + @Log(title = "订单管理", businessType = BusinessType.UPDATE,operContent = "取消订单") + @ApiOperation(value = "取消订单【2.0】") + public R cancelOrderBySys(@RequestBody CancelOrderDTO dto) { + return orderService.cancelOrderBySys(dto); + } + //退款 + @RequestMapping(value = "/refundOrderBySys", method = RequestMethod.POST) + @Log(title = "订单管理", businessType = BusinessType.UPDATE,operContent = "退款") + @ApiOperation(value = "退款【2.0】") + public R refundOrderBySys(@RequestBody CancelOrderDTO dto) { + return orderService.refundOrderBySys(dto); + } //todo 分页获取三方订单 - //todo 导出 + //todo 导出三方订单 } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/CancelOrderDTO.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/CancelOrderDTO.java new file mode 100644 index 0000000..3a2b2f4 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/CancelOrderDTO.java @@ -0,0 +1,11 @@ +package com.ruoyi.order.domain.dto; + +import com.ruoyi.system.api.domain.dto.MgtBaseDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CancelOrderDTO extends MgtBaseDto { + @ApiModelProperty("订单id") + private String orderId; +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index 6d9e8e8..fcd22cb 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -1584,7 +1584,7 @@ List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(order.getPayMoney()) >= 0).collect(Collectors.toList()); appPlaceOrderVo.setLotteryDraw(collect.size() > 0); if (collect.size() > 0) { - appPlaceOrderVo.setLotteryEventId(collect.get(0).getEventId()); + appPlaceOrderVo.setLotteryEventId(collect.get(0).getId()); } } else { appPlaceOrderVo.setLotteryDraw(false); @@ -6709,4 +6709,60 @@ } return new ArrayList<>(); } + /** + * 后台取消订单 + * 订单状态变为已取消 不退款 + * @param dto + */ + @Override + public R cancelOrderBySys(CancelOrderDTO dto) { + Order order = this.getById(dto.getOrderId()); + // 订单状态-1.删除 0.已取消 1.待支付 2.待核销 3.已完成 + if(null == order || order.getDelFlag() == -1){ + return R.fail("订单不存在"); + } + + if (order.getOrderStatus() == 0) { + return R.fail(AppErrorConstant.CANCEL_CANCEL_ORDER); + } else if (order.getOrderStatus() == 1) { + //删除待支付超时取消延时任务 + redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId()); + remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+order.getOrderId()); + order.setOrderStatus(0); + order.setCancelTime(new Date()); + this.saveOrUpdate(order); + } else if (order.getOrderStatus() == 2) { + // 2.待核销 + order.setOrderStatus(0); + order.setCancelTime(new Date()); + this.saveOrUpdate(order); + } else { + return R.fail(AppErrorConstant.CANCEL_ERROR_ORDER); + } + return R.ok(); + } + + @Override + public R refundOrderBySys(CancelOrderDTO dto) { + Order order = this.getById(dto.getOrderId()); + // 订单状态-1.删除 0.已取消 1.待支付 2.待核销 3.已完成 + if(null == order || order.getDelFlag() == -1){ + return R.fail("订单不存在"); + } + if (order.getOrderStatus() == 0) { + return R.fail(AppErrorConstant.CANCEL_CANCEL_ORDER); + }else if (order.getOrderStatus() == 1) { + //删除待支付超时取消延时任务 + redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId()); + remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+ order.getOrderId()); + this.autoCancelOrder( order.getOrderId()); + } else if (order.getOrderStatus() == 2) { + // 2.待核销 -> 订单退款 + this.refundOrder( order.getOrderId()); + } else { + return R.fail("已核销订单不能退款"); + } + return R.ok(); + + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java index dac1e6e..b60da44 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java @@ -7,6 +7,7 @@ import com.github.binarywang.wxpay.bean.ecommerce.RefundNotifyResult; import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult; import com.github.binarywang.wxpay.exception.WxPayException; +import com.ruoyi.common.core.domain.R; import com.ruoyi.order.domain.dto.*; import com.ruoyi.order.domain.pojo.order.Order; import com.ruoyi.order.domain.vo.*; @@ -615,4 +616,18 @@ * @return */ List<String> getActivityOrderGoods(String activityId); + + /** + * 后台取消订单 + * 订单状态变为已取消 不退款 + * @param dto + */ + R cancelOrderBySys(CancelOrderDTO dto); + + /** + * 后台退款订单 + * @param dto + * @return + */ + R refundOrderBySys(CancelOrderDTO dto); } -- Gitblit v1.7.1