Commit ad147fb5 authored by 邓吉芬's avatar 邓吉芬

1.多活动支持

parent dabe3aab
......@@ -58,7 +58,7 @@ public class DrawController {
@ApiOperation(value = "用户点击活抽奖")
@PostMapping(value = "draw/click")
public RestResult<DrawClickResponse> drawClick(@RequestBody @Valid DrawClickRequest request) throws InterruptedException {
DrawModel drawModel = drawManager.drawClick(request.getPhone());
DrawModel drawModel = drawManager.drawClick(request.getPhone(),request.getActivityId());
BeanCopier<DrawClickResponse> beanCopier = BeanCopier.create(drawModel, DrawClickResponse.builder().build(), CopyOptions.create());
DrawClickResponse response = beanCopier.copy();
return RestResultUtil.createSuccessResult(response);
......@@ -68,7 +68,7 @@ public class DrawController {
@ApiOperation(value = "获得我的奖品")
@PostMapping(value = "gain/mine/prize")
public RestResult<List<MinePrizeGainResponse>> gainMinePrize(@RequestBody @Valid MinePrizeGainRequest request) {
List<DrawModel> drawModelList = drawManager.listMinePrizeList(request.getPhone());
List<DrawModel> drawModelList = drawManager.listMinePrizeList(request);
List<MinePrizeGainResponse> minePrizeGainResponseList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(drawModelList)) {
minePrizeGainResponseList = drawModelList.stream().map(drawModel -> {
......@@ -94,7 +94,7 @@ public class DrawController {
@ApiOperation(value = "整体中奖情况")
@PostMapping(value = "prize/draw/list")
public RestResult<List<PrizeDrawListResponse>> prizeDrawList(@RequestBody @Valid PrizeDrawListRequest request) {
List<DrawModel> drawModelList = drawManager.listAllWinningInfo(request.getSize());
List<DrawModel> drawModelList = drawManager.listAllWinningInfo(request);
drawModelList.forEach(x->
{
if(StringUtils.isNotBlank(x.getAccountName())){
......
package com.miya.draw.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -73,5 +74,8 @@ public class AccountPrize implements Serializable {
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@TableField(exist = false)
private Integer count;
}
......@@ -19,16 +19,16 @@ import java.time.LocalDateTime;
*/
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="activity_config对象", description="")
@TableName("activity_config")
public class ActivityConfig implements Serializable {
@ApiModel(value="activity对象", description="")
@TableName("activity")
public class Activity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty(value = "活动Id")
private Long activityId;
@ApiModelProperty(value = "活动名称")
private String name;
@ApiModelProperty(value = "抽奖方式 1满额抽奖 2足量抽奖")
private Integer raffle;
......@@ -54,11 +54,11 @@ public class ActivityConfig implements Serializable {
@ApiModelProperty(value = "0 不限制门店 1限制门店")
private Integer activityStoreStatus;
@ApiModelProperty(value = "活动是否有效 0无效 1有效")
private Integer validStatus;
@ApiModelProperty(value = "开始时间")
private LocalDateTime startTime;
@ApiModelProperty(value = "单个用户限制奖品Id,多个用逗号隔开")
private Long prizeId;
@ApiModelProperty(value = "结束时间")
private LocalDateTime endTime;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
......
......@@ -53,6 +53,9 @@ public class Prize implements Serializable {
@ApiModelProperty(value = "活动id")
private Long activityId;
@ApiModelProperty(value = "限抽 0表示不限")
private Integer astrict;
@ApiModelProperty(value = "是否有效 0无效 1有效")
private Integer validStatus;
......
......@@ -10,8 +10,9 @@ import com.miya.draw.entity.*;
import com.miya.draw.enums.*;
import com.miya.draw.model.DrawModel;
import com.miya.draw.request.DrawUserInfoGainRequest;
import com.miya.draw.request.MinePrizeGainRequest;
import com.miya.draw.request.PrizeDrawListRequest;
import com.miya.draw.service.*;
import com.miya.draw.service.impl.ActivityConfigServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -63,7 +64,7 @@ public class DrawManagerImpl implements IDrawManager {
private IOtherManager otherManager;
@Autowired
private IActivityConfigService activityConfigService;
private IActivityService activityService;
@Override
public DrawModel gainActivityUserInfo(DrawUserInfoGainRequest request) {
......@@ -76,40 +77,49 @@ public class DrawManagerImpl implements IDrawManager {
} catch (Exception e) {
log.error("保存用户信息出错:{}", e.getMessage());
}
ActivityConfig activityConfig = activityConfigService.getConfig();
if(activityConfig == null){
Activity activity = activityService.getById(request.getActivityId());
if(activity == null){
throw new BusinessException(ErrorEnum.SYSTEM_EXP, "未获取活动有效配置");
}
LocalDateTime nowTime = LocalDateTime.now();
LocalDateTime start = nowTime.minusDays(activityConfig.getValidTime()-1);
LocalDateTime start = nowTime.minusDays(activity.getValidTime()-1);
start = LocalDateTimeUtil.beginOfDay(start);
LocalDateTime end = LocalDateTimeUtil.endOfDay(nowTime);
Integer maxDrawCountLimit = activityConfig.getDrawMaxCount();
Integer alreadyDrawCount = accountPrizeService.gainAlreadyDrawCount(request.getPhone(), activityConfig.getActivityId(), start, end);
List<String> storeIdList = activityStoreService.listAllActivityStoreId(activityConfig.getActivityId());
List<String> goodCodeList = activityGoodsService.listAllActivityGoods(activityConfig.getActivityId());
List<SyncTrade> buyGoodList = syncTradeService.listCanDrawGoods(request.getPhone(), start, end, storeIdList, goodCodeList);
Integer maxDrawCountLimit = activity.getDrawMaxCount();
//获取已抽奖信息
Integer alreadyDrawCount = accountPrizeService.gainAlreadyDrawCount(request.getPhone(), activity.getId(), start, end);
List<String> goodCodeList = activityGoodsService.listAllActivityGoods(activity.getId());
//获取订单信息
List<SyncTrade> buyGoodList;
if(activity.getActivityStoreStatus() == ActivityStoreStatusEnum.NO_CONFINE.getCode() ){
buyGoodList = syncTradeService.listCanDrawGoods(request.getPhone(), start, end, null, goodCodeList);
}else{
List<String> storeIdList = activityStoreService.listAllActivityStoreId(activity.getId());
buyGoodList = syncTradeService.listCanDrawGoods(request.getPhone(), start, end, storeIdList, goodCodeList);
}
BigDecimal buyTotal = gainBuyTotal(buyGoodList);
Long purchasedAmount = buyTotal.multiply(BigDecimal.valueOf(100)).longValue();
Integer drawCountTotal =0;
if(activityConfig.getRaffle()== RaffleEnum.AMOUNTUNIT.getCode()){
if(activity.getRaffle()== RaffleEnum.AMOUNTUNIT.getCode()){
buyTotal = getAmountTotal(buyGoodList);
drawCountTotal = buyTotal.divide(new BigDecimal(activityConfig.getAmountUnit()), RoundingMode.DOWN).intValue();
drawCountTotal = buyTotal.divide(new BigDecimal(activity.getAmountUnit()), RoundingMode.DOWN).intValue();
//足量抽奖
}else{
drawCountTotal = buyTotal.divide(new BigDecimal(activityConfig.getCountUnit()), RoundingMode.DOWN).intValue();
drawCountTotal = buyTotal.divide(new BigDecimal(activity.getCountUnit()), RoundingMode.DOWN).intValue();
}
drawCountTotal = Math.min(activityConfig.getDrawMaxCount(), drawCountTotal);
drawCountTotal = Math.min(activity.getDrawMaxCount(), drawCountTotal);
drawCountTotal = drawCountTotal - alreadyDrawCount;
Integer joinActivityPeopleNum = accountPrizeService.countJoinActivityPeople(activityConfig.getActivityId());
Integer joinActivityPeopleNum = accountPrizeService.countJoinActivityPeople(activity.getId());
return DrawModel.builder()
.alreadyDrawCount(alreadyDrawCount)
.drawCountTotal(drawCountTotal>=0?drawCountTotal:0)
.maxDrawCountLimit(maxDrawCountLimit)
.numOfDrawCount(Math.max(0, maxDrawCountLimit - alreadyDrawCount))
.purchasedAmount(purchasedAmount)
.taxAmountCache(Math.max(0L, BigDecimal.valueOf(activityConfig.getMaxMoney()).subtract(buyTotal).multiply(BigDecimal.valueOf(100)).longValue()))
.taxAmountCache(Math.max(0L, BigDecimal.valueOf(activity.getMaxMoney()).subtract(buyTotal).multiply(BigDecimal.valueOf(100)).longValue()))
.numOfJoinActivityPeople(joinActivityPeopleNum)
.build();
}
......@@ -144,12 +154,12 @@ public class DrawManagerImpl implements IDrawManager {
}
@Override
public List<DrawModel> listMinePrizeList(String phone) {
ActivityConfig activityConfig = activityConfigService.getConfig();
if(activityConfig == null){
public List<DrawModel> listMinePrizeList( MinePrizeGainRequest request) {
Activity activity = activityService.getById(request.getActivityId());
if(activity == null){
throw new BusinessException(ErrorEnum.SYSTEM_EXP, "未获取活动有效配置");
}
List<AccountPrize> prizeList = accountPrizeService.listMinePrize(phone, activityConfig.getActivityId());
List<AccountPrize> prizeList = accountPrizeService.listMinePrize(request.getPhone(), request.getActivityId());
return getDrawModels(prizeList);
}
......@@ -177,57 +187,63 @@ public class DrawManagerImpl implements IDrawManager {
@Override
@Transactional(rollbackFor = Exception.class)
public DrawModel drawClick(String phone) throws InterruptedException {
public DrawModel drawClick(String phone,Long activityId ) throws InterruptedException {
// 同一用户不可多次重复点击
RLock lock = redissonClient.getLock(buildKey(phone));
try {
lock.tryLock(5, 10, TimeUnit.SECONDS);
//获取配置
ActivityConfig activityConfig = activityConfigService.getConfig();
// 1 验证是否可以抽奖
//1 判断活动是否有效
Activity activity = activityService.getById(activityId);
if(LocalDateTime.now().isBefore(activity.getStartTime())){
throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,抽奖活动还未开始!");
}
if(LocalDateTime.now().isAfter(activity.getEndTime())){
throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,抽奖活动已经结束!");
}
// 2 验证是否可以抽奖
LocalDateTime nowTime = LocalDateTime.now();
LocalDateTime start = nowTime.minusDays(activityConfig.getValidTime()-1);
LocalDateTime start = nowTime.minusDays(activity.getValidTime()-1);
start = LocalDateTimeUtil.beginOfDay(start);
LocalDateTime end = LocalDateTimeUtil.endOfDay(nowTime);
List<SyncTrade> buyGoodList;
if(activityConfig.getActivityStoreStatus() == ActivityStoreStatusEnum.NO_CONFINE.getCode() ){
buyGoodList = syncTradeService.listCanDrawGoods(phone, start, end, null, activityGoodsService.listAllActivityGoods(activityConfig.getActivityId()));
if(activity.getActivityStoreStatus() == ActivityStoreStatusEnum.NO_CONFINE.getCode() ){
buyGoodList = syncTradeService.listCanDrawGoods(phone, start, end, null, activityGoodsService.listAllActivityGoods(activityId));
}else{
//限制门店的情况
List<String> storeCodeList =activityStoreService.listAllActivityStoreId(activityConfig.getActivityId());
List<String> storeCodeList =activityStoreService.listAllActivityStoreId(activityId);
if (CollectionUtils.isEmpty(storeCodeList)) {
buyGoodList = Lists.newArrayList();
}else{
buyGoodList = syncTradeService.listCanDrawGoods(phone, start, end, storeCodeList, activityGoodsService.listAllActivityGoods(activityConfig.getActivityId()));
buyGoodList = syncTradeService.listCanDrawGoods(phone, start, end, storeCodeList, activityGoodsService.listAllActivityGoods(activityId));
}
}
int drawCountTotal =0;
//判断抽奖方式
//满额抽奖
if(activityConfig.getRaffle()== RaffleEnum.AMOUNTUNIT.getCode()){
//3 判断抽奖方式
//足量抽奖
if(activity.getRaffle()== RaffleEnum.AMOUNTUNIT.getCode()){
BigDecimal buyTotal = getAmountTotal(buyGoodList);
drawCountTotal = buyTotal.divide(new BigDecimal(activityConfig.getAmountUnit()), RoundingMode.DOWN).intValue();
drawCountTotal = Math.min(activityConfig.getDrawMaxCount(), drawCountTotal);
drawCountTotal = buyTotal.divide(new BigDecimal(activity.getAmountUnit()), RoundingMode.DOWN).intValue();
drawCountTotal = Math.min(activity.getDrawMaxCount(), drawCountTotal);
if (drawCountTotal <= 0) {
throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,你的购物金额不足,已无抽奖次数");
throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,您购买的活动商品不足,已无抽奖次数");
}
//足量抽奖
//满额抽奖
}else{
BigDecimal buyTotal = gainBuyTotal(buyGoodList);
drawCountTotal = buyTotal.divide(new BigDecimal(activityConfig.getCountUnit()), RoundingMode.DOWN).intValue();
drawCountTotal = Math.min(activityConfig.getDrawMaxCount(), drawCountTotal);
drawCountTotal = buyTotal.divide(new BigDecimal(activity.getCountUnit()), RoundingMode.DOWN).intValue();
drawCountTotal = Math.min(activity.getDrawMaxCount(), drawCountTotal);
if (drawCountTotal <= 0) {
throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,您购买的活动商品不足,已无抽奖次数");
throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,你的购物金额不足,已无抽奖次数");
}
}
Integer alreadyDrawCount = accountPrizeService.gainAlreadyDrawCount(phone, activityConfig.getActivityId(), start, end);
Integer alreadyDrawCount = accountPrizeService.gainAlreadyDrawCount(phone, activityId, start, end);
// 可抽奖次数> 已抽奖次数
Prize prize;
AccountPrize accountPrize;
if (drawCountTotal - alreadyDrawCount > 0) {
// 获得奖品
List<Prize> prizeList = gainPrizeInfo(phone,activityConfig);
List<Prize> prizeList = gainPrizeInfo(phone,activityId);
// 抽奖
prize = selectCoupon(prizeList);
// 乐观锁效验抽到的奖品它合不合规
......@@ -240,7 +256,7 @@ public class DrawManagerImpl implements IDrawManager {
}
// 记录抽奖信息
accountPrize = new AccountPrize();
accountPrize.setActivityId(activityConfig.getActivityId());
accountPrize.setActivityId(activityId);
accountPrize.setPrizeId(prize.getId());
accountPrize.setAccountName(phone);
accountPrize.setAccountPhone(phone);
......@@ -252,7 +268,7 @@ public class DrawManagerImpl implements IDrawManager {
otherManager.sendCoupon(prize.getCouponId(), phone, accountPrize.getId());
}
} else {
if (alreadyDrawCount >= activityConfig.getDrawMaxCount()) {
if (alreadyDrawCount >= activity.getDrawMaxCount()) {
throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,你的今日可抽奖次数已用完,请明日再来哦");
} else {
throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "抱歉,你的购物金额或购买活动商品不足,已无抽奖次数");
......@@ -287,17 +303,32 @@ public class DrawManagerImpl implements IDrawManager {
* 3. 如果满足中奖限制,将该奖品剔除
* @param
*/
public List<Prize> gainPrizeInfo(String phone,ActivityConfig activityConfig){
List<Prize> prizeList = prizeService.listAllPrizes(activityConfig.getActivityId());
public List<Prize> gainPrizeInfo(String phone, Long activityId){
List<Prize> prizeList = prizeService.listAllPrizes(activityId);
if (CollectionUtils.isEmpty(prizeList)) {
throw new BusinessException(ErrorEnum.DRAW_CHECK_EXP, "活动已结束!");
}
if(activityConfig.getPrizeId() != null){
int count = accountPrizeService.gainAlreadyDrawCountByPrize(phone,activityConfig.getActivityId(),activityConfig.getPrizeId());
if(count>=1){
prizeList= prizeList.stream().filter(p->!activityConfig.getPrizeId().equals(p.getId()) ).collect(Collectors.toList());
//获取限制抽奖的奖品
List<Prize> restrictPrizeList = prizeList.stream().filter(p->p.getAstrict()!=0 ).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(restrictPrizeList)){
List<Long> restrictPrizeId = restrictPrizeList.stream().map(Prize::getId).collect(Collectors.toList());
List<AccountPrize> accountPrizeList = accountPrizeService.gainAlreadyDrawCountByPrize(phone,activityId,restrictPrizeId);
//不可以抽奖的奖品Id
List<Long> prizeIdList = Lists.newArrayList();
if(!CollectionUtils.isEmpty(accountPrizeList)){
for(AccountPrize account:accountPrizeList){
for (Prize prize:restrictPrizeList){
//判断是否已经达到抽奖限制次数
if(account.getPrizeId().equals(prize.getId()) && account.getCount()>= prize.getAstrict()){
prizeIdList.add(prize.getId());
}
}
}
}
if(!CollectionUtils.isEmpty(prizeIdList)){
//剔除已限制抽奖的奖品
prizeList= prizeList.stream().filter(p->!prizeIdList.contains(p.getId())).collect(Collectors.toList());
}
System.out.println(Arrays.toString(prizeList.toArray()));
}
return prizeList;
}
......@@ -305,12 +336,12 @@ public class DrawManagerImpl implements IDrawManager {
@Override
public List<DrawModel> listAllWinningInfo(Integer size) {
ActivityConfig activityConfig = activityConfigService.getConfig();
if(activityConfig == null){
public List<DrawModel> listAllWinningInfo(PrizeDrawListRequest request) {
Activity activity = activityService.getById(request.getActivityId());
if(activity == null){
throw new BusinessException(ErrorEnum.SYSTEM_EXP, "未获取活动有效配置");
}
List<AccountPrize> prizeList = accountPrizeService.listAllWinningInfo(size, activityConfig.getActivityId());
List<AccountPrize> prizeList = accountPrizeService.listAllWinningInfo(request.getSize(),request.getActivityId());
return getDrawModels(prizeList);
}
......
......@@ -2,6 +2,8 @@ package com.miya.draw.manager;
import com.miya.draw.model.DrawModel;
import com.miya.draw.request.DrawUserInfoGainRequest;
import com.miya.draw.request.MinePrizeGainRequest;
import com.miya.draw.request.PrizeDrawListRequest;
import java.util.List;
......@@ -24,7 +26,7 @@ public interface IDrawManager {
* @param phone
* @return
*/
List<DrawModel> listMinePrizeList(String phone);
List<DrawModel> listMinePrizeList(MinePrizeGainRequest request);
/**
* 修改我的奖品的地址信息
......@@ -44,12 +46,12 @@ public interface IDrawManager {
* @param phone
* @return
*/
DrawModel drawClick(String phone) throws InterruptedException;
DrawModel drawClick(String phone, Long activityId) throws InterruptedException;
/**
* 获得所有的中奖信息
* @param size
* @param request
* @return
*/
List<DrawModel> listAllWinningInfo(Integer size);
List<DrawModel> listAllWinningInfo(PrizeDrawListRequest request);
}
package com.miya.draw.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.miya.draw.entity.Account;
import com.miya.draw.entity.ActivityConfig;
import com.miya.draw.entity.Activity;
import org.apache.ibatis.annotations.Mapper;
/**
......@@ -11,7 +10,7 @@ import org.apache.ibatis.annotations.Mapper;
* @description:活动配置
*/
@Mapper
public interface ActivityConfigMapper extends BaseMapper<ActivityConfig> {
public interface ActivityMapper extends BaseMapper<Activity> {
}
......@@ -6,6 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 用户点击抽奖请求模型
......@@ -20,4 +21,8 @@ public class DrawClickRequest extends BaseRequest {
@NotBlank(message = "手机号不能为空")
@ApiModelProperty(value = "手机号")
private String phone;
@NotNull(message = "活动Id不能为空")
@ApiModelProperty(value = "手机号", required = true)
private Long activityId;
}
......@@ -6,6 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 获取抽奖用户信息请求模型
......@@ -17,6 +18,10 @@ import javax.validation.constraints.NotBlank;
@EqualsAndHashCode(callSuper = true)
public class DrawUserInfoGainRequest extends BaseRequest {
@NotNull(message = "活动Id不能为空")
@ApiModelProperty(value = "手机号", required = true)
private Long activityId;
@ApiModelProperty(value = "用户名")
private String userName;
......
......@@ -6,6 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 获得我的奖品
......@@ -17,7 +18,12 @@ import javax.validation.constraints.NotBlank;
@Data
public class MinePrizeGainRequest extends BaseRequest {
@NotNull(message = "活动Id不能为空")
@ApiModelProperty(value = "手机号", required = true)
private Long activityId;
@NotBlank(message = "手机号不能为空")
@ApiModelProperty(value = "手机号", required = true)
private String phone;
}
......@@ -5,6 +5,9 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 所有的中奖信息请求
*
......@@ -15,6 +18,10 @@ import lombok.EqualsAndHashCode;
@ApiModel(value = "获取所有的中奖信息请求")
public class PrizeDrawListRequest extends BaseRequest {
@NotNull(message = "活动Id不能为空")
@ApiModelProperty(value = "手机号", required = true)
private Long activityId;
@ApiModelProperty(value = "一次请求多少条 默认30")
private Integer size = 30;
}
package com.miya.draw.service;
import com.miya.draw.entity.AccountPrize;
import com.baomidou.mybatisplus.extension.service.IService;
import com.miya.draw.entity.AccountPrize;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author jack
* @since 2021-05-05
* @author :djf
* @date :2022-11-10
* @description:
*/
public interface IAccountPrizeService extends IService<AccountPrize> {
/**
* 获得用户的抽奖次数
*
......@@ -24,16 +22,16 @@ public interface IAccountPrizeService extends IService<AccountPrize> {
* @param end 结束时间
* @return 已抽奖次数
*/
Integer gainAlreadyDrawCount(String phone,Long activityId, LocalDateTime start, LocalDateTime end);
Integer gainAlreadyDrawCount(String phone, Long activityId, LocalDateTime start, LocalDateTime end);
/**
* 获取用户手机号抽中指定奖品的次数
* @param phone
* @param activityId
* @param prizeId
* @param prizeIds
* @return
*/
Integer gainAlreadyDrawCountByPrize(String phone,Long activityId,Long prizeId);
List<AccountPrize> gainAlreadyDrawCountByPrize(String phone,Long activityId,List<Long> prizeIds);
/**
* 获得我的奖品列表
......@@ -41,7 +39,7 @@ public interface IAccountPrizeService extends IService<AccountPrize> {
* @param phone
* @return
*/
List<AccountPrize> listMinePrize(String phone,Long activityId);
List<AccountPrize> listMinePrize(String phone, Long activityId);
/**
* 获得所有的中奖信息
......
package com.miya.draw.service;
import com.miya.draw.entity.ActivityConfig;
import com.miya.draw.entity.Activity;
/**
* @author :djf
* @date :2022-10-25
* @description:活动配置
*/
public interface IActivityConfigService {
public interface IActivityService {
ActivityConfig getConfig();
/**
* 根据Id获取活动信息
* @param id
* @return
*/
Activity getById(Long id);
}
......@@ -12,12 +12,9 @@ import com.miya.draw.enums.ErrorEnum;
import com.miya.draw.enums.PrizeTypeEnum;
import com.miya.draw.mapper.AccountPrizeMapper;
import com.miya.draw.mapper.PrizeMapper;
import com.miya.draw.service.IAccountPrizeService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import com.miya.draw.service.IAccountPrizeService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
......@@ -41,10 +38,6 @@ public class AccountPrizeServiceImpl extends ServiceImpl<AccountPrizeMapper, Acc
@Resource
private AccountPrizeMapper accountPrizeMapper;
@Resource
private PrizeMapper prizeMapper;
@Override
......@@ -85,12 +78,14 @@ public class AccountPrizeServiceImpl extends ServiceImpl<AccountPrizeMapper, Acc
}
@Override
public Integer gainAlreadyDrawCountByPrize(String phone, Long activityId, Long prizeId) {
LambdaQueryWrapper<AccountPrize> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(AccountPrize::getActivityId,activityId);
wrapper.eq(AccountPrize::getPrizeId, prizeId);
wrapper.eq(AccountPrize::getAccountPhone,phone);
return accountPrizeMapper.selectCount(wrapper);
public List<AccountPrize> gainAlreadyDrawCountByPrize(String phone, Long activityId, List<Long> prizeIds) {
QueryWrapper<AccountPrize> wrapper = new QueryWrapper<>();
wrapper.select("count(id) as count,prize_id ")
.eq("activity_id",activityId)
.eq("account_phone",phone)
.in("prize_id", prizeIds)
.last("group by prize_id");
return accountPrizeMapper.selectList(wrapper);
}
/**
......
......@@ -2,13 +2,12 @@ package com.miya.draw.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.miya.draw.entity.ActivityConfig;
import com.miya.draw.mapper.ActivityConfigMapper;
import com.miya.draw.service.IActivityConfigService;
import com.miya.draw.entity.Activity;
import com.miya.draw.mapper.ActivityMapper;
import com.miya.draw.service.IActivityService;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
/**
......@@ -17,19 +16,11 @@ import java.util.List;
* @description:
*/
@Service
public class ActivityConfigServiceImpl extends ServiceImpl<ActivityConfigMapper, ActivityConfig> implements IActivityConfigService {
public class ActivityServiceImpl extends ServiceImpl<ActivityMapper, Activity> implements IActivityService {
@Override
public ActivityConfig getConfig() {
LambdaQueryWrapper<ActivityConfig> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ActivityConfig::getValidStatus,1);
wrapper.last("order by create_time desc ");
List<ActivityConfig> list = baseMapper.selectList(wrapper);
if(!CollectionUtils.isEmpty(list)){
return list.get(0);
}
return null;
public Activity getById(Long id) {
return baseMapper.selectById(id);
}
}
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