|
@@ -7,6 +7,9 @@ import java.util.List;
|
|
|
|
|
|
|
|
public class AddressService {
|
|
public class AddressService {
|
|
|
|
|
|
|
|
|
|
+ // 定义每个用户最大地址数量限制
|
|
|
|
|
+ private static final int MAX_ADDRESS_COUNT = 20;
|
|
|
|
|
+
|
|
|
private final Address dao = new Address().dao();
|
|
private final Address dao = new Address().dao();
|
|
|
|
|
|
|
|
public List<Address> findByUserId(Long userId) {
|
|
public List<Address> findByUserId(Long userId) {
|
|
@@ -17,7 +20,20 @@ public class AddressService {
|
|
|
return dao.findFirst("select * from t_address where id = ? and user_id = ? and is_deleted = 0", id, userId);
|
|
return dao.findFirst("select * from t_address where id = ? and user_id = ? and is_deleted = 0", id, userId);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public boolean save(Address address) {
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 保存地址,如果地址数量超过上限会抛出异常
|
|
|
|
|
+ * @param address 地址对象
|
|
|
|
|
+ * @return 保存结果
|
|
|
|
|
+ * @throws RuntimeException 当地址数量超过上限时抛出异常
|
|
|
|
|
+ */
|
|
|
|
|
+ public boolean save(Address address) throws RuntimeException {
|
|
|
|
|
+ // 检查用户地址数量是否已达上限
|
|
|
|
|
+ List<Address> existingAddresses = findByUserId(address.getUserId().longValue());
|
|
|
|
|
+ if (existingAddresses != null && existingAddresses.size() >= MAX_ADDRESS_COUNT) {
|
|
|
|
|
+ // 如果地址数量已达上限,抛出异常
|
|
|
|
|
+ throw new RuntimeException("地址数量已达上限(最多" + MAX_ADDRESS_COUNT + "个)");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// 设置初始状态
|
|
// 设置初始状态
|
|
|
address.setIsDeleted(0);
|
|
address.setIsDeleted(0);
|
|
|
|
|
|
|
@@ -26,6 +42,12 @@ public class AddressService {
|
|
|
address.setCreateTime(currentTime);
|
|
address.setCreateTime(currentTime);
|
|
|
address.setUpdateTime(currentTime);
|
|
address.setUpdateTime(currentTime);
|
|
|
|
|
|
|
|
|
|
+ // 检查用户是否有现有地址
|
|
|
|
|
+ if (existingAddresses == null || existingAddresses.isEmpty()) {
|
|
|
|
|
+ // 如果用户没有地址,则自动将新地址设为默认地址
|
|
|
|
|
+ address.setIsDefault(1);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if (address.getIsDefault() == 1) {
|
|
if (address.getIsDefault() == 1) {
|
|
|
// 如果将当前地址设为默认,则将该用户其他地址设为非默认
|
|
// 如果将当前地址设为默认,则将该用户其他地址设为非默认
|
|
|
Db.update("update t_address set is_default = 0, update_time = ? where user_id = ?",
|
|
Db.update("update t_address set is_default = 0, update_time = ? where user_id = ?",
|