订单管理-支付统计(不统计支付类型为空的 通过shopid和支付类型做中文回显 微信小程序支付图标是写死的)

订单管理-列表(不再展示退单订单)
This commit is contained in:
wangw 2024-03-18 17:29:00 +08:00
parent 594ba6af86
commit 896d5fa3cb
4 changed files with 61 additions and 25 deletions

View File

@ -65,4 +65,6 @@ public interface TbShopPayTypeRepository extends JpaRepository<TbShopPayType, In
"\t)",nativeQuery = true) "\t)",nativeQuery = true)
Integer creatPayType(@Param("shopId") String shopId); Integer creatPayType(@Param("shopId") String shopId);
@Query("select t from TbShopPayType t where t.payType=:payType and t.shopId=:shopId")
TbShopPayType findByPayType(@Param("payType")String payType,@Param("shopId") String shopId);
} }

View File

@ -18,8 +18,10 @@ package cn.ysk.cashier.service.impl.order;
import cn.ysk.cashier.dto.order.TbOrderInfoDto; import cn.ysk.cashier.dto.order.TbOrderInfoDto;
import cn.ysk.cashier.dto.order.TbOrderInfoQueryCriteria; import cn.ysk.cashier.dto.order.TbOrderInfoQueryCriteria;
import cn.ysk.cashier.mapper.order.TbOrderInfoMapper; import cn.ysk.cashier.mapper.order.TbOrderInfoMapper;
import cn.ysk.cashier.pojo.TbShopPayType;
import cn.ysk.cashier.pojo.order.TbOrderDetail; import cn.ysk.cashier.pojo.order.TbOrderDetail;
import cn.ysk.cashier.pojo.order.TbOrderInfo; import cn.ysk.cashier.pojo.order.TbOrderInfo;
import cn.ysk.cashier.repository.TbShopPayTypeRepository;
import cn.ysk.cashier.repository.order.TbOrderDetailRepository; import cn.ysk.cashier.repository.order.TbOrderDetailRepository;
import cn.ysk.cashier.repository.order.TbOrderInfoRepository; import cn.ysk.cashier.repository.order.TbOrderInfoRepository;
import cn.ysk.cashier.service.order.TbOrderInfoService; import cn.ysk.cashier.service.order.TbOrderInfoService;
@ -30,13 +32,11 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Page; import org.springframework.data.domain.*;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.persistence.criteria.Predicate;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -58,6 +58,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
private final TbOrderInfoMapper tbOrderInfoMapper; private final TbOrderInfoMapper tbOrderInfoMapper;
private final TbOrderDetailRepository tbOrderDetailRepository; private final TbOrderDetailRepository tbOrderDetailRepository;
private final TbShopPayTypeRepository payTypeRepository;
@Override @Override
public Map<String, Object> queryAllPage(TbOrderInfoQueryCriteria criteria) { public Map<String, Object> queryAllPage(TbOrderInfoQueryCriteria criteria) {
@ -67,16 +68,25 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
criteria.setOrderType(null); criteria.setOrderType(null);
} }
} }
Page<TbOrderInfo> page = tbOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable); // Page<TbOrderInfo> page = tbOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
Page<TbOrderInfo> page = tbOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> {
Predicate predicate = QueryHelp.getPredicate(root, criteria, criteriaBuilder);
// 追加校验参数 status不为空时 不查询状态为 "refund"
if(StringUtils.isBlank(criteria.getStatus())){
predicate = criteriaBuilder.and(predicate, criteriaBuilder.notEqual(root.get("status"), "refund"));
}
return predicate;
}, pageable);
List<TbOrderInfoVo> orderInfoVoList = new ArrayList<>(); List<TbOrderInfoVo> orderInfoVoList = new ArrayList<>();
for (TbOrderInfo tbOrderInfo : page.getContent()) { for (TbOrderInfo tbOrderInfo : page.getContent()) {
TbOrderInfoVo orderInfoVo = new TbOrderInfoVo(); TbOrderInfoVo orderInfoVo = new TbOrderInfoVo();
List<TbOrderDetail> details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId()); List<TbOrderDetail> details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId());
BigDecimal refundAmount = BigDecimal.ZERO; BigDecimal refundAmount = BigDecimal.ZERO;
for (TbOrderDetail detail : details) { for (TbOrderDetail detail : details) {
if(tbOrderInfo.getStatus().equals("refund")){ if (tbOrderInfo.getStatus().equals("refund")) {
refundAmount = refundAmount.add(detail.getPriceAmount()); refundAmount = refundAmount.add(detail.getPriceAmount());
}else{ } else {
if (detail.getStatus().equals("refund")) { if (detail.getStatus().equals("refund")) {
refundAmount = refundAmount.add(detail.getPriceAmount()); refundAmount = refundAmount.add(detail.getPriceAmount());
} }
@ -92,7 +102,23 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
@Override @Override
public List<TbOrderPayCountVo> queryTbOrderPayCount(String shopId) { public List<TbOrderPayCountVo> queryTbOrderPayCount(String shopId) {
return tbOrderInfoRepository.queryTbOrderPayCount(shopId); List<TbOrderPayCountVo> result=new ArrayList<>();
List<TbOrderPayCountVo> payCountVoList = tbOrderInfoRepository.queryTbOrderPayCount(shopId);
for (TbOrderPayCountVo payCount : payCountVoList) {
if(StringUtils.isNotBlank(payCount.getPayType())){
TbShopPayType byPayType = payTypeRepository.findByPayType(payCount.getPayType(), shopId);
if (byPayType != null) {
payCount.setPayType(byPayType.getPayName());
payCount.setIcon(byPayType.getIcon());
}
if(payCount.getPayType().equals("wx_lite")){
payCount.setPayType("微信小程序支付");
payCount.setIcon("https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/20240318/ecf9e234aad8426ab0b1c4d5b8e50c9d.jpg");
}
result.add(payCount);
}
}
return result;
} }
@Override @Override
@ -120,9 +146,9 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
dto.setIsRefund(0); dto.setIsRefund(0);
BigDecimal refundAmount = BigDecimal.ZERO; BigDecimal refundAmount = BigDecimal.ZERO;
for (TbOrderDetail detail : details) { for (TbOrderDetail detail : details) {
if(tbOrderInfo.getStatus().equals("refund")){ if (tbOrderInfo.getStatus().equals("refund")) {
refundAmount = refundAmount.add(detail.getPriceAmount()); refundAmount = refundAmount.add(detail.getPriceAmount());
}else{ } else {
if (detail.getStatus().equals("refund")) { if (detail.getStatus().equals("refund")) {
refundAmount = refundAmount.add(detail.getPriceAmount()); refundAmount = refundAmount.add(detail.getPriceAmount());
} }
@ -132,7 +158,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
if (refund > 0) { if (refund > 0) {
dto.setIsRefund(1); dto.setIsRefund(1);
} }
log.info("退款金额为:{}",refundAmount); log.info("退款金额为:{}", refundAmount);
dto.setRefundAmount(refundAmount); dto.setRefundAmount(refundAmount);
dto.setDetailList(details); dto.setDetailList(details);
return dto; return dto;

View File

@ -173,7 +173,7 @@ public class TbProductServiceImpl implements TbProductService {
Threads.call(tbShopUnits, tbProductSkus, tbProductSpec); Threads.call(tbShopUnits, tbProductSkus, tbProductSpec);
//组装 //组装
TbProductVo tbProductVo = new TbProductVo(); TbProductVo tbProductVo = new TbProductVo();
tbProductVo.setCategoryId(Integer.valueOf(tbProduct.getCategoryId())); tbProductVo.setCategoryId(tbProduct.getCategoryId());
//单位 //单位
if (tbProduct.getUnitId() == null) { if (tbProduct.getUnitId() == null) {
tbProductVo.setUnitId(null); tbProductVo.setUnitId(null);

View File

@ -1,22 +1,22 @@
package cn.ysk.cashier.vo; package cn.ysk.cashier.vo;
import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.StringJoiner;
@Data
public class TbOrderPayCountVo{ public class TbOrderPayCountVo{
private String icon;
private String payType; private String payType;
private BigDecimal payAmount; private BigDecimal payAmount;
// 构造函数参数名需要与查询中的别名一致 public String getIcon() {
public TbOrderPayCountVo(String payType, BigDecimal payAmount) { return icon;
this.payType = payType; }
this.payAmount = payAmount;
public void setIcon(String icon) {
this.icon = icon;
} }
// Getter和Setter方法
public String getPayType() { public String getPayType() {
return payType; return payType;
} }
@ -33,12 +33,20 @@ public class TbOrderPayCountVo{
this.payAmount = payAmount; this.payAmount = payAmount;
} }
// toString方法用于简单的打印信息可根据需要添加 public TbOrderPayCountVo() {
}
public TbOrderPayCountVo(String payType, BigDecimal payAmount) {
this.payType = payType;
this.payAmount = payAmount;
}
@Override @Override
public String toString() { public String toString() {
return "TbOrderPayCountVo{" + return new StringJoiner(", ", TbOrderPayCountVo.class.getSimpleName() + "[", "]")
"payType='" + payType + '\'' + .add("icon='" + icon + "'")
", payAmount=" + payAmount + .add("payType='" + payType + "'")
'}'; .add("payAmount=" + payAmount)
.toString();
} }
} }