This commit is contained in:
wyn
2026-08-05 09:29:29 +08:00
2 changed files with 93 additions and 9 deletions

View File

@@ -1091,26 +1091,30 @@ public class BuyOrderController {
* @param addressRequestVo 地址请求 value object * @param addressRequestVo 地址请求 value object
* @return R * @return R
*/ */
@RequestMapping(value = "/modifyConsigneeAddress", method = RequestMethod.POST) private R saveConsigneeAddress(ModifyOrderAddressRequestVo addressRequestVo, BuyOrder buyOrder, Province province) {
public R modifyOrderAddress(@RequestBody ModifyOrderAddressRequestVo addressRequestVo) { if (province == null) {
QueryWrapper<BuyOrder> buyOrderQueryWrapper = new QueryWrapper<>(); String provinceCode = addressRequestVo.getProvinceCode();
buyOrderQueryWrapper.eq("order_sn", addressRequestVo.getOrderSn()); QueryWrapper<Province> provinceQueryWrapper = new QueryWrapper<>();
BuyOrder buyOrder = buyOrderService.getOne(buyOrderQueryWrapper); provinceQueryWrapper.eq("region_code", provinceCode);
String provinceCode = addressRequestVo.getProvinceCode(); province = provinceService.getOne(provinceQueryWrapper);
QueryWrapper<Province> provinceQueryWrapper = new QueryWrapper<>(); }
provinceQueryWrapper.eq("region_code", provinceCode); if (province == null) return R.error(500, "省份信息不存在");
Province province = provinceService.getOne(provinceQueryWrapper);
buyOrder.setProvince(province.getProvName()); buyOrder.setProvince(province.getProvName());
String cityCode = addressRequestVo.getCityCode(); String cityCode = addressRequestVo.getCityCode();
QueryWrapper<City> cityQueryWrapper = new QueryWrapper<>(); QueryWrapper<City> cityQueryWrapper = new QueryWrapper<>();
cityQueryWrapper.eq("region_code", cityCode); cityQueryWrapper.eq("region_code", cityCode);
City city = cityService.getOne(cityQueryWrapper); City city = cityService.getOne(cityQueryWrapper);
if (city == null) return R.error(500, "城市信息不存在");
buyOrder.setCity(city.getCityName()); buyOrder.setCity(city.getCityName());
String countyCode = addressRequestVo.getCountyCode(); String countyCode = addressRequestVo.getCountyCode();
QueryWrapper<County> countyQueryWrapper = new QueryWrapper<>(); QueryWrapper<County> countyQueryWrapper = new QueryWrapper<>();
countyQueryWrapper.eq("region_code", countyCode); countyQueryWrapper.eq("region_code", countyCode);
County county = countyService.getOne(countyQueryWrapper); County county = countyService.getOne(countyQueryWrapper);
if (county == null) return R.error(500, "区县信息不存在");
buyOrder.setDistrict(county.getCountyName()); buyOrder.setDistrict(county.getCountyName());
buyOrder.setShippingUser(addressRequestVo.getConsigneeName()); buyOrder.setShippingUser(addressRequestVo.getConsigneeName());
buyOrder.setUserPhone(addressRequestVo.getConsigneeMobile()); buyOrder.setUserPhone(addressRequestVo.getConsigneeMobile());
buyOrder.setAddress(addressRequestVo.getAddress()); buyOrder.setAddress(addressRequestVo.getAddress());
@@ -1118,10 +1122,86 @@ public class BuyOrderController {
if (str.contains("+")||str.contains("&")) { if (str.contains("+")||str.contains("&")) {
return R.error(500, "信息中不能含有“+”、“&”符号!"); return R.error(500, "信息中不能含有“+”、“&”符号!");
} }
buyOrderService.updateById(buyOrder); buyOrderService.updateById(buyOrder);
return R.ok(); return R.ok();
} }
/**
* 修改订单地址
*
* @param addressRequestVo 地址请求 value object
* @return R
*/
@RequestMapping(value = "/modifyConsigneeAddress", method = RequestMethod.POST)
public R modifyOrderAddress(@RequestBody ModifyOrderAddressRequestVo addressRequestVo) {
QueryWrapper<BuyOrder> buyOrderQueryWrapper = new QueryWrapper<>();
buyOrderQueryWrapper.eq("order_sn", addressRequestVo.getOrderSn());
BuyOrder buyOrder = buyOrderService.getOne(buyOrderQueryWrapper);
if (buyOrder == null) {
return R.error(500,"订单不存在");
}
// 后台修改地址时addressId 设为 0
buyOrder.setAddressId(0);
return saveConsigneeAddress(addressRequestVo, buyOrder, null);
}
/**
* APP修改订单地址
*
* @param addressRequestVo 地址请求 value object
* @return R
*/
@RequestMapping(value = "/modifyConsigneeAddressApp", method = RequestMethod.POST)
public R modifyOrderAddressApp(@RequestBody ModifyOrderAddressRequestVo addressRequestVo) {
QueryWrapper<BuyOrder> buyOrderQueryWrapper = new QueryWrapper<>();
buyOrderQueryWrapper.eq("order_sn", addressRequestVo.getOrderSn());
BuyOrder buyOrder = buyOrderService.getOne(buyOrderQueryWrapper);
if (buyOrder == null) {
return R.error(500,"订单不存在");
}
MyUserEntity userEntity = myUserService.getById(ShiroUtils.getUId());
if (userEntity == null) return R.error(500, "用户不存在");
Integer currentUserId = userEntity.getId();
if (!currentUserId.equals(buyOrder.getUserId())) {
return R.error(500, "无权修改该订单地址");
}
String provinceCode = addressRequestVo.getProvinceCode();
QueryWrapper<Province> provinceQueryWrapper = new QueryWrapper<>();
provinceQueryWrapper.eq("region_code", provinceCode);
Province province = provinceService.getOne(provinceQueryWrapper);
if (province == null) {
return R.error(500, "省份信息不存在");
}
// 仅 App 用户:已支付运费时,新地址省份 code 必须与原订单省份 code 相同;无运费可改任意省
if (buyOrder.getShippingMoney() != null && buyOrder.getShippingMoney().compareTo(BigDecimal.ZERO) > 0) {
QueryWrapper<Province> oldProvinceQueryWrapper = new QueryWrapper<>();
oldProvinceQueryWrapper.eq("prov_name", buyOrder.getProvince());
Province oldProvince = provinceService.getOne(oldProvinceQueryWrapper);
if (oldProvince == null || !provinceCode.equals(oldProvince.getRegionCode())) {
return R.error(500, "该订单已支付运费,只能修改为同省份地址");
}
}
// App 传入 addressId 时更新
if (addressRequestVo.getAddressId() != null) {
buyOrder.setAddressId(addressRequestVo.getAddressId());
} else {
buyOrder.setAddressId(0);
}
// 仅 App 用户修改时 addressModified 每次 +1后台修改不加
buyOrder.setAddressModified(buyOrder.getAddressModified() + 1);
return saveConsigneeAddress(addressRequestVo, buyOrder, province);
}
/** /**
* 获取订单地址 * 获取订单地址
* *

View File

@@ -37,4 +37,8 @@ public class ModifyOrderAddressRequestVo {
* 详细地址 * 详细地址
*/ */
private String address; private String address;
/**
* 用户地址 IDApp 从地址列表选择时传入;后台管理员修改时会将订单 addressId 置为 null
*/
private Integer addressId;
} }