# Conflicts:
#	yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/api/mail/dto/MailSendSingleToUserReqDTO.java
#	yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/mq/message/mail/MailSendMessage.java
#	yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/mq/producer/mail/MailProducer.java
#	yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailSendServiceImpl.java
#	yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/mail/MailSendServiceImplTest.java
This commit is contained in:
YunaiV
2026-01-18 18:15:27 +08:00
42 changed files with 239 additions and 139 deletions

View File

@@ -144,7 +144,7 @@ public class ProductSkuServiceImpl implements ProductSkuService {
@Override
public void createSkuList(Long spuId, List<ProductSkuSaveReqVO> skuCreateReqList) {
List<ProductSkuDO> skus = BeanUtils.toBean(skuCreateReqList, ProductSkuDO.class, sku -> sku.setSpuId(spuId));
List<ProductSkuDO> skus = BeanUtils.toBean(skuCreateReqList, ProductSkuDO.class, sku -> sku.setSpuId(spuId).setSalesCount(0));
productSkuMapper.insertBatch(skus);
}

View File

@@ -109,7 +109,7 @@ public class ProductSpuServiceImpl implements ProductSpuService {
// sku 单价最低的商品的成本价格
spu.setCostPrice(getMinValue(skus, ProductSkuSaveReqVO::getCostPrice));
// skus 库存总数
spu.setStock(getSumValue(skus, ProductSkuSaveReqVO::getStock, Integer::sum));
spu.setStock(getSumValue(skus, ProductSkuSaveReqVO::getStock, Math::addExact));
// 若是 spu 已有状态则不处理
if (spu.getStatus() == null) {
spu.setStatus(ProductSpuStatusEnum.ENABLE.getStatus()); // 默认状态为上架

View File

@@ -14,6 +14,7 @@ public class BrokerageUserCreateReqVO {
private Long userId;
@Schema(description = "推广员编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4587")
@NotNull(message = "推广员编号不能为空")
private Long bindUserId;
}

View File

@@ -265,8 +265,7 @@ public interface TradeOrderConvert {
ProductSpuRespDTO spu, ProductSkuRespDTO sku) {
BrokerageAddReqBO bo = new BrokerageAddReqBO().setBizId(String.valueOf(item.getId())).setSourceUserId(item.getUserId())
.setBasePrice(item.getPayPrice())
.setTitle(StrUtil.format("{}成功购买{}", user.getNickname(), item.getSpuName()))
.setFirstFixedPrice(0).setSecondFixedPrice(0);
.setTitle(StrUtil.format("{}成功购买{}", user.getNickname(), item.getSpuName()));
if (BooleanUtil.isTrue(spu.getSubCommissionType())) {
// 特殊:单独设置的佣金需要乘以购买数量。关联 https://gitee.com/yudaocode/yudao-mall-uniapp/issues/ICY7SJ
bo.setFirstFixedPrice(sku.getFirstBrokeragePrice() * item.getCount())

View File

@@ -65,11 +65,17 @@ public class TradeOrderLogAspect {
public void doAfterReturning(JoinPoint joinPoint, TradeOrderLog orderLog) {
try {
// 1.1 操作用户
Integer userType = getUserType();
Long userId = getUserId();
Integer userType = USER_TYPE.get();
if (ObjectUtil.isNull(userType)) {
userType = getUserType();
}
Long userId = USER_ID.get();
if (ObjectUtil.isNull(userId)) {
userId = getUserId();
}
// 1.2 订单信息
Long orderId = ORDER_ID.get();
if (orderId == null) { // 如果未设置,只有注解,说明不需要记录日志
if (ObjectUtil.isNull(orderId)) { // 如果未设置,只有注解,说明不需要记录日志
return;
}
Integer beforeStatus = BEFORE_STATUS.get();
@@ -136,4 +142,4 @@ public class TradeOrderLogAspect {
EXTS.remove();
}
}
}

View File

@@ -142,7 +142,7 @@ public class BrokerageRecordServiceImpl implements BrokerageRecordService {
*/
int calculatePrice(Integer basePrice, Integer percent, Integer fixedPrice) {
// 1. 优先使用固定佣金
if (fixedPrice != null && fixedPrice > 0) {
if (fixedPrice != null && fixedPrice >= 0) {
return ObjectUtil.defaultIfNull(fixedPrice, 0);
}
// 2. 根据比例计算佣金