1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          Java實現抽獎模塊的相關分享

          來源:互聯網轉載 時間:2024-01-29 08:19:59

          Java實現抽獎模塊的相關分享

          最近進行的項目中,有個抽獎的需求,今天就把相關代碼給大家分享一下。

          一、DAO層

          /** * 獲取獎品列表 * @param systemVersion 手機系統版本(1-安卓 2-iOS) * @Date: 2021/6/7 */ List<LuckyPrize> getPrizeList(int systemVersion);

          二、mapper.xml

          <select >? ? ? ? select *? ? ? ? FROM system_card sc? ? ? ?LEFT JOIN lucky_prize lp ON sc.system_card_id = lp.system_card_id? ? ? ? WHERE sc.`status` = 1? ? ? ? ? AND sc.category = 3? ? ? ? ? AND sc.system_version = #{systemVersion}? ? </select>

          三、service層

          //簽到抽獎LuckyPrizeVo startSignDraw(Integer systemVersion);//積分抽獎LuckyPrizeVo startIntegralDraw(Integer systemVersion);

          其中入參systemVersion為手機系統,1是安卓 2是蘋果

          四、實現層

          查看代碼

           /**     * 開始簽到抽獎     */    @Override    public LuckyPrizeVo startSignDraw(Integer systemVersion) {        //判斷用戶是否有抽獎機會        String userId = TokenUtil.getUserId();        UserSign userSign = userSignMapper.selectOne(new QueryWrapper<UserSign>().eq("user_id", userId).eq("luck_chance", 1));        if (null == userSign) {            throw new BusinessException("連續成功簽到7天才可參與抽獎!");        }        //判斷上次簽到時間是否在本周        Date nowTime = new Date();        Date lastSignTime = userSign.getLastSignTime();        boolean flag = DateUtil.isSameWeek(nowTime, lastSignTime);        if (!flag) {            throw new BusinessException("連續成功簽到7天才可參與轉盤抽獎");        }        //同一周的,可以抽獎,調用定義的私有方法:luckyDraw(systemVersion)        LuckyPrizeVo luckyPrizeVo = luckyDraw(systemVersion);        //中獎了        //用戶簽到機會 改為0        userSign.setLuckChance(0);        userSignMapper.updateById(userSign);        //記錄表添加一條數據        LuckyPrizeLog luckyPrizeLog = new LuckyPrizeLog();        luckyPrizeLog.setLogId(SnowflakeUtil.genId());        luckyPrizeLog.setLuckyPrizeId(luckyPrizeVo.getLuckyPrizeId());        luckyPrizeLog.setUserId(userId);        luckyPrizeLog.setPrizeName(luckyPrizeVo.getCardName());        luckyPrizeLog.setCreateTime(nowTime);        luckyPrizeLogMapper.insert(luckyPrizeLog);        //用戶卡卷添加一條數據        UserCard userCard = new UserCard();        userCard.setUserCardId(SnowflakeUtil.genId());        userCard.setUserId(userId);        userCard.setSystemCardId(luckyPrizeVo.getSystemCardId());        int systemCardType = luckyPrizeVo.getSystemCardType();        userCard.setType(systemCardType);        userCard.setStatus(0);        userCard.setCreateTime(nowTime);        if (systemCardType == 1 || systemCardType == 2) {            //折扣卷和體驗卷有效期為30天            Calendar calendar = Calendar.getInstance();            calendar.add(Calendar.DATE, 30);            Date date = calendar.getTime();            userCard.setExpirationDate(date);        }        userCard.setRules(luckyPrizeVo.getSystemRules());        userCardMapper.insert(userCard);        return luckyPrizeVo;    }

          查看代碼

           ? ?/**     * 開始積分抽獎     */    @Override    public LuckyPrizeVo startIntegralDraw(Integer systemVersion) {        //判斷用戶是否有抽獎資格(100積分抽一次)        String userId = TokenUtil.getUserId();        UserExperience userExperience = userExperienceMapper.selectById(userId);        if (null == userExperience) {            throw new BusinessException("您的積分異常");        }        int integral = userExperience.getIntegral();        //積分滿100,抽一次        int score = 100;        if (integral < score) {            throw new BusinessException("您的積分不足,無法參與抽獎");        }        LuckyPrizeVo luckyPrizeVo = luckyDraw(systemVersion);        //中獎了        //更新用戶積分        int newIntegral = integral - 100;        userExperience.setIntegral(newIntegral);        userExperienceMapper.updateById(userExperience);        Date nowTime = new Date();        //記錄表添加一條數據        LuckyPrizeLog luckyPrizeLog = new LuckyPrizeLog();        luckyPrizeLog.setLogId(SnowflakeUtil.genId());        luckyPrizeLog.setLuckyPrizeId(luckyPrizeVo.getLuckyPrizeId());        luckyPrizeLog.setUserId(userId);        luckyPrizeLog.setPrizeName(luckyPrizeVo.getCardName());        luckyPrizeLog.setCreateTime(nowTime);        luckyPrizeLogMapper.insert(luckyPrizeLog);        //用戶卡卷添加一條數據        UserCard userCard = new UserCard();        userCard.setUserCardId(SnowflakeUtil.genId());        userCard.setUserId(userId);        userCard.setSystemCardId(luckyPrizeVo.getSystemCardId());        int systemCardType = luckyPrizeVo.getSystemCardType();        userCard.setType(systemCardType);        userCard.setStatus(0);        userCard.setCreateTime(nowTime);        if (systemCardType == 1 || systemCardType == 2) {            //折扣卷和體驗卷有效期為30天            Calendar calendar = Calendar.getInstance();            calendar.add(Calendar.DATE, 30);            Date date = calendar.getTime();            userCard.setExpirationDate(date);        }        userCard.setRules(luckyPrizeVo.getSystemRules());        userCardMapper.insert(userCard);        return luckyPrizeVo;    }

          提示:

          1.可能我的需求與大家不一樣,具體還是要看各位的需求要有所改動,但大體的思路可以參考我的代碼;2.項目中,繼承了mabytis-plus,還封裝了一些工具類,以及結果的統一處理。

          五、Controller層

              @PostMapping("/startSignDraw")    @ApiOperation(value = "簽到抽獎")    @Log(title = "簽到抽獎")    public String startSignDraw(@RequestBody SystemVersionDto dto) {        LuckyPrizeVo luckyPrizeVo = luckyPrizeService.startSignDraw(Integer.valueOf(dto.getSystemVersion()));        return Result.success(luckyPrizeVo);    }    @PostMapping("/startIntegralDraw")    @ApiOperation(value = "積分抽獎")    @Log(title = "積分抽獎")    public String startIntegralDraw(@RequestBody SystemVersionDto dto) {        LuckyPrizeVo luckyPrizeVo = luckyPrizeService.startIntegralDraw(Integer.valueOf(dto.getSystemVersion()));        return Result.success(luckyPrizeVo);    }

          最后,附上建表sql:六、建表SQL語句

          CREATE TABLE `lucky_prize` (  `lucky_prize_id` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '獎品id',  `system_card_id` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '系統卡卷id',  `system_version` tinyint(1) DEFAULT NULL COMMENT '手機系統版本(1-安卓 2-iOS)',  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '備注',  `probability` double(3,2) NOT NULL COMMENT '抽獎概率',  `num` int DEFAULT NULL COMMENT '獎品數量',  PRIMARY KEY (`lucky_prize_id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='獎品表';
          CREATE TABLE `lucky_prize_log` (  `log_id` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '記錄id',  `lucky_prize_id` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '獎品id',  `user_id` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '抽獎用戶id',  `prize_name` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '獎品名稱',  `create_time` datetime DEFAULT NULL COMMENT '抽獎時間',  PRIMARY KEY (`log_id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='抽獎記錄表';
          CREATE TABLE `system_card` (  `system_card_id` char(18) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '系統卡卷id',  `card_name` char(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '卡卷名稱',  `type` tinyint(1) NOT NULL COMMENT '卡卷類型(0謝謝參與卷 1折扣卷 2vip體驗卷 3經驗卷)',  `count` int DEFAULT NULL COMMENT '卡卷數量(個)',  `is_count` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否有數量(0否 1是)默認為0',  `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '狀態(0未啟用,1已啟用,2已下線) 默認為1',  `failure_time` tinyint(1) NOT NULL COMMENT '卡卷時效時間(天)',  `is_failure_time` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否有時效時間(0否 1是)默認為0',  `create_time` datetime NOT NULL ON update CURRENT_TIMESTAMP COMMENT '創建時間',  `update_time` datetime DEFAULT NULL COMMENT '修改時間',  `remark` char(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '備注',  `rules` double(5,2) NOT NULL COMMENT '卡卷規則',  `category` tinyint(1) DEFAULT NULL COMMENT '卡卷種類(1-普通類 2-積分兌換類 3-轉盤類)',  `system_version` tinyint(1) DEFAULT NULL COMMENT '手機系統版本(1-安卓 2-iOS)',  `required_points` int DEFAULT NULL COMMENT '積分卷所需積分',  PRIMARY KEY (`system_card_id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='系統卡卷';
          CREATE TABLE `user_sign` (  `user_id` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用戶id',  `is_monday` tinyint(1) DEFAULT '0' COMMENT '周一是否簽到(0無 1有)',  `is_tuesday` tinyint(1) DEFAULT '0' COMMENT '周二是否簽到(0無 1有)',  `is_wednesday` tinyint(1) DEFAULT '0' COMMENT '周三是否簽到(0無 1有)',  `is_thursday` tinyint(1) DEFAULT '0' COMMENT '周四是否簽到(0無 1有)',  `is_friday` tinyint(1) DEFAULT '0' COMMENT '周五是否簽到(0無 1有)',  `is_saturday` tinyint(1) DEFAULT '0' COMMENT '周六是否簽到(0無 1有)',  `is_sunday` tinyint(1) DEFAULT '0' COMMENT '周末是否簽到(0無 1有)',  `last_sign_time` datetime DEFAULT NULL COMMENT '最近一次簽到時間',  `luck_chance` tinyint(1) DEFAULT '0' COMMENT '抽獎機會(0無 1有)',  PRIMARY KEY (`user_id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='用戶簽到記錄表';
          標簽:lucky prize-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          ps4發售上市時間?國行PS4主機于2014年12月12日零點開啟國內預售,2015年1月11日正式發售。Ps4多少年前出的?八年前,2014年2月22日是PS4在日本發售的日子,而國行的PS4是2015年3月20日發售的。到目前為止,PS4銷量已經超過1.169億臺,足以稱得上流行硬件。PlayStation4是索尼銷售的一款固定家用游戲機,被親切地稱為 "PS4 "被游戲玩家。如序列號所示,...

          石家莊哪個公園可以教武術?石家莊的莊禹錫公園、撒瑪利亞公園等公園都可以教武術。這些地方又寬又安靜。石家莊現在最好的武術培訓班是哪里?石家莊高新區德武門武術培訓中心。石家莊高新區德武門武術培訓中心成立于2017年8月24日,注冊資金0.02萬元。經營者為閆偉通,經營狀態為存續,工商注冊號為130101600149409。注冊地址為高新區祁連街便民市場A區02號,經營范圍包括健身、跆拳道培訓服務。* ...

          蘋果怎樣添加軟件源?1. 越獄后第一次打開Cydia需要很長時間才能加載,等待設備重新啟動后再打開Cydia;2。打開Cydia后,單擊下面的“軟件源”;3。單擊右上角的“編輯添加”;4。在輸入框中輸入源地址。如果輸入ACE assistant的源地址:apt.so/I4工具輸入后,單擊添加源;5。將驗證URL,并在通過后自動安裝源代碼。等待完成后,點擊“返回Cydia”6。添加之后,您可以在軟件...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>