InfoAddressController.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package com.ruoyi.app.order;
  2. import com.ruoyi.app.flashdelivery.dto.InfoAddressRequest;
  3. import com.ruoyi.app.flashdelivery.service.InfoAddressBookService;
  4. import com.ruoyi.common.annotation.Anonymous;
  5. import com.ruoyi.common.annotation.Log;
  6. import com.ruoyi.common.core.controller.BaseController;
  7. import com.ruoyi.common.core.domain.AjaxResult;
  8. import com.ruoyi.common.core.domain.entity.SysDictData;
  9. import com.ruoyi.common.core.page.TableDataInfo;
  10. import com.ruoyi.common.enums.BusinessType;
  11. import com.ruoyi.common.utils.DictUtils;
  12. import com.ruoyi.common.utils.MessageUtils;
  13. import com.ruoyi.common.utils.poi.ExcelUtil;
  14. import com.ruoyi.system.domain.InfoAddress;
  15. import com.ruoyi.system.mapper.InfoAddressMapper;
  16. import com.ruoyi.system.service.IInfoAddressService;
  17. import com.ruoyi.system.utils.Auth;
  18. import com.ruoyi.system.utils.JwtUtil;
  19. import jakarta.servlet.http.HttpServletResponse;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.security.access.prepost.PreAuthorize;
  22. import org.springframework.web.bind.annotation.*;
  23. import java.math.BigDecimal;
  24. import java.util.List;
  25. /**
  26. * 地址簿接口。
  27. * App 端接口使用 token 绑定地址所有人;平台管理接口继续使用 Spring Security 权限。
  28. */
  29. @RestController
  30. @RequestMapping("/system/address")
  31. public class InfoAddressController extends BaseController {
  32. @Autowired private IInfoAddressService infoAddressService;
  33. @Autowired private InfoAddressMapper infoAddressMapper;
  34. @Autowired private InfoAddressBookService addressBookService;
  35. /** 返回历史浏览器地图密钥;服务端 Routes 使用另一套不公开的密钥。 */
  36. @Anonymous
  37. @GetMapping("/getGoogleMapKey")
  38. public AjaxResult getGoogleMapKey() {
  39. List<SysDictData> data = DictUtils.getDictCache("sys_googlemap_key");
  40. return data != null && !data.isEmpty() ? success(data.get(0).getDictValue())
  41. : error(MessageUtils.message("no.map.exception"));
  42. }
  43. /** 查询当前用户拥有的地址详情。 */
  44. @Anonymous @Auth
  45. @GetMapping("/getaddressxq")
  46. public AjaxResult getaddressxq(@RequestHeader String token, @RequestParam Long id) {
  47. return success(MessageUtils.message("no.obtained.success"), addressBookService.detail(userId(token), id));
  48. }
  49. /** 查询当前用户地址簿中距离给定坐标最近的地址。 */
  50. @Anonymous @Auth
  51. @GetMapping("/getzuijinaddress")
  52. public AjaxResult getzuijinaddress(@RequestHeader String token, @RequestParam BigDecimal longitude,
  53. @RequestParam BigDecimal latitude) {
  54. return success(MessageUtils.message("no.obtained.success"),
  55. infoAddressMapper.getmyaddress(longitude, latitude, userId(token).intValue()));
  56. }
  57. /** 搜索当前用户地址簿,置顶地址优先。 */
  58. @Anonymous @Auth
  59. @GetMapping("/getaddress")
  60. public AjaxResult getaddress(@RequestHeader String token,
  61. @RequestParam(required = false) String keyword) {
  62. return success(MessageUtils.message("no.obtained.success"), addressBookService.list(userId(token), keyword));
  63. }
  64. /** 新增或修改当前用户地址,忽略客户端可能伪造的用户身份。 */
  65. @Anonymous @Auth
  66. @PostMapping("/address")
  67. public AjaxResult address(@RequestHeader String token, @RequestBody InfoAddressRequest request) {
  68. return success(addressBookService.save(userId(token), request));
  69. }
  70. /** 删除当前用户拥有的地址。 */
  71. @Anonymous @Auth
  72. @DeleteMapping(value = "/{id}", headers = "token")
  73. public AjaxResult deleteMine(@RequestHeader String token, @PathVariable Long id) {
  74. addressBookService.delete(userId(token), id);
  75. return success();
  76. }
  77. /** 将当前用户拥有的地址置顶。 */
  78. @Anonymous @Auth
  79. @PostMapping("/{id}/top")
  80. public AjaxResult top(@RequestHeader String token, @PathVariable Long id) {
  81. addressBookService.top(userId(token), id);
  82. return success();
  83. }
  84. @PreAuthorize("@ss.hasPermi('system:address:list')")
  85. @GetMapping("/list")
  86. public TableDataInfo list(InfoAddress infoAddress) {
  87. startPage();
  88. return getDataTable(infoAddressService.selectInfoAddressList(infoAddress));
  89. }
  90. @PreAuthorize("@ss.hasPermi('system:address:export')")
  91. @Log(title = "address", businessType = BusinessType.EXPORT)
  92. @PostMapping("/export")
  93. public void export(HttpServletResponse response, InfoAddress infoAddress) {
  94. new ExcelUtil<>(InfoAddress.class).exportExcel(response,
  95. infoAddressService.selectInfoAddressList(infoAddress), MessageUtils.message("no.export.excel.address"));
  96. }
  97. @PreAuthorize("@ss.hasPermi('system:address:query')")
  98. @GetMapping("/{id}")
  99. public AjaxResult getInfo(@PathVariable Long id) { return success(infoAddressService.selectInfoAddressById(id)); }
  100. @PreAuthorize("@ss.hasPermi('system:address:add')")
  101. @Log(title = "address", businessType = BusinessType.INSERT)
  102. @PostMapping
  103. public AjaxResult add(@RequestBody InfoAddress infoAddress) {
  104. return toAjax(infoAddressService.insertInfoAddress(infoAddress));
  105. }
  106. @PreAuthorize("@ss.hasPermi('system:address:edit')")
  107. @Log(title = "address", businessType = BusinessType.UPDATE)
  108. @PutMapping
  109. public AjaxResult edit(@RequestBody InfoAddress infoAddress) {
  110. return toAjax(infoAddressService.updateInfoAddress(infoAddress));
  111. }
  112. @PreAuthorize("@ss.hasPermi('system:address:remove')")
  113. @Log(title = "address", businessType = BusinessType.DELETE)
  114. @DeleteMapping("/{ids}")
  115. public AjaxResult remove(@PathVariable Long[] ids) {
  116. return toAjax(infoAddressService.deleteInfoAddressByIds(ids));
  117. }
  118. private Long userId(String token) { return Long.valueOf(new JwtUtil().getusid(token)); }
  119. }