登录时增加shopName,logo;增加支付笔数;支付笔数饼图只判断完成的订单,

This commit is contained in:
liuyingfang 2024-03-14 09:44:22 +08:00
parent 8d9ba78594
commit f8f3212bdb
11 changed files with 110 additions and 9 deletions

View File

@ -108,7 +108,9 @@ public class AuthorizationController {
put("token", properties.getTokenStartWith() + token);
put("user", jwtUserDto);
if (byAccount!= null){
put("shopId",byAccount.getId());
put("shopId", byAccount.getId());
put("shopName", byAccount.getShopName());
put("logo", byAccount.getLogo());
}
}};

View File

@ -99,6 +99,13 @@ public class TbShopInfoController {
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
@Log("删除/shop/list")
@ApiOperation("删除/shop/list")

View File

@ -23,6 +23,7 @@ import javax.persistence.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Date;
/**
* @website https://eladmin.vip
@ -141,11 +142,11 @@ public class TbShopUser implements Serializable {
@Column(name = "`created_at`")
@ApiModelProperty(value = "createdAt")
private Long createdAt;
private Date createdAt;
@Column(name = "`updated_at`")
@ApiModelProperty(value = "updatedAt")
private Long updatedAt;
private Date updatedAt;
@Column(name = "`mini_open_id`")
@ApiModelProperty(value = "小程序openId")

View File

@ -39,4 +39,16 @@ public interface ShopUserDutyRepository extends JpaRepository<TbShopUserDuty, In
"WHERE detail.shopId = :shopId " +
"AND detail.loginTime BETWEEN :startTime AND :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);
}

View File

@ -41,6 +41,6 @@ public interface TbOrderInfoRepository extends JpaRepository<TbOrderInfo, Intege
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 " +
" 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);
}

View File

@ -23,6 +23,7 @@ import org.springframework.data.jpa.repository.Query;
import javax.persistence.Tuple;
import java.util.Date;
import java.util.List;
/**
* @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")
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);
}

View File

@ -10,11 +10,9 @@ 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 cn.ysk.cashier.vo.*;
import lombok.RequiredArgsConstructor;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -53,9 +51,49 @@ public class SummaryServiceImpl implements SummaryService {
//用户数
Tuple count = tbShopUserRepository.searchByCount(shopId.toString());
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;
}
@Override
public Map<String,Object> selectSummaryDate(Integer shopId, Integer day) {
Date startTime = new Date();

View File

@ -243,9 +243,17 @@ public class TbShopInfoServiceImpl implements TbShopInfoService {
TbShopInfo tbShopInfo = tbShopInfoRepository.findById(resources.getId()).orElseGet(TbShopInfo::new);
ValidationUtil.isNull( tbShopInfo.getId(),"TbShopInfo","id",resources.getId());
tbShopInfo.copy(resources);
tbShopInfo.setUpdatedAt(Instant.now().toEpochMilli());
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
@Transactional(rollbackFor = Exception.class)
public void update(String account) {

View File

@ -70,6 +70,9 @@ public interface TbShopInfoService {
*/
void update(TbShopInfo resources);
void updateShopId(TbShopInfo resources);
void update(String account);
/**

View File

@ -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() {
}
}

View File

@ -30,5 +30,8 @@ public class SummaryVO {
*用户数
*/
private Long totalUser =0L;
/**
* 支付笔数柱形图
*/
private List<CountDateVO> countDateList;
}