package com.ruoyi.web.controller.api;
|
|
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.ruoyi.common.constant.Constants;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.redis.RedisCache;
|
import com.ruoyi.system.model.TAppUser;
|
import com.ruoyi.system.model.TAppUserPositioning;
|
import com.ruoyi.system.query.PositioningDetailQuery;
|
import com.ruoyi.system.service.TAppUserPositioningService;
|
import com.ruoyi.system.service.TAppUserService;
|
import com.ruoyi.system.vo.PositioningDetailVO;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.util.StringUtils;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.util.List;
|
import java.util.Objects;
|
|
/**
|
* <p>
|
* 用户每日定位存储 前端控制器
|
* </p>
|
*
|
* @author xiaochen
|
* @since 2025-10-21
|
*/
|
@Api(tags = "人员分布")
|
@RestController
|
@RequestMapping("/t-app-user-positioning")
|
public class TAppUserPositioningController {
|
|
private final TAppUserPositioningService appUserPositioningService;
|
private final TAppUserService appUserService;
|
private final RedisCache redisCache;
|
|
@Autowired
|
public TAppUserPositioningController(TAppUserPositioningService appUserPositioningService, TAppUserService appUserService, RedisCache redisCache) {
|
this.appUserPositioningService = appUserPositioningService;
|
this.appUserService = appUserService;
|
this.redisCache = redisCache;
|
}
|
|
/**
|
* 用户实时获取
|
*/
|
@ApiOperation(value = "人员分布-队伍实时点位")
|
@PostMapping(value = "/api/t-app-user-positioning/queryPositioning")
|
public R<List<TAppUser>> queryPositioning() {
|
List<TAppUser> list = appUserService.list(Wrappers.lambdaQuery(TAppUser.class)
|
.eq(TAppUser::getStatus, 1)
|
.eq(TAppUser::getState, 1));
|
|
for (TAppUser appUser : list) {
|
String location = redisCache.getCacheObject(Constants.LOCATION + appUser.getId());
|
if(StringUtils.hasLength(location)){
|
String[] split = location.split(",");
|
appUser.setLon(split[0]);
|
appUser.setLat(split[1]);
|
}
|
}
|
return R.ok(list);
|
}
|
|
/**
|
* 用户实时获取
|
*/
|
@ApiOperation(value = "人员分布-队伍实时点位")
|
@PostMapping(value = "/api/t-app-user-positioning/queryPositioningDetail")
|
public R<PositioningDetailVO> queryPositioningDetail(@RequestBody String param) {
|
PositioningDetailQuery positioningDetailQuery = JSON.parseObject(param,PositioningDetailQuery.class);
|
TAppUser appUser = appUserService.getById(positioningDetailQuery.getAppUserId());
|
if(appUser == null){
|
return R.fail("用户不存在");
|
}
|
PositioningDetailVO positioningDetailVO = new PositioningDetailVO();
|
BeanUtils.copyProperties(appUser,positioningDetailVO);
|
|
TAppUserPositioning appUserPositioning = appUserPositioningService.getOne(Wrappers.lambdaQuery(TAppUserPositioning.class)
|
.eq(TAppUserPositioning::getAppUserId,appUser.getId())
|
.like(TAppUserPositioning::getCreateTime, positioningDetailQuery.getStartTime())
|
.last("LIMIT 1"));
|
|
if(Objects.nonNull(appUserPositioning)){
|
positioningDetailVO.setRealTimePositioning(appUserPositioning.getUserLocation());
|
}
|
return R.ok(positioningDetailVO);
|
}
|
|
}
|