首页相关逻辑,商品表中isShow给予不同含义,创建新用户更改
This commit is contained in:
@@ -13,4 +13,11 @@ public interface SummaryService {
|
||||
SummaryVO selectSummary(Integer shop);
|
||||
|
||||
Map<String,Object> selectSummaryDate(Integer shopId, Integer day);
|
||||
|
||||
Map<String,Object> selectSummaryToday(Integer shopId);
|
||||
|
||||
Map<String,Object> selectSummaryAmount(Integer shopId, Integer day);
|
||||
Map<String,Object> selectSummaryProduct(Integer shopId, Integer day,Integer page);
|
||||
|
||||
Map<String,Object> selectSummaryPayType(Integer shopId, Integer day);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package cn.ysk.cashier.service.impl;
|
||||
|
||||
import cn.ysk.cashier.enums.PayTypeEnum;
|
||||
import cn.ysk.cashier.exception.BadRequestException;
|
||||
import cn.ysk.cashier.repository.ShopUserDutyDetailRepository;
|
||||
import cn.ysk.cashier.repository.ShopUserDutyRepository;
|
||||
import cn.ysk.cashier.repository.mapping.CountPayTypeMapping;
|
||||
@@ -8,6 +10,8 @@ import cn.ysk.cashier.repository.order.TbOrderInfoRepository;
|
||||
import cn.ysk.cashier.repository.shop.TbShopUserRepository;
|
||||
import cn.ysk.cashier.service.SummaryService;
|
||||
import cn.ysk.cashier.utils.DateUtil;
|
||||
import cn.ysk.cashier.vo.CountPayTypeVO;
|
||||
import cn.ysk.cashier.vo.SumDateVO;
|
||||
import cn.ysk.cashier.vo.SummaryVO;
|
||||
import cn.ysk.cashier.vo.ProductVO;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -16,7 +20,10 @@ import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import javax.persistence.Tuple;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -38,17 +45,6 @@ public class SummaryServiceImpl implements SummaryService {
|
||||
Tuple result = shopUserDutyRepository.sumByShopId(shopId);
|
||||
summaryVO.setPaymentsNumber(result.get(0, Long.class) == null?0L : result.get(0, Long.class));
|
||||
summaryVO.setTotalSales(result.get(1, BigDecimal.class) == null? new BigDecimal("0") : result.get(1, BigDecimal.class));
|
||||
// List<Object[]> objects = shopUserDutyDetailRepository.searchByDutyId(shopId);
|
||||
//商品销量排行前五
|
||||
// List<ProductVO> list = new ArrayList<>();
|
||||
// for (Object[] o :objects) {
|
||||
// ProductVO productVO = new ProductVO();
|
||||
// productVO.setProductId((Integer) o[0]);
|
||||
// productVO.setProductName((String) o[1]);
|
||||
// productVO.setProductNum((BigDecimal)o[2]);
|
||||
// list.add(productVO);
|
||||
// }
|
||||
// summaryVO.setProductInfoList(list);
|
||||
if (summaryVO.getPaymentsNumber() == 0){
|
||||
summaryVO.setAverageSales(new BigDecimal("0"));
|
||||
}else {
|
||||
@@ -57,7 +53,6 @@ public class SummaryServiceImpl implements SummaryService {
|
||||
//用户数
|
||||
Tuple count = tbShopUserRepository.searchByCount(shopId.toString());
|
||||
summaryVO.setTotalUser(count.get(0, Long.class));
|
||||
|
||||
return summaryVO;
|
||||
}
|
||||
|
||||
@@ -65,36 +60,174 @@ public class SummaryServiceImpl implements SummaryService {
|
||||
public Map<String,Object> selectSummaryDate(Integer shopId, Integer day) {
|
||||
Date startTime = new Date();
|
||||
Date endTime = new Date();
|
||||
List<Object[]> sumDateMappings = new ArrayList<>();
|
||||
if (day == 7){
|
||||
startTime = DateUtil.getBeginDayOfWeek();
|
||||
endTime = DateUtil.getEndDayOfWeek();
|
||||
startTime = DateUtil.getDate7DaysAgo();
|
||||
endTime = DateUtil.getDayEnd();
|
||||
sumDateMappings=shopUserDutyRepository.sumByDate(shopId,startTime,endTime);
|
||||
}else if (day == 30){
|
||||
startTime = DateUtil.getBeginDayOfMonth();
|
||||
endTime = DateUtil.getEndDayOfMonth();
|
||||
startTime = DateUtil.getDate30DaysAgo();
|
||||
endTime = DateUtil.getDayEnd();
|
||||
sumDateMappings=shopUserDutyRepository.sumByDate(shopId,startTime,endTime);
|
||||
}else if (day == 360){
|
||||
startTime = DateUtil.getBeginDayOfYear();
|
||||
endTime = DateUtil.getDateOneYearAgo();
|
||||
sumDateMappings=shopUserDutyRepository.sumByDate(shopId,DateUtil.getDate30DaysAgo(),DateUtil.getDayEnd());
|
||||
}
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
//根据时间的营业额
|
||||
List<SumDateMapping> sumDateMappings = shopUserDutyRepository.sumByDate(shopId,startTime,endTime);
|
||||
//根据时间商品排行
|
||||
List<Object[]> objects = shopUserDutyDetailRepository.searchByDutyId(shopId,startTime,endTime);
|
||||
// //根据时间商品排行
|
||||
// List<Object[]> objects = shopUserDutyDetailRepository.searchByDutyId(shopId,startTime,endTime);
|
||||
Tuple tuple = shopUserDutyDetailRepository.searchByDutyIdSum(shopId, startTime, endTime);
|
||||
map.put("productCount",tuple.get(0, BigDecimal.class));
|
||||
map.put("productSum",tuple.get(1, BigDecimal.class));
|
||||
//商品销量排行前五
|
||||
List<ProductVO> list = new ArrayList<>();
|
||||
// for (Object[] o :objects) {
|
||||
// ProductVO productVO = new ProductVO();
|
||||
// productVO.setProductId((Integer) o[0]);
|
||||
// productVO.setProductName((String) o[1]);
|
||||
// productVO.setProductNum((BigDecimal)o[2]);
|
||||
// list.add(productVO);
|
||||
// }
|
||||
// list = list.stream()
|
||||
// .sorted(Comparator.comparing(ProductVO::getProductNum).reversed()) // 降序排序
|
||||
// .collect(Collectors.toList());
|
||||
//
|
||||
// map.put("totalProduct",list);
|
||||
//支付类型占比
|
||||
// List<CountPayTypeMapping> countPayTypeMappings = tbOrderInfoRepository.countByShopId(shopId.toString());
|
||||
// map.put("countPayType",countPayTypeMappings);
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String,Object> selectSummaryProduct(Integer shopId, Integer day,Integer currentPage){
|
||||
//根据时间商品排行
|
||||
currentPage = (currentPage - 1) * 5;
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
Date startTime ;
|
||||
Date endTime ;
|
||||
if (day == 7){
|
||||
startTime = DateUtil.getDate7DaysAgo();
|
||||
endTime = DateUtil.getDayEnd();
|
||||
}else if (day == 30){
|
||||
startTime = DateUtil.getDate30DaysAgo();
|
||||
endTime = DateUtil.getDayEnd();
|
||||
}else if (day == 360){
|
||||
startTime = DateUtil.getBeginDayOfYear();
|
||||
endTime = DateUtil.getEndDayOfYear();
|
||||
}else {
|
||||
throw new BadRequestException("日期有误");
|
||||
}
|
||||
List<Object[]> objects = shopUserDutyDetailRepository.searchByDutyId(shopId,startTime,endTime,currentPage);
|
||||
List<ProductVO> list = new ArrayList<>();
|
||||
for (Object[] o :objects) {
|
||||
ProductVO productVO = new ProductVO();
|
||||
productVO.setProductId((Integer) o[0]);
|
||||
productVO.setProductName((String) o[1]);
|
||||
productVO.setProductNum((BigDecimal)o[2]);
|
||||
productVO.setAmount((BigDecimal)o[3]);
|
||||
list.add(productVO);
|
||||
}
|
||||
list = list.stream()
|
||||
.sorted(Comparator.comparing(ProductVO::getProductNum).reversed()) // 降序排序
|
||||
.collect(Collectors.toList());
|
||||
map.put("total",sumDateMappings);
|
||||
//汇总数据
|
||||
Tuple tuple = shopUserDutyDetailRepository.searchByDutyIdSum(shopId, startTime, endTime);
|
||||
map.put("productCount",tuple.get(0, BigDecimal.class));
|
||||
map.put("productSum",tuple.get(1, BigDecimal.class));
|
||||
// List<Object[]> objects1 = shopUserDutyDetailRepository.searchByDayToAmount(shopId, startTime, endTime);
|
||||
map.put("totalProduct",list);
|
||||
//支付类型占比
|
||||
List<CountPayTypeMapping> countPayTypeMappings = tbOrderInfoRepository.countByShopId(shopId.toString());
|
||||
map.put("countPayType",countPayTypeMappings);
|
||||
return map;
|
||||
}
|
||||
@Override
|
||||
public Map<String,Object> selectSummaryAmount(Integer shopId, Integer day){
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
Date startTime ;
|
||||
Date endTime ;
|
||||
if (day == 7){
|
||||
startTime = DateUtil.getDate7DaysAgo();
|
||||
endTime = DateUtil.getDayEnd();
|
||||
}else if (day == 30){
|
||||
startTime = DateUtil.getDate30DaysAgo();
|
||||
endTime = DateUtil.getDayEnd();
|
||||
}else {
|
||||
throw new BadRequestException("日期有误");
|
||||
}
|
||||
|
||||
List<Object[]> objects = shopUserDutyRepository.sumByDate(shopId, startTime, endTime);
|
||||
//根据时间的销量
|
||||
List<SumDateVO> sumDateVOList = new ArrayList<>();
|
||||
for (Object[] o :objects) {
|
||||
SumDateVO sumDateVO = new SumDateVO();
|
||||
sumDateVO.setAmount((BigDecimal) o[0]);
|
||||
sumDateVO.setTradeDay((String) o[1]);
|
||||
sumDateVOList.add(sumDateVO);
|
||||
}
|
||||
//填充日期
|
||||
Map<String, SumDateVO> dataMap = new HashMap<>();
|
||||
for (SumDateVO entry : sumDateVOList) {
|
||||
String tradeDay = entry.getTradeDay();
|
||||
BigDecimal amount = entry.getAmount();
|
||||
dataMap.put(tradeDay, new SumDateVO(tradeDay, amount));
|
||||
}
|
||||
// 获取今天的日期
|
||||
LocalDate today = LocalDate.now();
|
||||
// 定义日期格式
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||
// 转换为字符串
|
||||
List<SumDateVO> sumDateList = new ArrayList<>();
|
||||
for (int i = 0; i < day; i++) {
|
||||
LocalDate tradeDayLocalDate = today.minusDays(i);
|
||||
String tradeDayString = tradeDayLocalDate.format(formatter);
|
||||
SumDateVO sumDateVO;
|
||||
// 检查数据Map中是否存在该日期的数据
|
||||
if (dataMap.containsKey(tradeDayString)) {
|
||||
sumDateVO = dataMap.get(tradeDayString);
|
||||
} else {
|
||||
// 如果不存在,则创建新的SumDateVO对象,amount设为0
|
||||
sumDateVO = new SumDateVO(tradeDayString, BigDecimal.ZERO);
|
||||
}
|
||||
// 将SumDateVO对象添加到列表中
|
||||
sumDateList.add(sumDateVO);
|
||||
}
|
||||
map.put("total",sumDateList);
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> selectSummaryToday(Integer shopId) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
Tuple tuple = shopUserDutyRepository.sumByShopIdToday(shopId, DateUtil.getDayBegin(), DateUtil.getDayEnd());
|
||||
map.put("paymentsNumberToday", tuple.get(0, Long.class) == null?0L : tuple.get(0, Long.class));
|
||||
map.put("totalSalesToday", tuple.get(1, BigDecimal.class) == null? new BigDecimal("0") : tuple.get(1, BigDecimal.class));
|
||||
Tuple tuple1 = tbShopUserRepository.searchByCountToday(shopId.toString(), DateUtil.getTodayStartTimestamp(), DateUtil.getTodayEndTimestamp());
|
||||
map.put("userToday", tuple1.get(0, Long.class));
|
||||
return map;
|
||||
}
|
||||
@Override
|
||||
public Map<String,Object> selectSummaryPayType(Integer shopId, Integer day){
|
||||
Long startTime ;
|
||||
Long endTime ;
|
||||
if (day == 7){
|
||||
startTime = DateUtil.getSevenDaysAgoInMilliseconds();
|
||||
endTime = DateUtil.getTodayEndTimestamp();
|
||||
}else if (day == 30){
|
||||
startTime = DateUtil.getThirtyDaysAgoInMilliseconds();
|
||||
endTime = DateUtil.getTodayEndTimestamp();
|
||||
}else if (day == 360){
|
||||
startTime = DateUtil.getBeginningOfYearInMilliseconds();
|
||||
endTime = DateUtil.getEndOfYearInMilliseconds();
|
||||
}else {
|
||||
throw new BadRequestException("日期有误");
|
||||
}
|
||||
List<Object[]> countPayTypeMappings = tbOrderInfoRepository.countByShopId(shopId.toString(),startTime,endTime);
|
||||
List<CountPayTypeVO> countPayTypeVOList = new ArrayList<>();
|
||||
for (Object[] o :countPayTypeMappings) {
|
||||
CountPayTypeVO countPayTypeVO = new CountPayTypeVO();
|
||||
countPayTypeVO.setCount((BigInteger) o[0]);
|
||||
countPayTypeVO.setPayType(PayTypeEnum.getCodeByName((String) o[1]));
|
||||
countPayTypeVOList.add(countPayTypeVO);
|
||||
}
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("countPayType",countPayTypeVOList);
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ public class TbShopInfoServiceImpl implements TbShopInfoService {
|
||||
}
|
||||
TbShopInfo byAccount = tbShopInfoRepository.findByAccount(resources.getAccount());
|
||||
User byUsername = userRepository.findByUsername(resources.getAccount());
|
||||
if (byAccount != null || byUsername.getId() != null){
|
||||
if (byAccount != null || byUsername != null){
|
||||
throw new BadRequestException("登录名已注册");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user