From 595b7935a30e84fba1bc3561d05f9d19d3e32e1f Mon Sep 17 00:00:00 2001
From: Administrator <1101184511@qq.com>
Date: 星期三, 23 四月 2025 00:45:48 +0800
Subject: [PATCH] 后台管理页面完成

---
 src/main/java/com/taoke/autopay/service/impl/WxUserOrderCountServiceImpl.java |   99 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 95 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/taoke/autopay/service/impl/WxUserOrderCountServiceImpl.java b/src/main/java/com/taoke/autopay/service/impl/WxUserOrderCountServiceImpl.java
index cfd41e9..4d094cc 100644
--- a/src/main/java/com/taoke/autopay/service/impl/WxUserOrderCountServiceImpl.java
+++ b/src/main/java/com/taoke/autopay/service/impl/WxUserOrderCountServiceImpl.java
@@ -1,11 +1,16 @@
 package com.taoke.autopay.service.impl;
 
+import com.taoke.autopay.dao.KeyOrderMapper;
 import com.taoke.autopay.dao.WxUserOrderCountMapper;
+import com.taoke.autopay.entity.OrderChannelEnum;
 import com.taoke.autopay.entity.OrderCountTypeEnum;
 import com.taoke.autopay.entity.WxUserOrderCount;
 import com.taoke.autopay.exception.WxOrderCountException;
 import com.taoke.autopay.factory.OrderFactory;
+import com.taoke.autopay.service.KeyOrderService;
+import com.taoke.autopay.service.UserSettingService;
 import com.taoke.autopay.service.WxUserOrderCountService;
+import com.taoke.autopay.utils.TimeUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -25,14 +30,42 @@
     @Resource
     private WxUserOrderCountMapper wxUserOrderCountMapper;
 
+    @Resource
+    private UserSettingService userSettingService;
+
+    @Resource
+    private KeyOrderMapper keyOrderMapper;
+
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void addOrderCount(Long uid, OrderCountTypeEnum orderType, String day, int count, Integer maxCount) throws WxOrderCountException {
+    public void addOrderCount(Long uid, OrderCountTypeEnum orderType, OrderChannelEnum orderChannel, String day, int count, Integer maxCount) throws WxOrderCountException {
+        // 缁熻鐢ㄦ埛鎬绘鏁�
+        WxUserOrderCountMapper.DaoQuery daoQuery=new WxUserOrderCountMapper.DaoQuery();
+        daoQuery.uid = uid;
+        if(orderType!=null) {
+            daoQuery.orderType = orderType.getType();
+        }
+        daoQuery.orderChannel = orderChannel;
+        Long totalCount = wxUserOrderCountMapper.sumOrderCount(daoQuery);
+        if(totalCount==null){
+            totalCount = 0L;
+        }
+        if(totalCount>Integer.MAX_VALUE){
+            totalCount = (long)Integer.MAX_VALUE;
+        }
+       int submitCount = userSettingService.getLimitCountByTotalCount(orderType.getType(), (int)totalCount.longValue(), orderChannel);
+        if(maxCount==null){
+            maxCount =Integer.MAX_VALUE;
+        }
+        maxCount = Math.min(submitCount, maxCount);
         WxUserOrderCount info = new WxUserOrderCount();
         info.setDay(day);
-        info.setOrderType(orderType.getType());
+        if(orderType!=null) {
+            info.setOrderType(orderType.getType());
+        }
         info.setUid(uid);
+        info.setOrderChannel(orderChannel);
         info.setId(OrderFactory.createId(info));
         // 鍒ゆ柇鏄惁瀛樺湪
         WxUserOrderCount old = wxUserOrderCountMapper.selectByPrimaryKeyForUpdate(info.getId());
@@ -48,6 +81,9 @@
             update.setUpdateTime(new Date());
             wxUserOrderCountMapper.updateByPrimaryKeySelective(update);
         } else {
+            if (maxCount != null && maxCount < count + 0) {
+                throw new WxOrderCountException(String.format("浠婃棩瓒呰繃鏈�澶ф彁浜ゆ鏁帮紙%s娆★級", maxCount));
+            }
             info.setCreateTime(new Date());
             info.setOrderCount(count);
             wxUserOrderCountMapper.insertSelective(info);
@@ -55,15 +91,70 @@
     }
 
     @Override
-    public WxUserOrderCount get(Long uid, OrderCountTypeEnum orderType, String day) {
+    public void isOrderCountLimit(Long uid, OrderCountTypeEnum orderType,OrderChannelEnum orderChannel, String day, int count, Integer maxCount) throws WxOrderCountException{
+
+        WxUserOrderCountMapper.DaoQuery daoQuery=new WxUserOrderCountMapper.DaoQuery();
+        daoQuery.uid = uid;
+        if(orderType!=null) {
+            daoQuery.orderType = orderType.getType();
+        }
+        daoQuery.orderChannel = orderChannel;
+        Long totalCount = wxUserOrderCountMapper.sumOrderCount(daoQuery);
+        if(totalCount==null){
+            totalCount = 0L;
+        }
+        if(totalCount>Integer.MAX_VALUE){
+            totalCount = (long)Integer.MAX_VALUE;
+        }
+        int submitCount = userSettingService.getLimitCountByTotalCount(orderType.getType(), (int)totalCount.longValue(),orderChannel);
+        if(maxCount==null){
+            maxCount =Integer.MAX_VALUE;
+        }
+        maxCount = Math.min(submitCount, maxCount);
+
+        // 缁熻浠婂ぉ鐨勬彁浜ゆ鏁�
+        KeyOrderMapper.DaoQuery orderQuery=new KeyOrderMapper.DaoQuery();
+        orderQuery.uid = uid;
+        orderQuery.minCreateTime =new Date( TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(System.currentTimeMillis(),"yyyyMMdd"),"yyyyMMdd"));
+        if(orderType!=null&&orderType!=OrderCountTypeEnum.SUBMIT_TOKEN_COUNT){
+            orderQuery.orderType=orderType.getType();
+        }
+       long todayCount = keyOrderMapper.count(orderQuery);
+       if (maxCount != null && maxCount < count + todayCount) {
+        throw new WxOrderCountException(String.format("浠婃棩瓒呰繃鏈�澶ф彁浜ゆ鏁帮紙%s娆★級", maxCount));
+       }
+
+    }
+
+    @Override
+    public WxUserOrderCount get(Long uid, OrderCountTypeEnum orderType,OrderChannelEnum orderChannel, String day) {
         WxUserOrderCountMapper.DaoQuery daoQuery = new WxUserOrderCountMapper.DaoQuery();
         daoQuery.uid = uid;
         daoQuery.day = day;
-        daoQuery.orderType = orderType.getType();
+        if(orderType!=null) {
+            daoQuery.orderType = orderType.getType();
+        }
+        daoQuery.orderChannel = orderChannel;
         List<WxUserOrderCount> list = wxUserOrderCountMapper.list(daoQuery);
         if (list.size() > 0) {
             return list.get(0);
         }
         return null;
     }
+
+    @Override
+    public long sum(Long uid, OrderCountTypeEnum orderType, OrderChannelEnum orderChannel,String day) {
+        WxUserOrderCountMapper.DaoQuery daoQuery=new WxUserOrderCountMapper.DaoQuery();
+        daoQuery.uid = uid;
+        if(orderType!=null) {
+            daoQuery.orderType = orderType.getType();
+        }
+        daoQuery.orderChannel = orderChannel;
+        daoQuery.day = day;
+        Long totalCount = wxUserOrderCountMapper.sumOrderCount(daoQuery);
+        if(totalCount==null){
+            return 0;
+        }
+        return totalCount;
+    }
 }

--
Gitblit v1.8.0