栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java实现app签到功能

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java实现app签到功能

本文实例为大家分享了java实现app签到功能的具体代码,供大家参考,具体内容如下

1.首先设计二张表,第一张表sign_calc记录用户连续签到次数,字段id,user_id,continue_days,第二张表sign_detail签到详情表id,user_id,sign_date。

2.app端用户点击签到接口controller如下:


  @ResponseBody
  @RequestMapping(value = "/doSign")
  public JSonObject doSign(Integer accid) {
    JSonObject result = new JSonObject();
    Map data = new HashMap<>();
    if (!CinemaConstants.ACCID_MAP.contains(accid)) {
      Integer previousId = CinemaConstants.ACCID_MAP.put(accid, accid);
      if (previousId == null) {
 try {
   
   SignDetail signToday = signService.todayDetail(accid);//
   System.out.println(signToday);
   if (signToday == null) {//今天未签到 1:查询本月昨日签到情况
     SignDetail signDetail_yesterday = signService.yesterdayDetail(accid);
     SignCalc signCalcGet = signService.getSignCalc(accid);
     if (signDetail_yesterday == null) {
SignDetail signDetail = new SignDetail();
signDetail.setUser_id(accid);
signDetail.setSign_date(new Date());
signService.addSignDetail(signDetail);
if (signCalcGet == null) {
  SignCalc signCalc = new SignCalc();
  signCalc.setUser_id(accid);
  signCalc.setContinue_days(1);
  signService.addSignCalc(signCalc);
} else {
  SignCalc signCalc = new SignCalc();
  signCalc.setUser_id(accid);
  signCalc.setContinue_days(1);
  signService.updateSignCalc(signCalc);
}
Integral integral = new Integral();
integral.setSourceId(0);
integral.setUserId(accid);
integral.setScore(CinemaConstants.INTEGRAL_TYPE_SIGN_SCORES);
integral.setCreateTime(new Date());
integral.setNote(CinemaConstants.INTEGRAL_TYPE_SIGN_DESCRIBE);
integral.setSourceType(CinemaConstants.INTEGRAL_TYPE_SIGN);
integralService.add(integral);
accountService.addIntegralByUserId(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_SCORES);
result.put(Constants.RESULT_CODE, "00");
data.put("data", "签到成功");
     } else {//昨日已签到
SignDetail signDetail = new SignDetail();
SignCalc signCalc = new SignCalc();
signDetail.setUser_id(accid);
signDetail.setSign_date(new Date());
signService.addSignDetail(signDetail);
signCalc.setUser_id(accid);
signCalc.setContinue_days(signCalcGet.getContinue_days() + 1);
signService.updateSignCalc(signCalc);
Integral integral = new Integral();
integral.setUserId(accid);
integral.setSourceId(0);
integral.setScore(CinemaConstants.INTEGRAL_TYPE_SIGN_SCORES);
integral.setNote(CinemaConstants.INTEGRAL_TYPE_SIGN_DESCRIBE);
integral.setCreateTime(new Date());
integral.setSourceType(CinemaConstants.INTEGRAL_TYPE_SIGN);
integralService.add(integral);
accountService.addIntegralByUserId(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_SCORES);
result.put(Constants.RESULT_CODE, "00");
data.put("data", "签到成功");
     }
   } else {//当日已签到
     result.put(Constants.RESULT_CODE, "-1");
     data.put("data", "当日已签到");
   }
   result.put("data", data);
 } catch (Exception e) {
   e.printStackTrace();
   result.put(Constants.RESULT_CODE, "-1");
   result.put("data", "服务器错误");
 }
 CinemaConstants.ACCID_MAP.remove(accid);
      } else {
 result.put(Constants.RESULT_CODE, "-1");
 result.put("data", "操作正在进行,请重试");
      }
    } else {
      result.put(Constants.RESULT_CODE, "-1");
      result.put("data", "操作正在进行,请重试");
    }
    return result;
  }

领取连续签到奖励接口:


  @ResponseBody
  @RequestMapping(value = "/getSignGift")
  public JSonObject getSeven(Integer accid, Integer signType) {
    Calendar a = Calendar.getInstance();
    a.set(Calendar.DATE, 1);//把日期设置为当月第一天
    a.roll(Calendar.DATE, -1);//日期回滚一天,也就是最后一天
    int maxDate = a.get(Calendar.DATE);
    System.out.print(maxDate);
    JSonObject result = new JSonObject();
    Map data = new HashMap<>();
    if (!CinemaConstants.ACCID_MAP.contains(accid)) {
      Integer previousId = CinemaConstants.ACCID_MAP.put(accid, accid);
      if (previousId == null) {
 try {
   SignCalc signCalc = signService.getSignCalc(accid);
   int signServen = integralService.signQuery(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_7);
   int signFifteen = integralService.signQuery(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_15);
   int signThirty = integralService.signQuery(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_30);
   if (signServen==0&&signType == 7 && signCalc.getContinue_days() >= 7) {
     Integral integral = new Integral();
     integral.setUserId(accid);
     integral.setNote(CinemaConstants.INTEGRAL_TYPE_SIGN_7_DESCRIBE);
     integral.setScore(CinemaConstants.INTEGRAL_TYPE_SIGN_7_SCORES);
     integral.setCreateTime(new Date());
     integral.setSourceType(CinemaConstants.INTEGRAL_TYPE_SIGN_7);
     integralService.add(integral);
     accountService.addIntegralByUserId(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_7_SCORES);
     result.put(Constants.RESULT_CODE, "00");
     data.put("data", "领取成功");
   } //
   else if (signFifteen==0&&signType == 15 && signCalc.getContinue_days() >= 15) {
     Integral integral = new Integral();
     integral.setUserId(accid);
     integral.setNote(CinemaConstants.INTEGRAL_TYPE_SIGN_15_DESCRIBE);
     integral.setScore(CinemaConstants.INTEGRAL_TYPE_SIGN_15_SCORES);
     integral.setCreateTime(new Date());
     integral.setSourceType(CinemaConstants.INTEGRAL_TYPE_SIGN_15);
     integralService.add(integral);
     accountService.addIntegralByUserId(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_15_SCORES);
     result.put(Constants.RESULT_CODE, "00");
     data.put("data", "领取成功");
   } else if (signThirty==0&&signType == 30 && signCalc.getContinue_days() >= maxDate) {
     Integral integral = new Integral();
     integral.setUserId(accid);
     integral.setNote(CinemaConstants.INTEGRAL_TYPE_SIGN_30_DESCRIBE);
     integral.setScore(CinemaConstants.INTEGRAL_TYPE_SIGN_30_SCORES);
     integral.setCreateTime(new Date());
     integral.setSourceType(CinemaConstants.INTEGRAL_TYPE_SIGN_30);
     integralService.add(integral);
     accountService.addIntegralByUserId(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_30_SCORES);
     result.put(Constants.RESULT_CODE, "00");
     data.put("data", "领取成功");
   } else {
     result.put(Constants.RESULT_CODE, "-1");
     data.put("msg", "已领取或未到标");
   }
   result.put("data", data);
 } catch (Exception e) {
   e.printStackTrace();
   result.put(Constants.RESULT_CODE, "-1");
   result.put("data", "服务器错误");
 }
 CinemaConstants.ACCID_MAP.remove(accid);
      } else {
 result.put(Constants.RESULT_CODE, "-1");
 result.put("data", "操作正在进行,请重试");
      }
    } else {
      result.put(Constants.RESULT_CODE, "-1");
      result.put("data", "操作正在进行,请重试");
    }
    return result;
  }

签到页面的接口:


  @RequestMapping(value = "/signGift")
  @ResponseBody
  public Map signGift(Integer accid) {
    HashMap result = new HashMap();
    JSonObject data = new JSonObject();
    String signDetail = "";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    try {
      Account account = accountService.getAccount(accid);
      SignCalc signCalc = signService.getSignCalc(accid);
      List> list = signService.getDetailById(accid);
      System.out.println(list);
      String countDate = signService.countDate(accid);
      if (account == null) {
 result.put(Constants.RESULT_CODE, "-1");
 result.put("data", "没数据");
      } else {
 String[] strings = account.getAvatar().split(".png");
 data.put("nick_name", account.getNick_name());//昵称
 data.put("avatar", strings[0]);
 data.put("integral", account.getIntegral());//总积分
 data.put("count_date", countDate);//累计签到天数
 if (list.size() > 0) {
   for (Map map : list) {
     for (Map.Entry entry : map.entrySet()) {
String value = sdf.format(entry.getValue());
signDetail += value + ",";
     }
   }
 }
 int j = signDetail.lastIndexOf(",");
 signDetail = signDetail.substring(0, j);
 data.put("sign_date", signDetail);//签到明细
      }
      data.put("sign_today", true);
      int signServen = integralService.signQuery(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_7);
      if (signCalc.getContinue_days() < 7) {
 data.put("sign_seven", "0");//未达标
      } else if (signServen>0) {
 data.put("sign_seven", "2");//已领取
      } else {
 data.put("sign_seven", "1");//未领取
      }
      int signFifteen = integralService.signQuery(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_15);
      if (signCalc.getContinue_days() < 15) {
 data.put("sign_fifteen", "0");//未达标
      } else if (signFifteen > 0) {
 data.put("sign_fifteen", "2");//已领取
      } else {
 data.put("sign_fifteen", "1");//未领取
      }
      int signThirty = integralService.signQuery(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_30);
      if (signCalc.getContinue_days() < 30 ) {
 data.put("sign_thirty", "0");//未达标
      } else if (signThirty>0) {
 data.put("sign_thirty", "2");//已领取
      } else {
 data.put("sign_thirty", "1");//未领取
      }
      result.put(Constants.RESULT_CODE, "00");
      result.put("data", data);
    } catch (Exception e) {
      e.printStackTrace();
      result.put(Constants.RESULT_CODE, "-1");
      result.put("data", "数据获取异常");
    }
    return result;
  }

效果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/139589.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号