ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerGoodsController.java
@@ -57,6 +57,7 @@ page.setOptimizeCountSql(false); List<MerGoodsPageVo> merGoodsPageVoList = goodsService.pageMerShopGoods(page, merGoodsPageDto); Shop shop = remoteShopService.getShop(merGoodsPageDto.getShopId()).getData(); if (null != shop.getBelongShopId()){ Shop belongShop = remoteShopService.getShop(shop.getBelongShopId()).getData(); merGoodsPageVoList.forEach(merGoodsPageVo -> { ShopGoods shopGoods = shopGoodsService.getByShopIdAndGoodsId(belongShop.getShopId(), merGoodsPageVo.getGoodsId()); @@ -71,6 +72,8 @@ merGoodsPageVo.setIsUnifiedPrice(0); } }); } return R.ok(page.setRecords(merGoodsPageVoList)); } 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); 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; } 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; 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("抽奖奖品设置") 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; 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)) { 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> 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"> 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; } } 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 导出三方订单 } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/CancelOrderDTO.java
New file @@ -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; } 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(); } } 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); }