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 count(*) from lotterylog
+
+
+ and status=#{status}
+
+
+
+ and turn=#{turn}
+
+
+
+ and mny > 0
+
+
+
+
+
+ select sum(mny) from lotterylog
+
+
+ and status=#{status}
+
+
+
+ and turn=#{turn}
+
+
+
\ 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 {