1. 程式人生 > >用java語言設計app簽到功能

用java語言設計app簽到功能

1.首先設計二張表,第一張表sign_calc記錄使用者連續簽到次數,欄位id,user_id,continue_days,第二張表sign_detail簽到詳情表id,user_id,sign_date。
2.app端使用者點選簽到介面controller如下:

/***
     * app簽到介面
     * @author xuhaibo
     * @param accid
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/doSign")
    public JSONObject doSign(Integer accid) {
        JSONObject result = new JSONObject();
Map<String, Object> data = new HashMap<>(); if (!CinemaConstants.ACCID_MAP.contains(accid)) { Integer previousId = CinemaConstants.ACCID_MAP.put(accid, accid); if (previousId == null) { try { /**** * 查詢使用者今日的簽到 */
SignDetail signToday = signService.todayDetail(accid);// System.out.println(signToday); if (signToday == null) {//今天未簽到 1:查詢本月昨日簽到情況 SignDetail signDetail_yesterday = signService.yesterdayDetail(accid); SignCalc signCalcGet = signService.getSignCalc
(accid); if (signDetail_yesterday == null) { SignDetail signDetail = new SignDetail(); signDetail.setUser_id(accid); signDetail.setSign_date(new Date()); signService.addSignDetail(signDetail); if (signCalcGet == null) { SignCalc signCalc = new SignCalc(); signCalc.setUser_id(accid); signCalc.setContinue_days(1); signService.addSignCalc(signCalc); } else { SignCalc signCalc = new SignCalc(); signCalc.setUser_id(accid); signCalc.setContinue_days(1); signService.updateSignCalc(signCalc); } Integral integral = new Integral(); integral.setSourceId(0); integral.setUserId(accid); integral.setScore(CinemaConstants.INTEGRAL_TYPE_SIGN_SCORES); integral.setCreateTime(new Date()); integral.setNote(CinemaConstants.INTEGRAL_TYPE_SIGN_DESCRIBE); integral.setSourceType(CinemaConstants.INTEGRAL_TYPE_SIGN); integralService.add(integral); accountService.addIntegralByUserId(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_SCORES); result.put(Constants.RESULT_CODE, "00"); data.put("data", "簽到成功"); } else {//昨日已簽到 SignDetail signDetail = new SignDetail(); SignCalc signCalc = new SignCalc(); signDetail.setUser_id(accid); signDetail.setSign_date(new Date()); signService.addSignDetail(signDetail); signCalc.setUser_id(accid); signCalc.setContinue_days(signCalcGet.getContinue_days() + 1); signService.updateSignCalc(signCalc); Integral integral = new Integral(); integral.setUserId(accid); integral.setSourceId(0); integral.setScore(CinemaConstants.INTEGRAL_TYPE_SIGN_SCORES); integral.setNote(CinemaConstants.INTEGRAL_TYPE_SIGN_DESCRIBE); integral.setCreateTime(new Date()); integral.setSourceType(CinemaConstants.INTEGRAL_TYPE_SIGN); integralService.add(integral); accountService.addIntegralByUserId(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_SCORES); result.put(Constants.RESULT_CODE, "00"); data.put("data", "簽到成功"); } } else {//當日已簽到 result.put(Constants.RESULT_CODE, "-1"); data.put("data", "當日已簽到"); } result.put("data", data); } catch (Exception e) { e.printStackTrace(); result.put(Constants.RESULT_CODE, "-1"); result.put("data", "伺服器錯誤"); } CinemaConstants.ACCID_MAP.remove(accid); } else { result.put(Constants.RESULT_CODE, "-1"); result.put("data", "操作正在進行,請重試"); } } else { result.put(Constants.RESULT_CODE, "-1"); result.put("data", "操作正在進行,請重試"); } return result; }

領取連續簽到獎勵介面:

/***
     * 領取連續簽到獎勵介面(7天,15天,30天)
     * @param accid
     * @param signType
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/getSignGift")
    public JSONObject getSeven(Integer accid, Integer signType) {
        Calendar a = Calendar.getInstance();
        a.set(Calendar.DATE, 1);//把日期設定為當月第一天
        a.roll(Calendar.DATE, -1);//日期回滾一天,也就是最後一天
        int maxDate = a.get(Calendar.DATE);
        System.out.print(maxDate);
        JSONObject result = new JSONObject();
        Map<String, Object> data = new HashMap<>();
        if (!CinemaConstants.ACCID_MAP.contains(accid)) {
            Integer previousId = CinemaConstants.ACCID_MAP.put(accid, accid);
            if (previousId == null) {
                try {
                    SignCalc signCalc = signService.getSignCalc(accid);
                    int signServen = integralService.signQuery(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_7);
                    int signFifteen = integralService.signQuery(accid,  CinemaConstants.INTEGRAL_TYPE_SIGN_15);
                    int signThirty = integralService.signQuery(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_30);
                    if (signServen==0&&signType == 7 && signCalc.getContinue_days() >= 7) {
                        Integral integral = new Integral();
                        integral.setUserId(accid);
                        integral.setNote(CinemaConstants.INTEGRAL_TYPE_SIGN_7_DESCRIBE);
                        integral.setScore(CinemaConstants.INTEGRAL_TYPE_SIGN_7_SCORES);
                        integral.setCreateTime(new Date());
                        integral.setSourceType(CinemaConstants.INTEGRAL_TYPE_SIGN_7);
                        integralService.add(integral);
                        accountService.addIntegralByUserId(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_7_SCORES);
                        result.put(Constants.RESULT_CODE, "00");
                        data.put("data", "領取成功");
                    } //
                    else if (signFifteen==0&&signType == 15 && signCalc.getContinue_days() >= 15) {
                        Integral integral = new Integral();
                        integral.setUserId(accid);
                        integral.setNote(CinemaConstants.INTEGRAL_TYPE_SIGN_15_DESCRIBE);
                        integral.setScore(CinemaConstants.INTEGRAL_TYPE_SIGN_15_SCORES);
                        integral.setCreateTime(new Date());
                        integral.setSourceType(CinemaConstants.INTEGRAL_TYPE_SIGN_15);
                        integralService.add(integral);
                        accountService.addIntegralByUserId(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_15_SCORES);
                        result.put(Constants.RESULT_CODE, "00");
                        data.put("data", "領取成功");
                    } else if (signThirty==0&&signType == 30 && signCalc.getContinue_days() >= maxDate) {
                        Integral integral = new Integral();
                        integral.setUserId(accid);
                        integral.setNote(CinemaConstants.INTEGRAL_TYPE_SIGN_30_DESCRIBE);
                        integral.setScore(CinemaConstants.INTEGRAL_TYPE_SIGN_30_SCORES);
                        integral.setCreateTime(new Date());
                        integral.setSourceType(CinemaConstants.INTEGRAL_TYPE_SIGN_30);
                        integralService.add(integral);
                        accountService.addIntegralByUserId(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_30_SCORES);
                        result.put(Constants.RESULT_CODE, "00");
                        data.put("data", "領取成功");
                    } else {
                        result.put(Constants.RESULT_CODE, "-1");
                        data.put("msg", "已領取或未到標");
                    }
                    result.put("data", data);
                } catch (Exception e) {
                    e.printStackTrace();
                    result.put(Constants.RESULT_CODE, "-1");
                    result.put("data", "伺服器錯誤");
                }
                CinemaConstants.ACCID_MAP.remove(accid);
            } else {
                result.put(Constants.RESULT_CODE, "-1");
                result.put("data", "操作正在進行,請重試");
            }
        } else {
            result.put(Constants.RESULT_CODE, "-1");
            result.put("data", "操作正在進行,請重試");
        }
        return result;
    }

簽到頁面的介面:

/***
     * 簽到頁面app端介面
     * @param accid
     * @return
     */
    @RequestMapping(value = "/signGift")
    @ResponseBody
    public Map<String, Object> signGift(Integer accid) {
        HashMap result = new HashMap();
        JSONObject data = new JSONObject();
        String signDetail = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Account account = accountService.getAccount(accid);
            SignCalc signCalc = signService.getSignCalc(accid);
            List<Map<String, String>> list = signService.getDetailById(accid);
            System.out.println(list);
            String countDate = signService.countDate(accid);
            if (account == null) {
                result.put(Constants.RESULT_CODE, "-1");
                result.put("data", "沒資料");
            } else {
                String[] strings = account.getAvatar().split(".png");
                data.put("nick_name", account.getNick_name());//暱稱
                data.put("avatar", strings[0]);
                data.put("integral", account.getIntegral());//總積分
                data.put("count_date", countDate);//累計簽到天數
                if (list.size() > 0) {
                    for (Map<String, String> map : list) {
                        for (Map.Entry<String, String> entry : map.entrySet()) {
                            String value = sdf.format(entry.getValue());
                            signDetail += value + ",";
                        }
                    }
                }
                int j = signDetail.lastIndexOf(",");
                signDetail = signDetail.substring(0, j);
                data.put("sign_date", signDetail);//簽到明細
            }
            data.put("sign_today", true);
            int signServen = integralService.signQuery(accid,  CinemaConstants.INTEGRAL_TYPE_SIGN_7);
            if (signCalc.getContinue_days() < 7) {
                data.put("sign_seven", "0");//未達標
            } else if (signServen>0) {
                data.put("sign_seven", "2");//已領取
            } else {
                data.put("sign_seven", "1");//未領取
            }
            int signFifteen = integralService.signQuery(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_15);
            if (signCalc.getContinue_days() < 15) {
                data.put("sign_fifteen", "0");//未達標
            } else if (signFifteen > 0) {
                data.put("sign_fifteen", "2");//已領取
            } else {
                data.put("sign_fifteen", "1");//未領取
            }
            int signThirty = integralService.signQuery(accid, CinemaConstants.INTEGRAL_TYPE_SIGN_30);
            if (signCalc.getContinue_days() < 30 ) {
                data.put("sign_thirty", "0");//未達標
            } else if (signThirty>0) {
                data.put("sign_thirty", "2");//已領取
            } else {
                data.put("sign_thirty", "1");//未領取
            }
            result.put(Constants.RESULT_CODE, "00");
            result.put("data", data);
        } catch (Exception e) {
            e.printStackTrace();
            result.put(Constants.RESULT_CODE, "-1");
            result.put("data", "資料獲取異常");
        }
        return result;
    }

效果如下:
簽到效果展示

相關推薦

java語言設計app簽到功能

1.首先設計二張表,第一張表sign_calc記錄使用者連續簽到次數,欄位id,user_id,continue_days,第二張表sign_detail簽到詳情表id,user_id,sign_date。 2.app端使用者點選簽到介面controller如

Java語言 設計一個動物聲音“模擬器”(介面實現)

設計一個動物聲音“模擬器”,希望模擬器可以模擬許多動物的叫聲,要求如下。 編寫介面Animal Animal介面有兩個抽象方法cry()和getAnimalName(),即要求實現該介面的各種具體的動物類給出自己的叫聲和種類名稱。 編寫模擬器類Simul

Python語言設計GUI界面

list head for qt4 雙擊 data- com http 彈出 我們大家都編寫過程序,但是如果能夠設計一個GUI界面,會使程序增添一個很大的亮點!今天就讓我們來用目前十分流行的python語言寫出一個最基本的GUI,為日後設計更加漂亮的GUI打下基礎。

java語言輸出hello world

public class helloworld //檔名為helloworld { public static void main(String[]args) { System.out.println("hello world");//輸出結果 System.out.println("

java語言模擬短作業優先演算法

package two; public class Job { private String name;//作業名稱(ID) private int execTime; //執行時間 private long startTime;//開始時間 private int endTime;//

C語言實現掃雷部分功能(可連續展開)

用了用了兩天時間,寫了個掃雷的小程式,是不是有點慢了。不過我是真覺得用c寫小東西很有意思。 PS:重新遊戲那裡還沒開始寫,後面會補上。 ** 感覺最困難,花費時間最多的在棋盤中無雷周邊區域顯示的演算法上。 ** 具體程式見下: 標頭檔案 #ifndef __SAO

Java語言如何寫一個小日曆

利用GregorianCalendar物件內部的get方法 getFirstDayweek方法獲得當地星期的起始日。 我們不必知道GregorianCalendar類如何計算星期數與天數。掌握set與get,add方法。 在這裡插入程式碼片 ```package

Java語言編寫程式:輸出100以內的素數

                                          &nb

java語言編寫程式計算九宮圖

前言 對於程式設計師來說,用程式解決數學問題是最有趣的事情之一。本人研究了一個能夠輕易計算九宮圖的演算法,並且用java語言編寫程式得以實現。現將演算法和程式碼公佈,歡迎廣大程式愛好者前來閱讀、交流。 九宮圖簡介 九宮圖是我國古老的數學問題,也是一種數字藝術,就

簡單的純java語言登入和註冊功能

**Main.java** package com.su.main; public class Main { public static void main(String[] args) { // TODO Auto-genera

Java語言做ACM的注意事項

①用Java時只需要貼上包裡面的內容,包名是不需要的。//有包名的去掉包名 ②提交題目時類名一定要是 Main,否則判題系統是不認識程式碼的。   ③Java的util類裡面的Scanner.in裡面的 input(自己定義的輸入類名).hasNext();用於判斷輸入資料是否結束非常好用,比起

關於呼叫百度雲OCR身份證識別介面,Java語言,識別結果缺少身份證號碼的問題解決

問題描述: 最近專案系統開發,使用到了相關證件的資訊提取、識別,由於是學校科研使用,選擇了百度雲OCR文字識別的API。具體的相關識別身份等證件的程式碼將在另一篇文章中敘述,最近真的太忙了,草稿箱中還有兩篇文還沒發.......週末一定要發了其中的關於文字識別的文章。這個問題就是出現在呼叫身

C語言實現Ping程式功能(轉)

用C語言實現Ping程式功能 日期:2006-12-25 作者:樑俊輝 來自:IBM DW中國 大部分人用ping命令只是作為檢視另一個系統的網路連線是否正常的一種簡單方法。在這篇文章中,作者將介紹如何用C語言編寫一個模擬ping命令功能的程式。 ping命令是用來檢視網路

利用飛秋的udpjava語言進行震動攻擊

就是下面這段java程式碼,利用UDP協議的特點,會不斷地傳送資料包,在區域網內執行一下,所有的飛秋就會瘋狂的震動。 吧IP地址換成255.255.255.255,就會公共頻道傳送, 還可以把地址設

CCF--分蛋糕--java語言實現

題目要求:/*問題描述    小明今天生日,他有n塊蛋糕要分給朋友們吃,這n塊蛋糕(編號為1到n)的重量分別為a1, a2, …, an。    小明想分給每個朋友至少重量為k的蛋糕。小明的朋友們已經排

java語言搭建app後臺入門

最近由於後臺開發人員有其他任務,導致app後臺開發人手不夠,因此公司讓我自己學習寫伺服器介面。在學習java基礎後,發現不知道下一步該學習什麼知識點,javaweb裡的知識點,相關框架太多。在遇到專案比較緊急的時候,時間不允許我們按部就班學習所有的知識點,因此這

HDU-A+B Problem 的Java題解 Java語言做ACM的注意事項

  A+B問題應該可以說是做起來最開心的ACM題目了,杭電上從1089~1096全都是A+B問題,雖然都是水題,但是在此處也貼出來算了,八道題隨便貼幾道,內容沒什麼好說的,就加加加~~~就行啦。  

java語言做hdu題目之輸入多行資料的方法

如果你在做hdu 1073,hdu 1075就會發現這個問題。 嘿嘿!這是給新手看的,,,畢竟這題讓我太糾結了,wa了不知道多少次了,心都塞了。 後來我發現是我的輸入方式不對,大家可以對比輸入的資料,當然前面兩題我都發在部落格裡了,可以在搜尋欄搜尋到。 錯誤的輸入: 錯誤

java實現檔案的複製功能

通過選擇合適的下列流進行檔案的複製     a)字元流(FileWriter FileReader)     b)位元組流(FileInputStream,FileOutputStream) 如下需求

java語言編寫一個“模擬借書系統”

<pre name="code" class="java">import java.util.*; public class book { private static int x;