package com.ruoyi.order.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.GlobalException; import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.order.entity.Evaluate; import com.ruoyi.order.entity.Order; import com.ruoyi.order.request.EvaluatePageRequest; import com.ruoyi.order.request.OrderEvaluateSubmitRequest; import com.ruoyi.order.service.EvaluateService; import com.ruoyi.order.service.OrderService; import com.ruoyi.order.vo.EvaluatePageVO; import com.ruoyi.order.vo.OrderEvaluateVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** *

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

* * @author hjl * @since 2024-05-29 */ @RestController @RequestMapping("/evaluate") @Api(tags = {"后台-系统设置-订单评价管理"}) public class EvaluateController { @Resource private EvaluateService evaluateService; @Resource private OrderService orderService; /** * 订单评价分页列表 * * @param request 筛选参数 */ @RequiresPermissions("order_evaluate") @ApiOperation(value = "订单评价分页查询列表", tags = {"后台"}) @PostMapping(value = "/page") @ApiImplicitParams({ @ApiImplicitParam(value = "评价用户", name = "userNo", dataType = "String"), @ApiImplicitParam(value = "订单编号", name = "orderNumber", dataType = "String"), @ApiImplicitParam(value = "师傅姓名", name = "workerName", dataType = "String"), @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true), @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true) }) public R> queryPageList(@RequestBody EvaluatePageRequest request) { return R.ok(evaluateService.queryPageList(request, Page.of(request.getPageNum(), request.getPageSize()))); } /** * 订单评价详情 * * @param id 订单评价id */ @RequiresPermissions("order_evaluate") @ApiOperation(value = "订单评价详情", tags = {"后台"}) @GetMapping(value = "/detail") public R detail(@RequestParam("id") Integer id) { return R.ok(evaluateService.lambdaQuery() .eq(Evaluate::getId, id) .eq(Evaluate::getIsDelete, 0).one()); } /** * 根据id批量删除订单评价 * * @param ids 订单评价多条id拼接 */ @RequiresPermissions("order_evaluate") @ApiOperation(value = "批量删除订单评价", tags = {"后台-系统设置-订单评价管理"}) @GetMapping(value = "/batchDelete") public R batchDelete(@RequestParam("ids") String ids) { List idList = Arrays.stream(ids.split(",")).collect(Collectors.toList()); List list = evaluateService.lambdaQuery().in(Evaluate::getId, idList).list(); list.forEach(data -> data.setIsDelete(1)); List orderIds = list.stream().map(Evaluate::getOrderId).collect(Collectors.toList()); if (!orderIds.isEmpty()) { orderService.lambdaUpdate() .set(Order::getIsEvaluate, Constants.ZERO) .in(Order::getId, orderIds).update(); } return evaluateService.updateBatchById(list) ? R.ok() : R.fail(); } /** * 用户所关联评价记录分页列表 * * @param userId 用户id * @param pageNum 页码 * @param pageSize 每页显示条数 * @return 分页列表 */ @ApiOperation(value = "用户详情-评价记录分页列表", tags = {"后台-用户管理-用户列表"}) @GetMapping(value = "/evaluateList") public R> evaluateList(@RequestParam(value = "userId", required = false) Integer userId, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { Page evaluatePageVOPage = evaluateService.evaluateList(userId, Page.of(pageNum, pageSize)); return R.ok(evaluatePageVOPage); } @GetMapping(value = "/evaluateList1") public R> evaluateList1(@RequestParam(value = "cityList", required = false) List cityList, @RequestParam(value = "userId", required = false) Integer userId, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { Page evaluatePageVOPage = evaluateService.evaluateList1(cityList,userId, Page.of(pageNum, pageSize)); return R.ok(evaluatePageVOPage); } /** * 根据师傅id获取评价列表 * * @param workerId 师傅id */ @ApiOperation(value = "根据师傅id获取评价列表", tags = {"后台-系统设置-订单评价管理"}) @GetMapping(value = "/evaluateByWorkerId") public R> evaluateByWorkerId(@RequestParam("workerId") Integer workerId) { List evaluateList = evaluateService.lambdaQuery().eq(Evaluate::getWorkerId, workerId) .eq(Evaluate::getIsDelete, 0).list(); return R.ok(evaluateList); } /** * 根据订单id获取评价列表 * * @param orderId 订单id */ @ApiOperation(value = "根据订单id获取评价列表", tags = {"后台-系统设置-订单评价管理"}) @GetMapping(value = "/oneByOrderId") public R oneByOrderId(@RequestParam("orderId") String orderId) { return R.ok(evaluateService.lambdaQuery().eq(Evaluate::getOrderId, orderId) .eq(Evaluate::getIsDelete, 0).one()); } /** * 订单评价列表 * * @param userId 用户id */ @ApiOperation(value = "订单评价列表", tags = {"用户端"}) @GetMapping(value = "/evaluateListByUser") public R> evaluateListByUser(@RequestParam("userId") Integer userId, @RequestParam("state") Integer state, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { return R.ok(evaluateService.evaluateListByUser(userId, state, Page.of(pageNum, pageSize))); } /** * 提交评价 * * @param request 评价信息 */ @ApiOperation(value = "提交评价", tags = {"用户端"}) @PostMapping(value = "/evaluateSave") public R evaluateSave(@RequestBody OrderEvaluateSubmitRequest request) { String orderId = request.getOrderId(); String content = request.getContent(); Double starRating = request.getStarRating(); String serveNo = request.getServeNo(); Integer userId = request.getUserId(); Order order = orderService.lambdaQuery() .eq(Order::getId, orderId).eq(Order::getIsDelete, 0).one(); if (null == order) { throw new GlobalException("订单不存在或已删除!"); } order.setIsEvaluate(Constants.ONE); orderService.updateById(order); Evaluate evaluate = new Evaluate(); evaluate.setUserId(userId); evaluate.setOrderId(orderId); evaluate.setContent(content); evaluate.setWorkerId(order.getServerId()); evaluate.setStarRating(starRating); evaluate.setServeNo(serveNo); return R.ok(evaluateService.save(evaluate)); } }