You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
4.2 KiB

package com.example.demo.serviceImpl;
import com.example.demo.mapper.GeneralMapper;
import com.example.demo.service.GeneralService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.*;
import java.util.stream.Collectors;
/**
* @program: GOLD
* @ClassName GeneralServiceImpl
* @description:
* @author: huangqizhen
* @create: 2025−06-22 11:01
* @Version 1.0
**/
@Service
public class GeneralServiceImpl implements GeneralService {
private static final Logger log = LoggerFactory.getLogger(GeneralServiceImpl.class);
@Autowired
private GeneralMapper generalMapper;
@Override
public List<String> getMarket() {
List<String> list = generalMapper.getMarket();
return list;
}
@Override
public List<String> getPlatform() {
List<String> list = generalMapper.getPlatform();
return list;
}
@Override
public List<String> getGoods() {
List<String> list = generalMapper.getGoods();
// 使用 Java 8 的 Stream API 过滤 null 和空字符串
List<String> filteredList = list.stream()
.filter(Objects::nonNull) // 过滤掉 null 值
.filter(str -> !str.trim().isEmpty()) // 过滤掉空字符串和仅包含空白字符的字符串
.collect(Collectors.toList());
return filteredList;
}
@Override
public List<String> getActivity() {
List<String> list = generalMapper.getActivity();
List<String> filteredList = list.stream()
.filter(Objects::nonNull) // 过滤掉 null 值
.filter(str -> !str.trim().isEmpty()) // 过滤掉空字符串和仅包含空白字符的字符串
.collect(Collectors.toList());
return filteredList;
}
/*
获取昨天的日期
*/
@Override
public Date getYesterday() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, -1); //当前天数-1
return getStartOfDay(cal.getTime()); //昨天的00:00:00
}
/*
获取某天的开始时间(00:00:00)
*/
@Override
public Date getStartOfDay(Date date) {
LocalDateTime localDate = date.toInstant()
.atZone(ZoneId.systemDefault()) // 转换为本地时区
.toLocalDateTime()
.with(LocalTime.MIN); // 设置时间为当天 00:00:00
return Date.from(localDate.atZone(ZoneId.systemDefault()).toInstant());
}
/*
转换日期格式为yyyy-MM-dd
*/
@Override
public String formatDate(Date date) {
return date.toInstant()
.atZone(ZoneId.systemDefault())
.format(java.time.format.DateTimeFormatter.ISO_LOCAL_DATE); // 输出格式如 "2025-10-01"
}
/*
获取时间段内的所有日期(包含起始和结束日)
*/
@Override
public List<Date> getAllDatesBetween(Date start, Date end) {
List<Date> dates = new ArrayList<>();
//初始化日历对象
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
while (!tempStart.after(tempEnd)) {
dates.add(tempStart.getTime()); // 将当前日期添加到列表中
tempStart.add(Calendar.DAY_OF_YEAR, 1); // 每次增加一天
}
return dates;
}
/*
获取角色的地区权限列表
*/
@Override
public List<String> getRoleMarket(String account){
try {
String market = generalMapper.getRoleMarket(account);
if (market == null) {
throw new Exception("没有地区权限");
}
List<String> list = Arrays.asList(market.split(","));
return list;
} catch (Exception e) {
// 记录日志
log.error("获取地区权限失败", e);
// 重新抛出异常,或者根据需要返回一个默认值或空列表
throw new RuntimeException("获取地区权限失败", e);
}
}}