package com.ks.daylucky.service.impl.remote;
|
|
import com.beust.jcommander.ParameterException;
|
import com.ks.daylucky.mapper.ActivityTagMapper;
|
import com.ks.daylucky.pojo.DO.ActivityTag;
|
import com.ks.daylucky.service.ActivityTagService;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.validation.annotation.Validated;
|
|
import javax.annotation.Resource;
|
import javax.validation.Valid;
|
import java.util.Date;
|
import java.util.HashSet;
|
import java.util.List;
|
import java.util.Set;
|
|
@Service
|
public class ActivityTagServiceImpl implements ActivityTagService {
|
|
@Resource
|
private ActivityTagMapper activityTagMapper;
|
|
|
@Validated
|
@Override
|
public void addActivityTag(@Valid ActivityTag tag) throws ParameterException {
|
if (tag.getWeight() == null) {
|
tag.setWeight(1);
|
}
|
tag.setCreateTime(new Date());
|
activityTagMapper.insertSelective(tag);
|
}
|
|
@Transactional(rollbackFor = Exception.class)
|
@Override
|
public void setTags(Long activityId, List<ActivityTag> tags) {
|
if (tags == null) {
|
return;
|
}
|
|
List<ActivityTag> oList = getTagList(activityId);
|
|
//删除TAG
|
if (tags.size() == 0) {
|
for (ActivityTag tag : oList) {
|
activityTagMapper.deleteByPrimaryKey(tag.getId());
|
}
|
return;
|
}
|
|
//获取老ID
|
Set<Long> ids = new HashSet<>();
|
for (ActivityTag tag : oList) {
|
ids.add(tag.getId());
|
}
|
|
for (int i = 0; i < tags.size(); i++) {
|
ActivityTag tag = tags.get(i);
|
tag.setWeight(tags.size() - i);
|
if (tag.getId() == null) {
|
//新增
|
tag.setCreateTime(new Date());
|
tag.setActivityId(activityId);
|
addActivityTag(tag);
|
} else {
|
ids.remove(tag.getId());
|
//更新权重
|
ActivityTag update = new ActivityTag();
|
update.setId(tag.getId());
|
update.setWeight(tag.getWeight());
|
update(update);
|
}
|
}
|
|
//删除需要删除的标签
|
for (Long id : ids) {
|
delete(id);
|
}
|
}
|
|
|
@Override
|
public List<ActivityTag> getTagList(Long activityId) {
|
return activityTagMapper.listByActivityId(activityId);
|
}
|
|
@Override
|
public void update(ActivityTag tag) {
|
if (tag == null || tag.getId() == null) {
|
return;
|
}
|
tag.setUpdateTime(new Date());
|
activityTagMapper.updateByPrimaryKeySelective(tag);
|
}
|
|
@Override
|
public void delete(Long id) {
|
activityTagMapper.deleteByPrimaryKey(id);
|
}
|
}
|