From 957a8e8f5a01de49baa837e30492de511bf407e3 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 27 三月 2023 18:10:06 +0800
Subject: [PATCH] 权限配置,基础信息管理

---
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java |  126 ++++++++++++++++++++++++++++++++++++++---
 1 files changed, 115 insertions(+), 11 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..632cd90 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,29 @@
 
 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.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.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -34,6 +42,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 +56,70 @@
         model.addAttribute("id",tAppUser.getId());
         model.addAttribute("nickname",tAppUser.getNickname());
         model.addAttribute("remark",tAppUser.getRemark());
-        model.addAttribute("createTime",tAppUser.getCreateTime());
+        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<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();
+        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());
+
+            TOrder tOrder = orders.get(0);
+            // 最近消费时间
+            model.addAttribute("latelyTime",DateUtil.formatDate(tOrder.getCreateTime()));
+            // 最近消费金额
+            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
@@ -84,6 +151,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