diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/mapper/BonusMapper.java b/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/mapper/BonusMapper.java index fedeb24..5d5904e 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/mapper/BonusMapper.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/mapper/BonusMapper.java @@ -149,4 +149,11 @@ public interface BonusMapper * @return */ BigDecimal selectSumOfWaitAmount(@Param("query") BonusQuery query); + + /** + * 根据业务类型和业务ID,将分成更新为待分成状态 + * @param bstType 业务类型 + * @param bstId 业务ID + */ + int validByBst(@Param("bstType") String bstType, @Param("bstId") Long bstId); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/mapper/BonusMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/mapper/BonusMapper.xml index e5a4a0a..a9ec71b 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/mapper/BonusMapper.xml +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/mapper/BonusMapper.xml @@ -256,12 +256,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + update bst_bonus bb + set bb.status = 'WAIT_DIVIDE', + bb.wait_amount = bb.wait_amount + bb.invalid_amount, + bb.invalid_amount = 0 + where bb.bst_type = #{bstType} + and bb.bst_id = #{bstId} + and bb.status = 'INVALID' + and + + update bst_bonus bb - bb.wait_amount = bb.wait_amount + bb.invalid_amount, - bb.invalid_amount = 0, - bb.status = 'WAIT_DIVIDE', @@ -278,7 +288,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{item.id} and - and bb.status = 'INVALID' + and bb.status = 'WAIT_DIVIDE' diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/service/BonusService.java b/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/service/BonusService.java index 1b734d9..3a5bde8 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/service/BonusService.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/service/BonusService.java @@ -82,6 +82,14 @@ public interface BonusService * @return 结果 */ public int batchInsert(List list); + + + /** + * 根据业务类型和业务ID,将分成更新为待分成状态 + * @param bstType 业务类型 + * @param bstId 业务ID + */ + public boolean validByBst(BonusBstType bstType, Long bstId); /** * 预分成 diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/service/impl/BonusServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/service/impl/BonusServiceImpl.java index 0774dbb..59c457d 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/service/impl/BonusServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/bonus/service/impl/BonusServiceImpl.java @@ -178,6 +178,15 @@ public class BonusServiceImpl implements BonusService return bonusMapper.batchInsert(list); } + @Override + public boolean validByBst(BonusBstType bstType, Long bstId) { + if (bstType == null || bstId == null) { + return false; + } + bonusMapper.validByBst(bstType.getType(), bstId); + return true; + } + @Override public boolean prepayByBst(BonusBstType bstType, Long bstId) { if (bstType == null || bstId == null) { diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderPayHandlerImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderPayHandlerImpl.java index ec84341..b059118 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderPayHandlerImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderPayHandlerImpl.java @@ -6,6 +6,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.support.TransactionTemplate; +import com.ruoyi.bst.bonus.domain.enums.BonusBstType; +import com.ruoyi.bst.bonus.service.BonusService; import com.ruoyi.bst.device.domain.enums.DeviceUnLockType; import com.ruoyi.bst.device.domain.vo.DeviceIotVO; import com.ruoyi.bst.device.service.DeviceIotService; @@ -40,6 +42,9 @@ public class OrderPayHandlerImpl implements PayHandler { @Autowired private DeviceIotService deviceIotService; + + @Autowired + private BonusService bonusService; // 支付成功后操作 @Override @@ -71,10 +76,15 @@ public class OrderPayHandlerImpl implements PayHandler { int rows = orderMapper.updateByQuery(data, query); ServiceUtil.assertion(rows != 1, "更新ID为%s的订单失败", order.getId()); + // 分成更新为待分成状态 + boolean valid = bonusService.validByBst(BonusBstType.ORDER, order.getId()); + ServiceUtil.assertion(!valid, "更新ID为%s的订单分成失败", order.getId()); + // 开始使用订单设备 int start = orderDeviceService.start(orderDevice); ServiceUtil.assertion(start != 1, "开始使用ID为%s的订单设备失败", orderDevice.getId()); + // 解锁设备 DeviceIotVO unlock = deviceIotService.unlock(orderDevice.getDeviceId(), DeviceUnLockType.USER, "订单支付成功开锁:" + order.getNo(), false); ServiceUtil.assertion(unlock.getDb() <= 0, "ID为%s的设备解锁失败", orderDevice.getDeviceId()); diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/bst/OrderController.java b/ruoyi-web/src/main/java/com/ruoyi/web/bst/OrderController.java index dfcd6a0..b4ec5ae 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/bst/OrderController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/bst/OrderController.java @@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import com.aliyun.core.utils.StringUtils; import com.ruoyi.bst.areaJoin.domain.enums.AreaJoinPermission; import com.ruoyi.bst.order.domain.OrderQuery; import com.ruoyi.bst.order.domain.OrderVO; @@ -130,8 +131,12 @@ public class OrderController extends BaseController if (!orderValidator.canOperate(dto.getOrderId())) { return error("您无权退款ID为" + dto.getOrderId() + "的订单"); } + String userName = getNickName(); dto.setUserId(getUserId()); - dto.setUserName(getNickName()); + dto.setUserName(userName); + if (StringUtils.isBlank(dto.getReason())) { + dto.setReason("管理员【" + userName + "】退款"); + } return toAjax(orderService.refund(dto)); }