|
|
|
|
@ -6,7 +6,7 @@ import cn.iocoder.mall.system.biz.enums.SystemErrorCodeEnum;
|
|
|
|
|
import cn.iocoder.mall.user.biz.bo.user.UserAddressBO;
|
|
|
|
|
import cn.iocoder.mall.user.biz.convert.user.UserAddressConvert;
|
|
|
|
|
import cn.iocoder.mall.user.biz.dao.user.UserAddressMapper;
|
|
|
|
|
import cn.iocoder.mall.user.biz.dataobject.user.UserAddressDO;
|
|
|
|
|
import cn.iocoder.mall.user.biz.dataobject.user.UsersUserAddressDO;
|
|
|
|
|
import cn.iocoder.mall.user.biz.dto.user.UserAddressAddDTO;
|
|
|
|
|
import cn.iocoder.mall.user.biz.dto.user.UserAddressUpdateDTO;
|
|
|
|
|
import cn.iocoder.mall.user.biz.enums.user.UserAddressHasDefaultEnum;
|
|
|
|
|
@ -32,112 +32,101 @@ public class UserAddressServiceImpl implements UserAddressService {
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional
|
|
|
|
|
public void addAddress(UserAddressAddDTO userAddressAddDTO) {
|
|
|
|
|
UserAddressDO userAddressDO = UserAddressConvert.INSTANCE.convert(userAddressAddDTO);
|
|
|
|
|
|
|
|
|
|
// 转换do,设置默认数据
|
|
|
|
|
UsersUserAddressDO userAddressDO = UserAddressConvert.INSTANCE.convert(userAddressAddDTO);
|
|
|
|
|
userAddressDO.setCreateTime(new Date());
|
|
|
|
|
userAddressDO.setDeleted(DeletedStatusEnum.DELETED_NO.getValue());
|
|
|
|
|
|
|
|
|
|
// 检查是否设置为默认地址
|
|
|
|
|
if (UserAddressHasDefaultEnum.DEFAULT_ADDRESS_YES.getValue() == userAddressAddDTO.getHasDefault()) {
|
|
|
|
|
UserAddressDO defaultUserAddress = userAddressMapper.selectHasDefault(userAddressAddDTO.getUserId());
|
|
|
|
|
|
|
|
|
|
UsersUserAddressDO defaultUserAddress = userAddressMapper.selectHasDefault(userAddressAddDTO.getUserId());
|
|
|
|
|
if (defaultUserAddress != null) {
|
|
|
|
|
userAddressMapper.updateById(
|
|
|
|
|
new UserAddressDO()
|
|
|
|
|
new UsersUserAddressDO()
|
|
|
|
|
.setId(defaultUserAddress.getId())
|
|
|
|
|
.setHasDefault(UserAddressHasDefaultEnum.DEFAULT_ADDRESS_NO.getValue())
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 保存地址
|
|
|
|
|
userAddressMapper.insert(userAddressDO);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional
|
|
|
|
|
public void updateAddress(UserAddressUpdateDTO userAddressAddDTO) {
|
|
|
|
|
UserAddressDO userAddress = userAddressMapper.selectById(userAddressAddDTO.getId());
|
|
|
|
|
if (DeletedStatusEnum.DELETED_YES.getValue().equals(userAddress.getDeleted())) {
|
|
|
|
|
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.USER_ADDRESS_IS_DELETED.getCode());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 检查地址
|
|
|
|
|
UsersUserAddressDO userAddress = userAddressMapper.selectById(userAddressAddDTO.getId());
|
|
|
|
|
|
|
|
|
|
if (userAddress == null) {
|
|
|
|
|
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.USER_ADDRESS_NOT_EXISTENT.getCode());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 删除的地址不能更新
|
|
|
|
|
if (DeletedStatusEnum.DELETED_YES.getValue().equals(userAddress.getDeleted())) {
|
|
|
|
|
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.USER_ADDRESS_IS_DELETED.getCode());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 检查是否设置为默认地址
|
|
|
|
|
// 是:将数据库 default address 设置为 no
|
|
|
|
|
if (UserAddressHasDefaultEnum.DEFAULT_ADDRESS_YES.getValue() == userAddressAddDTO.getHasDefault()) {
|
|
|
|
|
UserAddressDO defaultUserAddress = userAddressMapper.selectHasDefault(userAddressAddDTO.getUserId());
|
|
|
|
|
|
|
|
|
|
UsersUserAddressDO defaultUserAddress = userAddressMapper.selectHasDefault(userAddressAddDTO.getUserId());
|
|
|
|
|
if (defaultUserAddress != null && !userAddressAddDTO.getId().equals(defaultUserAddress.getId())) {
|
|
|
|
|
userAddressMapper.updateById(
|
|
|
|
|
new UserAddressDO()
|
|
|
|
|
new UsersUserAddressDO()
|
|
|
|
|
.setId(defaultUserAddress.getId())
|
|
|
|
|
.setHasDefault(UserAddressHasDefaultEnum.DEFAULT_ADDRESS_NO.getValue())
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
UserAddressDO defaultUserAddress = userAddressMapper.selectHasDefault(userAddressAddDTO.getUserId());
|
|
|
|
|
if (defaultUserAddress != null && !userAddressAddDTO.getId().equals(defaultUserAddress.getId())) {
|
|
|
|
|
userAddressMapper.updateById(
|
|
|
|
|
new UserAddressDO()
|
|
|
|
|
.setId(defaultUserAddress.getId())
|
|
|
|
|
.setHasDefault(UserAddressHasDefaultEnum.DEFAULT_ADDRESS_NO.getValue())
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
UserAddressDO userAddressDO = UserAddressConvert.INSTANCE.convert(userAddressAddDTO);
|
|
|
|
|
// 转换 vo, 并保存数据
|
|
|
|
|
UsersUserAddressDO userAddressDO = UserAddressConvert.INSTANCE.convert(userAddressAddDTO);
|
|
|
|
|
userAddressDO.setUpdateTime(new Date());
|
|
|
|
|
userAddressMapper.updateById(userAddressDO);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void removeAddress(Integer userId, Integer addressId) {
|
|
|
|
|
UserAddressDO userAddress = userAddressMapper.selectById(addressId);
|
|
|
|
|
// checked address is exists.
|
|
|
|
|
UsersUserAddressDO userAddress = userAddressMapper.selectById(addressId);
|
|
|
|
|
|
|
|
|
|
if (userAddress == null) {
|
|
|
|
|
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.USER_ADDRESS_NOT_EXISTENT.getCode());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (DeletedStatusEnum.DELETED_YES.getValue().equals(userAddress.getDeleted())) {
|
|
|
|
|
// skip
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (userAddress == null) {
|
|
|
|
|
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.USER_ADDRESS_NOT_EXISTENT.getCode());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 更新状态为 remove
|
|
|
|
|
userAddressMapper.updateById(
|
|
|
|
|
(UserAddressDO) new UserAddressDO()
|
|
|
|
|
(UsersUserAddressDO) new UsersUserAddressDO()
|
|
|
|
|
.setId(addressId)
|
|
|
|
|
.setDeleted(DeletedStatusEnum.DELETED_YES.getValue())
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<UserAddressBO> addressList(Integer userId) {
|
|
|
|
|
List<UserAddressDO> userAddressDOList = userAddressMapper.selectByUserId(userId);
|
|
|
|
|
|
|
|
|
|
List<UserAddressBO> userAddressBOList = UserAddressConvert
|
|
|
|
|
.INSTANCE.convertUserAddressBOList(userAddressDOList);
|
|
|
|
|
|
|
|
|
|
public List<UserAddressBO> listAddress(Integer userId) {
|
|
|
|
|
List<UsersUserAddressDO> userAddressDOList = userAddressMapper.selectByUserId(userId);
|
|
|
|
|
List<UserAddressBO> userAddressBOList = UserAddressConvert.INSTANCE.convertUserAddressBOList(userAddressDOList);
|
|
|
|
|
return userAddressBOList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public UserAddressBO getAddress(Integer userId, Integer id) {
|
|
|
|
|
UserAddressDO userAddress = userAddressMapper.selectById(id);
|
|
|
|
|
if (userAddress == null) {
|
|
|
|
|
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.USER_GET_ADDRESS_NOT_EXISTS.getCode());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (DeletedStatusEnum.DELETED_YES.getValue().equals(userAddress.getDeleted())) {
|
|
|
|
|
throw ServiceExceptionUtil.exception(SystemErrorCodeEnum.USER_ADDRESS_IS_DELETED.getCode());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
UserAddressBO userAddressBO = UserAddressConvert.INSTANCE.convert(userAddress);
|
|
|
|
|
return userAddressBO;
|
|
|
|
|
public UserAddressBO getAddress(Integer id) {
|
|
|
|
|
UsersUserAddressDO userAddress = userAddressMapper.selectById(id);
|
|
|
|
|
return UserAddressConvert.INSTANCE.convert(userAddress);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public UserAddressBO getDefaultAddress(Integer userId) {
|
|
|
|
|
UserAddressDO defaultUserAddress = userAddressMapper.selectHasDefault(userId);
|
|
|
|
|
UsersUserAddressDO defaultUserAddress = userAddressMapper.selectHasDefault(userId);
|
|
|
|
|
return UserAddressConvert.INSTANCE.convert(defaultUserAddress);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|