From 3b56d93c50c2cde9738c8081a08cb657cbe6f087 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期三, 24 七月 2024 13:49:28 +0800
Subject: [PATCH] 7.234

---
 ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysRedPacketRecordController.java |   77 ++++++++++++++++++++++++++++++++------
 1 files changed, 65 insertions(+), 12 deletions(-)

diff --git a/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysRedPacketRecordController.java b/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysRedPacketRecordController.java
index 6864027..fb2a979 100644
--- a/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysRedPacketRecordController.java
+++ b/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysRedPacketRecordController.java
@@ -1,5 +1,6 @@
 package com.stylefeng.guns.modular.system.controller.general;
 
+import cn.hutool.system.UserInfo;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
@@ -9,7 +10,11 @@
 import com.stylefeng.guns.core.shiro.ShiroUser;
 import com.stylefeng.guns.core.util.DateUtil;
 import com.stylefeng.guns.core.util.SinataUtil;
+import com.stylefeng.guns.modular.system.model.TSystemNotice;
+import com.stylefeng.guns.modular.system.model.TUser;
 import com.stylefeng.guns.modular.system.model.UserRedPacketRecord;
+import com.stylefeng.guns.modular.system.service.ITSystemNoticeService;
+import com.stylefeng.guns.modular.system.service.ITUserService;
 import com.stylefeng.guns.modular.system.service.IUserRedPacketRecordService;
 import com.stylefeng.guns.modular.system.service.impl.UserServiceImpl;
 import com.stylefeng.guns.modular.system.util.ResultUtil;
@@ -25,10 +30,7 @@
 import com.stylefeng.guns.modular.system.service.ISysRedPacketRecordService;
 
 import java.math.BigDecimal;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.Map;
-import java.util.Random;
+import java.util.*;
 
 /**
  * 控制器
@@ -89,29 +91,68 @@
     }
 
 
+    @Autowired
+    private ITSystemNoticeService systemNoticeService;
+
+    @Autowired
+    private ITUserService userService;
+
+
     @RequestMapping(value = "/direct")
     @ResponseBody
     public ResultUtil direct(String ids, Integer redId) {
         System.err.println("========="+ids+"======="+redId);
         Double money = 0D;
         SysRedPacketRecord sysRedPacketRecord = sysRedPacketRecordService.selectById(redId);
+        List<UserRedPacketRecord> redPacketActivityId = userRedPacketRecordService.selectList(new EntityWrapper<UserRedPacketRecord>().eq("redPacketActivityId", redId));
+
+        double totalRemainingAmount = redPacketActivityId.stream()
+                .mapToDouble(UserRedPacketRecord::getRemainingAmount)
+                .sum();
+
+        //还可发放的金额
+        double v = sysRedPacketRecord.getTotalMoney().doubleValue() - totalRemainingAmount;
+
         if(null != sysRedPacketRecord){
             Integer type = sysRedPacketRecord.getType();
             if(type == 1){//固定金额
+
                 money = Double.valueOf(String.valueOf(sysRedPacketRecord.getMoney()));
-            }else{//随机金额
+                //计算剩余金额是否够
+
+                if (v-money*ids.split(",").length < 0){
+                    return ResultUtil.error("当前红包剩余金额不足");
+                }
+
+
+
+            }
+
+//            else{//随机金额
+//                Double startMoney = Double.valueOf(String.valueOf(sysRedPacketRecord.getStartMoney()));
+//                Double endMoney = Double.valueOf(String.valueOf(sysRedPacketRecord.getEndMoney()));
+//                int i = new BigDecimal(endMoney).subtract(new BigDecimal(startMoney)).intValue();
+//                Random random = new Random();
+//                int num = random.nextInt(i);
+//                money = new BigDecimal(startMoney).add(new BigDecimal(num)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+//            }
+
+        }
+        String[] split = ids.split(",");
+        for (String s : split) {
+        if(money > 0||sysRedPacketRecord.getType()!=1){
+            if (sysRedPacketRecord.getType()!=1){
                 Double startMoney = Double.valueOf(String.valueOf(sysRedPacketRecord.getStartMoney()));
                 Double endMoney = Double.valueOf(String.valueOf(sysRedPacketRecord.getEndMoney()));
                 int i = new BigDecimal(endMoney).subtract(new BigDecimal(startMoney)).intValue();
                 Random random = new Random();
                 int num = random.nextInt(i);
                 money = new BigDecimal(startMoney).add(new BigDecimal(num)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+                v=v-money;
+                if (v<=0){
+                    return ResultUtil.success("当前红包为随机红包,可能有部分用户无法领取",null,"当前红包为随机红包,可能有部分用户无法领取");
+                }
             }
-
-        }
-        String[] split = ids.split(",");
-        for (String s : split) {
-        if(money > 0){
             //添加临时红包数据
             UserRedPacketRecord userRedPacketRecord = new UserRedPacketRecord();
             userRedPacketRecord.setMoney(money);
@@ -120,12 +161,24 @@
             userRedPacketRecord.setCompanyId(1);
             userRedPacketRecord.setState(1);
             userRedPacketRecord.setOrderId(null);
-            userRedPacketRecord.setOrderType(3);
+            userRedPacketRecord.setRedPacketActivityId(redId);
+//            userRedPacketRecord.setOrderType(3);
             userRedPacketRecord.setUserId(Integer.valueOf(s));
             userRedPacketRecordService.insert(userRedPacketRecord);
+
+            TUser tUser = userService.selectById(Integer.valueOf(s));
+            Integer language = tUser.getLanguage();
+            try {
+                systemNoticeService.addSystemNotice(1, language == 1 ? "您收到一个额度为GHS"+money+"的红包,请查收。" : language == 2 ? "You have received a red envelope with a limit of GHS"+money+". Please check it." : "Vous recevez un paquet rouge avec une limite de ghs+"+money+", veuillez vérifier.", tUser.getId());
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+
+
+
         }
         }
-        return ResultUtil.success();
+        return ResultUtil.success("指派成功",null,"当前红包为随机红包,可能有部分用户无法领取");
     }
 
     @RequestMapping(value = "/user/list")

--
Gitblit v1.7.1