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));
|
}
|
}
|