| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- package com.ruoyi.app.user;
- import java.util.List;
- import java.util.Objects;
- import java.util.Date;
- import jakarta.servlet.http.HttpServletResponse;
- import com.alibaba.fastjson.JSONObject;
- import com.alibaba.fastjson2.JSON;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.ruoyi.common.annotation.Anonymous;
- import com.ruoyi.common.annotation.RepeatSubmit;
- import com.ruoyi.system.domain.InfoUser;
- import com.ruoyi.system.domain.VipUser;
- import com.ruoyi.system.service.IInfoUserService;
- import com.ruoyi.system.utils.Auth;
- import com.ruoyi.system.utils.JwtUtil;
- import org.springframework.security.access.prepost.PreAuthorize;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.dao.DuplicateKeyException;
- import org.springframework.web.bind.annotation.*;
- import com.ruoyi.common.annotation.Log;
- import com.ruoyi.common.core.controller.BaseController;
- import com.ruoyi.common.core.domain.AjaxResult;
- import com.ruoyi.common.enums.BusinessType;
- import com.ruoyi.system.domain.RiderPosition;
- import com.ruoyi.system.service.IRiderPositionService;
- import com.ruoyi.common.utils.MessageUtils;
- import com.ruoyi.common.utils.poi.ExcelUtil;
- import com.ruoyi.common.core.page.TableDataInfo;
- /**
- * RiderPositionController
- *
- * @author ruoyi
- * @date 2023-07-31
- */
- @RestController
- @RequestMapping("/system/position")
- public class RiderPositionController extends BaseController
- {
- @Autowired
- private IRiderPositionService riderPositionService;
- @Autowired
- private IInfoUserService infoUserService;
- /**
- * 更新验手位置
- * @param token
- * @param riderPosition
- * @return
- */
- @Anonymous
- @Auth
- @RepeatSubmit(interval = 1000, message = "请求过于频繁")
- @PostMapping("/setRiderposition")
- public AjaxResult setRiderposition(@RequestHeader String token, @RequestBody RiderPosition riderPosition) {
- JwtUtil jwtUtil = new JwtUtil();
- String id = jwtUtil.getusid(token);
- System.out.println("setRiderposition更新定位,用户id"+id);
- logger.info("setRiderposition更新定位,用户id"+id);
- InfoUser user = infoUserService.getById(id);
- QueryWrapper<RiderPosition> queryWrapper= new QueryWrapper<>();
- queryWrapper.eq("rider_id",id);
- // 骑手定位一人一条:历史重复行取第一条继续更新,不再抛 selectOne 多行异常
- RiderPosition position = riderPositionService.getOne(queryWrapper, false);
- RiderPosition rider = new RiderPosition();
- if(position==null){
- rider.setRiderId(Long.valueOf(id));
- rider.setLatitude(riderPosition.getLatitude());
- rider.setLongitude(riderPosition.getLongitude());
- rider.setReportedAt(new Date());
- if(user.getCid()!=null && !Objects.equals(user.getCid(), "")){
- rider.setCid(user.getCid());
- }
- System.out.println("setRiderposition更新定位,用户id,新增信息:"+ JSON.toJSONString( rider));
- logger.info("setRiderposition更新定位,用户id,新增信息:"+ JSON.toJSONString( rider));
- Boolean org;
- try {
- org = riderPositionService.saveOrUpdate(rider);
- } catch (DuplicateKeyException e) {
- // 并发上传同时查空双双插入,撞 rider_id 唯一索引时转按骑手更新已有记录
- logger.info("setRiderposition并发插入撞唯一索引转更新,用户id"+id);
- org = riderPositionService.update(rider, queryWrapper);
- }
- if(org){
- return success();
- }else {
- return error();
- }
- }else {
- rider.setId(position.getId());
- rider.setRiderId(Long.valueOf(id));
- rider.setLatitude(riderPosition.getLatitude());
- rider.setLongitude(riderPosition.getLongitude());
- rider.setReportedAt(new Date());
- if(user.getCid()!=null && !Objects.equals(user.getCid(), "")){
- rider.setCid(user.getCid());
- }
- System.out.println("setRiderposition更新定位,用户id,修改信息:"+ JSON.toJSONString( rider));
- logger.info("setRiderposition更新定位,用户id,修改信息:"+ JSON.toJSONString( rider));
- Boolean org = riderPositionService.saveOrUpdate(rider);
- if(org){
- return success();
- }else {
- return error();
- }
- }
- }
- /**
- * 通过骑手用户id获取骑手经纬度
- *
- * @param token 登录令牌
- * @param riderId 骑手用户id
- * @return 骑手定位记录(含 latitude/longitude),骑手尚无定位记录时 data 为 null
- */
- @Anonymous
- @Auth
- @GetMapping("/getRiderposition")
- public AjaxResult getRiderposition(@RequestHeader String token, @RequestParam Long riderId) {
- QueryWrapper<RiderPosition> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq("rider_id", riderId);
- // 一人一条:历史重复行取第一条,不抛 selectOne 多行异常
- RiderPosition position = riderPositionService.getOne(queryWrapper, false);
- return success(position);
- }
- /**
- * 查询RiderPosition列表
- */
- @PreAuthorize("@ss.hasPermi('system:position:list')")
- @GetMapping("/list")
- public TableDataInfo list(RiderPosition riderPosition)
- {
- startPage();
- List<RiderPosition> list = riderPositionService.selectRiderPositionList(riderPosition);
- return getDataTable(list);
- }
- /**
- * 导出RiderPosition列表
- */
- @PreAuthorize("@ss.hasPermi('system:position:export')")
- @Log(title = "RiderPosition", businessType = BusinessType.EXPORT)
- @PostMapping("/export")
- public void export(HttpServletResponse response, RiderPosition riderPosition)
- {
- List<RiderPosition> list = riderPositionService.selectRiderPositionList(riderPosition);
- ExcelUtil<RiderPosition> util = new ExcelUtil<RiderPosition>(RiderPosition.class);
- util.exportExcel(response, list, MessageUtils.message("no.export.excel.riderposition"));
- }
- /**
- * 获取RiderPosition详细信息
- */
- @PreAuthorize("@ss.hasPermi('system:position:query')")
- @GetMapping(value = "/{id}")
- public AjaxResult getInfo(@PathVariable("id") Long id)
- {
- return success(riderPositionService.selectRiderPositionById(id));
- }
- /**
- * 新增RiderPosition
- */
- @PreAuthorize("@ss.hasPermi('system:position:add')")
- @Log(title = "RiderPosition", businessType = BusinessType.INSERT)
- @PostMapping
- public AjaxResult add(@RequestBody RiderPosition riderPosition)
- {
- return toAjax(riderPositionService.insertRiderPosition(riderPosition));
- }
- /**
- * 修改RiderPosition
- */
- @PreAuthorize("@ss.hasPermi('system:position:edit')")
- @Log(title = "RiderPosition", businessType = BusinessType.UPDATE)
- @PutMapping
- public AjaxResult edit(@RequestBody RiderPosition riderPosition)
- {
- return toAjax(riderPositionService.updateRiderPosition(riderPosition));
- }
- /**
- * 删除RiderPosition
- */
- @PreAuthorize("@ss.hasPermi('system:position:remove')")
- @Log(title = "RiderPosition", businessType = BusinessType.DELETE)
- @DeleteMapping("/{ids}")
- public AjaxResult remove(@PathVariable Long[] ids)
- {
- return toAjax(riderPositionService.deleteRiderPositionByIds(ids));
- }
- }
|