Commit fbba58c6 authored by 周健威's avatar 周健威

Merge remote-tracking branch 'origin/dev' into dev

parents 95e78cd2 170a5101
...@@ -75,8 +75,8 @@ public class ActivityAttendanceRecordBiz extends BaseBiz<ActivityAttendanceRecor ...@@ -75,8 +75,8 @@ public class ActivityAttendanceRecordBiz extends BaseBiz<ActivityAttendanceRecor
activityAttendanceRecord.setPositionName(appUserDTO.getPositionName()); activityAttendanceRecord.setPositionName(appUserDTO.getPositionName());
activityAttendanceRecord.setCrtTime(new Date()); activityAttendanceRecord.setCrtTime(new Date());
mapper.insertSelective(activityAttendanceRecord); mapper.insertSelective(activityAttendanceRecord);
String onlineKey = String.format("%d:%d:%d", appUserDTO.getUserid(), activityId, PrizeTypeEnum.ONLINE.getCode()); String onlineKey = String.format("%s%d:%d:%d", ActivityPrizeBiz.USER_LOTTERY_PRE_KEY,appUserDTO.getUserid(), activityId, PrizeTypeEnum.ONLINE.getCode());
String localeKey = String.format("%d:%d:%d", appUserDTO.getUserid(), activityId, PrizeTypeEnum.LOCALE.getCode()); String localeKey = String.format("%s%d:%d:%d",ActivityPrizeBiz.USER_LOTTERY_PRE_KEY,appUserDTO.getUserid(), activityId, PrizeTypeEnum.LOCALE.getCode());
redisTemplate.delete(Arrays.asList(onlineKey,localeKey)); redisTemplate.delete(Arrays.asList(onlineKey,localeKey));
valueOperations.set(onlineKey, 1L,expirDays, TimeUnit.DAYS); valueOperations.set(onlineKey, 1L,expirDays, TimeUnit.DAYS);
valueOperations.set(localeKey, 1L,expirDays, TimeUnit.DAYS); valueOperations.set(localeKey, 1L,expirDays, TimeUnit.DAYS);
...@@ -123,7 +123,7 @@ public class ActivityAttendanceRecordBiz extends BaseBiz<ActivityAttendanceRecor ...@@ -123,7 +123,7 @@ public class ActivityAttendanceRecordBiz extends BaseBiz<ActivityAttendanceRecor
} }
public Boolean hasNumberOfLuckyDrawByType(Integer activityId, Integer prizeType, Integer userid) { public Boolean hasNumberOfLuckyDrawByType(Integer activityId, Integer prizeType, Integer userid) {
Object lotteryNum = valueOperations.get(String.format("%d:%d:%d", userid, activityId, prizeType)); Object lotteryNum = valueOperations.get(String.format("%s%d:%d:%d",ActivityPrizeBiz.USER_LOTTERY_PRE_KEY,userid, activityId, prizeType));
if (lotteryNum!=null){ if (lotteryNum!=null){
return Integer.valueOf(lotteryNum.toString()) >0; return Integer.valueOf(lotteryNum.toString()) >0;
} }
...@@ -135,11 +135,11 @@ public class ActivityAttendanceRecordBiz extends BaseBiz<ActivityAttendanceRecor ...@@ -135,11 +135,11 @@ public class ActivityAttendanceRecordBiz extends BaseBiz<ActivityAttendanceRecor
return false; return false;
} }
if (prizeType == PrizeTypeEnum.ONLINE.getCode()){ if (prizeType == PrizeTypeEnum.ONLINE.getCode()){
valueOperations.set(String.format("%d:%d:%d", userid, activityId, prizeType),activityAttendanceRecord.getOnlineLotteryNum(),expirDays, TimeUnit.DAYS); valueOperations.set(String.format("%s%d:%d:%d",ActivityPrizeBiz.USER_LOTTERY_PRE_KEY, userid, activityId, prizeType),activityAttendanceRecord.getOnlineLotteryNum(),expirDays, TimeUnit.DAYS);
return activityAttendanceRecord.getOnlineLotteryNum()>0; return activityAttendanceRecord.getOnlineLotteryNum()>0;
} }
if (prizeType ==PrizeTypeEnum.LOCALE.getCode()){ if (prizeType ==PrizeTypeEnum.LOCALE.getCode()){
valueOperations.set(String.format("%d:%d:%d", userid, activityId, prizeType),activityAttendanceRecord.getLocaleLotteryNum(),expirDays, TimeUnit.DAYS); valueOperations.set(String.format("%s%d:%d:%d",ActivityPrizeBiz.USER_LOTTERY_PRE_KEY,userid, activityId, prizeType),activityAttendanceRecord.getLocaleLotteryNum(),expirDays, TimeUnit.DAYS);
return activityAttendanceRecord.getLocaleLotteryNum()>0; return activityAttendanceRecord.getLocaleLotteryNum()>0;
} }
return false; return false;
......
...@@ -59,6 +59,7 @@ public class ActivityPrizeBiz extends BaseBiz<ActivityPrizeMapper, ActivityPrize ...@@ -59,6 +59,7 @@ public class ActivityPrizeBiz extends BaseBiz<ActivityPrizeMapper, ActivityPrize
@Value("${lottery.expire.days:60}") @Value("${lottery.expire.days:60}")
private int expirDays; private int expirDays;
private static final String LOTTERY_PRE_KEY = "lottery:"; private static final String LOTTERY_PRE_KEY = "lottery:";
public static final String USER_LOTTERY_PRE_KEY = "user:lottery:";
/** /**
* 查询奖品 * 查询奖品
...@@ -151,7 +152,7 @@ public class ActivityPrizeBiz extends BaseBiz<ActivityPrizeMapper, ActivityPrize ...@@ -151,7 +152,7 @@ public class ActivityPrizeBiz extends BaseBiz<ActivityPrizeMapper, ActivityPrize
activityPrize.setSerialNumber(8); activityPrize.setSerialNumber(8);
return activityPrize; return activityPrize;
}); });
String lotteryNumKey = String.format("%d:%d:%d", appUserDTO.getUserid(), activityId, prizeType); String lotteryNumKey = String.format("%s%d:%d:%d",USER_LOTTERY_PRE_KEY, appUserDTO.getUserid(), activityId, prizeType);
Object lotteryNum = valueOperations.get(lotteryNumKey); Object lotteryNum = valueOperations.get(lotteryNumKey);
boolean hasLotteryNum = lotteryNum == null ? activityAttendanceRecordBiz.hasNumberOfLuckyDrawByType(activityId, prizeType, appUserDTO.getUserid()) : ((Integer) lotteryNum) > 0; boolean hasLotteryNum = lotteryNum == null ? activityAttendanceRecordBiz.hasNumberOfLuckyDrawByType(activityId, prizeType, appUserDTO.getUserid()) : ((Integer) lotteryNum) > 0;
if (hasLotteryNum) { if (hasLotteryNum) {
...@@ -187,15 +188,19 @@ public class ActivityPrizeBiz extends BaseBiz<ActivityPrizeMapper, ActivityPrize ...@@ -187,15 +188,19 @@ public class ActivityPrizeBiz extends BaseBiz<ActivityPrizeMapper, ActivityPrize
activityWinningRecord.setPrizeType(prizeType); activityWinningRecord.setPrizeType(prizeType);
activityWinningRecord.setUserId(appUserDTO.getUserid()); activityWinningRecord.setUserId(appUserDTO.getUserid());
activityWinningRecord.setHasWinning(0); activityWinningRecord.setHasWinning(0);
boolean hasStock = activityPrize.getPrizeGoodsType() != PrizeGoodsTypeEnum.NO_PRIZE.getCode() && activityPrize.getTotalStock() != 0 && prizeStock != null && (Integer) prizeStock != 0; boolean hasStock = activityPrize.getPrizeGoodsType() != PrizeGoodsTypeEnum.NO_PRIZE.getCode()
&& activityPrize.getTotalStock() != null
&& activityPrize.getTotalStock()!=0
&& prizeStock != null
&& (Integer) prizeStock != 0;
if (hasStock) { if (hasStock) {
String key = String.format("%s%d:%d:%d", LOTTERY_PRE_KEY, activityId, prizeType, activityPrize.getSerialNumber()); String lockKey = String.format("%s%d:%d:%d", LOTTERY_PRE_KEY, activityId, prizeType, activityPrize.getSerialNumber());
RLock rLock = redissonLock.getRLock(key); RLock rLock = redissonLock.getRLock(lockKey);
try { try {
boolean isSuccess = rLock.tryLock(1, 2, TimeUnit.SECONDS); boolean isSuccess = rLock.tryLock(1, 2, TimeUnit.SECONDS);
if (isSuccess) { if (isSuccess) {
prizeStock = valueOperations.get(prizeStockKey); prizeStock = valueOperations.get(prizeStockKey);
log.info("tryLock success, key = [{}]", key); log.info("tryLock success, key = [{}]", lockKey);
try { try {
if (prizeStock != null && (Integer) prizeStock > 0) { if (prizeStock != null && (Integer) prizeStock > 0) {
//更新库存 //更新库存
...@@ -214,11 +219,11 @@ public class ActivityPrizeBiz extends BaseBiz<ActivityPrizeMapper, ActivityPrize ...@@ -214,11 +219,11 @@ public class ActivityPrizeBiz extends BaseBiz<ActivityPrizeMapper, ActivityPrize
rLock.unlock(); rLock.unlock();
} finally { } finally {
rLock.unlock(); rLock.unlock();
log.info("releaseLock success, key = [{}]", key); log.info("releaseLock success, key = [{}]", lockKey);
} }
} else { } else {
// 获取锁失败 // 获取锁失败
log.info("tryLock fail, key = [{}]", key); log.info("tryLock fail, key = [{}]", lockKey);
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
......
...@@ -327,7 +327,7 @@ ...@@ -327,7 +327,7 @@
( (
( (
orv.start_time &gt; #{startTime} orv.start_time &gt; #{startTime}
AND orv.start_time &lt; #{startTime} AND orv.start_time &lt; #{endTime}
AND orv.end_time &gt; #{endTime} AND orv.end_time &gt; #{endTime}
) )
OR ( OR (
...@@ -336,7 +336,7 @@ ...@@ -336,7 +336,7 @@
) )
OR ( OR (
orv.start_time &lt; #{startTime} orv.start_time &lt; #{startTime}
AND orv.end_time &gt; #{endTime} AND orv.end_time &gt; #{startTime}
AND orv.end_time &lt; #{endTime} AND orv.end_time &lt; #{endTime}
) )
OR ( OR (
......
package com.xxfc.platform.vehicle.rest; package com.xxfc.platform.vehicle.rest;
import com.alibaba.fastjson.JSONArray;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO; import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken; import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
...@@ -170,8 +171,8 @@ public class VehicleDepartureController { ...@@ -170,8 +171,8 @@ public class VehicleDepartureController {
@GetMapping("findReserveType") @GetMapping("findReserveType")
public ObjectRestResponse<OrderPageVO> getOrderDetail() { public ObjectRestResponse<OrderPageVO> getOrderDetail() {
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData(); Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
String reserveType = dictionaryMap.get(VEHICE_ORDER + "_" + RESERVE).getName(); String reserveType = dictionaryMap.get(VEHICE_ORDER + "_" + RESERVE).getDetail();
return ObjectRestResponse.succ(reserveType); return ObjectRestResponse.succ(JSONArray.parse(reserveType));
} }
......
...@@ -595,12 +595,12 @@ ...@@ -595,12 +595,12 @@
SELECT SELECT
b.id AS companyId, b.id AS companyId,
DATE_FORMAT( DATE_FORMAT(
DATE_SUB(NOW(), INTERVAL 1 DAY), NOW(),
'%Y' '%Y'
) AS countYear, ) AS countYear,
DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%m') AS countMonth, DATE_FORMAT(NOW(), '%m') AS countMonth,
DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%u') AS countWeek, DATE_FORMAT(NOW(), '%u') AS countWeek,
DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%Y-%m-%d') AS countDate, DATE_FORMAT(NOW(), '%Y-%m-%d') AS countDate,
count(*) AS vehicleNum count(*) AS vehicleNum
FROM FROM
vehicle v vehicle v
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment