package com.sinata.rest.modular.mall.controller;
|
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.sinata.common.enums.EnumIsObj;
|
import com.sinata.rest.common.ApiUtils;
|
import com.sinata.rest.modular.auth.util.ThreadPoolUtil;
|
import com.sinata.rest.modular.mall.controller.body.BodyGoodsUserEvaluation;
|
import com.sinata.rest.modular.mall.controller.vo.VoGoodsUserEvaluation;
|
import com.sinata.rest.modular.mall.model.MallOrder;
|
import com.sinata.rest.modular.mall.model.MallOrderDetail;
|
import com.sinata.rest.modular.mall.model.MallUserEvaluation;
|
import com.sinata.rest.modular.mall.service.IMallOrderDetailService;
|
import com.sinata.rest.modular.mall.service.IMallOrderService;
|
import com.sinata.rest.modular.mall.service.IMallUserEvaluationService;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.util.Assert;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.validation.constraints.NotNull;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 评价接口
|
* </p>
|
* @Author sl
|
* @Date 2023/3/15 14:21
|
*/
|
@Slf4j
|
@Validated
|
@RestController
|
@RequestMapping("/mall/evaluation")
|
//@Api(tags = "商城-用户评价", description = "商品评价列表")
|
public class MallUserEvaluationController {
|
|
@Autowired
|
IMallUserEvaluationService mallUserEvaluationService;
|
|
@Autowired
|
IMallOrderDetailService orderDetailService;
|
|
@Autowired
|
IMallOrderService orderService;
|
|
@GetMapping(value = "/goodsNewestEvaluation")
|
@ApiOperation(value = "商品最新的一条评价", notes = "获取商品最近一条评价信息", response = VoGoodsUserEvaluation.class)
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "goodsId", value = "商品ID", dataType = "Int", paramType = "query")
|
})
|
public Object goodsNewestEvaluation(@NotNull Integer goodsId) {
|
VoGoodsUserEvaluation vo = mallUserEvaluationService.goodsNewestEvaluation(goodsId);
|
return ApiUtils.returnOK(vo);
|
}
|
|
@GetMapping(value = "/list")
|
@ApiOperation(value = "获取商品评价列表", notes = "获取商品评价列表", response = VoGoodsUserEvaluation.class)
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "merchantId", value = "门店ID", defaultValue = "1", dataType = "Integer", paramType = "query", required = true),
|
@ApiImplicitParam(name = "goodsId", value = "商品ID", defaultValue = "1", dataType = "Integer", paramType = "query", required = true),
|
@ApiImplicitParam(name = "current", value = "当前页数", defaultValue = "1", dataType = "Int", paramType = "query", required = true),
|
@ApiImplicitParam(name = "size", value = "每页条数", defaultValue = "20", dataType = "Int", paramType = "query", required = true)
|
})
|
public Object userEvaluationList(Integer merchantId, Integer goodsId, int current, int size){
|
Page page = new Page<VoGoodsUserEvaluation>(current, size);
|
List<VoGoodsUserEvaluation> list = mallUserEvaluationService.selectEvaluationList(merchantId, goodsId, page);
|
return ApiUtils.returnOK(list);
|
}
|
|
@GetMapping(value = "/UserEvaluationList")
|
@ApiOperation(value = "获取我的评价列表", notes = "获取我的评价列表", response = VoGoodsUserEvaluation.class)
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "userId", value = "用户id", defaultValue = "1", dataType = "Int", paramType = "query", required = true),
|
@ApiImplicitParam(name = "current", value = "当前页数", defaultValue = "1", dataType = "Int", paramType = "query", required = true),
|
@ApiImplicitParam(name = "size", value = "每页条数", defaultValue = "20", dataType = "Int", paramType = "query", required = true)
|
})
|
public Object userEvaluationList( Integer userId,Integer current, Integer size){
|
Page page = new Page<VoGoodsUserEvaluation>(current, size);
|
List<VoGoodsUserEvaluation> list = mallUserEvaluationService.selectEvaluationListForUser(userId,page);
|
return ApiUtils.returnOK(list);
|
}
|
|
@PostMapping("/add")
|
@ApiOperation(value = "立即评价", notes = "立即评价", response = MallUserEvaluation.class)
|
public Object add(@RequestBody BodyGoodsUserEvaluation body) {
|
// 查询商品详细信息
|
MallOrderDetail orderDetail = orderDetailService.getById(body.getOrderDetailNo());
|
Assert.notNull(orderDetail, "订单信息错误");
|
|
// 订单信息
|
MallOrder order = orderService.getOne(new LambdaQueryWrapper<MallOrder>()
|
.select(MallOrder::getMerchantId)
|
.eq(MallOrder::getOrderNo, orderDetail.getOrderNo())
|
);
|
|
// 保存评价
|
if(orderDetail.getIsEvaluate() == null || orderDetail.getIsEvaluate() == EnumIsObj.NO.index) {
|
// 保存评价信息
|
MallUserEvaluation evaluation = JSON.parseObject(JSON.toJSONString(body), MallUserEvaluation.class);
|
evaluation.setMerchantId(order.getMerchantId());
|
evaluation.setOrderNo(orderDetail.getOrderNo());
|
evaluation.setGoodsId(orderDetail.getGoodsId());
|
evaluation.setGoodsSkuId(orderDetail.getSkuId());
|
evaluation.setUserId(ThreadPoolUtil.getUserId());
|
mallUserEvaluationService.save(evaluation);
|
|
// 商品已评价
|
orderDetail.setIsEvaluate(EnumIsObj.YES.index);
|
orderDetail.updateById();
|
return ApiUtils.returnOK();
|
}
|
return ApiUtils.returnNG();
|
}
|
|
}
|