package com.ks.push.service.remote; import com.ks.lib.common.exception.ParamsException; import com.ks.push.dao.BPushDeviceTokenDao; import com.ks.push.exception.BPushDeviceTokenException; import com.ks.push.pojo.DO.BPushDeviceToken; import com.ks.push.service.BDeviceTokenService; import org.apache.dubbo.config.annotation.Service; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import org.yeshi.utils.StringUtil; import javax.annotation.Resource; import java.util.Date; @Service(version = "1.0") public class BDeviceTokenServiceImpl implements BDeviceTokenService { @Resource private BPushDeviceTokenDao bPushDeviceTokenDao; @Override public void save(BPushDeviceToken deviceToken) throws ParamsException, BPushDeviceTokenException { if (deviceToken == null) { throw new ParamsException(ParamsException.CODE_PARAMS_NOT_ENOUGH, "对象为空"); } if (StringUtil.isNullOrEmpty(deviceToken.getAppCode())) { throw new ParamsException(ParamsException.CODE_PARAMS_NOT_ENOUGH, "appcode为空"); } if (StringUtil.isNullOrEmpty(deviceToken.getDeviceId())) { throw new ParamsException(ParamsException.CODE_PARAMS_NOT_ENOUGH, "设备ID为空"); } if (StringUtil.isNullOrEmpty(deviceToken.getToken())) { throw new ParamsException(ParamsException.CODE_PARAMS_NOT_ENOUGH, "token为空"); } String id = BPushDeviceToken.createId(deviceToken.getAppCode(), deviceToken.getDeviceId()); if (bPushDeviceTokenDao.get(id) == null) { //新增 deviceToken.setId(id); if (deviceToken.getCreateTime() == null) { deviceToken.setCreateTime(new Date()); } deviceToken.setUpdateTime(new Date()); bPushDeviceTokenDao.save(deviceToken); } else { //更新 deviceToken.setId(id); deviceToken.setUpdateTime(new Date()); bPushDeviceTokenDao.updateSelective(deviceToken); } } @Override public void deleteByDeviceId(String appCode, String deviceId) { String id = BPushDeviceToken.createId(appCode, deviceId); bPushDeviceTokenDao.delete(id); } @Override public void unBindUid(String appCode, String deviceId) { String id = BPushDeviceToken.createId(appCode, deviceId); if (bPushDeviceTokenDao.get(id) == null) { return; } Update update = new Update(); update.set("uid", null); update.set("updateTime", new Date()); Query query = new Query(); query.addCriteria(Criteria.where("_id").is(id)); bPushDeviceTokenDao.update(query, update); } @Override public void bindUid(String appCode, String deviceId, String uid) { String id = BPushDeviceToken.createId(appCode, deviceId); if (bPushDeviceTokenDao.get(id) == null) { return; } Update update = new Update(); update.set("uid", uid); Query query = new Query(); query.addCriteria(Criteria.where("_id").is(id)); bPushDeviceTokenDao.update(query, update); } }