puzhibing
2026-04-29 4c5d99fd2e9c264ebf7cfb532fae430fb6f7f66b
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpActicityServiceImpl.java
@@ -5,18 +5,12 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.api.dto.operation.XpActivityDto;
import com.xiaopeng.api.feignClient.order.XpOrderClient;
import com.xiaopeng.api.model.operation.XpActicityStrategy;
import com.xiaopeng.api.model.operation.XpActicityUser;
import com.xiaopeng.api.model.operation.XpActivity;
import com.xiaopeng.api.model.operation.XpActivityNotice;
import com.xiaopeng.api.model.operation.*;
import com.xiaopeng.api.query.operation.XpActivityPageListQuery;
import com.xiaopeng.common.core.utils.bean.BeanUtils;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.operation.mapper.XpActicityMapper;
import com.xiaopeng.operation.service.IXpActicityService;
import com.xiaopeng.operation.service.IXpActicityStrategyService;
import com.xiaopeng.operation.service.IXpActicityUserService;
import com.xiaopeng.operation.service.IXpActivityNoticeService;
import com.xiaopeng.operation.service.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -49,6 +43,9 @@
    @Resource
    private XpOrderClient xpOrderClient;
    @Resource
    private IXpActicityCouponService xpActicityCouponService;
@@ -92,29 +89,43 @@
    }
    @Override
    @Transactional
    public void save(XpActivityDto dto) {
        XpActivity activity = new XpActivity();
        BeanUtils.copyBeanProp(activity, dto);
        activity.setActicityType(dto.getActivityType());
        activity.setAggregateLimit(dto.getEnableTotalLimit() ? 1 : 0);
        activity.setLimitation(dto.getTotalLimit());
        activity.setCoverImage(dto.getImg());
        activity.setRemarks(dto.getRichText());
        save(activity);
        List<XpActicityStrategy> strategy = dto.getStrategy();
        List<XpActicityUser> activityUser = dto.getActivityUser();
        XpActivityNotice notice = dto.getNotice();
        strategy.forEach(e -> e.setActitcityId(activity.getId().intValue()));
        strategyService.saveBatch(strategy);
        for (XpActicityStrategy xpActicityStrategy : strategy) {
            xpActicityStrategy.setActitcityId(activity.getId().intValue());
            xpActicityStrategy.setDeleted(false);
            strategyService.save(xpActicityStrategy);
            List<Long> couponIds = xpActicityStrategy.getCouponIds();
            for (Long couponId : couponIds) {
                XpActicityCoupon xpActicityCoupon = new XpActicityCoupon();
                xpActicityCoupon.setActicityStrategyId(xpActicityStrategy.getId().longValue());
                xpActicityCoupon.setCouponId(couponId);
                xpActicityCoupon.setActivityId(activity.getId());
                xpActicityCouponService.save(xpActicityCoupon);
            }
        }
        Map<String, XpActicityStrategy> strategyMap = strategy.stream().collect(Collectors.toMap(
                XpActicityStrategy::getName,
                Function.identity()
        ));
        activityUser.forEach(item -> {
            item.setActitcityId(activity.getId().intValue());
            item.setActitcityStrategeId(strategyMap.get(item.getStrategyName()).getId());
        });
        notice.setActivityId(activity.getId());
        userService.saveBatch(activityUser);
        activityNotice.save(notice);
        for (XpActicityUser xpActicityUser : activityUser) {
            xpActicityUser.setActitcityId(activity.getId().intValue());
            xpActicityUser.setActitcityStrategeId(strategyMap.get(xpActicityUser.getStrategyName()).getId());
            userService.save(xpActicityUser);
        }
    }
    @Override
@@ -122,6 +133,11 @@
        XpActivity byId = getById(id);
        XpActivityDto ret = new XpActivityDto();
        BeanUtils.copyBeanProp(ret, byId);
        ret.setActicityType(byId.getActicityType());
        ret.setEnableTotalLimit(byId.getAggregateLimit() == 1);
        ret.setTotalLimit(byId.getLimitation());
        ret.setImg(byId.getCoverImage());
        ret.setRichText(byId.getRemarks());
        ret.setStrategy(strategyService.listByActicityId(id));
        ret.setActivityUser(userService.listByActicityId(id));
        return ret;