package com.doumee.service.business.impl;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.doumee.biz.system.SystemDictDataBiz;
|
import com.doumee.config.rocketmq5.NormalMsgProducer;
|
import com.doumee.core.constants.ResponseStatus;
|
import com.doumee.core.exception.BusinessException;
|
import com.doumee.core.model.LoginUserInfo;
|
import com.doumee.core.model.PageData;
|
import com.doumee.core.model.PageWrap;
|
import com.doumee.core.utils.Constants;
|
import com.doumee.core.utils.DateUtil;
|
import com.doumee.core.utils.Utils;
|
import com.doumee.dao.business.*;
|
import com.doumee.dao.business.model.*;
|
import com.doumee.dao.system.SystemUserMapper;
|
import com.doumee.dao.web.dto.CollectDTO;
|
import com.doumee.dao.web.dto.MemberDTO;
|
import com.doumee.dao.web.dto.MultiFileDTO;
|
import com.doumee.dao.web.dto.OrgDTO;
|
import com.doumee.dao.web.dto.activity.*;
|
import com.doumee.dao.web.dto.shop.ShopSimpleDTO;
|
import com.doumee.dao.system.model.SystemUser;
|
import com.doumee.dao.web.request.ActivityPageListRequest;
|
import com.doumee.service.business.*;
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
import org.apache.commons.collections4.MapUtils;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.shiro.SecurityUtils;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.ApplicationEventPublisher;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.CollectionUtils;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* 活动、资讯、探店信息表Service实现
|
*
|
* @author 江蹄蹄
|
* @date 2023/03/21 15:48
|
*/
|
@Service
|
public class ActivityServiceImpl implements ActivityService {
|
@Autowired
|
private ActivityMapper activityMapper;
|
|
@Autowired
|
public NormalMsgProducer normalMsgProducer;
|
@Autowired
|
private ActivityJoinMapper activityJoinMapper;
|
|
@Autowired
|
private SystemDictDataBiz systemDictDataBiz;
|
|
@Autowired
|
private ShopMapper shopMapper;
|
|
@Autowired
|
private ShopService shopService;
|
|
@Autowired
|
private ShopFollowService shopFollowService;
|
|
|
@Autowired
|
private SystemUserMapper systemUserMapper;
|
|
@Autowired
|
private MultifileService multifileService;
|
|
@Autowired
|
private MultifileMapper multifileMapper;
|
|
@Autowired
|
private ActivitySignMapper activitySignMapper;
|
|
@Autowired
|
private CollectService collectService;
|
|
@Autowired
|
private CommentService commentService;
|
|
@Autowired
|
private AreasService areasService;
|
|
@Autowired
|
private OrgsService orgsService;
|
|
@Autowired
|
private ZanService zanService;
|
|
@Autowired
|
private ActivitySignJoinMapper activitySignJoinMapper;
|
|
@Resource
|
private ApplicationEventPublisher applicationEventPublisher;
|
|
|
@Override
|
public Integer create(Activity activity) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
isCreateParamValid(activity, user);
|
activity.setCreateDate(new Date());
|
activity.setCreator(user.getId());
|
activity.setIsdeleted(Constants.ZERO);
|
activity.setStatus(Constants.Status.ENABLE.getValue());
|
activity.setMemberId(user.getMemberId());
|
activityMapper.insert(activity);
|
|
dealBatchMultiFiles(activity, user);
|
return activity.getId();
|
}
|
|
@Override
|
public void updateLooknum(Activity model){
|
UpdateWrapper<Activity> param = new UpdateWrapper<>();
|
param.lambda().eq(true,Activity::getId,model.getId()) ;
|
param.lambda().setSql(true,"looknum=ifnull(looknum,0)+1");
|
activityJoinMapper.update(null,param);
|
}
|
|
@Override
|
public void deleteById(Integer id) {
|
Activity activity = new Activity();
|
activity.setIsdeleted(Constants.ZERO);
|
activity.setId(id);
|
activityMapper.updateById(activity);
|
}
|
|
@Override
|
public void delete(Activity activity) {
|
UpdateWrapper<Activity> deleteWrapper = new UpdateWrapper<>(activity);
|
activityMapper.delete(deleteWrapper);
|
}
|
|
@Override
|
public void deleteByIdInBatch(List<Integer> ids) {
|
if (CollectionUtils.isEmpty(ids)) {
|
return;
|
}
|
Activity activity = new Activity();
|
ids.stream().forEach(s -> {
|
activity.setId(s);
|
activity.setIsdeleted(Constants.ONE);
|
activityMapper.updateById(activity);
|
});
|
}
|
|
@Override
|
public void updateById(Activity activity) {
|
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
isCreateParamValid(activity, user);
|
|
activity.setEditDate(new Date());
|
activity.setEditor(user.getId());
|
activityMapper.updateById(activity);
|
dealBatchMultiFiles(activity, user);
|
}
|
|
public void isCreateParamValid(Activity activity, LoginUserInfo user) {
|
if (activity.getType() == null) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
|
}
|
if (Constants.equalsInteger(activity.getType(), Constants.ActivityType.TANDIAN.getKey()) ||
|
Constants.equalsInteger(activity.getType(), Constants.ActivityType.CONSULT.getKey())) {
|
//资讯,探店
|
if (activity.getShopId() == null
|
|| StringUtils.isBlank(activity.getName())
|
|| StringUtils.isBlank(activity.getImgurl())
|
|| activity.getLabelId()==null
|
|| activity.getContent()==null
|
) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
|
}
|
|
if(Constants.equalsInteger(activity.getType(), Constants.ActivityType.TANDIAN.getKey())){
|
if(activity.getContentType()==null
|
|| org.apache.commons.collections.CollectionUtils.isEmpty(activity.getFileList())
|
){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
|
}
|
}
|
Shop queryShop = new Shop();
|
queryShop.setId(activity.getShopId());
|
Shop shop = shopMapper.selectOne(new QueryWrapper<>(queryShop)
|
.lambda().eq(Shop::getIsdeleted, Constants.ZERO)
|
);
|
if (Objects.isNull(shop)) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "商铺不存在,禁止添加");
|
}
|
|
} else if (Constants.equalsInteger(activity.getType(), Constants.ActivityType.PLATACTIVITY.getKey())) {
|
//平台活动
|
if (activity.getShopId() != null) {
|
Shop queryShop = new Shop();
|
queryShop.setId(activity.getShopId());
|
Shop shop = shopMapper.selectOne(new QueryWrapper<>(queryShop)
|
.lambda().eq(Shop::getIsdeleted, Constants.ZERO)
|
);
|
if (Objects.isNull(shop)) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "商铺不存在,禁止添加");
|
}
|
} else if (activity.getOrgId() != null) {
|
SystemUser sysQuery = new SystemUser();
|
sysQuery.setId(activity.getOrgId());
|
SystemUser systemUser = systemUserMapper.selectOne(new QueryWrapper<>(sysQuery)
|
.lambda().eq(SystemUser::getDeleted, Constants.ZERO)
|
);
|
if (Objects.isNull(systemUser)) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "机构不存在,禁止添加");
|
}
|
} else {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
|
}
|
|
|
if(StringUtils.isBlank(activity.getName())
|
||activity.getLabelId()==null
|
||activity.getStarttime()==null
|
||activity.getEndtime()==null
|
||activity.getSignStarttime()==null
|
||activity.getSignEndtime()==null
|
||StringUtils.isBlank(activity.getAddr())
|
||activity.getLongitude()==null
|
||activity.getLatitude()==null
|
||activity.getLimitnum()==null
|
||StringUtils.isBlank(activity.getImgurl())
|
|
){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
|
}
|
}
|
if (Objects.isNull(user.getMemberId())) {
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "先关联前端用户再发布!");
|
}
|
|
}
|
|
public void dealBatchMultiFiles(Activity activity, LoginUserInfo user) {
|
|
if (Objects.isNull(activity.getId())){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"关联对象编码 不能为空");
|
}
|
if (Constants.equalsInteger(activity.getType(), Constants.TWO)) {
|
//探店
|
Multifile delFile = new Multifile();
|
delFile.setObjId(activity.getId());
|
delFile.setObjType(Constants.MultiFile.TANDIAN_PICTURE.getKey());
|
multifileMapper.delete(new QueryWrapper<>(delFile));
|
|
List<Multifile> fileList = activity.getFileList();
|
if (Constants.equalsInteger(activity.getContentType(), Constants.ZERO)) {
|
//图片
|
fileList.stream().forEach(s -> {
|
s.setCreator(user.getId());
|
s.setCreateDate(new Date());
|
s.setIsdeleted(Constants.ZERO);
|
s.setObjId(activity.getId());
|
s.setObjType(Constants.MultiFile.TANDIAN_PICTURE.getKey());
|
s.setType(Constants.ZERO);
|
multifileService.create(s);
|
});
|
} else if (Constants.equalsInteger(activity.getContentType(), Constants.ONE)) {
|
//视频
|
fileList.stream().forEach(s -> {
|
s.setCreator(user.getId());
|
s.setCreateDate(new Date());
|
s.setIsdeleted(Constants.ZERO);
|
s.setObjId(activity.getId());
|
s.setObjType(Constants.MultiFile.TANDIAN_PICTURE.getKey());
|
s.setType(Constants.ONE);
|
multifileService.create(s);
|
});
|
}
|
|
} else if (Constants.equalsInteger(activity.getType(), Constants.ONE)) {
|
//平台活动
|
Multifile delFile = new Multifile();
|
delFile.setObjId(activity.getId());
|
delFile.setObjType(Constants.MultiFile.ACTIVITY_ROTATION.getKey());
|
multifileMapper.delete(new QueryWrapper<>(delFile));
|
|
List<Multifile> fileList = activity.getFileList();
|
//图片
|
fileList.stream().forEach(s -> {
|
s.setCreator(user.getId());
|
s.setCreateDate(new Date());
|
s.setIsdeleted(Constants.ZERO);
|
s.setObjId(activity.getId());
|
s.setObjType(Constants.MultiFile.ACTIVITY_ROTATION.getKey());
|
s.setType(Constants.ZERO);
|
multifileService.create(s);
|
});
|
}
|
}
|
|
@Override
|
public void updateByIdInBatch(List<Activity> activitys) {
|
if (CollectionUtils.isEmpty(activitys)) {
|
return;
|
}
|
for (Activity activity : activitys) {
|
this.updateById(activity);
|
}
|
}
|
|
@Override
|
public Activity findById(Integer id) {
|
MPJLambdaWrapper<Activity> queryWrapper = new MPJLambdaWrapper<>();
|
|
queryWrapper.selectAll(Activity.class);
|
queryWrapper.selectAs(SystemUser::getRealname, Activity::getRealName);
|
queryWrapper.selectAs(SystemUser::getType, Activity::getUserType);
|
queryWrapper.selectAs(Labels::getName, Activity::getLablesName);
|
queryWrapper.selectAs(Shop::getName, Activity::getShopName);
|
queryWrapper.selectAs(Shop::getImgurl, Activity::getShopImg);
|
queryWrapper.selectAs(Shop::getName, Activity::getShopName);
|
queryWrapper.selectAs(Orgs::getName, Activity::getOrgName);
|
queryWrapper.select("(select count(id) from zan s1 where s1.ISDELETED=0 and s1.OBJ_ID=t.id ) as zanCount");
|
queryWrapper.select("(select count(id) from collect s1 where s1.ISDELETED=0 and s1.OBJ_ID=t.id ) as collectCount");
|
queryWrapper.select("(select count(id) from comment s1 where s1.ISDELETED=0 and s1.OBJ_ID=t.id ) as commentCount");
|
queryWrapper.select("(select count(id) from shares s1 where s1.ISDELETED=0 and s1.OBJ_ID=t.id ) as sharesCount");
|
|
queryWrapper.select("(select count(id) from activity_sign s1 where s1.ISDELETED=0 and ACTIVITY_ID=t.id and s1.STATUS!=2 ) as activityCount");
|
queryWrapper.select("(select REALNAME from system_user s1 where s1.ID=t.ORG_ID ) as serviceName");
|
// queryWrapper.select("(select name from shop where ISDELETED=0 and ACTIVITY_ID=t.SHOP_ID ) as shopName");
|
|
queryWrapper.leftJoin(Shop.class, Shop::getId, Activity::getShopId);
|
queryWrapper.leftJoin(Orgs.class, Orgs::getId, Activity::getOrgId);
|
queryWrapper.leftJoin(SystemUser.class, SystemUser::getId, Activity::getCreator);
|
queryWrapper.leftJoin(Labels.class, Labels::getId, Activity::getLabelId);
|
queryWrapper.eq(Activity::getId,id);
|
Activity result = activityJoinMapper.selectJoinOne(Activity.class, queryWrapper);
|
if (Objects.nonNull(result)) {
|
String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.ACTIVITY_FILE).getCode();
|
Multifile queryfile = new Multifile();
|
queryfile.setObjId(result.getId());
|
List<Multifile> filelist = multifileMapper.selectList(new QueryWrapper<>(queryfile));
|
if(filelist!=null){
|
filelist.stream().forEach(s->{
|
if(StringUtils.isNotBlank(s.getFileurl())){
|
s.setFileFullUrl(path+s.getFileurl());
|
}
|
});
|
result.setFileList(filelist);
|
}
|
if(StringUtils.isNotBlank(result.getImgurl())){
|
result.setImgurlfull(path+result.getImgurl());
|
}
|
}
|
return result;
|
}
|
@Override
|
public Activity findByIdFull(Integer id,Integer memberId) {
|
MPJLambdaWrapper<Activity> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.selectAll(Activity.class);
|
queryWrapper.selectAs(SystemUser::getRealname, Activity::getRealName);
|
queryWrapper.selectAs(SystemUser::getType, Activity::getUserType);
|
queryWrapper.selectAs(Labels::getName, Activity::getLablesName);
|
queryWrapper.selectAs(Shop::getName, Activity::getShopName);
|
queryWrapper.selectAs(Shop::getImgurl, Activity::getShopImg);
|
queryWrapper.selectAs(Shop::getName, Activity::getShopName);
|
queryWrapper.selectAs(Orgs::getName, Activity::getOrgName);
|
queryWrapper.selectAs(Member::getNickname, Activity::getMemberName);
|
queryWrapper.selectAs(Member::getImgurl, Activity::getMemberImg);
|
if(memberId!=null){
|
queryWrapper.select("(select count(1) from shop_follow s1 where s1.ISDELETED=0 and s1.obj_id=t.member_id and s1.OBJ_TYPE=1 and s1.member_id="+memberId+" ) as memberFollow");
|
}
|
queryWrapper.select("(select count(1) from activity_sign s1 where s1.ISDELETED=0 and s1.ACTIVITY_ID=t.id and s1.STATUS!=2 ) as activityCount");
|
queryWrapper.select("(select REALNAME from system_user s1 where s1.ID=t.ORG_ID ) as serviceName");
|
queryWrapper.select("(select avg(b.score) from shop_comment b where b.OBJ_ID = t.id and b.isdeleted=0) as shopStarNum");
|
|
queryWrapper.leftJoin(Shop.class, Shop::getId, Activity::getShopId);
|
queryWrapper.leftJoin(Orgs.class, Orgs::getId, Activity::getOrgId);
|
queryWrapper.leftJoin(SystemUser.class, SystemUser::getId, Activity::getCreator);
|
queryWrapper.leftJoin(Labels.class, Labels::getId, Activity::getLabelId);
|
queryWrapper.leftJoin(Member.class, Member::getId, Activity::getMemberId);
|
queryWrapper.eq(Activity::getId,id);
|
Activity result = activityJoinMapper.selectJoinOne(Activity.class, queryWrapper);
|
|
return result;
|
}
|
|
@Override
|
public Activity findOne(Activity activity) {
|
QueryWrapper<Activity> wrapper = new QueryWrapper<>(activity);
|
return activityMapper.selectOne(wrapper);
|
}
|
|
@Override
|
public List<Activity> findList(Activity activity) {
|
QueryWrapper<Activity> wrapper = new QueryWrapper<>(activity);
|
return activityMapper.selectList(wrapper);
|
}
|
|
@Override
|
public PageData<Activity> findPage(PageWrap<Activity> pageWrap) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
|
IPage<Activity> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
MPJLambdaWrapper<Activity> queryWrapper = new MPJLambdaWrapper<>();
|
Utils.MP.blankToNull(pageWrap.getModel());
|
|
queryWrapper.selectAll(Activity.class);
|
queryWrapper.selectAs(SystemUser::getRealname, Activity::getRealName);
|
queryWrapper.selectAs(SystemUser::getType, Activity::getUserType);
|
queryWrapper.selectAs(Labels::getName, Activity::getLablesName);
|
queryWrapper.select("(select count(id) from zan where ISDELETED=0 and OBJ_ID=t.id ) as zanCount");
|
queryWrapper.select("(select count(id) from collect where ISDELETED=0 and OBJ_ID=t.id ) as collectCount");
|
queryWrapper.select("(select count(id) from comment where ISDELETED=0 and OBJ_ID=t.id ) as commentCount");
|
queryWrapper.select("(select count(id) from shares where ISDELETED=0 and OBJ_ID=t.id ) as sharesCount");
|
|
queryWrapper.leftJoin(SystemUser.class, SystemUser::getId, Activity::getCreator);
|
queryWrapper.leftJoin(Labels.class, Labels::getId, Activity::getLabelId);
|
|
if (Constants.equalsInteger(pageWrap.getModel().getType(), Constants.ONE)) {
|
//查询活动报名数据
|
queryWrapper.select("(select count(id) from activity_sign where ISDELETED=0 and ACTIVITY_ID=t.id ) as activityCount");
|
queryWrapper.select("su.REALNAME as serviceName");
|
queryWrapper.selectAs(Shop::getName, Activity::getShopName);
|
queryWrapper.leftJoin("system_user su on su.id=t.ORG_ID");
|
queryWrapper.leftJoin(Shop.class, Shop::getId, Activity::getShopId);
|
|
queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getShopName()), Shop::getName, StringUtils.isNotBlank(pageWrap.getModel().getShopName()));
|
queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getServiceName()), "su.REALNAME", pageWrap.getModel().getServiceName());
|
|
queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getShopName()),ms -> ms.like( Shop::getName, pageWrap.getModel().getShopName()).
|
or().like( "su.REALNAME", pageWrap.getModel().getShopName()));
|
if (pageWrap.getModel().getStarttime() != null) {
|
queryWrapper.ge(Activity::getStarttime, Utils.Date.getStart(pageWrap.getModel().getStarttime()));
|
}
|
if (pageWrap.getModel().getEndtime() != null) {
|
queryWrapper.le(Activity::getEndtime, Utils.Date.getStart(pageWrap.getModel().getEndtime()));
|
}
|
|
if (pageWrap.getModel().getActivityStatus() != null) {
|
if (pageWrap.getModel().getActivityStatus().intValue() == Constants.ZERO) {
|
//未开始
|
queryWrapper.gt(Activity::getSignStarttime, DateUtil.getCurrentDate());
|
} else if (pageWrap.getModel().getActivityStatus().intValue() == Constants.ONE) {
|
//报名中
|
queryWrapper.le(Activity::getSignStarttime, DateUtil.getCurrentDate());
|
queryWrapper.lt(Activity::getStarttime, DateUtil.getCurrentDate());
|
} else if (pageWrap.getModel().getActivityStatus().intValue() == Constants.TWO) {
|
//报名结束
|
queryWrapper.le(Activity::getSignEndtime, DateUtil.getCurrentDate());
|
queryWrapper.lt(Activity::getStarttime, DateUtil.getCurrentDate());
|
} else if (pageWrap.getModel().getActivityStatus().intValue() == 3) {
|
//活动开始
|
queryWrapper.le(Activity::getStarttime, DateUtil.getCurrentDate());
|
queryWrapper.ge(Activity::getEndtime, DateUtil.getCurrentDate());
|
} else if (pageWrap.getModel().getActivityStatus().intValue() == 4) {
|
//活动结束
|
queryWrapper.lt(Activity::getEndtime, DateUtil.getCurrentDate());
|
|
}
|
}
|
|
}
|
|
/**创作者/机构:查看自己发布的数据;平台:查看所有数据; */
|
if (!Constants.equalsInteger(user.getType(), Constants.UserType.SYSTEM.getKey())) {
|
queryWrapper.eq(Activity::getCreator, user.getId());
|
}
|
queryWrapper.eq(Activity::getIsdeleted, Constants.ZERO);
|
|
queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()), Activity::getName, pageWrap.getModel().getName());
|
queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getRealName()), SystemUser::getRealname, pageWrap.getModel().getRealName());
|
queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getUserType()), SystemUser::getType, pageWrap.getModel().getUserType());
|
queryWrapper.orderByDesc(Activity::getCreateDate);
|
IPage<Activity> result = activityJoinMapper.selectJoinPage(page, Activity.class, queryWrapper);
|
|
initActivityListStatus(result.getRecords());
|
return PageData.from(result);
|
}
|
|
private void initActivityListStatus(List<Activity> list) {
|
if (list == null || list.size() == 0) {
|
return;
|
}
|
String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.ACTIVITY_FILE).getCode();
|
for (Activity model : list) {
|
initActivityStatus(model, path);
|
}
|
}
|
|
public void initActivityStatus(Activity model, String path) {
|
if (model == null) {
|
return;
|
}
|
model.setImgurlfull(path);
|
model.setActivityStatus(Constants.ZERO);
|
long now = System.currentTimeMillis();
|
if (model.getStarttime() != null && model.getSignStarttime() != null && model.getSignStarttime().getTime() <= now && model.getStarttime().getTime() < now) {
|
model.setActivityStatus(Constants.ONE);//报名中
|
}
|
if (model.getStarttime() != null && model.getSignEndtime() != null && model.getSignEndtime().getTime() <= now && model.getStarttime().getTime() < now) {
|
model.setActivityStatus(Constants.TWO);//报名结束
|
}
|
if (model.getStarttime() != null && model.getStarttime().getTime() <= now && model.getEndtime().getTime() >= now) {
|
model.setActivityStatus(3);//活动进行中
|
}
|
if (model.getEndtime() != null && model.getEndtime().getTime() < now) {
|
model.setActivityStatus(4);//活动已结束
|
}
|
|
}
|
|
@Override
|
public long count(Activity activity) {
|
QueryWrapper<Activity> wrapper = new QueryWrapper<>(activity);
|
return activityMapper.selectCount(wrapper);
|
}
|
|
@Override
|
public BaseActivity getActivity(Integer activityId,Integer memberId) {
|
|
Activity activity = activityMapper.selectById(activityId);
|
activity = Optional.ofNullable(activity).filter(
|
s->
|
(Constants.equalsInteger(s.getType(),Constants.ZERO) ||Constants.equalsInteger(s.getType(),Constants.ONE))
|
)
|
.orElseThrow(()->new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"活动不存在"));
|
BaseActivity baseActivity = null;
|
if (Constants.equalsInteger(activity.getType(),Constants.ZERO) &&
|
Objects.nonNull(activity.getShopId())){
|
ShopActivity shopActivity = new ShopActivity();
|
ShopSimpleDTO shopSimpleDTO = shopService.getShopSimpleDTO(activity.getShopId());
|
shopActivity.setShopSimpleDTO(shopSimpleDTO);
|
baseActivity = shopActivity;
|
}else if (Constants.equalsInteger(activity.getType(),Constants.ONE) &&
|
Objects.nonNull(activity.getOrgId())){
|
OrgActivity orgActivity = new OrgActivity();
|
BeanUtils.copyProperties(activity,orgActivity);
|
OrgDTO orgDTO = orgsService.findOrgDTOById(activity.getOrgId());
|
orgActivity.setOrgDTO(orgDTO);
|
baseActivity = orgActivity;
|
}
|
Map<Integer, List<MultiFileDTO>> objAllFileUrl = multifileService.getOBJAllFileUrl(activity.getId(),
|
Constants.MultiFile.ACTIVITY_ROTATION.getKey(),
|
null,Constants.AFTERSALE_FILE);
|
|
if(objAllFileUrl==null&&objAllFileUrl.size()>0){
|
baseActivity.setImgurls( objAllFileUrl.get(Constants.MultiFile.ACTIVITY_ROTATION.getKey()));
|
}
|
//0未支付 1已支付
|
QueryWrapper<ActivitySign> wrapper = new QueryWrapper<>();
|
wrapper.lambda().eq(ActivitySign::getActivityId,activityId)
|
.in(ActivitySign::getPayStatus, Arrays.asList(0,1));
|
//获取报名人数
|
Long applicantNum = activitySignMapper.selectCount(wrapper);
|
|
wrapper.clear();
|
wrapper.lambda().eq(ActivitySign::getActivityId,activityId)
|
.eq(ActivitySign::getMemberId,memberId);
|
|
ActivitySign ActivitySignResult = activitySignMapper.selectOne(wrapper);
|
//获取报名状态
|
getPersonActivityStatus(activity, ActivitySignResult,baseActivity);
|
// baseActivity.setPersonActivityStatus(personActivityStatus);
|
baseActivity.setApplicantNum(Constants.formatLongNum(applicantNum));
|
boolean mqResult= normalMsgProducer.sendMsg(Constants.MQ_TAG.activity,JSONObject.toJSONString(activity));
|
//
|
// RocketMessageProducer.producerMsg(Constants.MQ_TAG.activity,null, JSONObject.toJSONString(activity));
|
|
// VisitEvent<Activity> activityVisitEvent = new VisitEvent<>(this,activity);
|
// applicationEventPublisher.publishEvent(activityVisitEvent);
|
return baseActivity;
|
}
|
|
@Override
|
public BaseActivity getActivity(Integer activityId) {
|
Activity activity = activityMapper.selectById(activityId);
|
BaseActivity baseActivity = null;
|
if (Constants.equalsInteger(activity.getType(),Constants.ZERO) &&
|
Objects.nonNull(activity.getShopId())){
|
ShopActivity shopActivity = new ShopActivity();
|
ShopSimpleDTO shopSimpleDTO = shopService.getShopSimpleDTO(activity.getShopId());
|
shopActivity.setShopSimpleDTO(shopSimpleDTO);
|
baseActivity = shopActivity;
|
}else if (Constants.equalsInteger(activity.getType(),Constants.ZERO) &&
|
Objects.nonNull(activity.getOrgId())){
|
OrgActivity orgActivity = new OrgActivity();
|
BeanUtils.copyProperties(activity,orgActivity);
|
OrgDTO orgDTO = orgsService.findOrgDTOById(activity.getOrgId());
|
orgActivity.setOrgDTO(orgDTO);
|
baseActivity = orgActivity;
|
}
|
return baseActivity;
|
}
|
|
@Transactional(rollbackFor = {Exception.class,BusinessException.class})
|
@Override
|
public void creatOrUpdateShopOrgActivity(BaseActivity baseActivity,Integer memberId) {
|
// LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
Activity activity = findById(baseActivity.getId());
|
List<MultiFileDTO> imgurls = baseActivity.getImgurls();
|
if (Objects.isNull(activity)){
|
Activity ins = new Activity();
|
// ins.setCreator(user.getId());
|
ins.setCreateDate(new Date());
|
// ins.setEditor(user.getId());
|
ins.setEditDate(new Date());
|
ins.setIsdeleted(Constants.ZERO);
|
ins.setShopId(baseActivity.getShopId());
|
ins.setOrgId(baseActivity.getOrgId());
|
ins.setName(baseActivity.getName());
|
ins.setStarttime(baseActivity.getStarttime());
|
ins.setEndtime(baseActivity.getEndtime());
|
ins.setSignStarttime(baseActivity.getSignStarttime());
|
ins.setSignEndtime(baseActivity.getSignEndtime());
|
ins.setAddr(baseActivity.getAddr());
|
ins.setLongitude(baseActivity.getLongitude());
|
ins.setLatitude(baseActivity.getLatitude());
|
ins.setLimitnum(baseActivity.getLimitnum());
|
ins.setPrice(Objects.nonNull(baseActivity.getPrice()) ? baseActivity.getPrice() : new BigDecimal("0"));
|
ins.setImgurl(baseActivity.getImgurl());
|
ins.setType(Constants.ZERO);
|
ins.setStatus(Constants.ZERO);
|
ins.setSortnum(Constants.ONE);
|
ins.setLabelId(baseActivity.getLabelId());
|
ins.setMemberId(memberId);
|
ins.setContentType(Constants.ONE);
|
ins.setContent(baseActivity.getContent());
|
activityMapper.insert(ins);
|
if (!CollectionUtils.isEmpty(imgurls)){
|
multifileService.refreshObjMultiFile(ins.getId(),Constants.MultiFile.ACTIVITY_ROTATION.getKey(),imgurls);
|
}
|
}
|
else {
|
|
Activity ins = new Activity();
|
ins.setId(activity.getId());
|
// ins.setCreator(user.getId());
|
ins.setCreateDate(new Date());
|
// ins.setEditor(user.getId());
|
ins.setEditDate(new Date());
|
ins.setIsdeleted(Constants.ZERO);
|
ins.setShopId(baseActivity.getShopId());
|
ins.setOrgId(baseActivity.getOrgId());
|
ins.setName(baseActivity.getName());
|
ins.setStarttime(baseActivity.getStarttime());
|
ins.setEndtime(baseActivity.getEndtime());
|
ins.setSignStarttime(baseActivity.getSignStarttime());
|
ins.setSignEndtime(baseActivity.getSignEndtime());
|
ins.setAddr(baseActivity.getAddr());
|
ins.setLongitude(baseActivity.getLongitude());
|
ins.setLatitude(baseActivity.getLatitude());
|
ins.setLimitnum(baseActivity.getLimitnum());
|
ins.setPrice(Objects.nonNull(baseActivity.getPrice()) ? baseActivity.getPrice() : new BigDecimal("0"));
|
ins.setImgurl(baseActivity.getImgurl());
|
ins.setType(Constants.ZERO);
|
ins.setStatus(Constants.ZERO);
|
ins.setSortnum(Constants.ONE);
|
ins.setLabelId(baseActivity.getLabelId());
|
ins.setMemberId(memberId);
|
ins.setContentType(Constants.ONE);
|
ins.setContent(baseActivity.getContent());
|
activityMapper.updateById(ins);
|
if (!CollectionUtils.isEmpty(imgurls)){
|
multifileService.refreshObjMultiFile(ins.getId(),Constants.MultiFile.ACTIVITY_ROTATION.getKey(),imgurls);
|
}
|
}
|
}
|
|
@Override
|
public PageData<ActivityCardDTO> getActivityCard(PageWrap<ActivityPageListRequest> pageWrap) {
|
String basePath = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode();
|
String memberPath =basePath + systemDictDataBiz.queryByCode(Constants.OSS, Constants.MEMBER_FILE).getCode();
|
String activityPath = basePath + systemDictDataBiz.queryByCode(Constants.OSS, Constants.ACTIVITY_FILE).getCode();
|
|
IPage<Activity> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
MPJLambdaWrapper<Activity> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.selectAs(Activity::getId,ActivityCardDTO::getId)
|
.selectAs(Activity::getName,ActivityCardDTO::getName)
|
.selectAs(Activity::getMemberId,ActivityCardDTO::getMemberId)
|
.selectAs(Activity::getCreateDate,ActivityCardDTO::getCreateDate)
|
.selectAs(Activity::getType,ActivityCardDTO::getType)
|
.selectAs(Activity::getImgurl,ActivityCardDTO::getImgurl)
|
.selectAs(Member::getNickname,ActivityCardDTO::getNickName)
|
.selectAs(Member::getImgurl,ActivityCardDTO::getMemberImgUrl);
|
queryWrapper.leftJoin(Member.class,Member::getId,Activity::getMemberId);
|
queryWrapper.orderByDesc(Activity::getCreateDate);
|
|
if (Objects.nonNull(pageWrap.getModel())){
|
queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getKeywords()),Activity::getName,pageWrap.getModel().getKeywords())
|
.or()
|
.like(StringUtils.isNotBlank(pageWrap.getModel().getKeywords()),Activity::getContent,pageWrap.getModel().getKeywords());
|
queryWrapper.in(Objects.nonNull(pageWrap.getModel().getTypes()),Activity::getType,pageWrap.getModel().getTypes());
|
queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getLabelId()),Activity::getLabelId,pageWrap.getModel().getLabelId());
|
queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getMemberId()),Activity::getMemberId,pageWrap.getModel().getMemberId());
|
// queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType()),Activity::getMemberId,pageWrap.getModel().getMemberId());
|
queryWrapper.in(!CollectionUtils.isEmpty(pageWrap.getModel().getMemberIds()),Activity::getMemberId,pageWrap.getModel().getMemberIds());
|
|
}
|
IPage<ActivityCardDTO> activityCardDTOIPage = activityJoinMapper.selectJoinPage(page, ActivityCardDTO.class, queryWrapper);
|
|
if (CollectionUtils.isEmpty(activityCardDTOIPage.getRecords())){
|
return PageData.from(activityCardDTOIPage);
|
}
|
List<Integer> collect = activityCardDTOIPage.getRecords().stream().map(s -> s.getId()).collect(Collectors.toList());
|
|
Map<Integer, CollectDTO> count = collectService.count(collect);
|
|
activityCardDTOIPage.getRecords().forEach(s->{
|
CollectDTO object = MapUtils.getObject(count, s.getId());
|
s.setCollectCount(object != null ? object.getCount() : 0);
|
s.setMemberImgUrl(memberPath+s.getMemberImgUrl());
|
s.setImgurl(activityPath+s.getImgurl());
|
});
|
return PageData.from(activityCardDTOIPage);
|
}
|
|
|
@Override
|
public ActivityProbeShopDTO getActivityProbeShopDTO(Integer activityId, Integer memberId) {
|
|
String basePath = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode();
|
|
//查询活动详情
|
Activity activity = findByIdFull(activityId,memberId);
|
activity = Optional.ofNullable(activity).orElseThrow(()->new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该探店信息不存在,请返回刷新重试!"));
|
ActivityProbeShopDTO activityNewDTO = new ActivityProbeShopDTO();
|
activityNewDTO.setId(activity.getId());
|
activityNewDTO.setName(activity.getName());
|
activityNewDTO.setContent(activity.getContent());
|
activityNewDTO.setCreateDate(activity.getCreateDate());
|
activityNewDTO.setContentType(Constants.formatIntegerNum(activity.getContentType()));
|
|
//处理商户信息
|
if( activity.getShopId() !=null){
|
getShopData(activityNewDTO,activity,basePath);
|
}
|
//处理用户信息
|
if(activity.getMemberId()!=null){
|
getMemberData(activityNewDTO,activity,basePath);
|
}
|
String path=basePath + systemDictDataBiz.queryByCode(Constants.OSS, Constants.ACTIVITY_FILE).getCode();
|
if(StringUtils.isNotBlank(activity.getImgurl())){
|
activity.setImgurlfull(path+activity.getImgurl());
|
}
|
if(Constants.equalsInteger(activity.getType(),Constants.ActivityType.TANDIAN.getKey())){
|
//如果是探店,查询轮播附件
|
getTandianFileList(activityNewDTO,activity,path);
|
}
|
boolean mqResult= normalMsgProducer.sendMsg(Constants.MQ_TAG.activity,JSONObject.toJSONString(activity));
|
return activityNewDTO;
|
}
|
|
private void getShopData(ActivityProbeShopDTO activityNewDTO, Activity activity, String basePath) {
|
ShopSimpleDTO shopSimpleDTO = new ShopSimpleDTO();
|
shopSimpleDTO.setId(activity.getShopId());
|
shopSimpleDTO.setName(activity.getShopName());
|
shopSimpleDTO.setStarNum(activity.getShopStarNum());
|
if(StringUtils.isNotBlank(activity.getShopImg())){
|
String shopImgPath = basePath+systemDictDataBiz.queryByCode(Constants.OSS,Constants.SHOP_FILE).getCode();
|
shopSimpleDTO.setImgurl(shopImgPath+ activity.getShopImg());
|
}
|
activityNewDTO.setShopSimpleDTO(shopSimpleDTO);
|
}
|
|
private void getMemberData(ActivityProbeShopDTO activityNewDTO, Activity activity, String basePath) {
|
MemberDTO memberDTO = new MemberDTO();
|
memberDTO.setId(activity.getMemberId());
|
if(StringUtils.isNotBlank(activity.getMemberImg())){
|
String mPath = basePath+systemDictDataBiz.queryByCode(Constants.OSS,Constants.SHOP_FILE).getCode();
|
memberDTO.setImgurl(mPath+ activity.getMemberImg());
|
}
|
memberDTO.setNickname(activity.getMemberName());
|
memberDTO.setFollowStatus(activity.getMemberFollow() >0);
|
activityNewDTO.setMemberDTO(memberDTO);
|
}
|
|
private void getTandianFileList(ActivityProbeShopDTO activityNewDTO, Activity activity,String path) {
|
//开始获取探店多图 信息
|
Multifile queryfile = new Multifile();
|
queryfile.setObjId(activity.getId());
|
queryfile.setObjType( Constants.MultiFile.TANDIAN_PICTURE.getKey());
|
queryfile.setIsdeleted(Constants.ZERO);
|
List<Multifile> filelist = multifileMapper.selectList(new QueryWrapper<>(queryfile));
|
if(filelist !=null && filelist.size()>0){
|
activityNewDTO.setFileList(new ArrayList<>());
|
filelist.stream().forEach(s-> {
|
if(StringUtils.isNotBlank(s.getFileurl())){
|
s.setFileFullUrl(path+s.getFileurl());
|
MultiFileDTO f = new MultiFileDTO();
|
BeanUtils.copyProperties(s,f);
|
activityNewDTO.getFileList().add(f);
|
}
|
});
|
}
|
}
|
|
@Override
|
public PageData<ActivityVideoDTO> getActivityVideoDTO(PageWrap<Integer> pageWrap) {
|
//城市id
|
Integer model = pageWrap.getModel();
|
|
Areas areas = new Areas();
|
areas.setParentId(model);
|
areas.setType(Constants.TWO);
|
List<Areas> areaes = areasService.listByParentId(areas);
|
List<Integer> collect = areaes.stream().map(s -> s.getId()).collect(Collectors.toList());
|
IPage<Activity> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
MPJLambdaWrapper<Activity> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.selectAs(Activity::getId,ActivityVideoDTO::getId)
|
.selectAs(Activity::getName,ActivityVideoDTO::getName);
|
queryWrapper.eq(Activity::getType,Constants.TWO);
|
queryWrapper.eq(Activity::getContentType,Constants.ONE);
|
queryWrapper.in(Shop::getAreaId,collect);
|
queryWrapper.orderByDesc(Activity::getLooknum);
|
|
IPage<ActivityVideoDTO> activityVideoDTOIPage = activityJoinMapper.selectJoinPage(page, ActivityVideoDTO.class, queryWrapper);
|
|
if (CollectionUtils.isEmpty(activityVideoDTOIPage.getRecords())){
|
return PageData.from(activityVideoDTOIPage);
|
}
|
List<Integer> collect1 = activityVideoDTOIPage.getRecords().stream().map(s -> s.getId()).collect(Collectors.toList());
|
|
Map<Integer, List<MultiFileDTO>> objFileUrl = multifileService.getOBJFileUrl(collect1, Constants.MultiFile.TANDIAN_PICTURE.getKey(),Constants. ACTIVITY_FILE);
|
|
activityVideoDTOIPage.getRecords().forEach(s->{
|
MultiFileDTO dto = objFileUrl.get(s.getId()).stream().filter(i -> Constants.TWO == i.getType()).findFirst().orElse(new MultiFileDTO());
|
s.setMemberDTO(dto);
|
});
|
|
return PageData.from(activityVideoDTOIPage);
|
}
|
|
@Override
|
public PageData<ActivityCardDTO> getUserCollectActivityCard(PageWrap pageWrap,Integer memberId) {
|
|
//LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
|
PageWrap<Collect> collectPageWrap = new PageWrap<>();
|
BeanUtils.copyProperties(pageWrap,collectPageWrap);
|
Collect collect = new Collect();
|
collect.setMemberId(memberId);
|
collectPageWrap.setModel(collect);
|
|
PageData<Collect> page = collectService.findPage(collectPageWrap);
|
if (CollectionUtils.isEmpty(page.getRecords())){
|
return PageData.from(new Page<>());
|
}
|
|
List<Integer> collect1 = page.getRecords().stream().map(s -> s.getObjId()).collect(Collectors.toList());
|
List<ActivityCardDTO> activityCardDTOList = getActivityCardDTOList(collect1);
|
|
PageData<ActivityCardDTO> pageData = new PageData<>();
|
pageData.setPage(page.getPage());
|
pageData.setCapacity(page.getCapacity());
|
pageData.setTotal(page.getTotal());
|
pageData.setRecords(activityCardDTOList);
|
return pageData;
|
}
|
|
private List<ActivityCardDTO> getActivityCardDTOList(List<Integer> ids){
|
|
String memberPath = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
|
+ systemDictDataBiz.queryByCode(Constants.OSS, Constants.MEMBER_FILE).getCode();
|
|
String activityPath = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
|
+ systemDictDataBiz.queryByCode(Constants.OSS, Constants.ACTIVITY_FILE).getCode();
|
|
MPJLambdaWrapper<Activity> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.selectAs(Activity::getId,ActivityCardDTO::getId)
|
.selectAs(Activity::getName,ActivityCardDTO::getName)
|
.selectAs(Activity::getMemberId,ActivityCardDTO::getMemberId)
|
.selectAs(Activity::getCreateDate,ActivityCardDTO::getCreateDate)
|
.selectAs(Activity::getType,ActivityCardDTO::getType)
|
.selectAs(Activity::getImgurl,ActivityCardDTO::getImgurl)
|
.selectAs(Member::getNickname,ActivityCardDTO::getNickName)
|
.selectAs(Member::getImgurl,ActivityCardDTO::getMemberImgUrl);
|
queryWrapper.leftJoin(Activity.class,Activity::getMemberId,Member::getId);
|
|
queryWrapper.in(Activity::getId,ids);
|
|
List<ActivityCardDTO> activityCardDTOs = activityJoinMapper.selectJoinList(ActivityCardDTO.class, queryWrapper);
|
|
if (CollectionUtils.isEmpty(activityCardDTOs)){
|
return new ArrayList<>();
|
}
|
List<Integer> collect = activityCardDTOs.stream().map(s -> s.getId()).collect(Collectors.toList());
|
|
Map<Integer, CollectDTO> count = collectService.count(collect);
|
|
activityCardDTOs.forEach(s->{
|
CollectDTO object = MapUtils.getObject(count, s.getId());
|
s.setCollectCount(object != null ? object.getCount() : 0);
|
s.setMemberImgUrl(memberPath+s.getMemberImgUrl());
|
s.setImgurl(activityPath+s.getImgurl());
|
});
|
return activityCardDTOs;
|
|
}
|
|
@Override
|
public void visitOperation(Object o) {
|
if (Objects.isNull(o)){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"访问目标不存在");
|
}
|
Activity activity = (Activity) o;
|
UpdateWrapper<Activity> wrapper = new UpdateWrapper<>();
|
wrapper.lambda().set(Activity::getLooknum, Objects.isNull(activity.getLooknum()) ? 1 : activity.getLooknum()+1);
|
activityMapper.update(null,wrapper);
|
}
|
|
|
@Override
|
public PageData<MemberActivitySignDTO> getUserActivitySignCard(PageWrap<String> pageWrap,Integer memberId) {
|
|
IPage<Activity> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
// LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
String model = pageWrap.getModel();
|
MPJLambdaWrapper<ActivitySign> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.selectAs(Activity::getName,MemberActivitySignDTO::getName)
|
.selectAs(Activity::getImgurl,MemberActivitySignDTO::getImgurl)
|
.selectAs(Activity::getId,MemberActivitySignDTO::getId)
|
.selectAs(Activity::getAddr,MemberActivitySignDTO::getAddr)
|
.selectAs(Activity::getStarttime,MemberActivitySignDTO::getStarttime)
|
.selectAs(Activity::getEndtime,MemberActivitySignDTO::getEndtime);
|
queryWrapper.leftJoin(Activity.class,Activity::getId,ActivitySign::getActivityId);
|
queryWrapper.eq(ActivitySign::getMemberId,memberId);
|
|
if ("not_start".equalsIgnoreCase(model)){
|
queryWrapper.lt(Activity::getStarttime,new Date());
|
}
|
if ("having".equalsIgnoreCase(model)){
|
queryWrapper.ge(Activity::getStarttime,new Date());
|
queryWrapper.le(Activity::getStarttime,new Date());
|
}
|
if ("over".equalsIgnoreCase(model)){
|
queryWrapper.gt(Activity::getStarttime,new Date());
|
}
|
|
IPage<MemberActivitySignDTO> memberActivitySignDTOIPage = activitySignJoinMapper.selectJoinPage(page, MemberActivitySignDTO.class, queryWrapper);
|
|
return PageData.from(memberActivitySignDTOIPage);
|
}
|
|
@Override
|
public PageData<ShopActivitySignDTO> getShopActivitySignCard(PageWrap<ShopActivitySignDTO> pageWrap) {
|
|
IPage<Activity> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
Utils.MP.blankToNull(pageWrap.getModel());
|
|
MPJLambdaWrapper<Activity> queryWrapper = new MPJLambdaWrapper<>();
|
queryWrapper.selectAs(Activity::getId,ShopActivitySignDTO::getId);
|
queryWrapper.selectAs(Activity::getShopId,ShopActivitySignDTO::getShopId);
|
queryWrapper.selectAs(Activity::getName,ShopActivitySignDTO::getName);
|
queryWrapper.selectAs(Activity::getImgurl,ShopActivitySignDTO::getImgurl);
|
queryWrapper.selectAs(Activity::getAddr,ShopActivitySignDTO::getAddr);
|
queryWrapper.selectAs(Activity::getStarttime,ShopActivitySignDTO::getStarttime);
|
queryWrapper.selectAs(Activity::getEndtime,ShopActivitySignDTO::getEndtime);
|
queryWrapper.selectAs(Activity::getLimitnum,ShopActivitySignDTO::getLimitnum);
|
queryWrapper.selectAs(Activity::getPrice,ShopActivitySignDTO::getPrice);
|
queryWrapper.selectCount(ActivitySign::getActivityId,ShopActivitySignDTO::getApplicantNum);
|
queryWrapper.leftJoin(ActivitySign.class,ActivitySign::getActivityId,Activity::getId);
|
queryWrapper.eq(Activity::getShopId,pageWrap.getModel().getShopId());
|
|
if ("not_start".equalsIgnoreCase(pageWrap.getModel().getActivityStatus())){
|
queryWrapper.lt(Activity::getStarttime,new Date());
|
}
|
if ("having".equalsIgnoreCase(pageWrap.getModel().getActivityStatus())){
|
queryWrapper.ge(Activity::getStarttime,new Date());
|
queryWrapper.le(Activity::getStarttime,new Date());
|
}
|
if ("over".equalsIgnoreCase(pageWrap.getModel().getActivityStatus())){
|
queryWrapper.gt(Activity::getStarttime,new Date());
|
}
|
Date now = new Date();
|
IPage<ShopActivitySignDTO> memberActivitySignDTOIPage = activityJoinMapper.selectJoinPage(page,ShopActivitySignDTO.class,queryWrapper);
|
if (CollectionUtils.isEmpty(memberActivitySignDTOIPage.getRecords())){
|
return PageData.from(new Page<>());
|
}
|
memberActivitySignDTOIPage.getRecords().forEach(s->{
|
if (now.before(s.getStarttime())){
|
s.setActivityStatus("not_start");
|
}
|
if (now.after(s.getEndtime())){
|
s.setActivityStatus("over");
|
}
|
});
|
return PageData.from(memberActivitySignDTOIPage);
|
}
|
|
@Override
|
public PageData<ActivitySignUserDTO> getActivitySignUserDTO(PageWrap<Integer> pageWrap) {
|
|
IPage<ActivitySign> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
Utils.MP.blankToNull(pageWrap.getModel());
|
|
LambdaQueryWrapper<ActivitySign> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(ActivitySign::getActivityId,pageWrap.getModel())
|
.eq(ActivitySign::getStatus,Constants.ONE);
|
|
IPage<ActivitySign> activitySignIPage = activitySignMapper.selectPage(page,wrapper);
|
if (CollectionUtils.isEmpty(activitySignIPage.getRecords())){
|
return PageData.from(new Page<>());
|
}
|
List<ActivitySignUserDTO> collect = activitySignIPage.getRecords().stream().map(s -> {
|
ActivitySignUserDTO dto = new ActivitySignUserDTO();
|
dto.setId(s.getId());
|
dto.setMemberId(s.getMemberId());
|
dto.setStatus(s.getStatus());
|
dto.setRealname(s.getRealname());
|
dto.setPhone(s.getPhone());
|
dto.setCompany(s.getCompany());
|
dto.setPayStatus(s.getPayStatus());
|
dto.setPayDate(s.getPayDate());
|
dto.setPayOrderId(s.getPayOrderId());
|
dto.setPayMethod(s.getPayMethod());
|
dto.setPrice(s.getPrice());
|
return dto;
|
}).collect(Collectors.toList());
|
PageData<ActivitySignUserDTO> pageData = new PageData<>();
|
pageData.setPage(activitySignIPage.getCurrent());
|
pageData.setCapacity(activitySignIPage.getSize());
|
pageData.setTotal(activitySignIPage.getTotal());
|
pageData.setRecords(collect);
|
return pageData;
|
}
|
|
|
@Override
|
public PageData<ActivityCardDTO> getUserFollowActivityCard(PageWrap pageWrap,Integer memberId) {
|
|
// LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
|
ShopFollow shopFollow = new ShopFollow();
|
shopFollow.setMemberId(memberId);
|
List<ShopFollow> shopFollows = shopFollowService.findList(shopFollow);
|
if (CollectionUtils.isEmpty(shopFollows)){
|
return PageData.from(new Page<>());
|
}
|
List<Integer> collect = shopFollows.stream()
|
.filter(s -> Constants.equalsInteger(s.getObjType(), Constants.ONE))
|
.map(s -> s.getObjId()).collect(Collectors.toList());
|
|
PageWrap<ActivityPageListRequest> baseActivityPageWrap = new PageWrap<>();
|
BeanUtils.copyProperties(pageWrap,baseActivityPageWrap);
|
ActivityPageListRequest activity = new ActivityPageListRequest();
|
activity.setMemberIds(collect);
|
baseActivityPageWrap.setModel(activity);
|
|
PageData<ActivityCardDTO> activityCard = getActivityCard(baseActivityPageWrap);
|
return activityCard;
|
}
|
|
|
private void getPersonActivityStatus(Activity activity, ActivitySign activitySign,BaseActivity baseActivity){
|
|
Date now = new Date();
|
Date startTime = activity.getStarttime();
|
Date endTime = activity.getEndtime();
|
Date signStartTime = activity.getSignStarttime();
|
Date signEndTime = activity.getSignEndtime();
|
Integer payStatus = Optional.ofNullable(activitySign).map(s->s.getPayStatus()).orElse(null);
|
|
if (Objects.isNull(payStatus)){
|
baseActivity.setActivitySignStatus(0);
|
}
|
if (Objects.nonNull(payStatus) ){
|
baseActivity.setActivitySignStatus(1);
|
}
|
if (Objects.nonNull(payStatus) && Constants.equalsInteger(payStatus,Constants.ZERO)){
|
baseActivity.setActivitySignStatus(2);
|
}
|
if (Objects.nonNull(payStatus) && Constants.equalsInteger(payStatus,Constants.ONE)){
|
baseActivity.setActivitySignStatus(3);
|
}
|
|
|
if ( now.before(signStartTime)){
|
baseActivity.setSignTimeStatus(0);
|
}else if (now.after(signStartTime) && now.before(signEndTime)){
|
baseActivity.setSignTimeStatus(1);
|
}else if (now.after(signEndTime)){
|
baseActivity.setSignTimeStatus(2);
|
}
|
|
if ( now.before(startTime)){
|
baseActivity.setActivityTimeStatus(0);
|
}else if (now.after(startTime) && now.before(endTime)){
|
baseActivity.setActivityTimeStatus(1);
|
}else if (now.after(endTime)){
|
baseActivity.setActivityTimeStatus(2);
|
}
|
|
//活动未开始
|
/* if ( now.before(signStartTime)){
|
return "not_start_apply";
|
}
|
//活动可以报名
|
if (now.after(signStartTime) && now.before(signEndTime) && Objects.isNull(payStatus)){
|
return "start_apply";
|
}
|
//活动可以报名 未支付
|
if ( now.after(signStartTime) && now.before(signEndTime)
|
&& Constants.equalsInteger(payStatus,Constants.ZERO)){
|
return "apply_not_pay";
|
}
|
//
|
if (now.after(signStartTime) && Constants.equalsInteger(payStatus,Constants.ONE)){
|
return "has_apply_has_pay";
|
}
|
//报名时间结束 活动未开始 --> 报名成功
|
if (now.after(signEndTime) && now.before(startTime)
|
&& Objects.nonNull(payStatus)){
|
return "has_apply";
|
}
|
//报名时间结束 未报名 --> 报名已结束
|
if (now.after(signEndTime)
|
&& Objects.isNull(payStatus)){
|
return "apply_end";
|
}
|
//
|
if (now.after(endTime)
|
&& Objects.nonNull(payStatus)){
|
return "has_apply";
|
}
|
//活动时间已过
|
if (now.after(endTime)){
|
return "activity_end";
|
}*/
|
|
}
|
}
|