| | |
| | | import cc.mrbird.febs.mall.dto.OpenPrice; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.*; |
| | | import cc.mrbird.febs.mall.service.AsyncCjService; |
| | | import cc.mrbird.febs.mall.service.CJService; |
| | | import cc.mrbird.febs.mall.service.IApiMallMemberService; |
| | | import cc.mrbird.febs.mall.vo.ApiKjInfoVo; |
| | |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.RandomUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSON; |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.text.ParseException; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Slf4j |
| | | @Service |
| | |
| | | private final CjInfoMapper cjInfoMapper; |
| | | private final CjItemMapper cjItemMapper; |
| | | private final IApiMallMemberService mallMemberService; |
| | | private final AsyncCjService asyncCjService; |
| | | |
| | | @Override |
| | | public FebsResponse kjRecord(KjRecordDto kjRecordDto) { |
| | | IPage<ApiKjRecordVo> page = new Page<>(kjRecordDto.getPageNum(), kjRecordDto.getPageSize()); |
| | | IPage<ApiKjRecordVo> pages = kjRecordMapper.selectListInPage(page, kjRecordDto); |
| | | List<ApiKjRecordVo> records = pages.getRecords(); |
| | | if(CollUtil.isNotEmpty(records)){ |
| | | for(ApiKjRecordVo apiKjRecordVo : records){ |
| | | apiKjRecordVo.setKjNum(this.getKjNo(apiKjRecordVo.getKjNum())); |
| | | } |
| | | } |
| | | return new FebsResponse().success().data(pages); |
| | | } |
| | | |
| | |
| | | if (StrUtil.isNotBlank(recordNoExit)) { |
| | | redisUtils.del(AppContants.KJ_RECORD_NO); |
| | | } |
| | | redisUtils.set(AppContants.KJ_RECORD_NO, kjNo, 600); |
| | | redisUtils.set(AppContants.KJ_RECORD_NO, kjNo, AppContants.KJ_RECORD_TIME_INTERVAL*60); |
| | | //开奖时间 |
| | | if (StrUtil.isNotBlank(redisUtils.getString(AppContants.KJ_RECORD_TIME))) { |
| | | redisUtils.del(AppContants.KJ_RECORD_TIME); |
| | | } |
| | | redisUtils.set(AppContants.KJ_RECORD_TIME, kjRecord.getCreatedTime(), 600); |
| | | redisUtils.set(AppContants.KJ_RECORD_TIME, kjRecord.getCreatedTime(), AppContants.KJ_RECORD_TIME_INTERVAL*60); |
| | | |
| | | agentProducer.sendChouJiangDelayMsg(kjNo, 10 * 60 * 1000L); |
| | | agentProducer.sendNoTimeDelayMsg(kjNo, 95 * 6 * 1000L);//提前三十秒停止下注 |
| | | agentProducer.sendChouJiangDelayMsg(kjNo, AppContants.KJ_RECORD_TIME_INTERVAL * 60 * 1000L); |
| | | agentProducer.sendNoTimeDelayMsg(kjNo, (AppContants.KJ_RECORD_TIME_INTERVAL-1) * 60 * 1000L);//提一分钟停止下注 |
| | | |
| | | //todo 测试下注 |
| | | ApiCreateDto apiCreateDto = new ApiCreateDto(); |
| | | List<ApiCreateItemDto> items = new ArrayList<>(); |
| | | for(int i = 1;i<= 43;i++){ |
| | | ApiCreateItemDto apiCreateItemDto6 = new ApiCreateItemDto(); |
| | | apiCreateItemDto6.setId(Long.parseLong(String.valueOf(i))); |
| | | apiCreateItemDto6.setTzAmount(new BigDecimal("10")); |
| | | items.add(apiCreateItemDto6); |
| | | } |
| | | apiCreateDto.setItems(items); |
| | | asyncCjService.create(apiCreateDto,1L); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse kjInfo() { |
| | | ApiKjInfoVo apiKjInfoVo = new ApiKjInfoVo(); |
| | | String kjNoOld = redisUtils.getString(AppContants.KJ_RECORD_NO_OLD); |
| | | String kjNumOld = redisUtils.getString(AppContants.KJ_RECORD_NUM_OLD); |
| | | String kjNumOld = this.getKjNo(redisUtils.getString(AppContants.KJ_RECORD_NUM_OLD)); |
| | | if(StrUtil.isBlank(kjNoOld)){ |
| | | KjRecord kjRecordOld = kjRecordMapper.selectOneByLimitZero(1,1); |
| | | if(ObjectUtil.isNotEmpty(kjRecordOld)){ |
| | | apiKjInfoVo.setKjNoOld(kjRecordOld.getKjNo()); |
| | | apiKjInfoVo.setKjNumOld(kjRecordOld.getKjNum()); |
| | | apiKjInfoVo.setKjNumOld(this.getKjNo(kjRecordOld.getKjNum())); |
| | | } |
| | | }else{ |
| | | apiKjInfoVo.setKjNoOld(kjNoOld); |
| | |
| | | DataDictionaryEnum.TIME_INTERVAL.getCode() |
| | | ); |
| | | apiKjInfoVo.setDjs(Integer.parseInt(timeIntervalDic.getValue())); |
| | | |
| | | // 获取当前时间 |
| | | LocalDateTime currentTime = LocalDateTime.now(); |
| | | // 定义时间格式 |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
| | | apiKjInfoVo.setSystemTime(currentTime.format(formatter)); |
| | | return new FebsResponse().success().data(apiKjInfoVo); |
| | | } |
| | | |
| | |
| | | if(ObjectUtil.isEmpty(kjRecord)){ |
| | | return; |
| | | } |
| | | int randomInt = RandomUtil.randomInt(1, 25); |
| | | DataDictionaryCustom openPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.OPEN_PRICE.getType(), |
| | | DataDictionaryEnum.OPEN_PRICE.getCode() |
| | | ); |
| | | int randomInt = RandomUtil.randomInt(1, 27); |
| | | if(StrUtil.isNotEmpty(openPriceDic.getValue())){ |
| | | randomInt = Integer.parseInt(openPriceDic.getValue()); |
| | | openPriceDic.setValue(""); |
| | | dataDictionaryCustomMapper.updateById(openPriceDic); |
| | | } |
| | | kjRecord.setKjNum( String.valueOf(randomInt)); |
| | | kjRecordMapper.updateById(kjRecord); |
| | | |
| | |
| | | if (StrUtil.isNotBlank(recordNoExit)) { |
| | | redisUtils.del(AppContants.KJ_RECORD_NO_OLD); |
| | | } |
| | | redisUtils.set(AppContants.KJ_RECORD_NO_OLD, kjNo, 600); |
| | | redisUtils.set(AppContants.KJ_RECORD_NO_OLD, kjNo, AppContants.KJ_RECORD_TIME_INTERVAL * 60); |
| | | |
| | | //开奖号码 |
| | | if (StrUtil.isNotBlank(redisUtils.getString(AppContants.KJ_RECORD_NUM_OLD))) { |
| | | redisUtils.del(AppContants.KJ_RECORD_NUM_OLD); |
| | | } |
| | | redisUtils.set(AppContants.KJ_RECORD_NUM_OLD, randomInt, 600); |
| | | redisUtils.set(AppContants.KJ_RECORD_NUM_OLD, randomInt, AppContants.KJ_RECORD_TIME_INTERVAL * 60); |
| | | OpenPrice openPrice = new OpenPrice(); |
| | | openPrice.setKjNo(kjNo); |
| | | openPrice.setKjNum(String.valueOf(randomInt)); |
| | |
| | | |
| | | @Override |
| | | public FebsResponse tzInfo() { |
| | | ArrayList<ApiTzInfoVo> objects = new ArrayList<>(); |
| | | |
| | | List<TzInfo> tzInfos = tzInfoMapper.selectList(null); |
| | | if(CollUtil.isNotEmpty(tzInfos)){ |
| | | for(TzInfo tzInfo : tzInfos){ |
| | | ApiTzInfoVo apiTzInfoVo = TzInfoConversion.INSTANCE.entityToVo(tzInfo); |
| | | objects.add(apiTzInfoVo); |
| | | } |
| | | LinkedHashMap<String, JSON> tzInfo1 = new LinkedHashMap<>(); |
| | | Object tzInfoMap = redisUtils.get(AppContants.TZ_INFO); |
| | | if(ObjectUtil.isEmpty(tzInfoMap)){ |
| | | tzInfo1 = this.getTzInfo(); |
| | | }else{ |
| | | tzInfo1 = JSONUtil.toBean(JSONUtil.parseObj(tzInfoMap), LinkedHashMap.class); |
| | | } |
| | | return new FebsResponse().success().data(objects); |
| | | return new FebsResponse().success().data(tzInfo1); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public FebsResponse create(ApiCreateDto apiCreateDto) { |
| | | // Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | Long memberId = 1L; |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | //开启下注 |
| | | DataDictionaryCustom noTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.NO_TIME.getType(), |
| | | DataDictionaryEnum.NO_TIME.getCode() |
| | | ); |
| | | if(noTimeDic.getValue().equals(2)){ |
| | | throw new FebsException("请等待下一期"); |
| | | if("2".equals(noTimeDic.getValue())){ |
| | | throw new FebsException("已停止投注"); |
| | | } |
| | | |
| | | List<ApiCreateItemDto> items = apiCreateDto.getItems(); |
| | |
| | | if(BigDecimal.ZERO.compareTo(tzAmount) >= 0){ |
| | | throw new FebsException("金额必须大于0"); |
| | | } |
| | | Long id = apiCreateItemDto.getId();//投注ID |
| | | TzInfo tzInfo = tzInfoMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(tzInfo)){ |
| | | throw new FebsException("参数有误,请刷新页面"); |
| | | } |
| | | apiCreateItemDto.setTzInfo(tzInfo); |
| | | totalAmount = totalAmount.add(tzAmount); |
| | | } |
| | | if(mallMemberWallet.getBalance().compareTo(totalAmount) < 0){ |
| | | throw new FebsException("余额不足"); |
| | | } |
| | | //更新用户余额 |
| | | mallMemberWallet.setBalance(mallMemberWallet.getBalance().subtract(totalAmount)); |
| | | mallMemberWalletMapper.updateBalanceWithVersion(mallMemberWallet); |
| | | |
| | | //新增一条投注主表记录 |
| | | CjInfo cjInfo = new CjInfo(); |
| | | cjInfo.setMemberId(memberId); |
| | | String kjNo = redisUtils.getString(AppContants.KJ_RECORD_NO); |
| | | cjInfo.setKjNo(kjNo); |
| | | cjInfo.setKjState(1); |
| | | cjInfo.setZjState(1); |
| | | cjInfo.setKjState(0); |
| | | cjInfo.setPerkAmount(BigDecimal.ZERO); |
| | | cjInfo.setTotalAmount(totalAmount); |
| | | cjInfoMapper.insert(cjInfo); |
| | | |
| | | for(ApiCreateItemDto apiCreateItemDto : items){ |
| | | Long id = apiCreateItemDto.getId();//投注ID |
| | | TzInfo tzInfo = tzInfoMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(tzInfo)){ |
| | | throw new FebsException("参数有误,请刷新页面"); |
| | | } |
| | | TzInfo tzInfo = apiCreateItemDto.getTzInfo(); |
| | | BigDecimal tzAmount = apiCreateItemDto.getTzAmount().setScale(2,BigDecimal.ROUND_DOWN);//投注金额 |
| | | totalAmount = totalAmount.add(tzAmount); |
| | | |
| | | CjItem cjItem = new CjItem(); |
| | | cjItem.setInfoId(cjInfo.getId()); |
| | | cjItem.setMemberId(memberId); |
| | | cjItem.setTzId(id); |
| | | cjItem.setTzCode(tzInfo.getTzCode()); |
| | | cjItem.setTzPercent(tzInfo.getTzPercent()); |
| | | cjItem.setType(tzInfo.getType()); |
| | | cjItem.setAmount(tzAmount); |
| | | cjItem.setItemNum(tzInfo.getTzCode()); |
| | |
| | | String orderNo = MallUtils.getOrderNum("T"); |
| | | mallMemberService.addMoneyFlow( |
| | | memberId, |
| | | totalAmount, |
| | | totalAmount.negate(), |
| | | MoneyFlowTypeNewEnum.STATIC_BONUS.getValue(), |
| | | orderNo, |
| | | MoneyFlowTypeNewEnum.STATIC_BONUS.getDescription(), |
| | |
| | | |
| | | @Override |
| | | public FebsResponse tzInfoList(KjRecordDto kjRecordDto) { |
| | | // Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | Long memberId = 1L; |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | kjRecordDto.setMemberId(memberId); |
| | | IPage<CjInfo> page = new Page<>(kjRecordDto.getPageNum(), kjRecordDto.getPageSize()); |
| | | IPage<CjInfo> pages = cjInfoMapper.selectTzListByMemberId(page, kjRecordDto); |
| | | List<CjInfo> records = pages.getRecords(); |
| | | if(CollUtil.isNotEmpty(records)){ |
| | | for(CjInfo item : records){ |
| | | Long id = item.getId(); |
| | | item.setKjNum(this.getKjNo(item.getKjNum())); |
| | | List<CjItem> cjItems = cjItemMapper.selectListByInfoId(id); |
| | | if(CollUtil.isNotEmpty(cjItems)){ |
| | | for(CjItem cjItem : cjItems){ |
| | | cjItem.setKjNum(this.getKjNo(cjItem.getKjNum())); |
| | | } |
| | | } |
| | | item.setItems(cjItems); |
| | | } |
| | | } |
| | | List<ApiTzListVo> apiTzListVos = CjInfoConversion.INSTANCE.entitysToVos(records); |
| | | return new FebsResponse().success().data(apiTzListVos); |
| | | } |
| | |
| | | |
| | | @Override |
| | | public void getOpenPriceMsg(String kjNo, String kjNum) { |
| | | QueryWrapper<CjInfo> objectQueryWrapper = new QueryWrapper<>(); |
| | | objectQueryWrapper.eq("kj_no",kjNo); |
| | | List<CjInfo> cjInfos = cjInfoMapper.selectList(objectQueryWrapper); |
| | | if(ObjectUtil.isEmpty(cjInfos)){ |
| | | return; |
| | | } |
| | | String danshuang = judgeNumberOne(Integer.parseInt(kjNum)); |
| | | String daXiao = judgeNumberTwo(Integer.parseInt(kjNum)); |
| | | |
| | | DataDictionaryCustom redBallDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.RED_BALL.getType(), |
| | | DataDictionaryEnum.RED_BALL.getCode() |
| | | ); |
| | | String hong = judgeNumberHong(kjNum, redBallDic); |
| | | |
| | | DataDictionaryCustom blueBallDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.BLUE_BALL.getType(), |
| | | DataDictionaryEnum.BLUE_BALL.getCode() |
| | | ); |
| | | String lan = judgeNumberLan(kjNum, blueBallDic); |
| | | DataDictionaryCustom colorBallDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.COLOR_BALL.getType(), |
| | | DataDictionaryEnum.COLOR_BALL.getCode() |
| | | ); |
| | | String caiqiu = judgeNumberColor(kjNum, colorBallDic); |
| | | String liugehao = getGroupNumberSix(Integer.parseInt(kjNum)); |
| | | String sangehao = getGroupNumberThree(Integer.parseInt(kjNum)); |
| | | |
| | | for(CjInfo cjInfo : cjInfos){ |
| | | asyncCjService.openPriceAsync(cjInfo,kjNum,danshuang,daXiao,hong,lan,caiqiu,liugehao,sangehao); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public LinkedHashMap<String, JSON> getTzInfo() { |
| | | LinkedHashMap<String, JSON> linkedHashMap = new LinkedHashMap<>(); |
| | | List<TzInfo> tzInfos = tzInfoMapper.selectList(null); |
| | | linkedHashMap.put("daXiao", JSONUtil.parse( |
| | | TzInfoConversion.INSTANCE.entitysToVo( |
| | | tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 1).collect(Collectors.toList())))); |
| | | linkedHashMap.put("danShuang", JSONUtil.parse( |
| | | TzInfoConversion.INSTANCE.entitysToVo( |
| | | tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 2).collect(Collectors.toList())))); |
| | | linkedHashMap.put("shuZi", JSONUtil.parse( |
| | | TzInfoConversion.INSTANCE.entitysToVo( |
| | | tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 3).collect(Collectors.toList())))); |
| | | linkedHashMap.put("hong", JSONUtil.parse( |
| | | TzInfoConversion.INSTANCE.entitysToVo( |
| | | tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 4).collect(Collectors.toList())))); |
| | | linkedHashMap.put("caiqiu", JSONUtil.parse( |
| | | TzInfoConversion.INSTANCE.entitysToVo( |
| | | tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 5).collect(Collectors.toList())))); |
| | | linkedHashMap.put("liuHao", JSONUtil.parse( |
| | | TzInfoConversion.INSTANCE.entitysToVo( |
| | | tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 6).collect(Collectors.toList())))); |
| | | linkedHashMap.put("sanHao", JSONUtil.parse( |
| | | TzInfoConversion.INSTANCE.entitysToVo( |
| | | tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 7).collect(Collectors.toList())))); |
| | | linkedHashMap.put("lan", JSONUtil.parse( |
| | | TzInfoConversion.INSTANCE.entitysToVo( |
| | | tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 8).collect(Collectors.toList())))); |
| | | //投注信息 |
| | | String tzInfoNoExit = redisUtils.getString(AppContants.TZ_INFO); |
| | | if (StrUtil.isNotBlank(tzInfoNoExit)) { |
| | | redisUtils.del(AppContants.TZ_INFO); |
| | | } |
| | | JSON jsonStr = JSONUtil.parse(linkedHashMap); |
| | | redisUtils.set(AppContants.TZ_INFO, jsonStr); |
| | | return linkedHashMap; |
| | | } |
| | | |
| | | @Override |
| | | public String getKjNo(String num) { |
| | | DataDictionaryCustom redBallDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.RED_BALL.getType(), |
| | | DataDictionaryEnum.RED_BALL.getCode() |
| | | ); |
| | | |
| | | DataDictionaryCustom blueBallDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.BLUE_BALL.getType(), |
| | | DataDictionaryEnum.BLUE_BALL.getCode() |
| | | ); |
| | | if(redBallDic.getValue().equals(num)){ |
| | | return "红"; |
| | | } |
| | | if(blueBallDic.getValue().equals(num)){ |
| | | return "蓝"; |
| | | } |
| | | return num; |
| | | } |
| | | |
| | | /** |
| | | * 取模运算符%来判断该数字是否为偶数。如果余数为0,则该数字为偶数,返回"双数";否则,该数字为奇数,返回"单数" |
| | | * @param num |
| | | * @return 1-单数 2-双数 |
| | | */ |
| | | public static String judgeNumberOne(int num) { |
| | | if(num > 24){ |
| | | return String.valueOf(num); |
| | | } |
| | | if (num % 2 == 0) { |
| | | return "双"; |
| | | } else { |
| | | return "单"; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 小于等于12为小 大于12为大 |
| | | * @param num |
| | | * @return 1-小数 2-大数 |
| | | */ |
| | | public static String judgeNumberTwo(int num) { |
| | | if(num > 24){ |
| | | return String.valueOf(num); |
| | | } |
| | | if (num <= 12) { |
| | | return "龙1-12"; |
| | | } else { |
| | | return "虎13-24"; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 红 |
| | | * @param num |
| | | */ |
| | | public static String judgeNumberHong(String num,DataDictionaryCustom redBallDic) { |
| | | String redBall = redBallDic.getValue(); |
| | | if (redBall.equals(num)) { |
| | | return "红球"; |
| | | } else { |
| | | return num; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 蓝 |
| | | * @param num |
| | | */ |
| | | public static String judgeNumberLan(String num,DataDictionaryCustom blueBallDic) { |
| | | String blueBall = blueBallDic.getValue(); |
| | | if (blueBall.equals(num)) { |
| | | return "蓝球"; |
| | | } else { |
| | | return num; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 彩球 |
| | | * @param num |
| | | */ |
| | | public static String judgeNumberColor(String num,DataDictionaryCustom colorBallDic) { |
| | | String colorBall = colorBallDic.getValue(); |
| | | List<String> colorBallList = Arrays.asList(StrUtil.split(colorBall, ",")); |
| | | if (colorBallList.contains(num)) { |
| | | return "彩球"; |
| | | } else { |
| | | return num; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 六个号 |
| | | * 判断数字属于哪一组并返回组号 |
| | | * @param number 1-24之间的数字 |
| | | * @return 组号(1, 2, 3, 4) |
| | | */ |
| | | /** |
| | | * 判断一个数字属于哪个组并返回组号 |
| | | * |
| | | * @param num 输入的数字(1-24之间) |
| | | * @return 组号(1-4之间) |
| | | */ |
| | | public static String getGroupNumberSix(int num) { |
| | | if(num > 24){ |
| | | return String.valueOf(num); |
| | | } |
| | | // 使用整除来确定组号 |
| | | int i = (num - 1) / 6 + 1; |
| | | if(1 == i){ |
| | | return "1-6"; |
| | | }else if(2 == i){ |
| | | return "7-12"; |
| | | }else if(3 == i){ |
| | | return "13-18"; |
| | | }else{ |
| | | return "19-24"; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 六个号 |
| | | * 判断数字属于哪一组并返回组号 |
| | | * @param number 1-24之间的数字 |
| | | * @return 组号(1, 2, 3, 4) |
| | | */ |
| | | /** |
| | | * 判断一个数字属于哪个组并返回组号 |
| | | * |
| | | * @param num 输入的数字(1-24之间) |
| | | * @return 组号(1-4之间) |
| | | */ |
| | | public static String getGroupNumberThree(int num) { |
| | | if(num > 24){ |
| | | return String.valueOf(num); |
| | | } |
| | | // 使用整除来确定组号 |
| | | int i = (num - 1) / 3 + 1; |
| | | if(1 == i){ |
| | | return "1-3"; |
| | | }else if(2 == i){ |
| | | return "4-6"; |
| | | }else if(3 == i){ |
| | | return "7-9"; |
| | | }else if(4 == i){ |
| | | return "10-12"; |
| | | }else if(5 == i){ |
| | | return "13-15"; |
| | | }else if(6 == i){ |
| | | return "16-18"; |
| | | }else if(7 == i){ |
| | | return "19-21"; |
| | | }else{ |
| | | return "22-24"; |
| | | } |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | ArrayList<Integer> CjItemUpdateList = new ArrayList<>(); |
| | | for(int i =1 ;i<=10000;i++){ |
| | | CjItemUpdateList.add(i); |
| | | } |
| | | int listSize= CjItemUpdateList.size(); |
| | | int toIndex = 500; |
| | | for(int i = 0; i<CjItemUpdateList.size(); i+=toIndex){ |
| | | if(i + toIndex > listSize){ //作用为toIndex最后没有1000条数据则剩余几条newList中就装几条 |
| | | toIndex = listSize - i; |
| | | } |
| | | List<Integer> newList = new ArrayList<>(CjItemUpdateList.subList(i, i + toIndex)); |
| | | System.out.println(newList.toString()); |
| | | } |
| | | |
| | | } |
| | | |