jiangqs
2023-06-14 d7452d46f66a58caaad0442fbcca6953336c18ea
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -1,10 +1,26 @@
package com.ruoyi.goods.service.impl.activity;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.goods.domain.dto.MgtActivityEditDto;
import com.ruoyi.goods.domain.dto.MgtActivityGoodsEditDto;
import com.ruoyi.goods.domain.pojo.activity.Activity;
import com.ruoyi.goods.domain.pojo.activity.ActivityTotal;
import com.ruoyi.goods.mapper.activity.ActivityMapper;
import com.ruoyi.goods.service.activity.ActivityGoodsService;
import com.ruoyi.goods.service.activity.ActivityService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.goods.service.activity.ActivityTotalService;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
@@ -17,4 +33,99 @@
@Service
public class ActivityServiceImpl extends ServiceImpl<ActivityMapper, Activity> implements ActivityService {
    @Resource
    private ActivityGoodsService activityGoodsService;
    @Resource
    private ActivityTotalService activityTotalService;
    /**
     * @param mgtActivityEditDto
     * @return void
     * @description 平台编辑活动
     * @author jqs
     * @date 2023/6/14 15:12
     */
    @Override
    public void editMgtActivity(MgtActivityEditDto mgtActivityEditDto) {
        Activity activity;
        // 获取当前时间
        Date nowTime = new Date();
        // 如果活动ID不为空,则表示修改活动信息
        if (StringUtils.isNotBlank(mgtActivityEditDto.getActivityId())) {
            // 获取活动信息
            activity = this.getById(mgtActivityEditDto.getActivityId());
            // 如果活动状态不为0,则表示活动正在进行中,不能修改
            if (activity.getActivityStatus() != 0) {
                throw new ServiceException(AppErrorConstant.ACTIVITY_ING_EDIT);
            }
            // 删除活动商品信息
            activityGoodsService.deleteByActivityId(activity.getActivityId());
        } else {
            // 如果活动ID为空,则表示新增活动信息
            activity = new Activity();
            // 生成活动ID
            String activityId = IdUtils.simpleUUID();
            activity.setActivityId(activityId);
            activity.setDelFlag(0);
            activity.setCreateUserId(mgtActivityEditDto.getUserId());
            activity.setCreateTime(nowTime);
            ActivityTotal activityTotal = new ActivityTotal();
            activityTotal.setActivityId(activityId);
            activityTotal.setOrderTotal(0);
            activityTotal.setPersonTotal(0);
            activityTotal.setRefundTotal(0);
            activityTotal.setOrderMoneyTotal(BigDecimal.ZERO);
            activityTotalService.save(activityTotal);
        }
        // 获取活动开始时间和结束时间
        Date activityStartTime = mgtActivityEditDto.getActivityStartTime();
        Date activityEndTime = mgtActivityEditDto.getActivityEndTime();
        // 根据当前时间和活动时间判断活动状态
        if (nowTime.compareTo(activityStartTime) < 0) {
            activity.setActivityStatus(0);
        } else if (nowTime.compareTo(activityStartTime) >= 0 && nowTime.compareTo(activityEndTime) <= 0) {
            activity.setActivityStatus(1);
        } else if (nowTime.compareTo(activityEndTime) > 0) {
            activity.setActivityStatus(2);
        }
        // 设置活动信息
        activity.setActivityName(mgtActivityEditDto.getActivityName());
        activity.setActivityStartTime(activityStartTime);
        activity.setActivityEndTime(activityEndTime);
        activity.setGroupBuyNumber(mgtActivityEditDto.getGroupBuyNumber());
        activity.setPurchaseLimitationFlag(mgtActivityEditDto.getPurchaseLimitationFlag());
        activity.setLimitNumber(mgtActivityEditDto.getLimitNumber());
        activity.setPropagandaPoster(mgtActivityEditDto.getPropagandaPoster());
        activity.setAreaFlag(mgtActivityEditDto.getAreaFlag());
        activity.setDesignatedArea(mgtActivityEditDto.getDesignatedArea());
        activity.setShopFlag(mgtActivityEditDto.getShopFlag());
        activity.setApplicableShop(mgtActivityEditDto.getApplicableShop());
        activity.setUpdateUserId(mgtActivityEditDto.getUserId());
        activity.setUpdateTime(nowTime);
        activity.setRecommendFlag(mgtActivityEditDto.getRecommendFlag());
        this.saveOrUpdate(activity);
        // 获取活动商品信息
        List<MgtActivityGoodsEditDto> mgtActivityGoodsEditDtoList = mgtActivityEditDto.getMgtActivityGoodsEditDtoList();
        // 如果活动商品信息不为空,则保存活动商品信息
        if (!mgtActivityGoodsEditDtoList.isEmpty()) {
            List<ActivityGoods> activityGoodsList = mgtActivityGoodsEditDtoList.stream().map(
                    dto -> {
                        ActivityGoods activityGoods = new ActivityGoods();
                        activityGoods.setDelFlag(0);
                        activityGoods.setGoodsId(dto.getGoodsId());
                        activityGoods.setActivityId(activity.getActivityId());
                        activityGoods.setActivityPrice(dto.getActivityPrice());
                        activityGoods.setActivitySubscription(dto.getActivitySubscription());
                        activityGoods.setActivityNumber(dto.getActivityNumber());
                        activityGoods.setActivityDeadline(activity.getActivityEndTime());
                        activityGoods.setSellOutFlag(0);
                        return activityGoods;
                    }
            ).collect(Collectors.toList());
            if (!activityGoodsList.isEmpty()) {
                activityGoodsService.saveBatch(activityGoodsList);
            }
        }
    }
}