数据库
设置次数字段设置关联(id,或者编号什么的,能在一张表中作区分)设置总积分数后台逻辑代码
在类上开启定时器 @EnableScheduling
设置设置定时方法
/** * @Scheduled(cron = "0 05 10 ? * * 0/5 * * * * ?") * 每天固定 10:05:00 执行程序 */ @Scheduled(cron = "0 05 10 ? * *") public void cornTest() { setIntegral(); }在方法上加注解 @Scheduled() 取值有多种 ,默认第一种, cron表达式,百度会有在线表达式编写、转换等。
循环逻辑方法 public void setIntegral() { //获取自己设置的数据库积分表(积分表自定义,) List<Demo> demos = demoDao.getDemoAllList(); //遍历所有的数据 for (Demo demo : demos) { //获取积分的次数 Integer integralNumber = demo.getIntegralNumber(); //判断 当次数不等于null 并且次数大于0时,才可进行次数计算 if (integralNumber != null && integralNumber > 0) { //获取区分的用户id(这里我用用户id做区分) Integer userId = demo.getIntegralId(); //判断用户id是否为空 if (userId != null) { //次数递减 integralNumber--; //更新支付记录(次数扣减之后要向数据库中更新当前的次数) demo.updatePayNumber(integralNumber, demo.getId()); //添加积分 Double integral = userById.getuIntegral(); //返送 每天分发积分 //参数设置 DecimalFormat decimalFormat = new DecimalFormat("0.00"); //格式化参数 String ratio = decimalFormat.format((double) demo.getMoney() / 50); //转换成Double Double v = Double.valueOf(ratio); //为用户更新积分 userDao.updateIntegral(userId, BigDecimal.valueOf(v + integral)); //添加积分记录 Date currDate = new Date(); integralLogsDao.addRecord(userId, currDate, v + "", "赠送积分"); } } } }实现完成。