1. 程式人生 > >網站每日簽到功能設計 hibernate資料層框架

網站每日簽到功能設計 hibernate資料層框架

public static void sign(Long user_id) {


t_user_sign tus = signByUserId(user_id, error);


if (error.code < 0) {


return;
}
// 以前沒簽到 第一次簽到
if (tus == null && error.code > 0) {


error.clear();


t_user_sign tUserSign = new t_user_sign();


tUserSign.count = 1;
tUserSign.signcount = 1;
tUserSign.lastModifyTime = new Date();
tUserSign.user_id = user_id;
DateUtil.dateToString1(new Date());
tUserSign.signHistoy = DateUtil.dateToString1(new Date());
try {


tUserSign.save();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
Logger.info("增加使用者簽到表的時候 出現錯誤 :" + e.getMessage());
return;
}
error.msg = "第一次簽到";
error.code = 1;
//有簽到過,再次簽到
} else {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = DateUtil.strToDate(sdf.format(date) + " 00:00:01");
Date date2 = DateUtil.strToDate(sdf.format(date) + " 23:59:58");
// 業務方法判斷最後簽到時間 是否在當天

if (date1.before(tus.lastModifyTime)
&& tus.lastModifyTime.before(date2)) {
error.msg = "今天已經簽到";
error.code = 1;
return;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, -1);


Date beforeDate1 = DateUtil
.strToDate(sdf.format(calendar.getTime()) + " 00:00:01");


// 非連續簽到
if (tus.lastModifyTime.before(beforeDate1)) {
tus.signcount=1;
tus.count+=1;
tus.lastModifyTime=new Date();

tus.signHistoy+=","+sdf.format(new Date());

String hql=" update t_user_sign t set t.signcount=?, t.count=? ,t.lastModifyTime=? ,t.signHistoy=? where t.user_id=?";
EntityManager em = JPA.em();

Query query = em.createQuery(hql);

query.setParameter(1,tus.signcount);

query.setParameter(2, tus.count);
query.setParameter(3, tus.lastModifyTime);
query.setParameter(4, tus.signHistoy);
query.setParameter(5, user_id);
int row = 0;
try {
row = query.executeUpdate();
} catch (Exception e) {
Logger.error("非連續:使用者簽名出現錯誤" + e.getMessage());
return;
}
               if(row<1){
              error.msg = "非連續:使用者簽名更新失敗!";
error.code=-3;
return;
               }
                error.msg = "今天簽到成功";
error.code = 1;
           //連續簽到
} else {
tus.signcount+=1;
tus.count+=1;
tus.lastModifyTime=new Date();

tus.signHistoy+=","+sdf.format(new Date());

String hql=" update t_user_sign t set t.signcount=?, t.count=? ,t.lastModifyTime=? ,t.signHistoy=? where t.user_id=?";
EntityManager em = JPA.em();

Query query = em.createQuery(hql);

query.setParameter(1,tus.signcount);

query.setParameter(2, tus.count);
query.setParameter(3, tus.lastModifyTime);
query.setParameter(4, tus.signHistoy);
query.setParameter(5, user_id);
int row = 0;
try {
row = query.executeUpdate();
} catch (Exception e) {
Logger.error("連續:使用者簽名出現錯誤" + e.getMessage());
return;
}
               if(row<1){
return;
               }
}
}


}