package com.oying.modules.pc.product.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.oying.exception.BadRequestException;
|
import com.oying.modules.pc.common.core.constrant.AuditStatusEnum;
|
import com.oying.modules.pc.product.domain.ProductAudit;
|
import com.oying.modules.pc.product.domain.dto.ProductAuditQueryCriteria;
|
import com.oying.modules.pc.product.events.ProductAuditVerdictEvent;
|
import com.oying.modules.pc.product.mapper.ProductAuditMapper;
|
import com.oying.modules.pc.product.service.ProductAuditService;
|
import com.oying.utils.FileUtil;
|
import com.oying.utils.PageResult;
|
import com.oying.utils.PageUtil;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.context.ApplicationEventPublisher;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.LinkedHashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @author lzp
|
* @description 服务实现
|
* @date 2025-07-01
|
**/
|
@Service
|
@RequiredArgsConstructor
|
public class ProductAuditServiceImpl extends ServiceImpl<ProductAuditMapper, ProductAudit> implements ProductAuditService {
|
|
private final ApplicationEventPublisher eventPublisher;
|
|
private final ProductAuditMapper productAuditMapper;
|
|
@Override
|
public PageResult<ProductAudit> queryAll(ProductAuditQueryCriteria criteria, Page<Object> page) {
|
return PageUtil.toPage(productAuditMapper.findAll(criteria, page));
|
}
|
|
@Override
|
public List<ProductAudit> queryAll(ProductAuditQueryCriteria criteria) {
|
return productAuditMapper.findAll(criteria);
|
}
|
|
@Override
|
public ProductAudit getByProductId(Long productId) {
|
LambdaQueryWrapper<ProductAudit> wrapper = new LambdaQueryWrapper<ProductAudit>()
|
.eq(ProductAudit::getProductId, productId);
|
return productAuditMapper.selectOne(wrapper);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void create(ProductAudit resources) {
|
productAuditMapper.insert(resources);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void update(ProductAudit resources, boolean isDirectUpdate) {
|
if (isDirectUpdate) {
|
productAuditMapper.updateById(resources);
|
} else {
|
ProductAudit existingRevision = this.getById(resources.getAuditor());
|
existingRevision.copy(resources);
|
productAuditMapper.updateById(existingRevision);
|
}
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void processVerdict(ProductAudit resources) {
|
AuditStatusEnum newAuditStatus = AuditStatusEnum.get(resources.getStatus());
|
ProductAudit existingAudit = this.getById(resources.getAuditId());
|
AuditStatusEnum existingAuditStatus = AuditStatusEnum.getOrDefault(existingAudit.getStatus(), AuditStatusEnum.DRAFT);
|
if (!existingAuditStatus.nextContains(newAuditStatus)) {
|
throw new BadRequestException("审核状态错误");
|
}
|
existingAudit.copy(resources);
|
productAuditMapper.updateById(existingAudit);
|
eventPublisher.publishEvent(new ProductAuditVerdictEvent(existingAudit.getAuditId()));
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void deleteAll(List<Long> ids) {
|
productAuditMapper.deleteBatchIds(ids);
|
}
|
|
@Override
|
public void download(List<ProductAudit> all, HttpServletResponse response) throws IOException {
|
List<Map<String, Object>> list = new ArrayList<>();
|
for (ProductAudit productAudit : all) {
|
Map<String, Object> map = new LinkedHashMap<>();
|
map.put("审核ID", productAudit.getAuditId());
|
map.put("商品ID", productAudit.getProductId());
|
map.put("审批ID", productAudit.getAuditId());
|
map.put("类型", productAudit.getType());
|
map.put("新数据", productAudit.getData());
|
map.put("创建人", productAudit.getCreateBy());
|
map.put("创建时间", productAudit.getCreateTime());
|
map.put("修改人", productAudit.getUpdateBy());
|
map.put("修改时间", productAudit.getUpdateTime());
|
list.add(map);
|
}
|
FileUtil.downloadExcel(list, response);
|
}
|
}
|