Commit 808d7ee7 by 杨浩

bug修复

parent b481db08
package cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.returns; package cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.returns;
import cn.iocoder.foodnexus.framework.common.pojo.PageParam; import cn.iocoder.foodnexus.framework.common.pojo.PageParam;
import cn.iocoder.foodnexus.framework.common.validation.InEnum;
import cn.iocoder.foodnexus.module.erp.api.enums.ErpDeliveryStatus;
import cn.iocoder.foodnexus.module.erp.enums.SaleOrderPickUpStatus;
import cn.iocoder.foodnexus.module.order.enums.DeliveryMode;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
...@@ -8,6 +12,7 @@ import lombok.ToString; ...@@ -8,6 +12,7 @@ import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import static cn.iocoder.foodnexus.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static cn.iocoder.foodnexus.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
...@@ -58,4 +63,33 @@ public class ErpPurchaseReturnPageReqVO extends PageParam { ...@@ -58,4 +63,33 @@ public class ErpPurchaseReturnPageReqVO extends PageParam {
@Schema(description = "是否可退款", example = "true") @Schema(description = "是否可退款", example = "true")
private Boolean refundEnable; // 对应 refundStatus = [0, 1] private Boolean refundEnable; // 对应 refundStatus = [0, 1]
/**
* 枚举 {@link SaleOrderPickUpStatus}
*/
@Schema(description = "退货状态")
@InEnum(SaleOrderPickUpStatus.class)
private String returnsStatus;
@Schema(description = "客户订单id")
private Long customerOrderId;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "联系人")
private String contactUser;
@Schema(description = "联系号码")
private String contactPhone;
@Schema(description = "商品名称")
private String productName;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "配送时间")
private LocalDateTime[] deliveryTime;
} }
\ No newline at end of file
package cn.iocoder.foodnexus.module.erp.dal.mysql.purchase; package cn.iocoder.foodnexus.module.erp.dal.mysql.purchase;
import cn.iocoder.foodnexus.framework.common.pojo.PageResult; import cn.iocoder.foodnexus.framework.common.pojo.PageResult;
import cn.iocoder.foodnexus.framework.common.util.CommonUtil;
import cn.iocoder.foodnexus.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.foodnexus.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.foodnexus.framework.mybatis.core.query.MPJLambdaWrapperX; import cn.iocoder.foodnexus.framework.mybatis.core.query.MPJLambdaWrapperX;
import cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnPageReqVO; import cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.returns.ErpPurchaseReturnPageReqVO;
...@@ -8,6 +9,9 @@ import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpPurchaseInDO; ...@@ -8,6 +9,9 @@ import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpPurchaseInDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpPurchaseReturnDO; import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpPurchaseReturnDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpPurchaseReturnItemDO; import cn.iocoder.foodnexus.module.erp.dal.dataobject.purchase.ErpPurchaseReturnItemDO;
import cn.iocoder.foodnexus.module.erp.api.enums.ErpAuditStatus; import cn.iocoder.foodnexus.module.erp.api.enums.ErpAuditStatus;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpCustomerDO;
import cn.iocoder.foodnexus.module.erp.dal.dataobject.sale.ErpSaleReturnDO;
import cn.iocoder.foodnexus.module.product.dal.dataobject.spu.ProductSpuDO;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
...@@ -32,6 +36,11 @@ public interface ErpPurchaseReturnMapper extends BaseMapperX<ErpPurchaseReturnDO ...@@ -32,6 +36,11 @@ public interface ErpPurchaseReturnMapper extends BaseMapperX<ErpPurchaseReturnDO
.eqIfPresent(ErpPurchaseReturnDO::getCreator, reqVO.getCreator()) .eqIfPresent(ErpPurchaseReturnDO::getCreator, reqVO.getCreator())
.eqIfPresent(ErpPurchaseReturnDO::getAccountId, reqVO.getAccountId()) .eqIfPresent(ErpPurchaseReturnDO::getAccountId, reqVO.getAccountId())
.likeIfPresent(ErpPurchaseReturnDO::getOrderNo, reqVO.getOrderNo()) .likeIfPresent(ErpPurchaseReturnDO::getOrderNo, reqVO.getOrderNo())
.eqIfPresent(ErpPurchaseReturnDO::getReturnsStatus, reqVO.getReturnsStatus())
.eqIfPresent(ErpPurchaseReturnDO::getCustomerOrderId, reqVO.getCustomerOrderId())
.likeIfPresent(ErpPurchaseReturnDO::getAddressInfo, reqVO.getContactUser())
.likeIfPresent(ErpPurchaseReturnDO::getAddressInfo, reqVO.getContactPhone())
.betweenIfPresent(ErpPurchaseReturnDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ErpPurchaseReturnDO::getId); .orderByDesc(ErpPurchaseReturnDO::getId);
// 退款状态。为什么需要 t. 的原因,是因为联表查询时,需要指定表名,不然会报字段不存在的错误 // 退款状态。为什么需要 t. 的原因,是因为联表查询时,需要指定表名,不然会报字段不存在的错误
if (Objects.equals(reqVO.getRefundStatus(), ErpPurchaseReturnPageReqVO.REFUND_STATUS_NONE)) { if (Objects.equals(reqVO.getRefundStatus(), ErpPurchaseReturnPageReqVO.REFUND_STATUS_NONE)) {
...@@ -51,6 +60,22 @@ public interface ErpPurchaseReturnMapper extends BaseMapperX<ErpPurchaseReturnDO ...@@ -51,6 +60,22 @@ public interface ErpPurchaseReturnMapper extends BaseMapperX<ErpPurchaseReturnDO
.eq(reqVO.getProductId() != null, ErpPurchaseReturnItemDO::getProductId, reqVO.getProductId()) .eq(reqVO.getProductId() != null, ErpPurchaseReturnItemDO::getProductId, reqVO.getProductId())
.groupBy(ErpPurchaseReturnDO::getId); // 避免 1 对多查询,产生相同的 1 .groupBy(ErpPurchaseReturnDO::getId); // 避免 1 对多查询,产生相同的 1
} }
if (CommonUtil.isNotBlank(reqVO.getCustomerName())) {
query.leftJoin(ErpCustomerDO.class, ErpCustomerDO::getId, ErpPurchaseReturnDO::getCustomerId);
query.eq(ErpCustomerDO::getName, reqVO.getCustomerName());
query.groupBy(ErpPurchaseReturnDO::getId);
}
if (CommonUtil.isNotBlank(reqVO.getProductName())) {
query.leftJoin(ErpPurchaseReturnItemDO.class, ErpPurchaseReturnItemDO::getReturnId, ErpPurchaseReturnDO::getId)
.leftJoin(ProductSpuDO.class, ProductSpuDO::getId, ErpPurchaseReturnItemDO::getProductId)
.like(ProductSpuDO::getName, reqVO.getProductName());
query.groupBy(ErpPurchaseReturnDO::getId);
}
if (CommonUtil.isNotEmpty(reqVO.getDeliveryTime())) {
query.leftJoin(ErpSaleReturnDO.class, ErpSaleReturnDO::getId, ErpPurchaseReturnDO::getSaleOrderId);
query.betweenIfPresent(ErpSaleReturnDO::getDeliveryTime, reqVO.getDeliveryTime());
query.groupBy(ErpPurchaseReturnDO::getId);
}
return selectJoinPage(reqVO, ErpPurchaseReturnDO.class, query); return selectJoinPage(reqVO, ErpPurchaseReturnDO.class, query);
} }
......
package cn.iocoder.foodnexus.module.order.service.customeraddress; package cn.iocoder.foodnexus.module.order.service.customeraddress;
import cn.iocoder.foodnexus.framework.common.util.CommonUtil;
import cn.iocoder.foodnexus.module.order.controller.app.customeraddress.vo.CustomerAddressPageReqVO; import cn.iocoder.foodnexus.module.order.controller.app.customeraddress.vo.CustomerAddressPageReqVO;
import cn.iocoder.foodnexus.module.order.controller.app.customeraddress.vo.CustomerAddressSaveReqVO; import cn.iocoder.foodnexus.module.order.controller.app.customeraddress.vo.CustomerAddressSaveReqVO;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.security.core.parameters.P; import org.springframework.security.core.parameters.P;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.util.*; import java.util.*;
...@@ -85,17 +87,37 @@ public class CustomerAddressServiceImpl implements CustomerAddressService { ...@@ -85,17 +87,37 @@ public class CustomerAddressServiceImpl implements CustomerAddressService {
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void deleteCustomerAddress(Long id) { public void deleteCustomerAddress(Long id) {
// 校验存在 // 校验存在
validateCustomerAddressExists(id); CustomerAddressDO customerAddressDO = validateCustomerAddressExists(id);
Boolean isDefault = customerAddressDO.getIsDefault();
// 删除 // 删除
customerAddressMapper.deleteById(id); customerAddressMapper.deleteById(id);
deleteSetDefault(isDefault, CommonUtil.asList(id));
} }
@Override @Override
public void deleteCustomerAddressListByIds(List<Long> ids) { public void deleteCustomerAddressListByIds(List<Long> ids) {
List<CustomerAddressDO> customerAddressDOS = customerAddressMapper.selectByIds(ids);
boolean isDefault = customerAddressDOS.stream().anyMatch(CustomerAddressDO::getIsDefault);
// 删除 // 删除
customerAddressMapper.deleteByIds(ids); customerAddressMapper.deleteByIds(ids);
deleteSetDefault(isDefault, ids);
}
private void deleteSetDefault(boolean isDefault, List<Long> ids) {
if (isDefault) {
Long loginUserId = getLoginUserId();
CustomerAddressDO newAddress = customerAddressMapper.selectOne(Wrappers.<CustomerAddressDO>lambdaQuery()
.eq(CustomerAddressDO::getCreator, loginUserId)
.notIn(CustomerAddressDO::getId, ids)
.orderByDesc(CustomerAddressDO::getId)
.last("LIMIT 1"));
if (CommonUtil.isNotEmpty(newAddress)) {
this.updateAddressDefault(newAddress.getId(), loginUserId);
}
}
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment