From d96f28993db5d9d4c3f2ac25b9e9a84fa6857dc2 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 31 八月 2023 11:15:13 +0800
Subject: [PATCH] 更新版本
---
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java | 152 ++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 139 insertions(+), 13 deletions(-)
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java
index 63c5f13..d06acb6 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java
@@ -2,21 +2,31 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.util.DateUtil;
+import com.stylefeng.guns.modular.system.controller.resp.TAppUserResp;
import com.stylefeng.guns.modular.system.dao.TCouponMapper;
+import com.stylefeng.guns.modular.system.dao.TOrderMapper;
+import com.stylefeng.guns.modular.system.dao.TUserToCouponMapper;
import com.stylefeng.guns.modular.system.enums.CouponStatusEnum;
+import com.stylefeng.guns.modular.system.enums.OrderStateEnum;
+import com.stylefeng.guns.modular.system.enums.StatusEnum;
import com.stylefeng.guns.modular.system.model.TAppUser;
import com.stylefeng.guns.modular.system.dao.TAppUserMapper;
import com.stylefeng.guns.modular.system.model.TCoupon;
+import com.stylefeng.guns.modular.system.model.TOrder;
+import com.stylefeng.guns.modular.system.model.TUserToCoupon;
import com.stylefeng.guns.modular.system.service.ITAppUserService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.apache.poi.hdf.extractor.TC;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
+import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -34,6 +44,10 @@
private TAppUserMapper tAppUserMapper;
@Autowired
private TCouponMapper tCouponMapper;
+ @Autowired
+ private TOrderMapper tOrderMapper;
+ @Autowired
+ private TUserToCouponMapper tUserToCouponMapper;
@Override
public void detail(Integer tAppUserId, Model model) {
@@ -44,15 +58,90 @@
model.addAttribute("id",tAppUser.getId());
model.addAttribute("nickname",tAppUser.getNickname());
model.addAttribute("remark",tAppUser.getRemark());
- model.addAttribute("createTime",tAppUser.getCreateTime());
+ model.addAttribute("accountBalance",tAppUser.getAccountBalance());
+ model.addAttribute("createTime",DateUtil.formatDate(tAppUser.getCreateTime()));
+ // todo 客户渠道
+ model.addAttribute("customerChannel","");
+
// 消费信息:优惠券数据
- List<TCoupon> tCoupons = tCouponMapper.selectList(new EntityWrapper<TCoupon>().eq("user_id", tAppUserId));
- List<TCoupon> notUsedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.NOT_USED.getCode())).collect(Collectors.toList());
- List<TCoupon> usedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.USED.getCode())).collect(Collectors.toList());
- List<TCoupon> expiredList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.EXPIRED.getCode())).collect(Collectors.toList());
- model.addAttribute("notUsedCount",notUsedList.size());
- model.addAttribute("usedCount",usedList.size());
- model.addAttribute("expiredCount",expiredList.size());
+// List<TCoupon> tCoupons = tCouponMapper.selectList(new EntityWrapper<TCoupon>().eq("user_id", tAppUserId));
+// List<TCoupon> notUsedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.NOT_USED.getCode())).collect(Collectors.toList());
+// List<TCoupon> usedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.USED.getCode())).collect(Collectors.toList());
+// List<TCoupon> expiredList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.EXPIRED.getCode())).collect(Collectors.toList());
+ // 查询全部未删除优惠券
+ List<TCoupon> tCoupons = tCouponMapper.selectList(new EntityWrapper<TCoupon>()
+ .eq("status", true));
+ List<Integer> couponIds = tCoupons.stream().map(TCoupon::getId).collect(Collectors.toList());
+ List<TUserToCoupon> tUserToCoupons;
+ if(CollectionUtils.isEmpty(couponIds)){
+ tUserToCoupons = new ArrayList<>();
+ }else {
+ // 查询当前用户优惠券数量
+ tUserToCoupons = tUserToCouponMapper.selectList(new EntityWrapper<TUserToCoupon>().eq("userId", tAppUser.getId())
+ .in("couponId",couponIds));
+ }
+ int couponTotal = tUserToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
+ int validCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();
+ int expireCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getExpireCount).sum();
+ model.addAttribute("couponSum",couponTotal);
+ model.addAttribute("notUsedCount",validCount);
+ model.addAttribute("usedCount",couponTotal-validCount-expireCount);
+ model.addAttribute("expiredCount",expireCount);
+ // 查询订单数据
+ List<TOrder> orders = tOrderMapper.selectList(new EntityWrapper<TOrder>().eq("userId", tAppUserId).orderBy(true,"createTime",false));
+ if(!CollectionUtils.isEmpty(orders)){
+ // 下单次数
+ model.addAttribute("numberOfOrder",orders.size());
+ // 取消次数
+ List<TOrder> collect = orders.stream().filter(order->Objects.nonNull(order.getState()))
+ .filter(order -> OrderStateEnum.CANCELED.getCode() == order.getState()).collect(Collectors.toList());
+ model.addAttribute("canceledNumber",collect.size());
+
+ // 获取已支付订单
+ List<TOrder> payOrder = orders.stream().filter(order -> order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode())
+ || order.getState().equals(OrderStateEnum.FINISH.getCode())).collect(Collectors.toList());
+ if(CollectionUtils.isEmpty(payOrder)){
+ // 最近消费时间
+ model.addAttribute("latelyTime","");
+ // 最近消费金额
+ model.addAttribute("latelyPrice","");
+ }else {
+ TOrder tOrder = payOrder.get(0);
+ // 最近消费时间
+ model.addAttribute("latelyTime",DateUtil.formatDate(tOrder.getPayTime()));
+ // 最近消费金额
+ model.addAttribute("latelyPrice",tOrder.getPayMoney());
+ }
+
+ // 总消费次数
+ List<TOrder> collect1 = orders.stream().filter(order->Objects.nonNull(order.getState()))
+ .filter(order -> OrderStateEnum.WAIT_EVALUATED.getCode() == order.getState() ||
+ OrderStateEnum.FINISH.getCode() == order.getState()).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(collect1)){
+ model.addAttribute("consumeSum",collect1.size());
+ // 总消费金额
+ collect1.stream().map(TOrder::getPayMoney).reduce(BigDecimal::add)
+ .ifPresent(consumePrice -> model.addAttribute("consumePrice", consumePrice));
+ }else {
+ // 总消费次数
+ model.addAttribute("consumeSum",0);
+ // 总消费金额
+ model.addAttribute("consumePrice", 0);
+ }
+ }else {
+ // 下单次数
+ model.addAttribute("numberOfOrder",0);
+ // 取消次数
+ model.addAttribute("canceledNumber",0);
+ // 最近消费时间
+ model.addAttribute("latelyTime","");
+ // 最近消费金额
+ model.addAttribute("latelyPrice",0);
+ // 总消费次数
+ model.addAttribute("consumeSum",0);
+ // 总消费金额
+ model.addAttribute("consumePrice", 0);
+ }
}
@Override
@@ -73,8 +162,8 @@
// 开始,结束时间
if(StringUtils.hasLength(createTime)){
String[] split = createTime.split(" - ");
- Date startTime = DateUtil.getDate_str4(split[0]);
- Date endTime = DateUtil.getDate_str4(split[1]);
+ Date startTime = DateUtil.getDate_str3(split[0]+" 00:00:00");
+ Date endTime = DateUtil.getDate_str3(split[1]+" 23:59:59");
wrapper.between("createtime",startTime,endTime);
}
// if(Objects.nonNull(startTime) && Objects.nonNull(endTime)){
@@ -84,6 +173,43 @@
if(Objects.nonNull(status)){
wrapper.eq("status",status);
}
+ wrapper.ne("status", StatusEnum.DELETE.getCode());
return wrapper;
}
+
+ @Override
+ public List<TAppUserResp> getTAppUserResp(List<TAppUser> tAppUsers) {
+ List<TAppUserResp> tAppUserRespList = new ArrayList<>(tAppUsers.size());
+ for (TAppUser tAppUser : tAppUsers) {
+ TAppUserResp tAppUserResp = new TAppUserResp();
+ BeanUtils.copyProperties(tAppUser,tAppUserResp);
+
+ // 查询当前用户优惠券数量
+ List<TUserToCoupon> tUserToCoupons = tUserToCouponMapper.selectList(new EntityWrapper<TUserToCoupon>().eq("userId", tAppUser.getId()));
+
+ int couponTotal = tUserToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
+ int validCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();
+
+// List<TCoupon> tCoupons = tCouponService.selectList(new EntityWrapper<TCoupon>().eq("user_id", tAppUser.getId()));
+// List<TCoupon> notUsedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.NOT_USED.getCode())).collect(Collectors.toList());
+ tAppUserResp.setCouponSum(couponTotal);
+ tAppUserResp.setNotUsedCount(validCount);
+ List<TOrder> orders = tOrderMapper.selectList(new EntityWrapper<TOrder>().eq("userId", tAppUser.getId()).orderBy(true,"createTime",false));
+ if(!CollectionUtils.isEmpty(orders)){
+ // 最后一次消费时间
+ tAppUserResp.setLastConsumptionTime(orders.get(0).getCreateTime());
+ List<TOrder> collect1 = orders.stream().filter(order->Objects.nonNull(order.getState()))
+ .filter(order -> OrderStateEnum.WAIT_EVALUATED.getCode() == order.getState() ||
+ OrderStateEnum.FINISH.getCode() == order.getState()).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(collect1)) {
+ tAppUserResp.setConsumeSum(collect1.size());
+ // 总消费金额
+ collect1.stream().map(TOrder::getPayMoney).reduce(BigDecimal::add)
+ .ifPresent(tAppUserResp::setConsumePrice);
+ }
+ }
+ tAppUserRespList.add(tAppUserResp);
+ }
+ return tAppUserRespList;
+ }
}
--
Gitblit v1.7.1