package com.ks.vip.service.remote;
|
|
import org.apache.dubbo.config.annotation.Service;
|
import com.ks.vip.exception.VipOrderException;
|
import com.ks.vip.mapper.VipOrderMapper;
|
import com.ks.vip.pojo.DO.VipOrder;
|
import com.ks.vip.pojo.Enums.OrderTypeEnum;
|
import com.ks.vip.query.VipOrderQuery;
|
import com.ks.vip.service.VipCenterService;
|
import com.ks.vip.service.VipComboService;
|
import com.ks.vip.service.VipOrederService;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.yeshi.utils.DateUtil;
|
import org.yeshi.utils.StringUtil;
|
import org.yeshi.utils.TimeUtil;
|
|
import javax.annotation.Resource;
|
import java.util.Date;
|
import java.util.List;
|
|
@Service(version = "1.0")
|
public class VipOrderServiceImpl implements VipOrederService {
|
|
@Resource
|
private VipOrderMapper vipOrderMapper;
|
|
@Resource
|
private VipComboService vipComboService;
|
|
@Resource
|
private VipCenterService vipCenterService;
|
|
|
@Override
|
public void insertSelective(VipOrder t) {
|
vipOrderMapper.insertSelective(t);
|
}
|
|
@Override
|
public void updateByPrimaryKeySelective(VipOrder t) {
|
vipOrderMapper.updateByPrimaryKeySelective(t);
|
}
|
|
@Override
|
public void delete(Long id) {
|
vipOrderMapper.deleteByPrimaryKey(id);
|
}
|
|
|
@Override
|
public long count(VipOrder t) {
|
VipOrderQuery query = new VipOrderQuery();
|
query.comboId = t.getComboId();
|
query.uid = t.getUid();
|
query.threeOrderId = t.getThreeOrderId();
|
query.type = t.getType();
|
query.state = t.getState();
|
return vipOrderMapper.count(query);
|
}
|
|
|
@Override
|
public List<VipOrder> listByPage(int page, int pageSize, VipOrder t) {
|
VipOrderQuery query = new VipOrderQuery();
|
query.comboId = t.getComboId();
|
query.uid = t.getUid();
|
query.threeOrderId = t.getThreeOrderId();
|
query.type = t.getType();
|
query.state = t.getState();
|
return vipOrderMapper.listByPage(query);
|
}
|
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void addOrderByWatchVideo(String uid, Long gradeId, Integer hour) throws VipOrderException {
|
if (StringUtil.isNullOrEmpty(uid)) {
|
throw new VipOrderException(1, "用户ID不能为空");
|
}
|
if (gradeId == null) {
|
throw new VipOrderException(1, "等级ID不能为空");
|
}
|
if (hour == null || hour.longValue() <= 0) {
|
throw new VipOrderException(1, "有效小时数不能为空");
|
}
|
if (!canAddOrderByWatchVideo(uid)) {
|
throw new VipOrderException(1, "今日次数已经用完");
|
}
|
|
|
// 插入订单信息 唯一性处理TODO
|
VipOrder newOrder = new VipOrder();
|
newOrder.setUid(uid);
|
newOrder.setType(OrderTypeEnum.watchVideo);
|
newOrder.setCreateTime(new Date());
|
vipOrderMapper.insertSelective(newOrder);
|
|
// 更新等级
|
vipCenterService.saveVipCenter(uid, gradeId, hour, newOrder.getId());
|
}
|
|
@Override
|
public boolean canAddOrderByWatchVideo(String uid) {
|
long now = System.currentTimeMillis();
|
VipOrderQuery vipOrderQuery = new VipOrderQuery();
|
vipOrderQuery.uid = uid;
|
vipOrderQuery.type = OrderTypeEnum.watchVideo;
|
vipOrderQuery.minCreateTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(now, "yyyy-MM-dd"), "yyyy-MM-dd"));
|
vipOrderQuery.maxCreateTime = DateUtil.plusDayDate(1, vipOrderQuery.minCreateTime);
|
long count = vipOrderMapper.count(vipOrderQuery);
|
//TODO 写入配置信息
|
return count < 3;
|
}
|
|
@Override
|
public VipOrder selectByThreeOrderId(String orderId) {
|
VipOrderQuery vipOrderQuery = new VipOrderQuery();
|
vipOrderQuery.threeOrderId = orderId;
|
vipOrderQuery.count = 1;
|
List<VipOrder> orderList = vipOrderMapper.listByPage(vipOrderQuery);
|
if (orderList == null || orderList.size() == 0) {
|
return null;
|
}
|
return orderList.get(0);
|
}
|
}
|