RiderDeviceServiceImpl.java
3.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.diligrp.rider.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.diligrp.rider.dto.DeviceBindDTO;
import com.diligrp.rider.entity.RiderDevice;
import com.diligrp.rider.mapper.RiderDeviceMapper;
import com.diligrp.rider.service.RiderDeviceService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Slf4j
@Service
@RequiredArgsConstructor
public class RiderDeviceServiceImpl implements RiderDeviceService {
private final RiderDeviceMapper deviceMapper;
@Override
@Transactional
public void bind(Long riderId, DeviceBindDTO dto) {
long now = System.currentTimeMillis();
// 同一 registrationId 全局唯一:若已存在则覆盖归属
LambdaQueryWrapper<RiderDevice> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(RiderDevice::getRegistrationId, dto.getRegistrationId());
RiderDevice existing = deviceMapper.selectOne(wrapper);
if (existing != null) {
existing.setRiderId(riderId);
existing.setPlatform(dto.getPlatform());
existing.setDeviceInfo(dto.getDeviceInfo() == null ? "" : dto.getDeviceInfo());
existing.setAppVersion(dto.getAppVersion() == null ? "" : dto.getAppVersion());
existing.setStatus(1);
existing.setLastActiveTime(now);
existing.setUpdateTime(now);
deviceMapper.updateById(existing);
log.info("设备绑定刷新 riderId={} registrationId={}", riderId, dto.getRegistrationId());
return;
}
RiderDevice device = new RiderDevice();
device.setRiderId(riderId);
device.setRegistrationId(dto.getRegistrationId());
device.setPlatform(dto.getPlatform());
device.setDeviceInfo(dto.getDeviceInfo() == null ? "" : dto.getDeviceInfo());
device.setAppVersion(dto.getAppVersion() == null ? "" : dto.getAppVersion());
device.setStatus(1);
device.setLastActiveTime(now);
device.setCreateTime(now);
device.setUpdateTime(now);
deviceMapper.insert(device);
log.info("设备绑定新增 riderId={} registrationId={}", riderId, dto.getRegistrationId());
}
@Override
@Transactional
public void unbind(Long riderId, String registrationId) {
if (registrationId == null || registrationId.isEmpty()) {
return;
}
long now = System.currentTimeMillis();
LambdaUpdateWrapper<RiderDevice> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(RiderDevice::getRegistrationId, registrationId)
.eq(RiderDevice::getRiderId, riderId)
.set(RiderDevice::getStatus, 0)
.set(RiderDevice::getUpdateTime, now);
deviceMapper.update(null, wrapper);
log.info("设备解绑 riderId={} registrationId={}", riderId, registrationId);
}
}