44323
2023-11-27 aa925d851857f50eff0556411366690d9a78a0e5
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
package com.dsh.activity.controller;
 
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.activity.entity.BodySideAppointment;
import com.dsh.activity.entity.IntroduceRewards;
import com.dsh.activity.feignclient.account.AppUserClient;
import com.dsh.activity.feignclient.model.IntrduceOfUserRequest;
import com.dsh.activity.feignclient.model.PurchaseRecordVo;
import com.dsh.activity.feignclient.other.model.Store;
import com.dsh.activity.model.*;
import com.dsh.activity.service.IntroduceRewardsService;
import com.dsh.activity.service.IntroduceUserService;
import io.swagger.annotations.Api;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
 
@Api
@CrossOrigin
@RestController
@RequestMapping("")
public class IntroduceRewardsController {
 
    @Autowired
    private IntroduceRewardsService idrService;
    @Autowired
    private IntroduceUserService introduceUserService;
 
 
    private final SimpleDateFormat mat = new SimpleDateFormat("MM-dd HH:mm");
 
    /**
     * 获取介绍有礼-参与用户记录表
     *
     * @return
     */
    @RequestMapping("/base/introduceUser/listAllUser")
    public List<IntroduceUser> listAllUser(@RequestBody IntroduceUserQuery query) {
        return introduceUserService.listAll(query);
    }
 
    /**
     * 通过id获取介绍有礼
     *
     * @return
     */
    @RequestMapping("/base/introduce/getInfoById")
    public IntroduceRewards getInfoById(@RequestBody Integer id) {
        return idrService.getById(id);
 
    }
 
    /**
     * 获取介绍有礼记录表
     *
     * @return
     */
    @RequestMapping("/base/introduce/listAll")
    public List<IntroduceVO> listAll(@RequestBody IntroduceQuery query) {
        Date date = new Date();
        List<IntroduceVO> introduceVOS = idrService.listAll(query);
        for (IntroduceVO introduceVO : introduceVOS) {
 
            Date startTime = introduceVO.getStartTime();
            Date endTime = introduceVO.getEndTime();
            if (date.after(startTime) && date.before(endTime)) {
                introduceVO.setActivityState(1);
            } else if (date.before(startTime)) {
                introduceVO.setActivityState(2);
            } else if (date.after(endTime)) {
                introduceVO.setActivityState(3);
            }
        }
        return introduceVOS;
    }
 
    /**
     * 增加/修改介绍有礼记录
     *
     * @return
     */
    @RequestMapping("/base/introduce/addIntroduce")
    public Object addIntroduce(@RequestBody IntroduceRewards introduceRewards) {
 
 
        if (introduceRewards.getId() != null) {
            IntroduceRewards byId = idrService.getById(introduceRewards.getId());
            // 判断当前活动有没有开始 如果开始了不能编辑赠送课时数 不能编辑活动开始时间
            Date endTime = byId.getEndTime();
            Date startTime = byId.getStartTime();
            Date local = new Date();
            if (startTime.before(local) && endTime.after(local)) {
                // 证明当前活动已开始
                // 判断有没有修改开始时间
                if (!introduceRewards.getStartTime().equals(byId.getStartTime())) {
                    // 表示不能修改开始时间
                    return 5002;
                }
                if (!introduceRewards.getGiveClass().equals(byId.getGiveClass())) {
                    // 表示不能修改赠送课时数
                    return 5001;
                }
            }
            return idrService.updateById(introduceRewards);
        } else {
            introduceRewards.setInsertTime(new Date());
            return idrService.save(introduceRewards);
        }
    }
 
    /**
     * 上/下架介绍有礼 type = 1上架 type=2下架
     *
     * @return
     */
    @RequestMapping("/base/introduce/changeState")
    public Object changeState(@RequestBody IntroduceChangeStateDTO dto) {
        return idrService.changeState(dto);
    }
 
    @PostMapping("/base/introduce/useOfRewards")
    public List<PurchaseRecordVo> queryAppUsersofIntroduce(@RequestBody IntrduceOfUserRequest request) {
        List<PurchaseRecordVo> recordVos = new ArrayList<>();
        List<IntroduceRewards> list = idrService.list(new QueryWrapper<IntroduceRewards>()
                .ge("startTime", request.getStartTime())
                .lt("endTime", request.getEndTime()));
        if (request.getUserIds().size() > 0 && list.size() > 0) {
            IntroduceRewards introduceRewards = list.get(0);
            request.getUserIds().forEach(userId -> {
                PurchaseRecordVo recordVo = new PurchaseRecordVo();
                recordVo.setPurchaseAmount("+" + introduceRewards.getGiveClass());
                recordVo.setPurchaseType("介绍有礼");
                recordVos.add(recordVo);
            });
        }
        return recordVos;
    }
 
    @PostMapping("/base/introduce/getGiftList")
    @ResponseBody
    public IntroduceRewards getGiftList(@RequestBody String cityCode) {
        List<IntroduceRewards> list = idrService.list(new LambdaQueryWrapper<IntroduceRewards>()
                .eq(IntroduceRewards::getCityCode, cityCode)
                .le(IntroduceRewards::getStartTime, new Date())
                .ge(IntroduceRewards::getEndTime, new Date())
                .orderByDesc(IntroduceRewards::getInsertTime)
                .last("LIMIT 1"));
        if (list.size() > 0) {
            return list.get(0);
        }
        return null;
    }
 
}