java实现app签到功能
程序员文章站
2024-03-04 22:54:00
本文实例为大家分享了java实现app签到功能的具体代码,供大家参考,具体内容如下
1.首先设计二张表,第一张表sign_calc记录用户连续签到次数,字段id,user...
本文实例为大家分享了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<string, object> 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<string, object> 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<string, object> 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<map<string, string>> 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<string, string> map : list) { for (map.entry<string, string> 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; }
效果如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。