登录时增加shopName,logo;增加支付笔数;支付笔数饼图只判断完成的订单,
This commit is contained in:
parent
8d9ba78594
commit
f8f3212bdb
|
|
@ -109,6 +109,8 @@ public class AuthorizationController {
|
||||||
put("user", jwtUserDto);
|
put("user", jwtUserDto);
|
||||||
if (byAccount!= null){
|
if (byAccount!= null){
|
||||||
put("shopId", byAccount.getId());
|
put("shopId", byAccount.getId());
|
||||||
|
put("shopName", byAccount.getShopName());
|
||||||
|
put("logo", byAccount.getLogo());
|
||||||
}
|
}
|
||||||
|
|
||||||
}};
|
}};
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,13 @@ public class TbShopInfoController {
|
||||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PutMapping("/shop")
|
||||||
|
@Log("修改/shop/list")
|
||||||
|
public ResponseEntity<Object> updateShopInfoShopId(@Validated @RequestBody TbShopInfo resources){
|
||||||
|
tbShopInfoService.updateShopId(resources);
|
||||||
|
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||||
|
}
|
||||||
|
|
||||||
@DeleteMapping
|
@DeleteMapping
|
||||||
@Log("删除/shop/list")
|
@Log("删除/shop/list")
|
||||||
@ApiOperation("删除/shop/list")
|
@ApiOperation("删除/shop/list")
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ import javax.persistence.*;
|
||||||
import javax.validation.constraints.*;
|
import javax.validation.constraints.*;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @website https://eladmin.vip
|
* @website https://eladmin.vip
|
||||||
|
|
@ -141,11 +142,11 @@ public class TbShopUser implements Serializable {
|
||||||
|
|
||||||
@Column(name = "`created_at`")
|
@Column(name = "`created_at`")
|
||||||
@ApiModelProperty(value = "createdAt")
|
@ApiModelProperty(value = "createdAt")
|
||||||
private Long createdAt;
|
private Date createdAt;
|
||||||
|
|
||||||
@Column(name = "`updated_at`")
|
@Column(name = "`updated_at`")
|
||||||
@ApiModelProperty(value = "updatedAt")
|
@ApiModelProperty(value = "updatedAt")
|
||||||
private Long updatedAt;
|
private Date updatedAt;
|
||||||
|
|
||||||
@Column(name = "`mini_open_id`")
|
@Column(name = "`mini_open_id`")
|
||||||
@ApiModelProperty(value = "小程序openId")
|
@ApiModelProperty(value = "小程序openId")
|
||||||
|
|
|
||||||
|
|
@ -39,4 +39,16 @@ public interface ShopUserDutyRepository extends JpaRepository<TbShopUserDuty, In
|
||||||
"WHERE detail.shopId = :shopId " +
|
"WHERE detail.shopId = :shopId " +
|
||||||
"AND detail.loginTime BETWEEN :startTime AND :endTime")
|
"AND detail.loginTime BETWEEN :startTime AND :endTime")
|
||||||
Tuple sumByShopIdToday(@Param("shopId") Integer shopId,@Param("startTime") Date startTime,@Param("endTime") Date endTime);
|
Tuple sumByShopIdToday(@Param("shopId") Integer shopId,@Param("startTime") Date startTime,@Param("endTime") Date endTime);
|
||||||
|
|
||||||
|
@Query(value = "SELECT\n" +
|
||||||
|
"\tifnull( sum( order_num ), 0 ) AS amount,\n" +
|
||||||
|
"\ttrade_day as tradeDay\n" +
|
||||||
|
"FROM\n" +
|
||||||
|
"\t`tb_shop_user_duty` \n" +
|
||||||
|
"WHERE\n" +
|
||||||
|
"\tshop_id = :shopId \n" +
|
||||||
|
"\tAND login_time BETWEEN :startTime AND :endTime \n" +
|
||||||
|
"GROUP BY\n" +
|
||||||
|
"\ttrade_day", nativeQuery = true)
|
||||||
|
List<Object[]> sumByDateOrderNum(@Param("shopId")Integer shopId, @Param("startTime") Date startTime,@Param("endTime") Date endTime);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,6 @@ public interface TbOrderInfoRepository extends JpaRepository<TbOrderInfo, Intege
|
||||||
List<TbOrderPayCountVo> queryTbOrderPayCount(@Param("shopId")String shopId);
|
List<TbOrderPayCountVo> queryTbOrderPayCount(@Param("shopId")String shopId);
|
||||||
|
|
||||||
@Query(value = "SELECT COUNT(1) ,pay_type AS payType FROM tb_order_info Where shop_id = :shopId AND " +
|
@Query(value = "SELECT COUNT(1) ,pay_type AS payType FROM tb_order_info Where shop_id = :shopId AND " +
|
||||||
" created_at BETWEEN :startTime AND :endTime GROUP BY pay_type" ,nativeQuery = true)
|
" created_at BETWEEN :startTime AND :endTime AND status='closed' GROUP BY pay_type" ,nativeQuery = true)
|
||||||
List<Object[]> countByShopId(@Param("shopId") String shopId, @Param("startTime") Long startTime, @Param("endTime") Long endTime);
|
List<Object[]> countByShopId(@Param("shopId") String shopId, @Param("startTime") Long startTime, @Param("endTime") Long endTime);
|
||||||
}
|
}
|
||||||
|
|
@ -23,6 +23,7 @@ import org.springframework.data.jpa.repository.Query;
|
||||||
|
|
||||||
import javax.persistence.Tuple;
|
import javax.persistence.Tuple;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @website https://eladmin.vip
|
* @website https://eladmin.vip
|
||||||
|
|
@ -37,4 +38,7 @@ public interface TbShopUserRepository extends JpaRepository<TbShopUser, Integer>
|
||||||
@Query("SELECT count(0) from TbShopUser user where user.shopId = :shopId and user.createdAt BETWEEN :startTime AND :endTime")
|
@Query("SELECT count(0) from TbShopUser user where user.shopId = :shopId and user.createdAt BETWEEN :startTime AND :endTime")
|
||||||
Tuple searchByCountToday(@Param("shopId") String shopId, @Param("startTime") Long startTime, @Param("endTime") Long endTime);
|
Tuple searchByCountToday(@Param("shopId") String shopId, @Param("startTime") Long startTime, @Param("endTime") Long endTime);
|
||||||
|
|
||||||
|
@Query("SELECT count(0) from TbShopUser user where user.shopId = :shopId and user.createdAt BETWEEN :startTime AND :endTime")
|
||||||
|
List<Object[]> CountTodayGroup(@Param("shopId") String shopId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -10,11 +10,9 @@ import cn.ysk.cashier.repository.order.TbOrderInfoRepository;
|
||||||
import cn.ysk.cashier.repository.shop.TbShopUserRepository;
|
import cn.ysk.cashier.repository.shop.TbShopUserRepository;
|
||||||
import cn.ysk.cashier.service.SummaryService;
|
import cn.ysk.cashier.service.SummaryService;
|
||||||
import cn.ysk.cashier.utils.DateUtil;
|
import cn.ysk.cashier.utils.DateUtil;
|
||||||
import cn.ysk.cashier.vo.CountPayTypeVO;
|
import cn.ysk.cashier.vo.*;
|
||||||
import cn.ysk.cashier.vo.SumDateVO;
|
|
||||||
import cn.ysk.cashier.vo.SummaryVO;
|
|
||||||
import cn.ysk.cashier.vo.ProductVO;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.apache.poi.ss.formula.functions.T;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
@ -53,9 +51,49 @@ public class SummaryServiceImpl implements SummaryService {
|
||||||
//用户数
|
//用户数
|
||||||
Tuple count = tbShopUserRepository.searchByCount(shopId.toString());
|
Tuple count = tbShopUserRepository.searchByCount(shopId.toString());
|
||||||
summaryVO.setTotalUser(count.get(0, Long.class));
|
summaryVO.setTotalUser(count.get(0, Long.class));
|
||||||
|
//支付笔数柱形图
|
||||||
|
List<Object[]> objects = shopUserDutyRepository.sumByDateOrderNum(shopId, DateUtil.getDate30DaysAgo(), DateUtil.getDayEnd());
|
||||||
|
List<CountDateVO> countDateList = new ArrayList<>();
|
||||||
|
for (Object[] o :objects) {
|
||||||
|
CountDateVO countDateVO = new CountDateVO();
|
||||||
|
countDateVO.setCount((BigDecimal) o[0]);
|
||||||
|
countDateVO.setTradeDay((String) o[1]);
|
||||||
|
countDateList.add(countDateVO);
|
||||||
|
}
|
||||||
|
//填充日期
|
||||||
|
Map<String, CountDateVO> dataMap = new HashMap<>();
|
||||||
|
for (CountDateVO entry : countDateList) {
|
||||||
|
String tradeDay = entry.getTradeDay();
|
||||||
|
BigDecimal countOrder = entry.getCount();
|
||||||
|
dataMap.put(tradeDay, new CountDateVO(tradeDay, countOrder));
|
||||||
|
}
|
||||||
|
// 获取今天的日期
|
||||||
|
LocalDate today = LocalDate.now();
|
||||||
|
// 定义日期格式
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||||
|
// 转换为字符串
|
||||||
|
List<CountDateVO> countDateLists = new ArrayList<>();
|
||||||
|
for (int i = 0; i < 30; i++) {
|
||||||
|
LocalDate tradeDayLocalDate = today.minusDays(i);
|
||||||
|
String tradeDayString = tradeDayLocalDate.format(formatter);
|
||||||
|
CountDateVO countDateVO;
|
||||||
|
// 检查数据Map中是否存在该日期的数据
|
||||||
|
if (dataMap.containsKey(tradeDayString)) {
|
||||||
|
countDateVO = dataMap.get(tradeDayString);
|
||||||
|
} else {
|
||||||
|
// 如果不存在,则创建新的SumDateVO对象,amount设为0
|
||||||
|
countDateVO = new CountDateVO(tradeDayString, BigDecimal.ZERO);
|
||||||
|
}
|
||||||
|
// 将SumDateVO对象添加到列表中
|
||||||
|
countDateLists.add(countDateVO);
|
||||||
|
}
|
||||||
|
summaryVO.setCountDateList(countDateLists);
|
||||||
|
//用户数折线图
|
||||||
return summaryVO;
|
return summaryVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String,Object> selectSummaryDate(Integer shopId, Integer day) {
|
public Map<String,Object> selectSummaryDate(Integer shopId, Integer day) {
|
||||||
Date startTime = new Date();
|
Date startTime = new Date();
|
||||||
|
|
|
||||||
|
|
@ -243,9 +243,17 @@ public class TbShopInfoServiceImpl implements TbShopInfoService {
|
||||||
TbShopInfo tbShopInfo = tbShopInfoRepository.findById(resources.getId()).orElseGet(TbShopInfo::new);
|
TbShopInfo tbShopInfo = tbShopInfoRepository.findById(resources.getId()).orElseGet(TbShopInfo::new);
|
||||||
ValidationUtil.isNull( tbShopInfo.getId(),"TbShopInfo","id",resources.getId());
|
ValidationUtil.isNull( tbShopInfo.getId(),"TbShopInfo","id",resources.getId());
|
||||||
tbShopInfo.copy(resources);
|
tbShopInfo.copy(resources);
|
||||||
|
tbShopInfo.setUpdatedAt(Instant.now().toEpochMilli());
|
||||||
tbShopInfoRepository.save(tbShopInfo);
|
tbShopInfoRepository.save(tbShopInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateShopId(TbShopInfo resources) {
|
||||||
|
TbShopInfo tbShopInfo = tbShopInfoRepository.findById(resources.getId()).orElseGet(TbShopInfo::new);
|
||||||
|
ValidationUtil.isNull( tbShopInfo.getId(),"TbShopInfo","id",resources.getId());
|
||||||
|
tbShopInfo.copy(resources);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void update(String account) {
|
public void update(String account) {
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,9 @@ public interface TbShopInfoService {
|
||||||
*/
|
*/
|
||||||
void update(TbShopInfo resources);
|
void update(TbShopInfo resources);
|
||||||
|
|
||||||
|
|
||||||
|
void updateShopId(TbShopInfo resources);
|
||||||
|
|
||||||
void update(String account);
|
void update(String account);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
package cn.ysk.cashier.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lyf
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CountDateVO {
|
||||||
|
private String tradeDay;
|
||||||
|
private BigDecimal count;
|
||||||
|
|
||||||
|
public CountDateVO(String tradeDay, BigDecimal count) {
|
||||||
|
this.tradeDay = tradeDay;
|
||||||
|
this.count = count;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CountDateVO() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -30,5 +30,8 @@ public class SummaryVO {
|
||||||
*用户数
|
*用户数
|
||||||
*/
|
*/
|
||||||
private Long totalUser =0L;
|
private Long totalUser =0L;
|
||||||
|
/**
|
||||||
|
* 支付笔数柱形图
|
||||||
|
*/
|
||||||
|
private List<CountDateVO> countDateList;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue