好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

java实现app签到功能

本文实例为大家分享了java实现app签到功能的具体代码,供大家参考,具体内容如下

1.首先设计二张表,第一张表sign_calc记录用户连续签到次数,字段id,user_id,continue_days,第二张表sign_detail签到详情表id,user_id,sign_date。

2.app端用户点击签到接口controller如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

/***

    * 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;

   }

领取连续签到奖励接口:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

/***

    * 领取连续签到奖励接口(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;

   }

签到页面的接口:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

/***

    * 签到页面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;

   }

效果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

原文链接:https://blog.csdn.net/haibo8023/article/details/76725370

查看更多关于java实现app签到功能的详细内容...

  阅读:26次