本文实例为大家分享了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, "