mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-08-14 10:11:53 +08:00
fix:优化拼团与订单集成逻辑
This commit is contained in:
@@ -23,8 +23,8 @@ public class CombinationApiImpl implements CombinationApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getRecordStatus(Long userId, Long orderId) {
|
||||
return activityService.getRecordStatus(userId, orderId);
|
||||
public boolean validateRecordStatusIsSuccess(Long userId, Long orderId) {
|
||||
return activityService.validateRecordStatusIsSuccess(userId, orderId);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package cn.iocoder.yudao.module.promotion.dal.dataobject.combination.combinationactivity;
|
||||
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum;
|
||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
@@ -72,7 +73,9 @@ public class CombinationRecordDO extends BaseDO {
|
||||
*/
|
||||
private String avatar;
|
||||
/**
|
||||
* 开团状态: 正在开团 拼团成功 拼团失败
|
||||
* 开团状态
|
||||
*
|
||||
* 关联 {@link CombinationRecordStatusEnum}
|
||||
*/
|
||||
private Integer status;
|
||||
/**
|
||||
|
@@ -1,9 +1,12 @@
|
||||
package cn.iocoder.yudao.module.promotion.dal.mysql.combination.combinationactivity;
|
||||
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.combinationactivity.CombinationRecordDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 拼团记录 Mapper
|
||||
*
|
||||
@@ -16,4 +19,13 @@ public interface CombinationRecordMapper extends BaseMapperX<CombinationRecordDO
|
||||
return selectOne(CombinationRecordDO::getUserId, userId, CombinationRecordDO::getOrderId, orderId);
|
||||
}
|
||||
|
||||
default List<CombinationRecordDO> selectListByHeadIdAndStatus(Long headId, Integer status) {
|
||||
return selectList(new LambdaQueryWrapperX<CombinationRecordDO>().eq(CombinationRecordDO::getHeadId, headId)
|
||||
.eq(CombinationRecordDO::getStatus, status));
|
||||
}
|
||||
|
||||
default List<CombinationRecordDO> selectListByStatus(Integer status) {
|
||||
return selectList(new LambdaQueryWrapperX<CombinationRecordDO>().eq(CombinationRecordDO::getStatus, status));
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -99,6 +99,7 @@ public interface CombinationActivityService {
|
||||
* @param orderId 订单编号
|
||||
* @param status 状态
|
||||
* @param startTime 开始时间
|
||||
* @return
|
||||
*/
|
||||
void updateRecordStatusAndStartTimeByUserIdAndOrderId(Long userId, Long orderId, Integer status, LocalDateTime startTime);
|
||||
|
||||
@@ -116,5 +117,5 @@ public interface CombinationActivityService {
|
||||
* @param orderId 订单编号
|
||||
* @return 拼团状态
|
||||
*/
|
||||
Integer getRecordStatus(Long userId, Long orderId);
|
||||
boolean validateRecordStatusIsSuccess(Long userId, Long orderId);
|
||||
}
|
||||
|
@@ -24,7 +24,9 @@ import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.combinationa
|
||||
import cn.iocoder.yudao.module.promotion.dal.mysql.combination.combinationactivity.CombinationActivityMapper;
|
||||
import cn.iocoder.yudao.module.promotion.dal.mysql.combination.combinationactivity.CombinationProductMapper;
|
||||
import cn.iocoder.yudao.module.promotion.dal.mysql.combination.combinationactivity.CombinationRecordMapper;
|
||||
import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -217,14 +219,27 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateRecordStatusAndStartTimeByUserIdAndOrderId(Long userId, Long orderId, Integer status, LocalDateTime startTime) {
|
||||
CombinationRecordDO recordDO = validateCombinationRecord(userId, orderId);
|
||||
|
||||
// 更新状态
|
||||
recordDO.setStatus(status);
|
||||
// 更新开始时间
|
||||
recordDO.setStartTime(startTime);
|
||||
recordMapper.updateById(recordDO);
|
||||
|
||||
// 更新拼团参入人数
|
||||
List<CombinationRecordDO> recordDOs = recordMapper.selectListByHeadIdAndStatus(recordDO.getHeadId(), status);
|
||||
if (CollUtil.isNotEmpty(recordDOs)) {
|
||||
recordDOs.forEach(item -> {
|
||||
item.setUserCount(recordDOs.size());
|
||||
// 校验拼团是否满足要求
|
||||
if (recordDOs.size() >= recordDO.getUserSize()) {
|
||||
item.setStatus(CombinationRecordStatusEnum.SUCCESS.getStatus());
|
||||
}
|
||||
});
|
||||
}
|
||||
recordMapper.updateBatch(recordDOs);
|
||||
}
|
||||
|
||||
private CombinationRecordDO validateCombinationRecord(Long userId, Long orderId) {
|
||||
@@ -249,9 +264,18 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getRecordStatus(Long userId, Long orderId) {
|
||||
public boolean validateRecordStatusIsSuccess(Long userId, Long orderId) {
|
||||
CombinationRecordDO recordDO = validateCombinationRecord(userId, orderId);
|
||||
return recordDO.getStatus();
|
||||
return ObjectUtil.equal(recordDO.getStatus(), CombinationRecordStatusEnum.SUCCESS.getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
* APP 端获取开团记录
|
||||
*
|
||||
* @return 开团记录
|
||||
*/
|
||||
public List<CombinationRecordDO> getRecordList() {
|
||||
return recordMapper.selectListByStatus(CombinationRecordStatusEnum.ONGOING.getStatus());
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user