好得很程序员自学网

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

APP转盘抽奖Java服务端接口详解

应公司需求开发一个微信公众号中抽奖活动

功能: 奖品及中奖概率可在后台配置,滚动刷新中奖名单,控制用户每日抽奖次数等。

规则: 在活动期间,每日可抽奖一次,中奖后填写个人信息以便奖品的配送。

1.获取抽奖页面数据

?

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

/**

  * 获取抽奖页面数据

  * @param request

  * @param response

  * @return

  * @throws servletexception

  * @throws ioexception

  */

@requestmapping (value= "/querylotteryactivity" )

@responsebody

public appintreturn querylotteryactivity(httpservletrequest request, httpservletresponse response)

  throws servletexception, ioexception {

  appintreturn res = new appintreturn();

 

  // 用户同意授权后,能获取到code

  string code = request.getparameter( "code" );

 

  // 用户同意授权

  if (! "authdeny" .equals(code)) {

  // 获取网页授权access_token

  weixinoauth2token weixinoauth2token = commonutil

  .getoauth2accesstoken(configutil.appid, configutil.app_secrect, code);

  // 用户标识

  string openid = weixinoauth2token.getopenid();

 

  if (!stringutil.isempty(openid)){

 

  // 查询用户信息

  list<cxhwechatmember> memberlist = applotteryservice.getmemberlist(openid);

  // 操作次数

  int opernum = 1 ; // 可写成后台可配置的

  if (memberlist != null && memberlist.size() > 0 ){

  opernum = opernum - memberlist.size();

  /*// 获取用户信息

  string accesstoken = commonutil.getaccesstoken(configutil.appid, configutil.app_secrect).gettoken();

  cxhwechatmember = commonutil.getwechatmemberinfo(accesstoken, openid);

  // 保存用户信息

  applotteryservice.savememberinfo(cxhwechatmember);*/

  }

 

  if ( null == request.getparameter( "activityid" ) || "" .equals(request.getparameter( "activityid" ))){

  res.setresult( "-2" );

  res.setmsg( "参数错误" );

  return res;

  }

  // 查询活动信息

  cxhvoteactivity cxhvoteactivity = applotteryservice.getactivityinfo(request.getparameter( "activityid" ));

  if ( null == cxhvoteactivity){

  res.setresult( "-3" );

  res.setmsg( "暂无该类活动" );

  return res;

  }

  cxhvoteaward cxhvoteaward = new cxhvoteaward();

  cxhvoteaward.setcxhvoteactivity(cxhvoteactivity);

  // 查询奖品列表

  list<cxhvoteaward> awardlist = applotteryservice.findawardlist(cxhvoteaward);

 

  // 返回map

  map<string, object> rtnmap = new hashmap<string, object>();

  rtnmap.put( "activity" , cxhvoteactivity);

  rtnmap.put( "awardlist" , awardlist);

  rtnmap.put( "opernum" , opernum);

  rtnmap.put( "openid" , openid);

 

  res.setresult( "0" );

  res.setmsg( "请求成功" );

  res.setdata(rtnmap);

  } else {

  res.setresult( "-1" );

  res.setmsg( "授权失败" );

  }

 

  } else {

  res.setresult( "-1" );

  res.setmsg( "授权失败" );

  }

  return res;

}

2.中奖名单接口

?

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

/**

  * 中奖名单接口

  * @author lee

  * @return

  */

@responsebody

@requestmapping (value = "/winningmemberlist" )

public object querywinningmemberlist(httpservletrequest request, httpservletresponse response) {

  applistreturn appresult = new applistreturn();

  try {

  cxhwechatmember cxhwechatmember = new cxhwechatmember();

  cxhwechatmember.setiswinning( "1" ); // 中奖

  // 查询中奖用户名单(分页)

  page<cxhwechatmember> pagelist = applotteryservice.findpage( new page<cxhwechatmember>(request, response), cxhwechatmember);

  appresult.setdata(pagelist.getlist());

  appresult.setpagenumber(pagelist.getpageno());

  appresult.setpagesize(pagelist.getpagesize());

  appresult.settotal(( int ) pagelist.getcount());

  appresult.settotalpages(pagelist.gettotalpage());

  appresult.setresult( 0 );

  appresult.setmsg( "成功" );

  } catch (exception e) {

  appresult.setresult(- 9 );

  appresult.setmsg( "系统异常" );

  logger.info(e.tostring(), e);

  }

  return appresult;

}

3.抽奖接口

?

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

/**

  * 抽奖接口

  * @author lee

  * @return

  */

@responsebody

@requestmapping (value = "/dolottery" )

public object dolottery(httpservletrequest request, httpservletresponse response) {

  applistreturn appresult = new applistreturn();

  // 返回map

  map<string, object> rtnmap = new hashmap<string, object>();

  string activityid = request.getparameter( "activityid" );

  string openid = request.getparameter( "openid" );

  try {

 

  if ( null == activityid || "" .equals(activityid) || null == openid || "" .equals(openid)){

  appresult.setresult(- 2 );

  appresult.setmsg( "参数错误" );

  return appresult;

  }

  // 查询活动信息

  cxhvoteactivity cxhvoteactivity = applotteryservice.getactivityinfo(request.getparameter( "activityid" ));

  if ( null == cxhvoteactivity){

  appresult.setresult(- 3 );

  appresult.setmsg( "暂无该类活动" );

  return appresult;

  }

  cxhvoteaward cxhvoteaward = new cxhvoteaward();

  cxhvoteaward.setcxhvoteactivity(cxhvoteactivity);

  // 查询奖品列表

  list<cxhvoteaward> awardlist = applotteryservice.findawardlist(cxhvoteaward);

 

  random rd = new random();

  double dd = rd.nextdouble();

  double before = 0 ;

  double end = 0 ;

  cxhvoteaward.setlevel( "5" ); // 5-未中奖

 

  // 计算中奖概率

  for ( int i = 0 ; i < awardlist.size(); i++) {

  if (i > 0 ){

  before += awardlist.get(i- 1 ).getrate().doublevalue();

  }

  end += awardlist.get(i).getrate().doublevalue();

  if (dd >= before && dd < end){

  if (awardlist.get(i).getleftnum() > 0 ){

   // 中奖奖品

   cxhvoteaward = awardlist.get(i);

   // 修改奖品剩余数量

   cxhvoteaward.setleftnum(cxhvoteaward.getleftnum() - 1 );

   applotteryservice.updateawardnumber(cxhvoteaward);

  }

  break ;

  }

  }

 

  // 新增用户操作记录

  string accesstoken = commonutil.getaccesstoken(configutil.appid, configutil.app_secrect).gettoken();

  cxhwechatmember cxhwechatmember = commonutil.getwechatmemberinfo(accesstoken, openid);

  cxhwechatmember.setid(idgen.uuid());

  cxhwechatmember.setjoindate( new date());

  cxhwechatmember.setdelflag( "0" );

  // 保存用户信息

  applotteryservice.savememberinfo(cxhwechatmember);

 

  rtnmap.put( "awardlevel" , cxhvoteaward.getlevel());

  rtnmap.put( "awardid" , cxhvoteaward.getid());

  appresult.setdata(rtnmap);

  appresult.setresult( 0 );

  appresult.setmsg( "成功" );

  } catch (exception e) {

  appresult.setresult(- 9 );

  appresult.setmsg( "系统异常" );

  logger.info(e.tostring(), e);

  }

  return appresult;

}

4.保存中奖用户信息的接口

?

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

/**

  * 保存中奖用户信息的接口

  * @author lee

  * @return

  */

@responsebody

@requestmapping (value = "/savememberinfo" )

public object savememberinfo(httpservletrequest request, httpservletresponse response) {

  applistreturn appresult = new applistreturn();

  try {

 

  // 用户同意授权后,能获取到code

  string openid = request.getparameter( "openid" );

  string username = request.getparameter( "username" );

  string phone = request.getparameter( "phone" );

  string address = request.getparameter( "address" );

  string awardlevel = request.getparameter( "awardlevel" );

  string awardid = request.getparameter( "awardid" );

 

  if ( null == username || "" .equals(username)

  || null == phone || "" .equals(phone)

  || null == address || "" .equals(address)

  || null == openid || "" .equals(openid)

  || null == awardlevel || "" .equals(awardlevel)

  || null == awardid || "" .equals(awardid)){

  appresult.setresult(- 2 );

  appresult.setmsg( "参数错误" );

  return appresult;

  }

 

  // 查询用户信息

  list<cxhwechatmember> memberlist = applotteryservice.getmemberlist(openid);

  cxhwechatmember cxhwechatmember = memberlist.get( 0 );

  cxhwechatmember.setusername(username);

  cxhwechatmember.setphone(phone);

  cxhwechatmember.setaddress(address);

  cxhwechatmember.setiswinning(awardlevel == "5" ? "0" : "1" );

  cxhwechatmember.setawardid(awardid);

  applotteryservice.update(cxhwechatmember);

 

  appresult.setresult( 0 );

  appresult.setmsg( "成功" );

 

  } catch (exception e) {

  appresult.setresult(- 9 );

  appresult.setmsg( "系统异常" );

  logger.info(e.tostring(), e);

  }

  return appresult;

}

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

原文链接:https://blog.csdn.net/lijie18/article/details/57983918

查看更多关于APP转盘抽奖Java服务端接口详解的详细内容...

  阅读:12次