jiangqs
2023-06-14 d7452d46f66a58caaad0442fbcca6953336c18ea
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
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>
 * 活动 服务实现类
 * </p>
 *
 * @author jqs
 * @since 2023-05-25
 */
@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);
            }
        }
    }
}