Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
2f872e6a05
|
|
@ -36,7 +36,7 @@ dubbo:
|
|||
threads: 20
|
||||
name: dubbo
|
||||
serialization: hessian2
|
||||
port: -1
|
||||
port: 10101
|
||||
|
||||
|
||||
seata:
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ dubbo:
|
|||
group: server-test
|
||||
protocol:
|
||||
threads: 20
|
||||
port: -1
|
||||
port: 10102
|
||||
name: dubbo
|
||||
serialization: hessian2
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,9 @@ import com.czg.order.vo.DataSummaryPayTypeVo;
|
|||
import com.czg.order.vo.DataSummaryProductSaleVo;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.utils.AssertUtil;
|
||||
import com.czg.validator.ValidatorUtil;
|
||||
import com.czg.validator.group.DefaultGroup;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
|
@ -36,6 +39,7 @@ public class DataSummaryController {
|
|||
@OperationLog("营业板块-上半部分")
|
||||
//@SaAdminCheckPermission("dataSummary:trade")
|
||||
public CzgResult<ShopOrderStatistic> getTradeData(DataSummaryTradeParam param) {
|
||||
ValidatorUtil.validateEntity(param, DefaultGroup.class);
|
||||
Long shopId = StpKit.USER.getShopId(0L);
|
||||
param.setShopId(shopId);
|
||||
ShopOrderStatistic data = dataSummaryService.getTradeData(param);
|
||||
|
|
@ -64,8 +68,10 @@ public class DataSummaryController {
|
|||
@OperationLog("销售趋势柱状图 左下")
|
||||
//@SaAdminCheckPermission("dataSummary:dateAmount")
|
||||
public CzgResult<DataSummaryDateAmountVo> getDateAmount(@RequestParam Integer day) {
|
||||
AssertUtil.isNull(day, "天数不能为空");
|
||||
Long shopId = StpKit.USER.getShopId(0L);
|
||||
DataSummaryDateAmountVo data = dataSummaryService.getSummaryAmountData(shopId, day);
|
||||
|
||||
return CzgResult.success(data);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,13 +29,13 @@ spring:
|
|||
dubbo:
|
||||
application:
|
||||
name: order-server
|
||||
# qos-port: 22231
|
||||
qos-enable: false
|
||||
qos-port: 22231
|
||||
qos-enable: true
|
||||
registry:
|
||||
address: nacos://121.40.109.122:8848 # Nacos 服务地址
|
||||
group: server-dev
|
||||
protocol:
|
||||
port: -1
|
||||
port: 10201
|
||||
threads: 20
|
||||
name: dubbo
|
||||
serialization: hessian2
|
||||
|
|
|
|||
|
|
@ -30,15 +30,15 @@ spring:
|
|||
dubbo:
|
||||
application:
|
||||
name: order-server
|
||||
# qos-port: 22232
|
||||
qos-enable: false
|
||||
qos-port: 22232
|
||||
qos-enable: true
|
||||
logger: log4j2
|
||||
environment: test
|
||||
registry:
|
||||
address: nacos://121.40.109.122:8848 # Nacos 服务地址
|
||||
group: server-test
|
||||
protocol:
|
||||
port: -1
|
||||
port: 10202
|
||||
threads: 20
|
||||
name: dubbo
|
||||
serialization: hessian2
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ dubbo:
|
|||
address: nacos://121.40.109.122:8848 # Nacos 服务地址
|
||||
group: server-dev
|
||||
protocol:
|
||||
port: -1
|
||||
port: 10301
|
||||
threads: 20
|
||||
name: dubbo
|
||||
serialization: hessian2
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ dubbo:
|
|||
address: nacos://121.40.109.122:8848 # Nacos 服务地址
|
||||
group: server-test
|
||||
protocol:
|
||||
port: -1
|
||||
port: 10302
|
||||
threads: 20
|
||||
name: dubbo
|
||||
serialization: hessian2
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ dubbo:
|
|||
address: nacos://121.40.109.122:8848 # Nacos 服务地址
|
||||
group: server-dev
|
||||
protocol:
|
||||
port: -1
|
||||
port: 10401
|
||||
threads: 20
|
||||
name: dubbo
|
||||
serialization: hessian2
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ dubbo:
|
|||
address: nacos://121.40.109.122:8848 # Nacos 服务地址
|
||||
group: server-test
|
||||
protocol:
|
||||
port: -1
|
||||
port: 10402
|
||||
threads: 20
|
||||
name: dubbo
|
||||
serialization: hessian2
|
||||
|
|
|
|||
|
|
@ -141,11 +141,11 @@ public class ShopOrderStatistic implements Serializable {
|
|||
* 创建时间
|
||||
*/
|
||||
@JSONField(format = "yyyy-MM-dd")
|
||||
private LocalDate createDay = LocalDate.now();
|
||||
private LocalDate createDay;
|
||||
/**
|
||||
* 最近一次统计时间
|
||||
*/
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime updateTime = LocalDateTime.now();
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,29 +1,67 @@
|
|||
package com.czg.order.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author ww
|
||||
*/
|
||||
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum PayEnums {
|
||||
|
||||
|
||||
/**
|
||||
* 主扫
|
||||
*/
|
||||
MAIN_SCAN("main_scan", "主扫"),
|
||||
/**
|
||||
* 被扫
|
||||
*/
|
||||
BACK_SCAN("back_scan", "被扫"),
|
||||
/**
|
||||
* 微信小程序
|
||||
*/
|
||||
WECHAT_MINI("wechat_mini", "微信小程序"),
|
||||
/**
|
||||
* 支付宝小程序
|
||||
*/
|
||||
ALIPAY_MINI("alipay_mini", "支付宝小程序"),
|
||||
/**
|
||||
* 会员支付
|
||||
*/
|
||||
VIP_PAY("vip_pay", "会员支付"),
|
||||
/**
|
||||
* 现金支付
|
||||
*/
|
||||
CASH_PAY("cash_pay", "现金支付"),
|
||||
/**
|
||||
* 挂账支付
|
||||
*/
|
||||
CREDIT_PAY("credit_pay", "挂账支付"),
|
||||
H5_PAY("h5_pay", "h5支付");
|
||||
/**
|
||||
* h5支付
|
||||
*/
|
||||
H5_PAY("h5_pay", "H5支付");
|
||||
|
||||
|
||||
private final String value;
|
||||
private final String msg;
|
||||
|
||||
PayEnums(String value, String msg) {
|
||||
this.value = value;
|
||||
this.msg = msg;
|
||||
|
||||
public static List<String> getValues() {
|
||||
return Arrays.stream(values()).map(PayEnums::getValue).toList();
|
||||
}
|
||||
|
||||
public static String getText(String value) {
|
||||
PayEnums item = Arrays.stream(values()).filter(obj -> value.equals(obj.getValue())).findFirst().orElse(null);
|
||||
if (item != null) {
|
||||
return item.getMsg();
|
||||
}
|
||||
return "未知支付方式";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
package com.czg.order.param;
|
||||
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import com.czg.validator.group.DefaultGroup;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
|
|
@ -21,10 +23,12 @@ public class DataSummaryTradeParam implements Serializable {
|
|||
/**
|
||||
* 开始时间 格式:yyyy-MM-dd
|
||||
*/
|
||||
@NotBlank(message = "开始日期不能为空", groups = DefaultGroup.class)
|
||||
private String beginTime;
|
||||
/**
|
||||
* 结束时间 格式:yyyy-MM-dd
|
||||
*/
|
||||
@NotBlank(message = "结束日期不能为空", groups = DefaultGroup.class)
|
||||
private String endTime;
|
||||
/**
|
||||
* 店铺id
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import lombok.NoArgsConstructor;
|
|||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -34,15 +35,15 @@ public class DataSummaryDateAmountVo implements Serializable {
|
|||
/**
|
||||
* 实收金额
|
||||
*/
|
||||
private Integer actualAmount;
|
||||
private BigDecimal actualAmount = BigDecimal.ZERO;
|
||||
/**
|
||||
* 优惠金额
|
||||
*/
|
||||
private Integer discountAmount;
|
||||
private BigDecimal discountAmount = BigDecimal.ZERO;
|
||||
/**
|
||||
* 订单金额
|
||||
*/
|
||||
private Integer orderAmount;
|
||||
private BigDecimal orderAmount = BigDecimal.ZERO;
|
||||
/**
|
||||
* 日期
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -252,17 +252,19 @@ public class ShopUserServiceImpl extends ServiceImpl<ShopUserMapper, ShopUser> i
|
|||
userInfoService.updateById(userInfo);
|
||||
|
||||
ShopUser shopUser = getOne(new QueryWrapper().eq(ShopUser::getShopId, shopId).eq(ShopUser::getUserId, userId));
|
||||
if (shopUser != null) {
|
||||
if (shopUser == null) {
|
||||
shopUser = new ShopUser();
|
||||
shopUser.setShopId(shopId);
|
||||
shopUser.setUserId(userId);
|
||||
} else if (shopUser.getIsVip() == 1) {
|
||||
throw new ApiNotPrintException("您已加入店铺会员");
|
||||
}
|
||||
|
||||
shopUser = BeanUtil.copyProperties(shopUserAddDTO, ShopUser.class);
|
||||
shopUser.setIsVip(1);
|
||||
shopUser.setCode(generateCode(shopId));
|
||||
shopUser.setJoinTime(DateUtil.date().toLocalDateTime());
|
||||
shopUser.setShopId(shopId);
|
||||
shopUser.setUserId(userId);
|
||||
return save(shopUser);
|
||||
|
||||
return saveOrUpdate(shopUser);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,16 +1,26 @@
|
|||
package com.czg.service.order.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.czg.order.entity.OrderInfo;
|
||||
import com.czg.order.entity.ShopOrderStatistic;
|
||||
import com.czg.order.enums.PayEnums;
|
||||
import com.czg.order.param.DataSummaryProductSaleParam;
|
||||
import com.czg.order.param.DataSummaryTradeParam;
|
||||
import com.czg.order.service.DataSummaryService;
|
||||
import com.czg.order.vo.DataSummaryDateAmountVo;
|
||||
import com.czg.order.vo.DataSummaryPayTypeVo;
|
||||
import com.czg.order.vo.DataSummaryProductSaleVo;
|
||||
import com.czg.service.order.mapper.OrderInfoMapper;
|
||||
import com.czg.service.order.mapper.ShopOrderStatisticMapper;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 数据统计Service实现类
|
||||
*
|
||||
|
|
@ -22,6 +32,8 @@ public class DataSummaryServiceImpl implements DataSummaryService {
|
|||
|
||||
@Resource
|
||||
private ShopOrderStatisticMapper shopOrderStatisticMapper;
|
||||
@Resource
|
||||
private OrderInfoMapper orderInfoMapper;
|
||||
|
||||
@Override
|
||||
public ShopOrderStatistic getTradeData(DataSummaryTradeParam param) {
|
||||
|
|
@ -41,11 +53,73 @@ public class DataSummaryServiceImpl implements DataSummaryService {
|
|||
|
||||
@Override
|
||||
public DataSummaryDateAmountVo getSummaryAmountData(Long shopId, Integer day) {
|
||||
return new DataSummaryDateAmountVo();
|
||||
LocalDate now = LocalDate.now();
|
||||
LocalDate beginDate = now.plusDays(-day);
|
||||
DataSummaryDateAmountVo data = new DataSummaryDateAmountVo();
|
||||
List<DataSummaryDateAmountVo.TotalVo> total = new ArrayList<>();
|
||||
for (int i = 1; i <= day; i++) {
|
||||
String thisDay = beginDate.plusDays(i).format(DatePattern.NORM_DATE_FORMATTER);
|
||||
OrderInfo orderInfo = orderInfoMapper.selectOneByQuery(QueryWrapper.create()
|
||||
.select("ifnull(sum(order_amount),0) as order_amount,ifnull(sum(pay_amount),0) as pay_amount,ifnull(sum(order_amount-pay_amount),0) as discount_amount")
|
||||
.eq(OrderInfo::getShopId, shopId)
|
||||
.eq(OrderInfo::getTradeDay, thisDay)
|
||||
.isNotNull(OrderInfo::getPaidTime)
|
||||
);
|
||||
DataSummaryDateAmountVo.TotalVo totalVo = new DataSummaryDateAmountVo.TotalVo();
|
||||
if (orderInfo != null) {
|
||||
totalVo.setOrderAmount(orderInfo.getOrderAmount());
|
||||
totalVo.setActualAmount(orderInfo.getPayAmount());
|
||||
totalVo.setDiscountAmount(orderInfo.getDiscountAmount());
|
||||
}
|
||||
totalVo.setTradeDay(thisDay);
|
||||
total.add(totalVo);
|
||||
}
|
||||
data.setTotal(total);
|
||||
return data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataSummaryPayTypeVo getSummaryPayTypeData(Long shopId, Integer day) {
|
||||
return new DataSummaryPayTypeVo();
|
||||
LocalDate now = LocalDate.now();
|
||||
LocalDate beginDate = now.plusDays(-day);
|
||||
DataSummaryPayTypeVo data = new DataSummaryPayTypeVo();
|
||||
List<DataSummaryPayTypeVo.CountPayTypeVo> total = new ArrayList<>();
|
||||
List<String> days = new ArrayList<>();
|
||||
for (int i = 1; i <= day; i++) {
|
||||
String thisDay = beginDate.plusDays(i).format(DatePattern.NORM_DATE_FORMATTER);
|
||||
days.add(thisDay);
|
||||
}
|
||||
List<OrderInfo> orderList = orderInfoMapper.selectListByQuery(QueryWrapper.create()
|
||||
.select("pay_type,count(1) as place_num")
|
||||
.eq(OrderInfo::getShopId, shopId)
|
||||
.in(OrderInfo::getTradeDay, days)
|
||||
.isNotNull(OrderInfo::getPaidTime)
|
||||
.groupBy(OrderInfo::getPayType)
|
||||
);
|
||||
|
||||
PayEnums[] pays = PayEnums.values();
|
||||
if (CollUtil.isEmpty(orderList)) {
|
||||
for (PayEnums pay : pays) {
|
||||
DataSummaryPayTypeVo.CountPayTypeVo payTypeVo = new DataSummaryPayTypeVo.CountPayTypeVo();
|
||||
payTypeVo.setPayType(pay.getMsg());
|
||||
payTypeVo.setCount(0);
|
||||
total.add(payTypeVo);
|
||||
}
|
||||
data.setCountPayType(total);
|
||||
return data;
|
||||
}
|
||||
for (PayEnums pay : pays) {
|
||||
OrderInfo orderInfo = orderList.stream().filter(order -> pay.getValue().equals(order.getPayType())).findFirst().orElse(null);
|
||||
DataSummaryPayTypeVo.CountPayTypeVo payTypeVo = new DataSummaryPayTypeVo.CountPayTypeVo();
|
||||
payTypeVo.setPayType(pay.getMsg());
|
||||
payTypeVo.setCount(0);
|
||||
if (orderInfo != null) {
|
||||
payTypeVo.setPayType(PayEnums.getText(orderInfo.getPayType()));
|
||||
payTypeVo.setCount(orderInfo.getPlaceNum());
|
||||
}
|
||||
total.add(payTypeVo);
|
||||
}
|
||||
data.setCountPayType(total);
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@
|
|||
sum(cash_pay_amount) as cash_pay_amount,
|
||||
sum(recharge_amount) as recharge_amount,
|
||||
avg(customer_unit_price) as customer_unit_price,
|
||||
avg(table_turnover_rate) as table_turnover_rate
|
||||
avg(table_turnover_rate) as table_turnover_rate,
|
||||
max(update_time) as update_time
|
||||
from tb_shop_order_statistic
|
||||
where shop_id = #{shopId}
|
||||
<if test="beginTime != null">
|
||||
|
|
|
|||
Loading…
Reference in New Issue