送货地址bug修复

This commit is contained in:
Jack 2024-12-03 11:57:51 +08:00
parent 01af3bc673
commit 978a4beb24

View File

@ -10,6 +10,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.suisung.mall.common.api.CommonResult;
import com.suisung.mall.common.api.ResultCode;
import com.suisung.mall.common.constant.CommonConstant;
import com.suisung.mall.common.constant.ConstantError;
import com.suisung.mall.common.domain.UserDto;
import com.suisung.mall.common.exception.ApiException;
import com.suisung.mall.common.exception.ApiUserException;
@ -170,7 +172,7 @@ public class ShopUserDeliveryAddressServiceImpl extends BaseServiceImpl<ShopUser
}
}
if (ud_id > 0) {
if (ud_id!=null && ud_id > 0) {
ShopUserDeliveryAddress address = get(ud_id);
Integer _user_id = address.getUser_id();
if (!ObjectUtil.equal(_user_id, user_id)) {
@ -180,22 +182,23 @@ public class ShopUserDeliveryAddressServiceImpl extends BaseServiceImpl<ShopUser
deliveryAddress.setUd_id(null);
}
if(deliveryAddress.getUd_label()==null || deliveryAddress.getUd_label()<=0) {
deliveryAddress.setUd_label(1000);
}
deliveryAddress.setUser_id(user_id);
if (ud_is_default != null && ud_is_default != 0) {
// 默认地址只能一个其他都设置非默认
updateDefaultAddress(ud_id, user_id);
}
if (deliveryAddress.getUd_label() != null && !deliveryAddress.getUd_label().equals(0)) {
// 标签对用户来说是唯一的设置了某个标签其他之前的地址标签要置空
updateAddressLabel(ud_id, user_id, deliveryAddress.getUd_label());
}
if (!saveOrUpdate(deliveryAddress)) {
if (!saveOrUpdate(deliveryAddress)) {// 保存或更改
throw new ApiException(ResultCode.FAILED);
}
// 默认地址只能一个其他都设置非默认
if(deliveryAddress.getUd_is_default()!=null && deliveryAddress.getUd_is_default().equals(CommonConstant.Enable)) {
updateDefaultAddress(deliveryAddress.getUd_id(), user_id);
}
// 标签对用户来说是唯一的设置了某个标签其他之前的地址标签要置空
updateAddressLabel(deliveryAddress.getUd_id(), user_id, deliveryAddress.getUd_label());
return CommonResult.success(deliveryAddress.getUd_id(), I18nUtil._("操作成功"));
}
@ -252,9 +255,12 @@ public class ShopUserDeliveryAddressServiceImpl extends BaseServiceImpl<ShopUser
*/
@Override
public Boolean updateDefaultAddress(Integer ud_id, Integer user_id) {
if (ud_id == null || ud_id <= 0 || user_id == null || user_id <= 0) {
return false;
}
QueryWrapper<ShopUserDeliveryAddress> addressQueryWrapper = new QueryWrapper<>();
addressQueryWrapper.eq("user_id", user_id).ne("ud_id", ud_id);
addressQueryWrapper.eq("user_id", user_id).eq("ud_is_default",1).ne("ud_id", ud_id);
ShopUserDeliveryAddress deliveryAddress = new ShopUserDeliveryAddress();
deliveryAddress.setUd_is_default(0);
@ -271,12 +277,37 @@ public class ShopUserDeliveryAddressServiceImpl extends BaseServiceImpl<ShopUser
*/
@Override
public Boolean updateAddressLabel(Integer udId, Integer userId, Integer updLabel) {
if (udId == null || udId <= 0 || userId == null || userId <= 0 || updLabel == null || updLabel <= 0) {
return false;
}
QueryWrapper<ShopUserDeliveryAddress> addressQueryWrapper = new QueryWrapper<>();
addressQueryWrapper.eq("user_id", userId).eq("label", updLabel).ne("ud_id", udId);
addressQueryWrapper.eq("user_id", userId).eq("ud_label", updLabel).ne("ud_id", udId);
ShopUserDeliveryAddress updDeliveryAddress = new ShopUserDeliveryAddress();
updDeliveryAddress.setUd_label(0);
updDeliveryAddress.setUd_label(1000); // 没有标签的意义
return edit(updDeliveryAddress, addressQueryWrapper);
}
/**
* 获取用户的最后一个地址的自增ID
* @param userId
* @return
*/
public Integer getLastId(Integer userId) {
if (userId == null || userId <= 0) {
return null;
}
QueryWrapper<ShopUserDeliveryAddress> addressQueryWrapper = new QueryWrapper<>();
addressQueryWrapper.eq("user_id", userId).orderByDesc("ud_id").last("limit 1").select("ud_id");
ShopUserDeliveryAddress record = getOne(addressQueryWrapper);
if (record == null) {
return null;
}
return record.getUd_id();
}
}