package com.ruoyi.user.controller; import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.api.entity.EvaluateOrderInfoVO; import com.ruoyi.order.api.entity.OrderEvaluateSubmitRequest; import com.ruoyi.order.api.entity.OrderEvaluateVO; import com.ruoyi.order.api.feignClient.EvaluateClient; import com.ruoyi.system.api.model.LoginUserInfo; import com.ruoyi.user.entity.RecoveryServe; import com.ruoyi.user.request.OrderEvaluateRequest; import com.ruoyi.user.service.RecoveryServeService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 用户评价表 前端控制器 *

* * @author hjl * @since 2024-05-29 */ @RestController @RequestMapping("/evaluate") @Api(tags = {"用户端-个人中心"}) public class EvaluateController { @Resource private TokenService tokenService; @Resource private EvaluateClient evaluateClient; @Resource private RecoveryServeService recoveryServeService; @GetMapping("/orderEvaluate") @ApiOperation(value = "订单评价列表", tags = {"用户端-个人中心"}) public R> orderEvaluate(@RequestParam("state") Integer state, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { LoginUserInfo loginUser = tokenService.getLoginUserByUser(); if (null == loginUser) { return R.loginExpire("登录失效!"); } Page list = evaluateClient.evaluateListByUser(loginUser.getUserid(), state, pageNum, pageSize).getData(); if (null != list) { // 数据封装,减少循环io List ids = list.getRecords().stream().map(data -> data.getOrderInfo().getServeId()).collect(Collectors.toList()); if (!ids.isEmpty()) { List serveList = recoveryServeService.lambdaQuery() .in(RecoveryServe::getId, ids) .eq(RecoveryServe::getIsDelete, 0).list(); Map map = serveList.stream().collect(Collectors. toMap(RecoveryServe::getId, data -> data)); for (OrderEvaluateVO data : list.getRecords()) { Integer serveId = data.getOrderInfo().getServeId(); RecoveryServe recoveryServe = map.get(serveId); if (null != recoveryServe) { EvaluateOrderInfoVO orderInfo = data.getOrderInfo(); orderInfo.setServeName(recoveryServe.getServeName()); orderInfo.setServeDescribe(recoveryServe.getServeDescribe()); orderInfo.setCover(recoveryServe.getCover()); } } } } return R.ok(list); } @GetMapping("/conductEvaluation") @ApiOperation(value = "进行评价(服务单号)", tags = {"用户端-个人中心"}) public R conductEvaluation() { return R.ok(RandomUtil.randomNumbers(15)); } @PostMapping("/submitEvaluation") @ApiOperation(value = "提交评价", tags = {"用户端-个人中心"}) public R submitEvaluation(@RequestBody @Validated OrderEvaluateRequest orderEvaluate) { Long orderId = orderEvaluate.getOrderId(); String content = orderEvaluate.getContent(); Double starRating = orderEvaluate.getStarRating(); String serveNo = orderEvaluate.getServeNo(); LoginUserInfo loginUser = tokenService.getLoginUserByUser(); if (null == loginUser) { return R.loginExpire("登录失效!"); } boolean save = evaluateClient.evaluateSave(new OrderEvaluateSubmitRequest(orderId, content, starRating, serveNo, loginUser.getUserid())).getData(); return save ? R.ok() : R.fail(); } }