luodangjia
2024-12-10 31ce6be2d56798d9509e6d90335999064351f7f3
UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -10,6 +10,8 @@
import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService;
import com.stylefeng.guns.modular.system.model.Driver;
import com.stylefeng.guns.modular.system.model.TActivityGeneralization;
import com.stylefeng.guns.modular.system.model.UserCouponRecord;
import com.stylefeng.guns.modular.system.model.UserInfo;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.*;
@@ -267,7 +269,7 @@
                Map<String, Object> map = new HashMap<>();
                map.put("money", transactionDetails1.getMoney());
                map.put("time", sdf.format(transactionDetails1.getInsertTime()));
                map.put("name", transactionDetails1.getOrderType() == 3 ? "直通车订单取消退款" : transactionDetails1.getOrderType() == 4 ? "小件物流订单取消退款" : "");
                map.put("name", transactionDetails1.getOrderType() == 3 ? "跨城订单取消退款" : transactionDetails1.getOrderType() == 4 ? "小件物流订单取消退款" : "");
                map.put("insertTime", Double.valueOf(transactionDetails1.getInsertTime().getTime() / 1000).intValue());
                list4.add(map);
            }
@@ -1008,6 +1010,8 @@
        }
    }
    @Autowired
    private IUserCouponRecordService userCouponRecordService;
    /**
@@ -1049,6 +1053,50 @@
                    list = orderTransferService.queryCoupon(orderId, uid, pageNum, size);
                    break;
            }
            //将activityType=5的数据进行处理
//            List<Integer> ids = new ArrayList<>();
//            if (list != null && list.size() > 0) {
//                Map<Object, Integer> couponIdMonthlyCount = new HashMap<>(); // 用来统计每个月各couponId的出现次数
//                Date currentDate = new Date(); // 获取当前日期
//                Calendar cal = Calendar.getInstance();
//                cal.setTime(currentDate);
//                int currentMonth = cal.get(Calendar.MONTH) + 1; // 获取当前月份(注意Calendar.MONTH是从0开始的)
//
//                // 首先,统计每个月各couponId的出现次数
//                for (Map<String, Object> map : list) {
//                    if (map.get("activityType").equals(5)) {
//                        for (UserCouponRecord userCouponRecord : userCouponRecordService.selectList(new EntityWrapper<UserCouponRecord>().eq("couponId", map.get("couponId")))) {
//                            Date endTime = userCouponRecord.getEndTime();
//                            Calendar recordCal = Calendar.getInstance();
//                            if (endTime==null){
//                                continue;
//                            }
//                            recordCal.setTime(endTime);
//                            int recordMonth = recordCal.get(Calendar.MONTH) + 1;
//
//                            if (recordMonth == currentMonth) {
//                                Object couponId = map.get("couponId");
//                                couponIdMonthlyCount.put(couponId, couponIdMonthlyCount.getOrDefault(couponId, 0) + 1);
//                            }
//                        }
//                    }
//                }
//
//                // 然后,根据统计结果移除当月数量超过1的couponId对应的记录
//                List<Map<String, Object>> newList = new ArrayList<>();
//                for (Map<String, Object> map : list) {
//                    Object couponId = map.get("couponId");
//                    if (!couponIdMonthlyCount.containsKey(couponId) || couponIdMonthlyCount.get(couponId) <= 1) {
//                        newList.add(map);
//                    }
//                }
//                list.clear();
//                list.addAll(newList);
//            }
            return ResultUtil.success(CouponWarpper.getCouponWarppers(list));
        }catch (Exception e){
            e.printStackTrace();
@@ -1056,6 +1104,69 @@
        }
    }
    @Autowired
    private ITActivityGeneralizationService activityGeneralizationService;
    @ResponseBody
    @PostMapping("/api/taxi/check")
    @ApiOperation(value = "判断是否到到当月限额", tags = {"用户端-出租车", "用户端-专车", "用户端-跨城","用户端-接送机"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "id", name = "id", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil check(Integer id,HttpServletRequest request){
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
                return ResultUtil.tokenErr();
            }
            // 查询当前活动的限制数量
            UserCouponRecord userCouponRecords1 = userCouponRecordService.selectById(id);
            List<UserCouponRecord> userCouponRecords = userCouponRecordService.selectList(new EntityWrapper<UserCouponRecord>().eq("couponId", userCouponRecords1.getCouponId()));
            // 获取活动限制数量
            TActivityGeneralization tActivityGeneralization = activityGeneralizationService.selectById(userCouponRecords.get(0).getCouponActivityId());
            if (tActivityGeneralization == null) {
                throw new RuntimeException("未能找到对应的活动信息");
            }
            int limitQuantity = tActivityGeneralization.getMonthUseCount(); // 假设limitQuantity字段代表限制数量
            // 判断当月的优惠券是否超过限制
            Calendar currentCal = Calendar.getInstance();
            int currentMonth = currentCal.get(Calendar.MONTH) + 1; // 当前月份
            // 统计当月的优惠券使用数量
            int usedThisMonth = 0;
            for (UserCouponRecord record : userCouponRecords) {
                if (record.getEndTime()==null){
                    continue;
                }
                Calendar recordCal = Calendar.getInstance();
                recordCal.setTime(record.getEndTime());
                int recordMonth = recordCal.get(Calendar.MONTH) + 1;
                // 判断endTime是否在当月
                if (recordMonth == currentMonth) {
                    usedThisMonth++;
                }
            }
            // 判断是否超过限制
            if (usedThisMonth >= limitQuantity) {
                return ResultUtil.error("本月使用数量已经超出限制");
                // 这里可以添加更多的逻辑处理,比如抛出异常、记录日志等
            } else {
                return ResultUtil.success();
            }
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }