连续签到的功能
2014-11-21 18:06
232 查看
项目中有个功能需求就是连续签到7天送A礼品,连续签到1个月送B礼品。
这边写的代码跟大家分享下
//连续签到送风尚币
List<Tduty> dutylist = tdutyManager.findRecordOrderByDate(memberid);
int count=1;
if(dutylist.size()>1){
for(int i= 0;i<dutylist.size()-1;i++){
int cha = DateUtil.compareDay(dutylist.get(i).getCreatetime(), dutylist.get(i+1).getCreatetime());
//时间差是否在一天之内
// Int hour = cha * 1.0 / (1000 * 60 * 60);
if(cha==1){//24小时内表明是连续
count++;
}else{
break;
}
}
}
int remainder = count%30;
if(remainder==0){//连续30天签到送风尚币
customerApiManager.addIntegralC22(tmember.getShopid(),
tmember.getShopname(), EnumUtil.Integraltype.MONTHSIGN.getValue(),
"连续一个月签到", tmember.getMemberid());
System.out.println("送A礼品");
}
if (remainder==7){//连续7天签到送风尚币
customerApiManager.addIntegralC22(tmember.getShopid(),
tmember.getShopname(), EnumUtil.Integraltype.SEVENDAYSSIGN.getValue(),
"连续7天签到", tmember.getMemberid());
System.out.println("送B礼品");
} //判断两天是否相差一天
/** 比较两个日期相差的天数 */
public static int compareDay(Date date1, Date date2) {
if (date1 == null || date2 == null)
return 0;
Calendar d1 = Calendar.getInstance();
d1.setTime(date1);
Calendar d2 = Calendar.getInstance();
d2.setTime(date2);
if (d1.after(d2)) {
java.util.Calendar swap = d1;
d1 = d2;
d2 = swap;
}
/*
* 经过上面的处理,保证d2在d1之后
* 下面这个days可能小于0,因为d2和d1可能不在同一年里,这样的话虽然d1的年份小,但其在一年中的"第几天"却可能比d2大。
*/
int days = d2.get(java.util.Calendar.DAY_OF_YEAR)
- d1.get(java.util.Calendar.DAY_OF_YEAR);
int y2 = d2.get(java.util.Calendar.YEAR);
if (d1.get(java.util.Calendar.YEAR) != y2) {// 如果不在同一年
d1 = (java.util.Calendar) d1.clone();
do {
days += d1.getActualMaximum(java.util.Calendar.DAY_OF_YEAR);
/*
* 给定此 Calendar 的时间值,返回指定日历字段可能拥有的最大值。 例如,在某些年份中,MONTH 字段的实际最大值是
* 12,而在希伯来日历系统的其他年份中,该字段的实际最大值是 13。 DAY_OF_YEAR:闰年366?
*/
d1.add(java.util.Calendar.YEAR, 1);
} while (d1.get(java.util.Calendar.YEAR) != y2);
}
return days;
}
这边写的代码跟大家分享下
//连续签到送风尚币
List<Tduty> dutylist = tdutyManager.findRecordOrderByDate(memberid);
int count=1;
if(dutylist.size()>1){
for(int i= 0;i<dutylist.size()-1;i++){
int cha = DateUtil.compareDay(dutylist.get(i).getCreatetime(), dutylist.get(i+1).getCreatetime());
//时间差是否在一天之内
// Int hour = cha * 1.0 / (1000 * 60 * 60);
if(cha==1){//24小时内表明是连续
count++;
}else{
break;
}
}
}
int remainder = count%30;
if(remainder==0){//连续30天签到送风尚币
customerApiManager.addIntegralC22(tmember.getShopid(),
tmember.getShopname(), EnumUtil.Integraltype.MONTHSIGN.getValue(),
"连续一个月签到", tmember.getMemberid());
System.out.println("送A礼品");
}
if (remainder==7){//连续7天签到送风尚币
customerApiManager.addIntegralC22(tmember.getShopid(),
tmember.getShopname(), EnumUtil.Integraltype.SEVENDAYSSIGN.getValue(),
"连续7天签到", tmember.getMemberid());
System.out.println("送B礼品");
} //判断两天是否相差一天
/** 比较两个日期相差的天数 */
public static int compareDay(Date date1, Date date2) {
if (date1 == null || date2 == null)
return 0;
Calendar d1 = Calendar.getInstance();
d1.setTime(date1);
Calendar d2 = Calendar.getInstance();
d2.setTime(date2);
if (d1.after(d2)) {
java.util.Calendar swap = d1;
d1 = d2;
d2 = swap;
}
/*
* 经过上面的处理,保证d2在d1之后
* 下面这个days可能小于0,因为d2和d1可能不在同一年里,这样的话虽然d1的年份小,但其在一年中的"第几天"却可能比d2大。
*/
int days = d2.get(java.util.Calendar.DAY_OF_YEAR)
- d1.get(java.util.Calendar.DAY_OF_YEAR);
int y2 = d2.get(java.util.Calendar.YEAR);
if (d1.get(java.util.Calendar.YEAR) != y2) {// 如果不在同一年
d1 = (java.util.Calendar) d1.clone();
do {
days += d1.getActualMaximum(java.util.Calendar.DAY_OF_YEAR);
/*
* 给定此 Calendar 的时间值,返回指定日历字段可能拥有的最大值。 例如,在某些年份中,MONTH 字段的实际最大值是
* 12,而在希伯来日历系统的其他年份中,该字段的实际最大值是 13。 DAY_OF_YEAR:闰年366?
*/
d1.add(java.util.Calendar.YEAR, 1);
} while (d1.get(java.util.Calendar.YEAR) != y2);
}
return days;
}
相关文章推荐
- MYSQL实现连续签到功能断签一天从头开始(sql语句)
- ios 每日签到功能,模拟连续签到和中断需要重新签到
- MYSQL实现连续签到功能,断签一天从头开始
- 连续签到7天的功能设计
- N32926 24小时连续测试720p, h.264 IPCAM功能,为什么基本不发热呢?
- 用gridview模仿日历并实现签到功能
- Gowalla:淡化签到,转型旅游指南以及讲故事功能
- 十三、签到和小红点功能
- 每日签到的功能
- ASP.NET 统计连续签到天数
- Android zxing连续扫码的功能实现
- java实现51cto网站的自动签到与获取下载积分等功能代码
- 基于jQuery的日历+每日签到功能
- PHP每日签到及连续签到奖励实现示例
- Java实现WinPcap+Wireshark数据抓包模拟联通客户端签到功能
- CSDN学生大本营的限制用户连续发帖功能新解
- 项目中的*签到*小功能!
- C#开发微信门户及应用(39)--使用微信JSSDK实现签到的功能
- 关于android自定义相机连续对焦功能的个人见解
- 自定义签到功能