AfterSalesServiceController.java 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package com.ylx.order.controller;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import com.ylx.common.core.domain.R;
  5. import com.ylx.common.core.domain.entity.SysDictData;
  6. import com.ylx.common.utils.DictUtils;
  7. import com.ylx.order.domain.dto.AfterSalesServiceDTO;
  8. import com.ylx.order.domain.vo.RefundCalculationVO;
  9. import com.ylx.order.domain.vo.RegulationConfigVO;
  10. import com.ylx.order.enums.AfterSaleServiceDictTypeEnum;
  11. import com.ylx.order.service.IAfterSalesServiceService;
  12. import com.ylx.order.service.RegulationService;
  13. import io.swagger.annotations.Api;
  14. import io.swagger.annotations.ApiOperation;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.springframework.security.access.prepost.PreAuthorize;
  17. import org.springframework.validation.annotation.Validated;
  18. import org.springframework.web.bind.annotation.*;
  19. import javax.annotation.Resource;
  20. import java.util.ArrayList;
  21. import java.util.Collections;
  22. import java.util.List;
  23. @RestController
  24. @RequestMapping("/order/after/sale")
  25. @Api(tags = {"订单售后模块"})
  26. @Slf4j
  27. public class AfterSalesServiceController {
  28. @Resource
  29. private RegulationService regulationService;
  30. @Resource
  31. private IAfterSalesServiceService afterSalesServiceService;
  32. @PreAuthorize("@customerAuth.isCustomer()")
  33. @ApiOperation("客户端获取售后原因接口:退款=1, 取消订单=2")
  34. @GetMapping("/dict/{type}/reason")
  35. public R<List<String>> getReasonList(@PathVariable("type") Integer type) {
  36. String dictType = AfterSaleServiceDictTypeEnum.getDictTypeByCode(type);
  37. if (ObjectUtil.isNull(dictType)) {
  38. return R.fail("无效的type类型参数");
  39. }
  40. List<SysDictData> reasonDictDataList = DictUtils.getSortedDictCache(dictType);
  41. if (CollUtil.isEmpty(reasonDictDataList)) {
  42. return R.ok(Collections.emptyList());
  43. }
  44. List<String> list = new ArrayList<>(reasonDictDataList.size());
  45. for (SysDictData data : reasonDictDataList) {
  46. list.add(data.getDictValue());
  47. }
  48. return R.ok(list);
  49. }
  50. @PreAuthorize("@customerAuth.isCustomer()")
  51. @ApiOperation("客户端用户提交退款")
  52. @PostMapping("/submit")
  53. public R<?> submitAfterSale(@Validated @RequestBody AfterSalesServiceDTO dto) {
  54. this.afterSalesServiceService.submitAfterSale(dto);
  55. return R.ok();
  56. }
  57. @PreAuthorize("@customerAuth.isCustomer()")
  58. @ApiOperation("客户端发起售后计算退款金额")
  59. @PostMapping("/calculate/refund")
  60. public R<RefundCalculationVO> calculateRefund(@Validated @RequestBody AfterSalesServiceDTO dto) {
  61. RefundCalculationVO vo = this.afterSalesServiceService.calculateRefund(dto);
  62. return R.ok(vo);
  63. }
  64. @ApiOperation("根据商户履约状态获取退款描述")
  65. @GetMapping("/desc/list")
  66. public R<List<RegulationConfigVO>> getDescList(Integer execStatus) {
  67. List<RegulationConfigVO> list = this.regulationService.getDescListByExecStatus(execStatus);
  68. return R.ok(list);
  69. }
  70. }