網站每日簽到功能設計 hibernate資料層框架
阿新 • • 發佈:2019-01-29
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;
}
}
}
}
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;
}
}
}
}