|
|
@@ -16,6 +16,11 @@
|
|
|
*/
|
|
|
package org.springblade.sing.user.controller;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.lang.Assert;
|
|
|
+import cn.hutool.http.HttpUtil;
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
@@ -23,6 +28,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import javax.validation.Valid;
|
|
|
|
|
|
+import org.springblade.core.launch.constant.AppConstant;
|
|
|
import org.springblade.core.mp.support.Condition;
|
|
|
import org.springblade.core.mp.support.Query;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
@@ -36,6 +42,10 @@ import org.springblade.sing.user.wrapper.UserAddressWrapper;
|
|
|
import org.springblade.sing.user.service.IUserAddressService;
|
|
|
import org.springblade.core.boot.ctrl.BladeController;
|
|
|
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
/**
|
|
|
* 用户收获地址表 控制器
|
|
|
*
|
|
|
@@ -49,6 +59,8 @@ import org.springblade.core.boot.ctrl.BladeController;
|
|
|
public class UserAddressController extends BladeController {
|
|
|
|
|
|
private final IUserAddressService userAddressService;
|
|
|
+ private final String MAP_URL = "https://apis.map.qq.com/ws/geocoder/v1/?location=";
|
|
|
+ private final String MAP_KEY = "WAGBZ-EFIKU-2W2VF-4UX5F-ATB3F-HKBFU";
|
|
|
|
|
|
/**
|
|
|
* 详情
|
|
|
@@ -68,7 +80,7 @@ public class UserAddressController extends BladeController {
|
|
|
@ApiOperationSupport(order = 2)
|
|
|
@ApiOperation(value = "分页", notes = "传入userAddress")
|
|
|
public R<IPage<UserAddressVO>> list(UserAddress userAddress, Query query) {
|
|
|
- IPage<UserAddress> pages = userAddressService.page(Condition.getPage(query), Condition.getQueryWrapper(userAddress));
|
|
|
+ IPage<UserAddress> pages = userAddressService.page(Condition.getPage(query), Condition.getQueryWrapper(userAddress).lambda().orderByDesc(UserAddress::getIsDefault));
|
|
|
return R.data(UserAddressWrapper.build().pageVO(pages));
|
|
|
}
|
|
|
|
|
|
@@ -114,7 +126,7 @@ public class UserAddressController extends BladeController {
|
|
|
return R.status(userAddressService.saveOrUpdate(userAddress));
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 删除 用户收获地址表
|
|
|
*/
|
|
|
@@ -125,5 +137,78 @@ public class UserAddressController extends BladeController {
|
|
|
return R.status(userAddressService.deleteLogic(Func.toLongList(ids)));
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ @GetMapping("/getLocation")
|
|
|
+ @ApiOperationSupport(order = 8)
|
|
|
+ @ApiOperation(value = "", notes = "传入rule")
|
|
|
+ public R getLocationData(String latitude,String longitude) {
|
|
|
+ String request_url = MAP_URL +latitude+","+longitude + "&key=" + MAP_KEY;
|
|
|
+ String s = HttpUtil.get(request_url);
|
|
|
+ JSONObject jsonObject = JSONUtil.parseObj(s);
|
|
|
+ return R.data(jsonObject);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增或修改
|
|
|
+ */
|
|
|
+ @PostMapping("/submitAddress")
|
|
|
+ @ApiOperationSupport(order = 6)
|
|
|
+ @ApiOperation(value = "新增或修改", notes = "传入userAddress")
|
|
|
+ public R submitAddress(@Valid @RequestBody UserAddress userAddress) {
|
|
|
+ Assert.notNull(userAddress.getUserId(), "用户id不能为空");
|
|
|
+ List<UserAddress> addressList = userAddressService.list(Condition.getQueryWrapper(new UserAddress()).lambda()
|
|
|
+ .eq(UserAddress::getUserId, userAddress.getUserId()));
|
|
|
+
|
|
|
+ if (Objects.isNull(userAddress.getId())) {
|
|
|
+ return R.status(this.saveAddress(userAddress, addressList));
|
|
|
+ }
|
|
|
+ return R.status(this.updateAddress(userAddress,addressList));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改地址
|
|
|
+ * @param userAddress
|
|
|
+ * @param addressList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private boolean updateAddress(UserAddress userAddress, List<UserAddress> addressList) {
|
|
|
+ if (!userAddress.getIsDefault()) {
|
|
|
+ return userAddressService.updateById(userAddress);
|
|
|
+ }
|
|
|
+ //修改成默认地址
|
|
|
+ List<UserAddress> defaultAddresses = addressList.stream().filter(item -> item.getIsDefault() && !item.getId().equals(userAddress.getId())).collect(Collectors.toList());
|
|
|
+ if (CollUtil.isEmpty(defaultAddresses)) {
|
|
|
+ return userAddressService.updateById(userAddress);
|
|
|
+ }
|
|
|
+ defaultAddresses.forEach(item -> item.setIsDefault(false));
|
|
|
+ userAddressService.updateBatchById(defaultAddresses);
|
|
|
+ return userAddressService.updateById(userAddress);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增地址
|
|
|
+ * @param userAddress
|
|
|
+ * @param addressList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private boolean saveAddress(UserAddress userAddress,List<UserAddress> addressList) {
|
|
|
+ //如果数据库中没有该用户的地址,将该新增的地址置为默认
|
|
|
+ if (CollUtil.isEmpty(addressList)) {
|
|
|
+ userAddress.setIsDefault(true);
|
|
|
+ return userAddressService.save(userAddress);
|
|
|
+ }
|
|
|
+ //如果数据库中有用户的地址,且不是设置默认地址
|
|
|
+ if (!userAddress.getIsDefault()) {
|
|
|
+ return userAddressService.save(userAddress);
|
|
|
+ }
|
|
|
+ //设置默认地址,将旧的默认地址置为不默认
|
|
|
+ List<UserAddress> defaultAddresses = addressList.stream().filter(UserAddress::getIsDefault).collect(Collectors.toList());
|
|
|
+ if (CollUtil.isEmpty(defaultAddresses)) {
|
|
|
+ return userAddressService.save(userAddress);
|
|
|
+ }
|
|
|
+ defaultAddresses.forEach(item -> item.setIsDefault(false));
|
|
|
+ userAddressService.updateBatchById(defaultAddresses);
|
|
|
+ return userAddressService.save(userAddress);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|