|
@@ -25,6 +25,7 @@ import org.springframework.stereotype.Controller;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
@@ -78,8 +79,16 @@ public class OmsPortalOrderController {
|
|
|
@RequestMapping(value = "/generateOrder", method = RequestMethod.POST)
|
|
|
@ResponseBody
|
|
|
public CommonResult generateOrder(@RequestBody OrderParam orderParam) {
|
|
|
- Map<String, Object> result = portalOrderService.generateOrder(orderParam);
|
|
|
- return CommonResult.success(result, "下单成功");
|
|
|
+ final Map<String, Object>[] result = new Map[]{new HashMap<>()};
|
|
|
+ if (StringUtil.isEmpty(orderParam.getOrderNo())) {
|
|
|
+ result[0] = portalOrderService.generateOrder(orderParam);
|
|
|
+ } else {
|
|
|
+ DistributedLock.of(redissonClient)
|
|
|
+ .runIfLockCanGet(OrderCacheEnum.LOCK_ORDER_NO_MALL.getRedisKey(orderParam.getOrderNo()), () -> {
|
|
|
+ result[0] = portalOrderService.generateOrder(orderParam);
|
|
|
+ }, 60L, TimeUnit.SECONDS);
|
|
|
+ }
|
|
|
+ return CommonResult.success(result[0], "下单成功");
|
|
|
}
|
|
|
|
|
|
|
|
@@ -89,7 +98,15 @@ public class OmsPortalOrderController {
|
|
|
public CommonResult teacherGenerateOrder(@RequestBody OrderParam orderParam) {
|
|
|
UmsMember currentMember = memberService.getCurrentMember();
|
|
|
orderParam.setTeacherId(currentMember.getId());
|
|
|
- Map<String, Object> result = portalOrderService.generateOrder(orderParam);
|
|
|
+ final Map<String, Object>[] result = new Map[]{new HashMap<>()};
|
|
|
+ if (StringUtil.isEmpty(orderParam.getOrderNo())) {
|
|
|
+ result[0] = portalOrderService.generateOrder(orderParam);
|
|
|
+ } else {
|
|
|
+ DistributedLock.of(redissonClient)
|
|
|
+ .runIfLockCanGet(OrderCacheEnum.LOCK_ORDER_NO_MALL.getRedisKey(orderParam.getOrderNo()), () -> {
|
|
|
+ result[0] = portalOrderService.generateOrder(orderParam);
|
|
|
+ }, 60L, TimeUnit.SECONDS);
|
|
|
+ }
|
|
|
return CommonResult.success(result, "下单成功");
|
|
|
}
|
|
|
|