| | |
| | | import cn.iocoder.yudao.module.aftersales.controller.admin.ticket.vo.ticket.AfterSaleTicketPageReqVO; |
| | | import cn.iocoder.yudao.module.aftersales.controller.admin.ticket.vo.ticket.AfterSaleTicketSaveReqVO; |
| | | import cn.iocoder.yudao.module.aftersales.dal.dataobject.ticket.AfterSaleTicketDO; |
| | | import cn.iocoder.yudao.module.aftersales.dal.dataobject.returnobj.AfterSaleReturnDO; |
| | | import cn.iocoder.yudao.module.aftersales.dal.mysql.returnobj.AfterSaleReturnMapper; |
| | | import cn.iocoder.yudao.module.aftersales.enums.AfterSaleReturnStatusEnum; |
| | | import cn.iocoder.yudao.module.aftersales.dal.dataobject.ticket.AfterSaleTicketItemDO; |
| | | import cn.iocoder.yudao.module.aftersales.dal.mysql.ticket.AfterSaleTicketItemMapper; |
| | | import cn.iocoder.yudao.module.aftersales.dal.mysql.ticket.AfterSaleTicketMapper; |
| | |
| | | private AfterSaleTicketMapper ticketMapper; |
| | | @Resource |
| | | private AfterSaleTicketItemMapper ticketItemMapper; |
| | | @Resource |
| | | private AfterSaleReturnMapper returnMapper; |
| | | |
| | | @Resource |
| | | private AfterSaleNoRedisDAO noRedisDAO; |
| | |
| | | throw exception(TICKET_NO_EXISTS); |
| | | } |
| | | |
| | | // 2. 插入工单 |
| | | // 2. 插入工单(填了处理人即视为已指派,直接进入处理中) |
| | | AfterSaleTicketDO ticket = BeanUtils.toBean(createReqVO, AfterSaleTicketDO.class) |
| | | .setNo(no) |
| | | .setStatus(AfterSaleTicketStatusEnum.DRAFT.getStatus()) |
| | | .setStatus(createReqVO.getHandlerUserId() != null |
| | | ? AfterSaleTicketStatusEnum.PROCESSING.getStatus() |
| | | : AfterSaleTicketStatusEnum.DRAFT.getStatus()) |
| | | .setOwnerUserId(userId); |
| | | ticketMapper.insert(ticket); |
| | | |
| | |
| | | AfterSaleTicketDO ticket = validateTicketExists(updateReqVO.getId()); |
| | | validateTicketStatus(ticket, AfterSaleTicketStatusEnum.DRAFT); |
| | | |
| | | // 2. 更新工单 |
| | | // 2. 更新工单(草稿单填了处理人即视为指派,进入处理中) |
| | | AfterSaleTicketDO updateObj = BeanUtils.toBean(updateReqVO, AfterSaleTicketDO.class); |
| | | if (AfterSaleTicketStatusEnum.DRAFT.getStatus().equals(ticket.getStatus()) |
| | | && updateReqVO.getHandlerUserId() != null) { |
| | | updateObj.setStatus(AfterSaleTicketStatusEnum.PROCESSING.getStatus()); |
| | | } |
| | | ticketMapper.updateById(updateObj); |
| | | |
| | | // 3. 更新明细行(先删后增) |
| | |
| | | AfterSaleTicketDO ticket = validateTicketExists(id); |
| | | validateTicketStatus(ticket, AfterSaleTicketStatusEnum.PROCESSING, |
| | | AfterSaleTicketStatusEnum.WAITING_RETURN, AfterSaleTicketStatusEnum.WAITING_REFUND); |
| | | if (ticket.getReturnId() != null) { |
| | | AfterSaleReturnDO returnDO = returnMapper.selectById(ticket.getReturnId()); |
| | | if (returnDO == null || !AfterSaleReturnStatusEnum.REFUNDED.getStatus().equals(returnDO.getStatus())) { |
| | | throw exception(RETURN_TICKET_NOT_FINISHED); |
| | | } |
| | | } |
| | | ticketMapper.updateById(new AfterSaleTicketDO().setId(id) |
| | | .setStatus(AfterSaleTicketStatusEnum.COMPLETED.getStatus()) |
| | | .setResolvedTime(LocalDateTime.now())); |
| | |
| | | public void closeTicket(Long id) { |
| | | AfterSaleTicketDO ticket = validateTicketExists(id); |
| | | validateTicketStatus(ticket, AfterSaleTicketStatusEnum.COMPLETED); |
| | | if (ticket.getReturnId() != null) { |
| | | AfterSaleReturnDO returnDO = returnMapper.selectById(ticket.getReturnId()); |
| | | if (returnDO == null || !AfterSaleReturnStatusEnum.REFUNDED.getStatus().equals(returnDO.getStatus())) { |
| | | throw exception(RETURN_TICKET_NOT_FINISHED); |
| | | } |
| | | returnMapper.updateById(new AfterSaleReturnDO().setId(returnDO.getId()) |
| | | .setStatus(AfterSaleReturnStatusEnum.CLOSED.getStatus())); |
| | | } |
| | | ticketMapper.updateById(new AfterSaleTicketDO().setId(id) |
| | | .setStatus(AfterSaleTicketStatusEnum.CLOSED.getStatus()) |
| | | .setClosedTime(LocalDateTime.now())); |