diff --git a/WebContent/WEB-INF/classes/mapper/LotteryDao.xml b/WebContent/WEB-INF/classes/mapper/LotteryDao.xml index 9c5431c..77506b3 100644 --- a/WebContent/WEB-INF/classes/mapper/LotteryDao.xml +++ b/WebContent/WEB-INF/classes/mapper/LotteryDao.xml @@ -1,49 +1,58 @@ - + select a.*,b.nickname,b.logo from lotterylog a + left join fans b on a.fansid=b.id + + + and a.status=#{status} + + + + and (b.nickname like CONCAT(CONCAT('%',#{keyword}),'%') or a.prize_name + like CONCAT(CONCAT('%',#{keyword}),'%') ) + + + + and a.turn=#{turn} + + + + and a.mny > 0 + + ORDER BY a.createdtime desc limit #{0},#{1} - - - - - + + + + + \ No newline at end of file diff --git a/src/com/w1hd/zzhnc/controller/pc/ActivityController.java b/src/com/w1hd/zzhnc/controller/pc/ActivityController.java index 6b4af20..8a2ebe4 100644 --- a/src/com/w1hd/zzhnc/controller/pc/ActivityController.java +++ b/src/com/w1hd/zzhnc/controller/pc/ActivityController.java @@ -117,10 +117,11 @@ public class ActivityController extends BaseController { @RequestMapping(value = "/lotterys", method = { RequestMethod.POST, RequestMethod.GET }) @ResponseBody public Object lotterys(@RequestParam(value = "page", defaultValue = "1", required = false) Integer page, - @RequestParam(value = "pagesize", defaultValue = "10", required = false) Integer pagesize, + @RequestParam(value = "pagesize", defaultValue = "20", required = false) Integer pagesize, @RequestParam(value = "turn", defaultValue = "0", required = false) Integer turn, @RequestParam(value = "keyword", defaultValue = "", required = false) String keyword, - @RequestParam(value = "status", required = false) Integer status) { - return new Vo_msg(0, activityService.getLotteryLogList(page, pagesize, turn, keyword, status)); + @RequestParam(value = "status", required = false) Integer status, + @RequestParam(value = "type", required = false) Integer type) { + return new Vo_msg(0, activityService.getLotteryLogList(page, pagesize, turn, keyword, status,type)); } } diff --git a/src/com/w1hd/zzhnc/controller/pc/FansController.java b/src/com/w1hd/zzhnc/controller/pc/FansController.java index a714fa8..9a625a8 100644 --- a/src/com/w1hd/zzhnc/controller/pc/FansController.java +++ b/src/com/w1hd/zzhnc/controller/pc/FansController.java @@ -17,7 +17,9 @@ public class FansController { FansService fansService; @RequestMapping(value="/search",method= RequestMethod.GET) - public Object search(@RequestParam(value="page",defaultValue ="1")int page,@RequestParam(value="keyword",required=false) String keyword) { - return fansService.getFansList(page, keyword); + public Object search(@RequestParam(value="page",defaultValue ="1")int page, + @RequestParam(value="keyword",required=false) String keyword, + @RequestParam(value = "size", required = false, defaultValue = "20") Integer size) { + return fansService.getFansList(page, keyword,size); } } diff --git a/src/com/w1hd/zzhnc/controller/pc/GoodsController.java b/src/com/w1hd/zzhnc/controller/pc/GoodsController.java index 34b8220..7af466a 100644 --- a/src/com/w1hd/zzhnc/controller/pc/GoodsController.java +++ b/src/com/w1hd/zzhnc/controller/pc/GoodsController.java @@ -51,7 +51,7 @@ public class GoodsController { @RequestParam(value="id",required=false,defaultValue = "0")Integer id, @RequestParam(value="sellerId",required=false,defaultValue = "0")Integer sellerId, @RequestParam(value="page",required=false,defaultValue = "1")Integer page, - @RequestParam(value="size",required=false,defaultValue = "10")Integer size, + @RequestParam(value="size",required=false,defaultValue = "20")Integer size, @RequestParam(value="sort",required=false,defaultValue = "1")Integer sort) { return new Vo_msg(0,goodsService.seacrh(id,key,sellerId,page,size,sort)); } diff --git a/src/com/w1hd/zzhnc/controller/wx/WxMiniController.java b/src/com/w1hd/zzhnc/controller/wx/WxMiniController.java index 87128e9..824af62 100644 --- a/src/com/w1hd/zzhnc/controller/wx/WxMiniController.java +++ b/src/com/w1hd/zzhnc/controller/wx/WxMiniController.java @@ -33,6 +33,7 @@ import org.theyeasy.weixin.util.WxMiniUtil; import com.beust.jcommander.internal.Maps; import com.w1hd.zzhnc.controller.pc.BaseController; import com.w1hd.zzhnc.dao.LotteryLogDao; +import com.w1hd.zzhnc.enums.ActivityStatus; import com.w1hd.zzhnc.enums.ChatLogReplyType; import com.w1hd.zzhnc.model.Activity; import com.w1hd.zzhnc.model.Articles; @@ -333,8 +334,24 @@ public class WxMiniController extends BaseController { @RequestMapping(value = "/prizes/kill", method = RequestMethod.GET) @ResponseBody public Object prizesKill(@RequestParam(value = "openId") String openId) { + String key = "prizeskill_openid_" + openId; + if (redisTemplate.hasKey(key)) { + System.out.println("注意:重复抽奖"); + return new Vo_msg(-1, null, "本次活动已结束~请期待下次抽奖活动"); + } + redisTemplate.opsForValue().set(key,1L); + redisTemplate.expire(key, 3, TimeUnit.SECONDS); + + Fans fans = fansService.getFansByMiniOpenid(openId); Activity activity = activityService.getActivitySetting(); + if(activity.getStatus() != ActivityStatus.RUNNING.getIndex() ) { + if(activity.getStatus() == ActivityStatus.FINISH.getIndex()) { + new Vo_msg(-1, null, "活动已经结束了"); + }else { + new Vo_msg(-1, null, "活动还没有开始"); + } + } String city = activity.getCity(); // 粉丝城市 String fansCity = fans.getCity(); @@ -345,12 +362,22 @@ public class WxMiniController extends BaseController { String msg = "红包活动仅限【" + city + "】,您的城市【" + fansCity + "】不在本次活动范围内,不能参与抽奖哦~~"; return new Vo_msg(-1, null, msg); } + int compareTo = activity.getPlanMny().compareTo(activity.getCurrentMny()); + if(compareTo<0) { + return new Vo_msg(-1, null, "本次活动已结束~请期待下次抽奖活动"); + } // 指定城市范围 Integer changes = prizeService.changes(fans.getId()); if (changes > 0) { Integer logId = prizeService.randomKill(fans.getId(), 0); - Lotterylog log = prizeService.getLog(logId); - return new Vo_msg(0, log); + if(logId<0) { + + return new Vo_msg(-1, null, "系统繁忙,请稍后再试"); + }else { + Lotterylog log = prizeService.getLog(logId); + return new Vo_msg(0, log); + } + } return new Vo_msg(-1, null, "你没有抽奖机会了"); @@ -364,6 +391,7 @@ public class WxMiniController extends BaseController { if (compareTo < 0) { return new Vo_msg(-1, 0, "活动还没开始"); } + Fans fans = fansService.getFansByMiniOpenid(openId); Integer changes = prizeService.changes(fans.getId()); if (changes < 0) { diff --git a/src/com/w1hd/zzhnc/dao/LotteryLogDao.java b/src/com/w1hd/zzhnc/dao/LotteryLogDao.java index 2282a0d..9a0e876 100644 --- a/src/com/w1hd/zzhnc/dao/LotteryLogDao.java +++ b/src/com/w1hd/zzhnc/dao/LotteryLogDao.java @@ -13,9 +13,9 @@ import com.w1hd.zzhnc.vo.Lotterylog_Vo; public interface LotteryLogDao extends MyMapper { List getLotteryLogList(Integer page,Integer pagesize,@Param("turn") Integer turn, - @Param("keyword")String keyword,@Param("status")Integer status); + @Param("keyword")String keyword,@Param("status")Integer status,@Param("type")Integer type); - int getLotteryLogCount(@Param("turn") Integer turn,@Param("status")Integer status); + int getLotteryLogCount(@Param("turn") Integer turn,@Param("status")Integer status,@Param("type")Integer type); BigDecimal getSumMny(@Param("turn") Integer turn,@Param("status")Integer status); } diff --git a/src/com/w1hd/zzhnc/service/ActivityService.java b/src/com/w1hd/zzhnc/service/ActivityService.java index 142c974..e8b3e0f 100644 --- a/src/com/w1hd/zzhnc/service/ActivityService.java +++ b/src/com/w1hd/zzhnc/service/ActivityService.java @@ -87,11 +87,11 @@ public class ActivityService { } public PageResults getLotteryLogList(Integer page, Integer pagesize, Integer turn, String keyword, - Integer status) { + Integer status,Integer type) { PageResults pageResults = new PageResults<>(); - List list = logDao.getLotteryLogList((page - 1) * pagesize, pagesize, turn, keyword, status); - int total = logDao.getLotteryLogCount(turn, status); + List list = logDao.getLotteryLogList((page - 1) * pagesize, pagesize, turn, keyword, status,type); + int total = logDao.getLotteryLogCount(turn, status,type); BigDecimal bMny = logDao.getSumMny(turn, status); double mny = bMny == null ? 0 : bMny.doubleValue(); if (status!=null && status == 2) { diff --git a/src/com/w1hd/zzhnc/service/FansService.java b/src/com/w1hd/zzhnc/service/FansService.java index cd9182e..3e96eea 100644 --- a/src/com/w1hd/zzhnc/service/FansService.java +++ b/src/com/w1hd/zzhnc/service/FansService.java @@ -35,18 +35,19 @@ public class FansService { @Autowired FansDao fansDao; - public PageResults getFansList(Integer page, String keyword) { + public PageResults getFansList(Integer page, String keyword,Integer pageSize) { Example ex = new Example(Fans.class); Criteria criteria = ex.createCriteria(); if (!Strings.isNullOrEmpty(keyword)) { criteria.andCondition(" ( nickname like \"%" + keyword + "%\")"); } - RowBounds row = new RowBounds((page - 1) * 10, 10); + ex.setOrderByClause("id desc"); + RowBounds row = new RowBounds((page - 1) * 10, pageSize); List list = fansDao.selectByExampleAndRowBounds(ex, row); int total = fansDao.selectCountByExample(ex); PageResults pageresult = new PageResults<>(); pageresult.setPage(page); - pageresult.setPageSize(10); + pageresult.setPageSize(pageSize); pageresult.setRows(list); pageresult.setTotal(total); return pageresult; diff --git a/src/com/w1hd/zzhnc/service/PrizeService.java b/src/com/w1hd/zzhnc/service/PrizeService.java index b5dacce..63fdbcf 100644 --- a/src/com/w1hd/zzhnc/service/PrizeService.java +++ b/src/com/w1hd/zzhnc/service/PrizeService.java @@ -85,7 +85,7 @@ public class PrizeService { @Transactional public Integer insert(Integer fansId, Integer pType, BigDecimal mny, Integer status) throws Exception { Activity setting = activityService.getActivitySetting(); - System.out.println("中奖id号:" + pType); + System.out.println("中奖id号:" + pType + "粉丝id:" + fansId); Prize p = prizeDao.selectByPrimaryKey(pType); p.setNum(p.getNum() - 1); prizeDao.updateByPrimaryKeySelective(p); @@ -112,7 +112,7 @@ public class PrizeService { if ("fail".equals(order)) { lotterylog.setStatus(3); } - + } } @@ -210,7 +210,10 @@ public class PrizeService { } int changes = fansCount / shareCount; changes = changes - lotteryCount; - changes = changes + 1; + if (shareCount == 1) { + changes = changes + 1; + } + if (changes > MAX_CHANGES) { changes = MAX_CHANGES; } @@ -220,19 +223,24 @@ public class PrizeService { @SuppressWarnings("unchecked") public Integer randomKill(Integer fansId, Integer count) { - if (fansId <= 10) { - Integer changes = (Integer) redisTemplate.opsForValue().get(PRIZE_KILL_FANSID_COUNT + fansId); - if (changes == null) { - changes = 99; - } - changes--; - redisTemplate.opsForValue().set(PRIZE_KILL_FANSID_COUNT + fansId, changes); - } + // if (fansId <= 10) { + // Integer changes = (Integer) + // redisTemplate.opsForValue().get(PRIZE_KILL_FANSID_COUNT + fansId); + // if (changes == null) { + // changes = 99; + // } + // changes--; + // redisTemplate.opsForValue().set(PRIZE_KILL_FANSID_COUNT + fansId, changes); + // } if (count == 8) { return 0; } - redisTemplate.delete(PRIZE_KILL_FANSID + fansId); + + if (redisTemplate.hasKey(PRIZE_KILL_FANSID + fansId)) { + Integer id = (Integer) redisTemplate.opsForValue().get(PRIZE_KILL_FANSID + fansId); + return -1; + } int nextInt = RandomUtils.nextInt(0, 100); System.out.println("幸运数字 ---》》》" + nextInt); int sumNum = 0; @@ -254,13 +262,15 @@ public class PrizeService { System.out.println("随机数大于总的中奖概率 随机数:" + nextInt + ",中奖总概率" + sumPro); if (tmp != null) { try { - logId = insert(fansId, tmp.getId(), new BigDecimal(mny * 0.01).setScale(2, RoundingMode.HALF_UP), 3); + logId = insert(fansId, tmp.getId(), new BigDecimal(mny * 0.01).setScale(2, RoundingMode.HALF_UP), + 3); } catch (Exception e) { e.printStackTrace(); - return 1; + return -1; } } } else { + int probability = 0; for (Prize e : prizeList) { @@ -269,10 +279,24 @@ public class PrizeService { mny = RandomUtils.nextInt(e.getMixMoney(), e.getMaxMoney()); } try { + RedisUtil.incr(PRIZE_KILL_FANSID_COUNT + fansId); + String countStr = RedisUtil.get(PRIZE_KILL_FANSID_COUNT + fansId); + if (Strings.isNullOrEmpty(countStr)) { + RedisUtil.set(PRIZE_KILL_FANSID_COUNT + fansId, "1"); + } else { + Integer sum = Integer.parseInt(countStr); + System.out.println("当前抽奖次数 >>>>" + sum); + if (sum > 3) { + return -1; + } else { + + } + } + logId = insert(fansId, e.getId(), new BigDecimal(mny * 0.01).setScale(2, RoundingMode.HALF_UP)); } catch (Exception e1) { e1.printStackTrace(); - return 1; + return -1; } break; } else {