java 一键签到功能案例

来源:互联网 发布:知乎登陆过于频繁 编辑:程序博客网 时间:2024/05/29 15:40

如意问题,还望各位多多指教!


package com.netec.web.home;



import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;


import javax.servlet.http.HttpServletRequest;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


import com.netec.model.admin.Integral;
import com.netec.model.admin.WxUser;
import com.netec.service.admin.IntegralService;
import com.netec.service.admin.UserInfoService;


/**
 * 一键签到
 * 
 *
 */
@RequestMapping(value="/sign")
@Controller
public class HomeSignController {

@Autowired
private UserInfoService service;
@Autowired
private IntegralService integralService;



@RequestMapping
@ResponseBody
public Map<String,Object> sign(HttpServletRequest request){
Map<String,Object> map = new HashMap<String, Object>();
WxUser user = (WxUser)request.getSession().getAttribute("wxUser");
Integral integral = new Integral();
//判断用户是否登录:如果登录了就直接签到;如果没登录者提示用户登录
if(user != null && !"".equals(user)){
//获取当前时间
Calendar checkdateCalendar = Calendar.getInstance();
//获取用户签到时间
Date checkDate = user.getCheckDate();
//判断是否签到过
if(checkDate==null || "".equals(checkDate)){
//如果为空则设置为当前时间
checkdateCalendar.set(checkdateCalendar.get(Calendar.YEAR),checkdateCalendar.get(Calendar.MONTH),checkdateCalendar.get(Calendar.DATE),0,0,0);
}else{
//如果不为空则设置为用户签到时间
checkdateCalendar.setTime(checkDate);
}

//获取今天凌晨时间
Calendar today = Calendar.getInstance();
today.set(today.get(Calendar.YEAR),today.get(Calendar.MONTH),today.get(Calendar.DATE),0,0,0);
//获取昨天凌晨时间
Calendar yesterday = Calendar.getInstance();
yesterday.set(yesterday.get(Calendar.YEAR),yesterday.get(Calendar.MONTH),yesterday.get(Calendar.DATE)-1,0,0,0);

//判断用户签到时间是否是在今天凌晨之前
if(checkdateCalendar.before(today)){
//如果上次签到是昨天凌晨之前,说明没有连续签到
if(checkdateCalendar.before(yesterday)){
//将签到天数归为1
user.setCheckTimes(1);
integral.setWxOpenid(user.getWxOpenId());
integral.setWxName(user.getWxName());
integral.setOrderId(0);
integral.setOrderSn("0");
integral.setMakeRuleCode("dailyCheck");
integral.setMakeRuleCodeName("一键签到");
integral.setCreatetime(new Date());
integral.setIntegralAmount("+5");
integral.setStatus("1");
integralService.save(integral);
user.setWisdomMoney(user.getWisdomMoney()+5);
}else{
int checkTimes = user.getCheckTimes();
checkTimes++;
if (checkTimes==7) {
//连续签到7天
integral.setWxOpenid(user.getWxOpenId());
integral.setWxName(user.getWxName());
integral.setOrderId(0);
integral.setOrderSn("0");
integral.setMakeRuleCode("dailyCheck");
integral.setMakeRuleCodeName("连续签到7天额外奖励5慧币");
integral.setCreatetime(new Date());
integral.setIntegralAmount("+10");
integral.setStatus("1");
integralService.save(integral);
user.setWisdomMoney(user.getWisdomMoney()+10);
}else if(checkTimes==15){
//连续签到15天
integral.setWxOpenid(user.getWxOpenId());
integral.setWxName(user.getWxName());
integral.setOrderId(0);
integral.setOrderSn("0");
integral.setMakeRuleCode("dailyCheck");
integral.setMakeRuleCodeName("连续签到15天额外奖励15慧币");
integral.setCreatetime(new Date());
integral.setIntegralAmount("+20");
integral.setStatus("1");
integralService.save(integral);
user.setWisdomMoney(user.getWisdomMoney()+20);
}else if(checkTimes==30){
//连续签到30天
integral.setWxOpenid(user.getWxOpenId());
integral.setWxName(user.getWxName());
integral.setOrderId(0);
integral.setOrderSn("0");
integral.setMakeRuleCode("dailyCheck");
integral.setMakeRuleCodeName("连续签到30天额外奖励30慧币");
integral.setCreatetime(new Date());
integral.setIntegralAmount("+35");
integral.setStatus("1");
integralService.save(integral);
user.setWisdomMoney(user.getWisdomMoney()+35);
}else if(checkTimes==45){
//连续签到45天
integral.setWxOpenid(user.getWxOpenId());
integral.setWxName(user.getWxName());
integral.setOrderId(0);
integral.setOrderSn("0");
integral.setMakeRuleCode("dailyCheck");
integral.setMakeRuleCodeName("连续签到45天额外奖励45慧币");
integral.setCreatetime(new Date());
integral.setIntegralAmount("+50");
integral.setStatus("1");
integralService.save(integral);
user.setWisdomMoney(user.getWisdomMoney()+50);
}else if(checkTimes==60){
//连续签到45天
integral.setWxOpenid(user.getWxOpenId());
integral.setWxName(user.getWxName());
integral.setOrderId(0);
integral.setOrderSn("0");
integral.setMakeRuleCode("dailyCheck");
integral.setMakeRuleCodeName("连续签到60天额外奖励60慧币");
integral.setCreatetime(new Date());
integral.setIntegralAmount("+65");
integral.setStatus("1");
integralService.save(integral);
user.setWisdomMoney(user.getWisdomMoney()+65);
}else{
//每日签到送慧币
integral.setWxOpenid(user.getWxOpenId());
integral.setWxName(user.getWxName());
integral.setOrderId(0);
integral.setOrderSn("0");
integral.setMakeRuleCode("dailyCheck");
integral.setMakeRuleCodeName("一键签到");
integral.setCreatetime(new Date());
integral.setIntegralAmount("+5");
integral.setStatus("1");
integralService.save(integral);
user.setWisdomMoney(user.getWisdomMoney()+5);
}
//连续签到天数加1
user.setCheckTimes(checkTimes);
}
user.setCheckDate(new Date());
service.saveUser(user);
map.put("true","今日签到成功");
}else{
map.put("false","您已经签到过了");
}

}else{
map.put("false","请登录后操作!");
}

return map;
}


}
0 0