diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java index 4e81e24e..26ebcf41 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java @@ -48,6 +48,9 @@ public class TiketController extends ControllerBase { @Resource private IAppUserService appUserService; + @Resource + private ITicketEvaluateService ticketEvaluateService; + /** * 搜索设备 * @@ -171,4 +174,15 @@ public class TiketController extends ControllerBase { ticketService.revoked(id); return ApiResult.success(); } + + /** + * 添加工单评价 + * + * @param request 请求信息 + **/ + @PostMapping("addTicketEvaluate") + public ApiResult addTicketEvaluate(@Valid @RequestBody TicketEvaluateAddRequest request) { + ticketEvaluateService.add(request); + return ApiResult.success(); + } } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/TicketEvaluateAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/TicketEvaluateAddRequest.java new file mode 100644 index 00000000..e35d49b7 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/TicketEvaluateAddRequest.java @@ -0,0 +1,36 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.List; + +@Data +public class TicketEvaluateAddRequest { + + //工单id + @NotNull + private Integer ticketId; + + //服务评价 + @NotBlank + private String serviceEvaluation; + + //服务评价选择 + private List serviceEvaluationSelect; + + //产品评价 + @NotBlank + private String productEvaluation; + + //产品评价选择 + private List productEvaluationSelect; + + //评分 + private BigDecimal score; + + //反馈 + private String feedback; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TicketEvaluate.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TicketEvaluate.java new file mode 100644 index 00000000..f3b8fc44 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TicketEvaluate.java @@ -0,0 +1,72 @@ +package com.nflg.mobilebroken.repository.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("ticket_evaluate") +public class TicketEvaluate implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 工单id + */ + private Integer ticketId; + + /** + * 售后服务评价 + */ + private String serviceEvaluation; + + /** + * 售后服务评价选择 + */ + private String serviceEvaluationSelect; + + /** + * 产品体验评价 + */ + private String productEvaluation; + + /** + * 产品体验评价选择 + */ + private String productEvaluationSelect; + + /** + * 评分 + */ + private BigDecimal score; + + /** + * 反馈 + */ + private String feedback; + + /** + * 评价时间 + */ + private LocalDateTime createTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TicketEvaluateMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TicketEvaluateMapper.java new file mode 100644 index 00000000..7f83d57c --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TicketEvaluateMapper.java @@ -0,0 +1,16 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.mobilebroken.repository.entity.TicketEvaluate; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface TicketEvaluateMapper extends BaseMapper { + +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketEvaluateService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketEvaluateService.java new file mode 100644 index 00000000..b4d764ca --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketEvaluateService.java @@ -0,0 +1,18 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.request.TicketEvaluateAddRequest; +import com.nflg.mobilebroken.repository.entity.TicketEvaluate; + +/** + *

+ * 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ITicketEvaluateService extends IService { + + void add(TicketEvaluateAddRequest request); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketEvaluateServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketEvaluateServiceImpl.java new file mode 100644 index 00000000..bd2f6a86 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketEvaluateServiceImpl.java @@ -0,0 +1,50 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.constant.TicketState; +import com.nflg.mobilebroken.common.pojo.request.TicketEvaluateAddRequest; +import com.nflg.mobilebroken.common.util.VUtils; +import com.nflg.mobilebroken.repository.entity.Ticket; +import com.nflg.mobilebroken.repository.entity.TicketEvaluate; +import com.nflg.mobilebroken.repository.mapper.TicketEvaluateMapper; +import com.nflg.mobilebroken.repository.service.ITicketEvaluateService; +import com.nflg.mobilebroken.repository.service.ITicketService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.Objects; + +/** + *

+ * 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class TicketEvaluateServiceImpl extends ServiceImpl implements ITicketEvaluateService { + + @Resource + private ITicketService ticketService; + + @Override + public void add(TicketEvaluateAddRequest request) { + Ticket ticket = ticketService.getById(request.getTicketId()); + VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在"); + VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.ProcessingCompleted.getState()) + && !Objects.equals(ticket.getState(), TicketState.Closed.getState())).throwMessage("工单状态异常"); + TicketEvaluate ticketEvaluate = new TicketEvaluate() + .setTicketId(request.getTicketId()) + .setServiceEvaluation(request.getServiceEvaluation()) + .setServiceEvaluationSelect(StrUtil.join(",", request.getServiceEvaluationSelect())) + .setProductEvaluation(request.getProductEvaluation()) + .setProductEvaluationSelect(StrUtil.join(",", request.getProductEvaluationSelect())) + .setScore(request.getScore()) + .setFeedback(request.getFeedback()) + .setCreateTime(LocalDateTime.now()); + save(ticketEvaluate); + } +} diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/TicketEvaluateMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/TicketEvaluateMapper.xml new file mode 100644 index 00000000..38e1f527 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/TicketEvaluateMapper.xml @@ -0,0 +1,5 @@ + + + + +