|
|
@ -30,7 +30,6 @@ import com.elink.esua.epdc.modules.smile.activity.dao.ActivityInfoDao; |
|
|
|
import com.elink.esua.epdc.modules.smile.activity.dao.ActivityParticipantDao; |
|
|
|
import com.elink.esua.epdc.modules.smile.activity.entity.ActivityInfoEntity; |
|
|
|
import com.elink.esua.epdc.modules.smile.activity.entity.ActivityParticipantEntity; |
|
|
|
import com.elink.esua.epdc.modules.smile.activity.redis.ActivityInfoRedis; |
|
|
|
import com.elink.esua.epdc.modules.smile.activity.service.ActivityInfoService; |
|
|
|
import com.elink.esua.epdc.modules.smile.section.dao.SectionCategoryDao; |
|
|
|
import com.elink.esua.epdc.modules.smile.section.entity.SectionCategoryEntity; |
|
|
@ -39,8 +38,8 @@ import com.elink.esua.epdc.smile.dto.activity.form.ActivityDetailFormDTO; |
|
|
|
import com.elink.esua.epdc.smile.dto.activity.form.ActivityInfoFormDTO; |
|
|
|
import com.elink.esua.epdc.smile.dto.activity.result.ActivityDetailResultDTO; |
|
|
|
import com.elink.esua.epdc.smile.dto.activity.result.ActivityInfoResultDTO; |
|
|
|
import com.elink.esua.epdc.smile.enums.ActUserStateEnum; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
@ -59,9 +58,6 @@ import java.util.Map; |
|
|
|
@Service |
|
|
|
public class ActivityInfoServiceImpl extends BaseServiceImpl<ActivityInfoDao, ActivityInfoEntity> implements ActivityInfoService { |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private ActivityInfoRedis activityInfoRedis; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private SectionCategoryDao sectionCategoryDao; |
|
|
|
|
|
|
@ -129,7 +125,63 @@ public class ActivityInfoServiceImpl extends BaseServiceImpl<ActivityInfoDao, Ac |
|
|
|
public List<ActivityInfoResultDTO> listActivity(ActivityInfoFormDTO formDto) { |
|
|
|
// sql limit条件转换
|
|
|
|
formDto.setPageIndex((formDto.getPageIndex() - NumConstant.ONE) * formDto.getPageSize()); |
|
|
|
return baseDao.listActivity(formDto); |
|
|
|
List<ActivityInfoResultDTO> activityList = baseDao.listActivity(formDto); |
|
|
|
activityList.forEach(activity -> { |
|
|
|
ActUserStateEnum state = getActUserState(activity.getActStartTime(), activity.getActEndTime(), activity.getSignUpEndTime(), activity.getSignUpNum() |
|
|
|
, activity.getActQuota(), activity.getActQuotaFlag(), activity.getSignUpFlag()); |
|
|
|
activity.setSignUpFlag(state.getValue()); |
|
|
|
activity.setSignUpFlagStr(state.getState()); |
|
|
|
}); |
|
|
|
return activityList; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 判断用户对于活动的状态 |
|
|
|
* |
|
|
|
* @param actStartTime 活动开始时间 |
|
|
|
* @param actEndTime 活动结束时间 |
|
|
|
* @param signUpEndTime 报名截止时间 |
|
|
|
* @param signUpNum 已报人数 |
|
|
|
* @param actQuota 名额数 |
|
|
|
* @param actQuotaFlag 是否限制名额 |
|
|
|
* @param signUpFlag 用户是否已报名 |
|
|
|
* @return com.elink.esua.epdc.smile.enums.ActUserStateEnum |
|
|
|
* @author work@yujt.net.cn |
|
|
|
* @date 2020/7/9 15:19 |
|
|
|
*/ |
|
|
|
private ActUserStateEnum getActUserState(Date actStartTime, Date actEndTime, Date signUpEndTime, int signUpNum, int actQuota, String actQuotaFlag, String signUpFlag) { |
|
|
|
Date now = new Date(); |
|
|
|
// 活动结束
|
|
|
|
if (now.after(actEndTime)) { |
|
|
|
return ActUserStateEnum.END; |
|
|
|
} |
|
|
|
// 是否已报名 0否 ;1是
|
|
|
|
if (YesOrNoEnum.YES.value().equals(signUpFlag)) { |
|
|
|
// 进行中
|
|
|
|
if (now.after(actStartTime) && now.before(actEndTime)) { |
|
|
|
return ActUserStateEnum.GOING; |
|
|
|
} |
|
|
|
// 已报名
|
|
|
|
return ActUserStateEnum.ENTERED; |
|
|
|
} else { |
|
|
|
// 活动进行中,用户未报名
|
|
|
|
if (now.after(actStartTime) && now.before(actEndTime)) { |
|
|
|
return ActUserStateEnum.ONLOOKER; |
|
|
|
} |
|
|
|
// 已截止报名
|
|
|
|
if (now.after(signUpEndTime)) { |
|
|
|
return ActUserStateEnum.CLOSED; |
|
|
|
} |
|
|
|
// 限制名额 且 已报满
|
|
|
|
if (YesOrNoEnum.YES.value().equals(actQuotaFlag) && signUpNum >= actQuota) { |
|
|
|
return ActUserStateEnum.FULL; |
|
|
|
} |
|
|
|
// 不限名额 或 未报满
|
|
|
|
if (YesOrNoEnum.NO.value().equals(actQuotaFlag) || signUpNum < actQuota) { |
|
|
|
return ActUserStateEnum.SING_UP; |
|
|
|
} |
|
|
|
} |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -138,7 +190,11 @@ public class ActivityInfoServiceImpl extends BaseServiceImpl<ActivityInfoDao, Ac |
|
|
|
ActivityDetailResultDTO dto = ConvertUtils.sourceToTarget(entity, ActivityDetailResultDTO.class); |
|
|
|
// 查询当前用户是否参与活动
|
|
|
|
String signUpFlag = isParticipate(formDto.getActivityId(), formDto.getUserId()); |
|
|
|
dto.setSignUpFlag(signUpFlag); |
|
|
|
|
|
|
|
ActUserStateEnum state = getActUserState(entity.getActStartTime(), entity.getActEndTime(), entity.getSignUpEndTime(), entity.getSignUpNum() |
|
|
|
, entity.getActQuota(), entity.getActQuotaFlag(), signUpFlag); |
|
|
|
dto.setSignUpFlag(state.getValue()); |
|
|
|
dto.setSignUpFlagStr(state.getState()); |
|
|
|
return dto; |
|
|
|
} |
|
|
|
|
|
|
|