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

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

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

/***

* app签到接口

* @author xuhaibo

* @param accid

* @return

*/

@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;

}

领取连续签到奖励接口:

/***

* 领取连续签到奖励接口(7天,15天,30天)

* @param accid

* @param signType

* @return

*/

@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;

}

签到页面的接口:

/***

* 签到页面app端接口

* @param accid

* @return

*/

@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;

}

效果如下:

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

java设计按月每天签到_java实现app签到功能相关推荐

  1. java设计按月每天签到_java微信签到功能实现:java做的一个简易的微信签到系统的案例...

    java微信签到功能实现,现在微信签到功能很流行,这个签到功能帮助微信用户更好的管理自己的微信公众号,那你想知道java微信签到功能如何实现呢,今天小编就特意为大家分享一个关于java微信签到功能实现 ...

  2. java设计按月每天签到_java实现连续签到(打卡)天数

    业务上需要开发一个获取连续签到(打卡)天数的功能,修修改改多次后发现了规律,可以减少代码量,使程序更简洁明了. 核心是getContinuousSignInDay方法的逻辑,每次用当前时间去比较,规律 ...

  3. java实现连续签到加分_java实现app签到功能

    本文实例为大家分享了java实现app签到功能的具体代码,供大家参考,具体内容如下 1.首先设计二张表,第一张表sign_calc记录用户连续签到次数,字段id,user_id,continue_da ...

  4. java设计按月每天签到_活动攻略|新同学新签到,欢乐福利全都要!

    12月03日[每日一题答案]- 枫叶书签 答对问题即有机会获得金币.道具.积分,还有宠物好奇星噢~ 12月来了,和12月一起来的 是我们的新同学--花轮! 谁不喜欢浪漫体贴的小少爷呢! 喵星星感觉 自 ...

  5. java设计按月每天签到_签到功能java实现

    不嫌代码写的烂 可以参考下 https://github.com/ren2881971/WeChat 着急实现功能 没重构 ###### /** * 微信授权 * * */ public class ...

  6. java设计课程数学生数_JAVA课程设计小学数学算数测试软件.pdf

    软 件 学 院 课程设计报告书 课程名称 面向对象程序设计 设计题目 小学数学测试软件 专业班级 学 号 姓 名 指导教师 2014 年 6 月 目 录 1 设计时间3 2 设计目的3 3 设计题目3 ...

  7. java设计复数类报告总结_java复数类

    1 编写一个完整的 Java 程序,包括 Complex 和 TestComplex 两个类. 使用复数类 Complex 验证两个复数 1+2i 和 3+4i 相加产生一个新的复数 4+6i . . ...

  8. java设计随机遇敌概率_Java随机产生中文昵称

    iterator = set.iterator(); while (iterator.hasNext()) { System.err.print(iterator.next() + "\n& ...

  9. java获取一个月的日历_java一个月日历

    项目需要,获取当天之后的30天,并提示星期几(周几),写了一个工具类 /** * 计算日期时间 * @author shijing * 2015年8月10日下午2:16:09 * @param dat ...

最新文章

  1. Sound Forge Pro 3使用教程
  2. Spring源码分析之 lazy-init 实现原理
  3. 学习响应式BootStrap来写融职教育网站,Bootsrtap第四天Header处理
  4. Spring Boot 学习笔记--整合Thymeleaf
  5. mysql 字符转换函数是_MySQL日期和字符串转换函数
  6. 微信自动抢红包软件被判赔 475 万;日本科学家打破网速全球纪录;JavaScript蝉联最受欢迎编程语言|极客头条...
  7. html+css的响应式个人简历
  8. java 期刊杂志参考_各系列普刊期刊的推荐,大家可供参考
  9. 毕设使用EndNote管理Word文献
  10. python贡献度分析以及相关性分析小例子
  11. 如何离线加载全国2.48TB天地图
  12. python简单爬虫程序分析_Python简单爬虫
  13. 【MySQL】MySQL常用SQL关键字
  14. idcardweb装入失败_卡巴斯基安装错误的解决办法
  15. data mapping
  16. 隐函数求导和相关变化率
  17. IDEA插件系列(92):Rainbow Fart插件——吹彩虹屁
  18. 不是青蛙就是王子,不是王子就是青蛙
  19. 黑夜给了我黑色眼睛,我却用它来寻找创维
  20. 也谈如何高效阅读源码

热门文章

  1. mysql 8.0.18安装,mysql 8.0.18 安装配置方法图文教程
  2. 2020年蓝桥杯比赛时间_我院举办2021年创新创业大赛启动仪式及第12届蓝桥杯动员大会...
  3. qpython3可视图形界面_PySide——Python图形化界面入门教程(三)
  4. handler和thread之间如何传输数据_使用Mac OS X如何开启和配置防火墙
  5. HTML DOCTYPE 标签 -- DTDs 文档类型声明
  6. Java元数据区的概念_java之元数据(metadata)-Go语言中文社区
  7. python如何使用字典_python字典怎么使用zip
  8. IBM服务器显示系统恢复,苏州数据恢复_IBM X3850服务器数据恢复中处理SAS硬盘故障的恢复案例...
  9. The Best Vacation CodeForces - 1358D(贪心+尺取)
  10. Orac and Game of Life CodeForces - 1350E(思维+BFS)