zjh
2025-04-18 e834a97738f65af115daae14116923e37aa3d2f8
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
package com.ltkj.web.controller.mall;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
 
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ltkj.common.utils.DateUtils;
import com.ltkj.system.service.ISysConfigService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.ltkj.common.annotation.Log;
import com.ltkj.common.core.controller.BaseController;
import com.ltkj.common.core.domain.AjaxResult;
import com.ltkj.common.enums.BusinessType;
import com.ltkj.mall.domain.MallTimeConfig;
import com.ltkj.mall.service.IMallTimeConfigService;
import com.ltkj.common.utils.poi.ExcelUtil;
import com.ltkj.common.core.page.TableDataInfo;
 
/**
 * 预约时间Controller
 *
 * @author ltkj_赵佳豪&李格
 * @date 2023-07-18
 */
@RestController
@RequestMapping("/mall/timeConfig")
public class MallTimeConfigController extends BaseController {
    @Autowired
    private IMallTimeConfigService mallTimeConfigService;
 
    @Autowired
    private ISysConfigService configService;
 
//    /**
//     * 小程序查询预约时间近几天
//     */
//    @GetMapping("/listByDay")
//    public AjaxResult listByDay() {
//        String wx_yy_days = configService.selectConfigByKey("wx_yy_days");
//        int day = Integer.parseInt(wx_yy_days);
//
//        LambdaQueryWrapper<MallTimeConfig> wq = new LambdaQueryWrapper<>();
//        wq.orderByDesc(MallTimeConfig::getTime);
//        wq.gt(MallTimeConfig::getTime, new Date());
//        List<MallTimeConfig> list = mallTimeConfigService.list(wq);
//        if (list == null) {
//            return AjaxResult.success(list);
//        }
//        if (list.size() < day) {
//            return AjaxResult.success(list);
//        }
//        final List<MallTimeConfig> mallTimeConfigs = list.subList(0, day);
//        //final List<MallTimeConfig> collect = list.stream().sorted().limit(day).collect(Collectors.toList());
//        return AjaxResult.success(mallTimeConfigs);
//    }
 
 
    /**
     * 查询预约时间是否存在
     */
    @GetMapping("/isExist")
    public AjaxResult isExist(@RequestParam String time) {
        if (time != null) {
            LambdaQueryWrapper<MallTimeConfig> wq = new LambdaQueryWrapper<>();
            wq.eq(MallTimeConfig::getTime, time);
            List<MallTimeConfig> list = mallTimeConfigService.list(wq);
            if (list != null && list.size() > 0) {
                return AjaxResult.success(1);
            } else {
                return AjaxResult.success(0);
            }
        }
        return AjaxResult.error("出错了,请联系工作人员!");
    }
 
    /**
     * 查询预约时间列表
     */
    //@PreAuthorize("@ss.hasPermi('mall:timeConfig:list')")
    @GetMapping("/list")
    public TableDataInfo list(MallTimeConfig mallTimeConfig) {
        startPage();
        List<MallTimeConfig> list = mallTimeConfigService.selectMallTimeConfigList(mallTimeConfig);
        return getDataTable(list);
    }
 
    /**
     * 导出预约时间列表
     */
    //@PreAuthorize("@ss.hasPermi('mall:timeConfig:export')")
    @Log(title = "预约时间", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, MallTimeConfig mallTimeConfig) {
        List<MallTimeConfig> list = mallTimeConfigService.selectMallTimeConfigList(mallTimeConfig);
        ExcelUtil<MallTimeConfig> util = new ExcelUtil<MallTimeConfig>(MallTimeConfig.class);
        util.exportExcel(response, list, "预约时间数据");
    }
 
    /**
     * 获取预约时间详细信息
     */
    //@PreAuthorize("@ss.hasPermi('mall:timeConfig:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id) {
        return success(mallTimeConfigService.selectMallTimeConfigById(id));
    }
 
 
    /**
     * 返回当前表中最大时间
     */
    @GetMapping("/returnLastTime")
    public AjaxResult returnLastTime() {
        final MallTimeConfig one = mallTimeConfigService.getOne(new LambdaQueryWrapper<MallTimeConfig>().orderByDesc(MallTimeConfig::getTime).last("limit 1"));
        //A.after(B)  A>B返回True
        if (one != null && one.getTime().after(new Date())) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(one.getTime());
            calendar.add(Calendar.DATE, 1);
            Date nextDate = calendar.getTime();
            return AjaxResult.success(nextDate);
        //A.before(B)  A<B返回True
        } else if (one != null && one.getTime().before(new Date())) {
            //如果表里最大时间 小于今天
            GregorianCalendar ca0 = new GregorianCalendar();
            GregorianCalendar ca1 = new GregorianCalendar();
            ca0.setTime(one.getTime());
            ca1.setTime(new Date());
            //获取ca0和ca1的年,月,日,对比是否相同
            if (ca0.get(GregorianCalendar.YEAR) == ca1.get(GregorianCalendar.YEAR) &&
                    ca0.get(GregorianCalendar.MONTH) == ca1.get(GregorianCalendar.MONTH)&&
                    ca0.get(GregorianCalendar.DAY_OF_MONTH) == ca1.get(GregorianCalendar.DAY_OF_MONTH)) {
                //判断是不是今天  是今天返回+1
                Calendar calendar = Calendar.getInstance();
                Date currentDate = new Date();
                calendar.setTime(currentDate);
                calendar.add(Calendar.DATE, 1);
                Date nextDate = calendar.getTime();
                return AjaxResult.success(nextDate);
            } else {
                //不是今天 返回今天
                Calendar calendar = Calendar.getInstance();
                Date currentDate = new Date();
                calendar.setTime(currentDate);
                //当天不能挂当天就把这段代码打开
//            calendar.add(Calendar.DATE, 1);
                Date nextDate = calendar.getTime();
                return AjaxResult.success(nextDate);
            }
        } else {
            Calendar calendar = Calendar.getInstance();
            Date currentDate = new Date();
            calendar.setTime(currentDate);
            calendar.add(Calendar.DATE, 1);
            Date nextDate = calendar.getTime();
            return AjaxResult.success(nextDate);
        }
    }
 
 
    /**
     * 新增预约时间
     */
    //@PreAuthorize("@ss.hasPermi('mall:timeConfig:add')")
    @Log(title = "预约时间", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody MallTimeConfig mallTimeConfig) {
        try {
            List<String> dates = findEveryDay(mallTimeConfig.getStartTime(), mallTimeConfig.getEndTime());
            for (String date : dates) {
                mallTimeConfig.setTime(DateUtils.parseDate(date));
                mallTimeConfigService.insertMallTimeConfig(mallTimeConfig);
            }
            return AjaxResult.success("添加成功");
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return AjaxResult.error("添加失败!");
    }
 
    /**
     * 传入两个时间范围,返回这两个时间范围内的所有日期,并保存在一个集合中
     *
     * @param beginTime
     * @param endTime
     */
    public static List<String> findEveryDay(String beginTime, String endTime)
            throws ParseException {
        //1.创建一个放所有日期的集合
        List<String> dates = new ArrayList();
        //2.创建时间解析对象规定解析格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 
        //3.将传入的时间解析成Date类型,相当于格式化
        Date dBegin = sdf.parse(beginTime);
        Date dEnd = sdf.parse(endTime);
        //4.将格式化后的第一天添加进集合
        dates.add(sdf.format(dBegin));
        //5.使用本地的时区和区域获取日历
        Calendar calBegin = Calendar.getInstance();
        //6.传入起始时间将此日历设置为起始日历
        calBegin.setTime(dBegin);
        //8.判断结束日期是否在起始日历的日期之后
        while (dEnd.after(calBegin.getTime())) {
            // 9.根据日历的规则:月份中的每一天,为起始日历加一天
            calBegin.add(Calendar.DAY_OF_MONTH, 1);
            //10.得到的每一天就添加进集合
            dates.add(sdf.format(calBegin.getTime()));
            //11.如果当前的起始日历超过结束日期后,就结束循环
        }
        return dates;
    }
 
    /**
     * 修改预约时间
     */
    @PreAuthorize("@ss.hasPermi('mall:timeConfig:edit')")
    @Log(title = "预约时间", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody MallTimeConfig mallTimeConfig) {
        return toAjax(mallTimeConfigService.updateMallTimeConfig(mallTimeConfig));
    }
 
    /**
     * 删除预约时间
     */
    @PreAuthorize("@ss.hasPermi('mall:timeConfig:remove')")
    @Log(title = "预约时间", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids) {
        return toAjax(mallTimeConfigService.deleteMallTimeConfigByIds(ids));
    }
}