Java 抽奖抢购算法
  E6sLcfR2qjJp 2023年11月02日 30 0

Java 抽奖抢购算法

Java 抽奖抢购算法_sql

本文示例为大家分享了java抽奖抢购算法,供大家参考,具体内容如下 应用场景 单件奖品抢购(可限时) 多件奖品按概率中奖(可限时、可不限量) 代码实现 表结构: --抽奖设置 create table AWARD_INFO ( ID NUMBER(11) not null, ACT_ID NUMBER(11), --活动ID NUM NUMBER(11), --奖品总量(0为不限量) REST NUMBER(11), --奖品余量 ODDS NUMBER(11) default 0, --中奖概率 START_DATE DATE, --开始日期(可为空) END_DATE DATE, --结束日期(可为空) PRODUCT_ID NUMBER(11), --奖品ID STATE NUMBER(5) default 0, --状态 0-有效 1-失效 INFO_TYPE NUMBER(5) default 0 --0-正常 ); alter table AWARD_INFO add constraint PK_AWARD_INFO primary key (ID); --中奖纪录 create table AWARD_LOG ( id number(11), act_id number(11), --活动ID get_time date, --中奖时间 product_id number(11), --奖品ID num number(11) default 1, --中奖数量 person varchar2(50), --中奖人 info_id number(11), --抽奖设置ID state number(5) --状态 0-有效 1-失效 ); alter table AWARD_LOG add constraint PK_AWARD_LOG primary key (ID); 代码: public static class AwardResult{ public int ret; //返回结果 public int logId; //AWARD_LOG id } /** * 抽奖算法 * @param actId 抽奖活动ID * @param person 抽奖人 * @param productId 奖品ID -1则为该活动ID下所有奖品 * @param excludeId 排除奖品ID -1 则不排除,与productId不能同时>0 * @param checkDate 是否检查时间 * @return -1 没有抽奖数据;-2 奖品已抽完; -3 其他错误;>=0 中奖productId; -4 排除id * @throws Exception */ public static AwardResult getAwardFull(int actId, String person, int productId, int[] excludeIds, boolean checkDate) throws SQLException{ AwardResult result = new AwardResult(); Connection conn = JDBC.getConnection(); conn.setAutoCommit(false); try{ List> rows; String sql; String checkDateStr = ""; String baseSql = "select t.id, t.product_id, t.num, t.rest, t.odds, t.info_type from award_info t where t.act_id=? and t.state=0 "; if(checkDate){ checkDateStr = " and t.start_Date <= sysdate and t.end_Date >= sysdate "; } if(productId > 0){//抢购 sql = baseSql + " and t.product_id=http://? " + checkDateStr + " for update"; rows = JDBC.getRows(sql, new Object[]{actId, productId}, conn); }else{//活动所有物品抽奖 sql = baseSql + checkDateStr + " for update"; rows = JDBC.getRows(sql, new Object[]{actId}, conn); } if(rows.isEmpty()){//没有抽奖数据 log.info("没有抽奖数据 actId={} person={} productId={} excludeId 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  KRe60ogUm4le   2024年05月03日   53   0   0 javascala
E6sLcfR2qjJp
最新推荐 更多

2024-05-31