package com.mzl.flower.service.impl.comment;
|
|
import cn.hutool.core.util.IdUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.mzl.flower.config.exception.ValidationException;
|
import com.mzl.flower.config.security.SecurityUtils;
|
import com.mzl.flower.dto.request.comment.*;
|
import com.mzl.flower.dto.response.comment.FlowerCommentStatisVO;
|
import com.mzl.flower.dto.response.comment.FlowerCommentVO;
|
import com.mzl.flower.entity.FlowerCommentDO;
|
import com.mzl.flower.entity.customer.Customer;
|
import com.mzl.flower.entity.payment.Order;
|
import com.mzl.flower.entity.payment.OrderItem;
|
import com.mzl.flower.entity.supplier.Supplier;
|
import com.mzl.flower.enums.FlowerCommentShowEnum;
|
import com.mzl.flower.enums.TrueOrFalseEnum;
|
import com.mzl.flower.mapper.comment.FlowerCommentMapper;
|
import com.mzl.flower.mapper.comment.FlowerCommentMapperCustom;
|
import com.mzl.flower.mapper.customer.CustomerMapper;
|
import com.mzl.flower.mapper.payment.OrderItemMapper;
|
import com.mzl.flower.mapper.payment.OrderMapper;
|
import com.mzl.flower.mapper.supplier.SupplierMapper;
|
import com.mzl.flower.service.comment.FlowerCommentService;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.math.BigDecimal;
|
import java.time.LocalDateTime;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 商品评论表 服务实现类
|
* </p>
|
*
|
* @author @TaoJie
|
* @since 2024-09-29
|
*/
|
@Service
|
public class FlowerCommentServiceImpl extends ServiceImpl<FlowerCommentMapper, FlowerCommentDO> implements FlowerCommentService {
|
|
@Autowired
|
private FlowerCommentMapperCustom flowerCommentMapperCustom;
|
|
@Autowired
|
private OrderItemMapper orderItemMapper;
|
|
@Autowired
|
private SupplierMapper supplierMapper;
|
|
@Autowired
|
private CustomerMapper customerMapper;
|
|
@Autowired
|
private OrderMapper orderMapper;
|
|
|
@Transactional
|
@Override
|
public boolean createFlowerComment(CreateFlowerCommentDTO dto) {
|
final FlowerCommentVO byOrderItemId = getByOrderItemId(dto.getOrderItemId());
|
if(null!=byOrderItemId){
|
throw new ValidationException("当前商品已经评论过!");
|
}
|
|
FlowerCommentDO flowerCommentDO=new FlowerCommentDO();
|
BeanUtils.copyProperties(dto,flowerCommentDO);
|
flowerCommentDO.setId(IdUtil.simpleUUID());
|
flowerCommentDO.create(SecurityUtils.getUserId());
|
|
final OrderItem orderItem = orderItemMapper.selectById(dto.getOrderItemId());
|
if(null==orderItem){
|
throw new ValidationException("当前订单项目不存在!");
|
}
|
flowerCommentDO.setOrderId(orderItem.getOrderId());
|
flowerCommentDO.setCustomerUserId(orderItem.getCreateBy());
|
flowerCommentDO.setSupplierId(orderItem.getSupplierId());
|
flowerCommentDO.setFlowerId(orderItem.getFlowerId());
|
flowerCommentDO.setFlowerCover(orderItem.getFlowerCover());
|
|
// 补充商户信息
|
Customer customer = customerMapper.selectOne(new QueryWrapper<Customer>()
|
.eq("user_id", orderItem.getCreateBy()));
|
if(null!=customer && null!=customer.getId()){
|
flowerCommentDO.setCustomerId(customer.getId());
|
}
|
|
|
// 补充供应商信息
|
Supplier supplier = supplierMapper.selectById(orderItem.getSupplierId());
|
if(null!=supplier && StringUtils.isNotBlank(supplier.getUserId())){
|
flowerCommentDO.setSupplierUserId(supplier.getUserId());
|
}
|
|
// 设置显示状态为显示
|
flowerCommentDO.setShowFlag(FlowerCommentShowEnum.SHOW.getFlag());
|
return baseMapper.insert(flowerCommentDO)>0;
|
}
|
|
@Transactional
|
@Override
|
public boolean updateFlowerComment(UpdateFlowerCommentDTO dto) {
|
FlowerCommentDO flowerCommentDO=baseMapper.selectById(dto.getId());
|
BeanUtils.copyProperties(dto,flowerCommentDO);
|
flowerCommentDO.update(SecurityUtils.getUserId());
|
|
return baseMapper.updateById(flowerCommentDO)>0;
|
}
|
|
@Override
|
public boolean deleteFlowerComment(String id) {
|
return baseMapper.deleteById(id)>0;
|
}
|
|
@Override
|
public FlowerCommentVO getDetailById(String id) {
|
QueryFlowerCommentDTO dto=new QueryFlowerCommentDTO();
|
dto.setId(id);
|
final List<FlowerCommentVO> list = getList(dto);
|
if(CollectionUtils.isNotEmpty(list)){
|
return list.get(0);
|
}
|
return null;
|
}
|
|
@Override
|
public Page<FlowerCommentVO> getPage(Page page, QueryFlowerCommentDTO dto) {
|
List<FlowerCommentVO> list=flowerCommentMapperCustom.getPage(page,dto);
|
return page.setRecords(list);
|
}
|
|
@Override
|
public List<FlowerCommentVO> getList(QueryFlowerCommentDTO dto) {
|
return flowerCommentMapperCustom.getList(dto);
|
}
|
|
@Override
|
public FlowerCommentVO getByOrderItemId(String orderItemId) {
|
QueryFlowerCommentDTO dto=new QueryFlowerCommentDTO();
|
dto.setOrderItemId(orderItemId);
|
final List<FlowerCommentVO> list = getList(dto);
|
if(CollectionUtils.isNotEmpty(list)){
|
return list.get(0);
|
}
|
return null;
|
}
|
|
@Override
|
public BigDecimal getSupplierAvgScore(Long supplierId) {
|
return flowerCommentMapperCustom.getSupplierAvgScore(supplierId);
|
}
|
|
@Transactional
|
@Override
|
public boolean createFlowerCommentBatch(CreateFlowerCommentBatchDTO dto) {
|
if(CollectionUtils.isNotEmpty(dto.getList())){
|
dto.getList().forEach(item->{
|
// 保存评论信息
|
final FlowerCommentVO byOrderItemId = getByOrderItemId(item.getOrderItemId());
|
if(null!=byOrderItemId){
|
// 更新
|
UpdateFlowerCommentDTO updateFlowerCommentDTO=new UpdateFlowerCommentDTO();
|
BeanUtils.copyProperties(item,updateFlowerCommentDTO);
|
updateFlowerCommentDTO.setId(byOrderItemId.getId());
|
updateFlowerComment(updateFlowerCommentDTO);
|
}else{
|
createFlowerComment(item);
|
}
|
|
});
|
// 设置订单的评论状态为评论的下个阶段
|
Order order=orderMapper.selectById(dto.getOrderId());
|
|
return true;
|
}
|
return false;
|
}
|
|
@Override
|
public FlowerCommentStatisVO getSupplierStatis(Long supplierId) {
|
FlowerCommentStatisVO vo=new FlowerCommentStatisVO();
|
|
// 获取平均分
|
final BigDecimal supplierAvgScore = flowerCommentMapperCustom.getSupplierAvgScore(supplierId);
|
vo.setAvg(supplierAvgScore);
|
|
//当前商家评论总数
|
final Integer amount = baseMapper.selectCount(new QueryWrapper<FlowerCommentDO>().lambda()
|
.eq(FlowerCommentDO::getDeleted, TrueOrFalseEnum.FALSE)
|
.eq(FlowerCommentDO::getShowFlag,FlowerCommentShowEnum.SHOW.getFlag())
|
.eq(FlowerCommentDO::getSupplierId, supplierId));
|
vo.setCommentAmount(amount);
|
return vo;
|
}
|
|
@Override
|
public boolean updateShowFlowerComment(ShowFlowerCommentDTO dto) {
|
FlowerCommentDO flowerCommentDO = baseMapper.selectById(dto.getId());
|
if (null == flowerCommentDO) {
|
throw new ValidationException("评论不存在");
|
}
|
flowerCommentDO.setShowFlag(dto.getShowFalg());
|
flowerCommentDO.setUpdateBy(SecurityUtils.getUserId());
|
return baseMapper.updateById(flowerCommentDO)>0;
|
}
|
|
@Override
|
public boolean updateReplayFlowerComment(ReplayFlowerCommentDTO dto) {
|
FlowerCommentDO flowerCommentDO = baseMapper.selectById(dto.getId());
|
if (null == flowerCommentDO) {
|
throw new ValidationException("评论不存在");
|
}
|
flowerCommentDO.setReplayBy(dto.getReplayContent());
|
flowerCommentDO.setReplayTime(LocalDateTime.now());
|
flowerCommentDO.setUpdateBy(SecurityUtils.getUserId());
|
return baseMapper.updateById(flowerCommentDO)>0;
|
}
|
|
|
}
|