要代碼這個(gè)分肯定不夠。不過(guò)思路可以說(shuō)下。
創(chuàng)新互聯(lián)公司成立于2013年,我們提供高端重慶網(wǎng)站建設(shè)、成都網(wǎng)站制作公司、成都網(wǎng)站設(shè)計(jì)公司、網(wǎng)站定制、成都營(yíng)銷(xiāo)網(wǎng)站建設(shè)、小程序制作、微信公眾號(hào)開(kāi)發(fā)、seo優(yōu)化服務(wù),提供專(zhuān)業(yè)營(yíng)銷(xiāo)思路、內(nèi)容策劃、視覺(jué)設(shè)計(jì)、程序開(kāi)發(fā)來(lái)完成項(xiàng)目落地,為成都圍欄護(hù)欄企業(yè)提供源源不斷的流量和訂單咨詢(xún)。
1、提供一個(gè)二維碼生成接口,為保證時(shí)效性和安全性,二維碼應(yīng)該是后臺(tái)生成,并帶有時(shí)間戳。
2、點(diǎn)擊二維碼重新從后臺(tái)獲取新的二維碼。
3、二維碼的內(nèi)容有很多種,根據(jù)不同的客戶(hù)端(用戶(hù)用什么簽到)載體來(lái)進(jìn)行確定,比如用微信掃一掃簽到,則二維碼內(nèi)容肯定是URL。
4、簽到即調(diào)用后臺(tái)接口,將掃到的碼內(nèi)容傳到后臺(tái)進(jìn)行匹配校驗(yàn)。
1.定義bean
public?class?Checkin?{
??private?String?optsn;//流水號(hào)
??private?String?userid;//積分
??private?String?addpoint;//一次添加值
??private?String?curpoint;//當(dāng)前積分
??private?String?efftime;//生效時(shí)間
??private?String?expirytime;//失效時(shí)間
??private?String?type;//是否簽到
??private?String?remark;?//備注?經(jīng)驗(yàn)獲取方式(初始化,一次簽到成功、連續(xù)簽到成功)
??//省略get、set
??}
??
2.設(shè)置初始化時(shí)靜態(tài)數(shù)據(jù)
public?class?StaticUtil?{
public?static?String??CONFIG?=??"積分獲取規(guī)則";
public?static?String??POINTACQSTATICCONFIG?=??"pointrule";
public?static?String??POINTACQINIT?=??"初始化";
public?static?String??POINTCHECKIN?=??"一次簽到";
public?static?String??POINTCHECKINS?=??"連續(xù)簽到";
}??
3.實(shí)現(xiàn)類(lèi) ??
public?class?checkinService{
??
??/**
?*?實(shí)現(xiàn)簽到
?*?一次簽到:?簽到成功,?將簽到狀態(tài)修改成功?
?*?
?*?@param?userPoint?
?*?@return
?*/
public?ReturnValueDomainString?add(Checkin?checkin?)?{
ReturnValueDomainString?ret?=?new?ReturnValueDomainString();
try?{
StringBuffer?sql?=?new?StringBuffer(
"INSERT?INTO?tb_userpoint?(……)");
sql.append("??VALUES?(……)");
//生成流水號(hào)
logger.info("簽到成功SQL"+sql.toString());
this.jdbcTemplate.update(sql.toString(),?answer);
//簽到,增加積分
String?addpoint?=??jdbcTemplate.queryForObject("?select?*?from?AA??a?,BB?b?"?+"where?a.type='"+StaticUtil.POINTCONFIG+"'?and?b.attrname='"+StaticUtil.POINTCHECKIN+"'?",?new?HashMapString,String(),?String.class);
sql.setLength(0);
Checkin?checkin=?new?Checkin?();
this.jdbcTemplate.update(sql.toString(),uptrace);
//修改個(gè)人的積分值
this.jdbcTemplate.update("?update?tb_aqzw_usermessage?set?point=point+:addpoint?where?userid=:userid",?uptrace);
?
/**
?*?下面的sql,?如果是執(zhí)行條數(shù)為?1條,?如果不是執(zhí)行條數(shù)?為0?條
?*/
MapString,String?checkinmap?=?new?HashMapString,String();
ataskmap.put("questionid",?answer.getQuestionid());
sql.setLength(0);
sql.append("?update??tb_checkin??set??type='1',?expirytime=now()?where?條件");
// logger.info("--"+sql.toString());
this.jdbcTemplate.update(sql.toString(),?ataskmap);
}?catch?(Exception?e)?{
logger.error("簽到失?。??+?e.getMessage());
return?ret.setFail("簽到失敗,請(qǐng)聯(lián)系管理員");
}
return?ret.setSuccess("簽到成功!");
}
??}
??
注:?偽代碼,只提供參考?。?/p>
簽到的時(shí)候,把這7天的簽到記錄查出來(lái),只要全部都簽到了,就再加25積分
不過(guò)循環(huán)遍歷時(shí)候要判斷是不是一天內(nèi)重復(fù)的記錄
最后統(tǒng)計(jì)少了一條簽到記錄就不算
sql大概可以這么統(tǒng)計(jì)吧,查詢(xún)七天內(nèi)的簽到記錄以簽到時(shí)間的年月日格式分組(不太懂mysql,大概意思意思)
select?count(1)?from?xxxxxxx?where?signin_time=?date_add(now(),?interval?6?day)?group?by?date_format(signi_time,'%Y%m%d');
把簽到信息存到一個(gè)簽到表里,簽到表關(guān)聯(lián)用戶(hù)ID,有簽到日期,每天的簽到就是一條記錄,積分掛在用戶(hù)信息表中,再來(lái)個(gè)積分日志表,積分發(fā)生變動(dòng)就記錄進(jìn)去,比如獲得積分或花了積分了。積分等級(jí)想復(fù)雜點(diǎn)了就來(lái)個(gè)積分等級(jí)表,里面存的是規(guī)則,想簡(jiǎn)單了就在積分余額字段后面再加個(gè)字段標(biāo)記當(dāng)前積分等級(jí),甚至在前端當(dāng)場(chǎng)計(jì)算都行
Java 的JDBC,如果你不使用面向?qū)ο蠹夹g(shù)的話(huà)。(Hibernate, Myba...
Jsp 頁(yè)面上的 JSTL
HTML頁(yè)面上的知識(shí) ,css javascript jQuery
如果使用框架的話(huà),還有相應(yīng)的框架技術(shù)