|
@@ -5,6 +5,7 @@ import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.convert.Convert;
|
|
import cn.hutool.core.convert.Convert;
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
import com.qnfhq.annotation.RepeatSubmit;
|
|
import com.qnfhq.annotation.RepeatSubmit;
|
|
|
import com.qnfhq.common.ApiBaseController;
|
|
import com.qnfhq.common.ApiBaseController;
|
|
|
import com.qnfhq.common.constant.Constant;
|
|
import com.qnfhq.common.constant.Constant;
|
|
@@ -17,6 +18,8 @@ import com.qnfhq.common.utils.Result;
|
|
|
import com.qnfhq.common.validator.ValidatorUtils;
|
|
import com.qnfhq.common.validator.ValidatorUtils;
|
|
|
import com.qnfhq.constant.CacheConstants;
|
|
import com.qnfhq.constant.CacheConstants;
|
|
|
import com.qnfhq.modules.c2c.dto.*;
|
|
import com.qnfhq.modules.c2c.dto.*;
|
|
|
|
|
+import com.qnfhq.modules.c2c.dto.setting.CancelReasonSetting;
|
|
|
|
|
+import com.qnfhq.modules.c2c.dto.setting.ReviewSetting;
|
|
|
import com.qnfhq.modules.c2c.entity.*;
|
|
import com.qnfhq.modules.c2c.entity.*;
|
|
|
import com.qnfhq.modules.c2c.enums.AdStatusEnum;
|
|
import com.qnfhq.modules.c2c.enums.AdStatusEnum;
|
|
|
import com.qnfhq.modules.c2c.enums.C2cOrderFlowEnum;
|
|
import com.qnfhq.modules.c2c.enums.C2cOrderFlowEnum;
|
|
@@ -26,15 +29,19 @@ import com.qnfhq.modules.c2c.service.*;
|
|
|
import com.qnfhq.modules.user.entity.AppAssetEntity;
|
|
import com.qnfhq.modules.user.entity.AppAssetEntity;
|
|
|
import com.qnfhq.modules.user.entity.AppUserDetailEntity;
|
|
import com.qnfhq.modules.user.entity.AppUserDetailEntity;
|
|
|
import com.qnfhq.modules.user.entity.AppUserEntity;
|
|
import com.qnfhq.modules.user.entity.AppUserEntity;
|
|
|
|
|
+import com.qnfhq.modules.user.entity.SettingEntity;
|
|
|
import com.qnfhq.modules.user.enums.AssetEnum;
|
|
import com.qnfhq.modules.user.enums.AssetEnum;
|
|
|
import com.qnfhq.modules.user.enums.AuditStatusEnum;
|
|
import com.qnfhq.modules.user.enums.AuditStatusEnum;
|
|
|
|
|
+import com.qnfhq.modules.user.enums.SettingEnum;
|
|
|
import com.qnfhq.modules.user.service.AppAssetService;
|
|
import com.qnfhq.modules.user.service.AppAssetService;
|
|
|
import com.qnfhq.modules.user.service.AppUserDetailService;
|
|
import com.qnfhq.modules.user.service.AppUserDetailService;
|
|
|
import com.qnfhq.modules.user.service.AppUserService;
|
|
import com.qnfhq.modules.user.service.AppUserService;
|
|
|
|
|
+import com.qnfhq.modules.user.service.SettingService;
|
|
|
import com.qnfhq.utils.DistributedRedisLock;
|
|
import com.qnfhq.utils.DistributedRedisLock;
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
import jakarta.annotation.Resource;
|
|
import jakarta.annotation.Resource;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
@@ -275,10 +282,16 @@ public class C2cOrderController extends ApiBaseController {
|
|
|
@Operation(summary = "用户取消订单")
|
|
@Operation(summary = "用户取消订单")
|
|
|
@PostMapping("/cancelOrder")
|
|
@PostMapping("/cancelOrder")
|
|
|
@RepeatSubmit(interval = 3000, message = "请求过于频繁")
|
|
@RepeatSubmit(interval = 3000, message = "请求过于频繁")
|
|
|
- public Result cancelOrder(@RequestBody C2cOrderIdDTO dto)
|
|
|
|
|
|
|
+ public Result cancelOrder(@RequestBody C2cOrderCancelDTO dto)
|
|
|
{
|
|
{
|
|
|
ValidatorUtils.validateEntity(dto);
|
|
ValidatorUtils.validateEntity(dto);
|
|
|
|
|
|
|
|
|
|
+ if(dto.getReasonId().intValue()==5) {//买家取消原因=其他
|
|
|
|
|
+ if(StrUtil.isEmpty(dto.getOtherReason())) {
|
|
|
|
|
+ return error(MessageUtils.message("c2c.order.cancel.otherReason.NotEmpty"));//其他原因不能空
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
C2cOrderEntity order = c2cOrderService.selectById(dto.getId());
|
|
C2cOrderEntity order = c2cOrderService.selectById(dto.getId());
|
|
|
if(order == null) {
|
|
if(order == null) {
|
|
|
return error(MessageUtils.message("c2c.order.not.exist"));//订单编号无效
|
|
return error(MessageUtils.message("c2c.order.not.exist"));//订单编号无效
|
|
@@ -304,7 +317,7 @@ public class C2cOrderController extends ApiBaseController {
|
|
|
int oldStatus = order.getStatus().intValue();
|
|
int oldStatus = order.getStatus().intValue();
|
|
|
try {
|
|
try {
|
|
|
order.setRemark("用户主动取消订单");
|
|
order.setRemark("用户主动取消订单");
|
|
|
- c2cOrderService.cancelC2cOrder(order, StpUtil.getLoginIdAsLong());
|
|
|
|
|
|
|
+ c2cOrderService.cancelC2cOrder(order, StpUtil.getLoginIdAsLong(), dto.getReasonId(), dto.getReasonType(), dto.getOtherReason());
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
log.error("cancelOrder,{},{}",order.getId(),e.getMessage());
|
|
log.error("cancelOrder,{},{}",order.getId(),e.getMessage());
|
|
|
return error("取消订单失败");
|
|
return error("取消订单失败");
|
|
@@ -839,5 +852,18 @@ public class C2cOrderController extends ApiBaseController {
|
|
|
return success(data);
|
|
return success(data);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private SettingService settingService;
|
|
|
|
|
+
|
|
|
|
|
+ @PostMapping("/cancelReason")
|
|
|
|
|
+ @Operation(summary = "取消原因列表")
|
|
|
|
|
+ public Result cancelReason(){
|
|
|
|
|
+ SettingEntity setting = settingService.getSetting(SettingEnum.CANCEL_REASON_SETTING.name());
|
|
|
|
|
+ List<CancelReasonSetting> settingsList = JSONUtil.toList(JSONUtil.parseArray(setting.getSettingValue()), CancelReasonSetting.class);
|
|
|
|
|
+ if (CollectionUtils.isEmpty(settingsList)) {
|
|
|
|
|
+ return new Result().error(MessageUtils.message("c2c.order.cancel.reason.notset"));//"未配置取消原因"
|
|
|
|
|
+ }
|
|
|
|
|
+ return new Result().ok(settingsList);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
}
|
|
}
|