继续迁移用户收件地址的代码
This commit is contained in:
@@ -18,9 +18,8 @@ public interface UserErrorCodeConstants {
|
||||
ErrorCode USER_SMS_CODE_SEND_TOO_FAST = new ErrorCode(1001001205, "短信发送过于频率");
|
||||
|
||||
// ========== 用户地址 ==========
|
||||
ErrorCode USER_ADDRESS_NOT_EXISTENT = new ErrorCode(1001004000, "用户地址不存在!");
|
||||
ErrorCode USER_ADDRESS_IS_DELETED = new ErrorCode(1001004001, "用户地址已被删除!");
|
||||
ErrorCode USER_GET_ADDRESS_NOT_EXISTS = new ErrorCode(1001004002, "获取的地址不存在!");
|
||||
ErrorCode USER_ADDRESS_NOT_FOUND = new ErrorCode(1001004000, "用户地址不存在!");
|
||||
ErrorCode USER_GET_ADDRESS_NOT_EXISTS = new ErrorCode(1001004001, "获取的地址不存在!");
|
||||
|
||||
// ========== 用户信息模块 1004004100 ==========
|
||||
ErrorCode USER_NOT_EXISTS = new ErrorCode(1004004100, "用户不存在");
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
package cn.iocoder.mall.userservice.rpc.address;
|
||||
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.userservice.rpc.address.dto.UserAddressCreateReqDTO;
|
||||
import cn.iocoder.mall.userservice.rpc.address.dto.UserAddressRespDTO;
|
||||
import cn.iocoder.mall.userservice.rpc.address.dto.UserAddressUpdateReqDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户收件地址 Rpc 接口
|
||||
*/
|
||||
public interface UserAddressRpc {
|
||||
|
||||
/**
|
||||
* 创建用户收件地址
|
||||
*
|
||||
* @param createDTO 创建用户收件地址 DTO
|
||||
* @return 用户收件地址编号
|
||||
*/
|
||||
CommonResult<Integer> createUserAddress(UserAddressCreateReqDTO createDTO);
|
||||
|
||||
/**
|
||||
* 更新用户收件地址
|
||||
*
|
||||
* @param updateDTO 更新用户收件地址 DTO
|
||||
*/
|
||||
CommonResult<Boolean> updateUserAddress(UserAddressUpdateReqDTO updateDTO);
|
||||
|
||||
/**
|
||||
* 删除用户收件地址
|
||||
*
|
||||
* @param userAddressId 用户收件地址编号
|
||||
*/
|
||||
CommonResult<Boolean> deleteUserAddress(Integer userAddressId);
|
||||
|
||||
/**
|
||||
* 获得用户收件地址
|
||||
*
|
||||
* @param userAddressId 用户收件地址编号
|
||||
* @return 用户收件地址
|
||||
*/
|
||||
CommonResult<UserAddressRespDTO> getUserAddress(Integer userAddressId);
|
||||
|
||||
/**
|
||||
* 获得用户收件地址列表
|
||||
*
|
||||
* @param userAddressIds 用户收件地址编号列表
|
||||
* @return 用户收件地址列表
|
||||
*/
|
||||
CommonResult<List<UserAddressRespDTO>> listUserAddresses(List<Integer> userAddressIds);
|
||||
|
||||
/**
|
||||
* 获取指定用户的收件地址列表
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param type 地址类型
|
||||
* @return 收件地址列表
|
||||
*/
|
||||
CommonResult<List<UserAddressRespDTO>> listUserAddresses(Integer userId, Integer type);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package cn.iocoder.mall.userservice.rpc.address.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 用户收件地址创建 Request DTO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UserAddressCreateReqDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
@NotNull(message = "用户编号不能为空")
|
||||
private Integer userId;
|
||||
/**
|
||||
* 收件人名称
|
||||
*/
|
||||
@NotEmpty(message = "收件人名称不能为空")
|
||||
private String name;
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
@NotEmpty(message = "手机号不能为空")
|
||||
private String mobile;
|
||||
/**
|
||||
* 省份编号
|
||||
*/
|
||||
@NotNull(message = "省份编号不能为空")
|
||||
private Integer provinceCode;
|
||||
/**
|
||||
* 城市编号
|
||||
*/
|
||||
@NotNull(message = "城市编号不能为空")
|
||||
private Integer cityCode;
|
||||
/**
|
||||
* 区域编号
|
||||
*/
|
||||
@NotNull(message = "区域编号不能为空")
|
||||
private Integer countyCode;
|
||||
/**
|
||||
* 收件详细地址
|
||||
*/
|
||||
@NotEmpty(message = "收件详细地址不能为空")
|
||||
private String detailAddress;
|
||||
/**
|
||||
* 地址类型
|
||||
*/
|
||||
@NotNull(message = "地址类型不能为空")
|
||||
private Integer type;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package cn.iocoder.mall.userservice.rpc.address.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 用户收件地址 Response DTO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UserAddressRespDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 收件地址编号
|
||||
*/
|
||||
private Integer id;
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
private Integer userId;
|
||||
/**
|
||||
* 收件人名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private String mobile;
|
||||
/**
|
||||
* 省份编号
|
||||
*/
|
||||
private Integer provinceCode;
|
||||
/**
|
||||
* 城市编号
|
||||
*/
|
||||
private Integer cityCode;
|
||||
/**
|
||||
* 区域编号
|
||||
*/
|
||||
private Integer countyCode;
|
||||
/**
|
||||
* 收件详细地址
|
||||
*/
|
||||
private String detailAddress;
|
||||
/**
|
||||
* 地址类型
|
||||
*/
|
||||
private Integer type;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package cn.iocoder.mall.userservice.rpc.address.dto;
|
||||
|
||||
import cn.iocoder.common.framework.validator.InEnum;
|
||||
import cn.iocoder.common.framework.validator.Mobile;
|
||||
import cn.iocoder.mall.userservice.enums.address.UserAddressType;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 用户收件地址更新 Request DTO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UserAddressUpdateReqDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 收件地址编号
|
||||
*/
|
||||
@NotNull(message = "收件地址编号不能为空")
|
||||
private Integer id;
|
||||
/**
|
||||
* 用户编号
|
||||
*
|
||||
* TODO 正在讨论
|
||||
*/
|
||||
@NotNull(message = "用户编号不能为空")
|
||||
private Integer userId;
|
||||
/**
|
||||
* 收件人名称
|
||||
*/
|
||||
@NotEmpty(message = "收件人名称不能为空")
|
||||
private String name;
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
@NotEmpty(message = "手机号不能为空")
|
||||
@Mobile
|
||||
private String mobile;
|
||||
/**
|
||||
* 省份编号
|
||||
*/
|
||||
@NotNull(message = "省份编号不能为空")
|
||||
private Integer provinceCode;
|
||||
/**
|
||||
* 城市编号
|
||||
*/
|
||||
@NotNull(message = "城市编号不能为空")
|
||||
private Integer cityCode;
|
||||
/**
|
||||
* 区域编号
|
||||
*/
|
||||
@NotNull(message = "区域编号不能为空")
|
||||
private Integer countyCode;
|
||||
/**
|
||||
* 收件详细地址
|
||||
*/
|
||||
@NotEmpty(message = "收件详细地址不能为空")
|
||||
private String detailAddress;
|
||||
/**
|
||||
* 地址类型
|
||||
*/
|
||||
@NotNull(message = "地址类型不能为空")
|
||||
@InEnum(value = UserAddressType.class, message = "地址类型必须是 {value}")
|
||||
private Integer type;
|
||||
|
||||
}
|
||||
@@ -64,6 +64,7 @@
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-validation</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
@@ -78,18 +79,6 @@
|
||||
<artifactId>mapstruct-jdk8</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>javax.el</groupId>-->
|
||||
<!-- <artifactId>javax.el-api</artifactId>-->
|
||||
<!-- <version>3.0.0</version>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>javax.el</groupId>-->
|
||||
<!-- <artifactId>javax.el-api</artifactId>-->
|
||||
<!-- <version>3.0.1-b06</version>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package cn.iocoder.mall.userservice.convert.address;
|
||||
|
||||
import cn.iocoder.mall.userservice.dal.mysql.dataobject.address.UserAddressDO;
|
||||
import cn.iocoder.mall.userservice.rpc.address.dto.UserAddressCreateReqDTO;
|
||||
import cn.iocoder.mall.userservice.rpc.address.dto.UserAddressRespDTO;
|
||||
import cn.iocoder.mall.userservice.rpc.address.dto.UserAddressUpdateReqDTO;
|
||||
import cn.iocoder.mall.userservice.service.address.bo.UserAddressBO;
|
||||
import cn.iocoder.mall.userservice.service.address.bo.UserAddressCreateBO;
|
||||
import cn.iocoder.mall.userservice.service.address.bo.UserAddressUpdateBO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface UserAddressConvert {
|
||||
|
||||
UserAddressConvert INSTANCE = Mappers.getMapper(UserAddressConvert.class);
|
||||
|
||||
UserAddressDO convert(UserAddressCreateBO bean);
|
||||
|
||||
UserAddressBO convert(UserAddressDO bean);
|
||||
|
||||
UserAddressDO convert(UserAddressUpdateBO bean);
|
||||
|
||||
List<UserAddressBO> convertList(List<UserAddressDO> list);
|
||||
|
||||
UserAddressCreateBO convert(UserAddressCreateReqDTO bean);
|
||||
|
||||
UserAddressUpdateBO convert(UserAddressUpdateReqDTO bean);
|
||||
|
||||
UserAddressRespDTO convert(UserAddressBO bean);
|
||||
|
||||
List<UserAddressRespDTO> convertList02(List<UserAddressBO> list);
|
||||
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package cn.iocoder.mall.userservice.dal.mysql.dataobject.address;
|
||||
|
||||
import cn.iocoder.mall.mybatis.core.dataobject.DeletableDO;
|
||||
import cn.iocoder.mall.userservice.enums.address.UserAddressType;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
@@ -9,13 +10,16 @@ import lombok.experimental.Accessors;
|
||||
/**
|
||||
* 用户收件地址
|
||||
*
|
||||
* idx_userId 索引:基于 {@link #userId} 字段
|
||||
*
|
||||
* @author Sin
|
||||
* @time 2019-04-06 13:22
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class UsersUserAddressDO extends DeletableDO {
|
||||
@TableName("user_address")
|
||||
public class UserAddressDO extends DeletableDO {
|
||||
|
||||
/**
|
||||
* 编号
|
||||
@@ -0,0 +1,19 @@
|
||||
package cn.iocoder.mall.userservice.dal.mysql.mapper.address;
|
||||
|
||||
import cn.iocoder.mall.mybatis.core.query.QueryWrapperX;
|
||||
import cn.iocoder.mall.userservice.dal.mysql.dataobject.address.UserAddressDO;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
|
||||
@Repository
|
||||
public interface UserAddressMapper extends BaseMapper<UserAddressDO> {
|
||||
|
||||
default List<UserAddressDO> selectListByUserIdAndType(Integer userId, @Nullable Integer type) {
|
||||
return selectList(new QueryWrapperX<UserAddressDO>().eq("userId", userId)
|
||||
.eqIfPresent("type", type));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package cn.iocoder.mall.userservice.manager.address;
|
||||
|
||||
import cn.iocoder.mall.userservice.convert.address.UserAddressConvert;
|
||||
import cn.iocoder.mall.userservice.rpc.address.dto.UserAddressCreateReqDTO;
|
||||
import cn.iocoder.mall.userservice.rpc.address.dto.UserAddressRespDTO;
|
||||
import cn.iocoder.mall.userservice.rpc.address.dto.UserAddressUpdateReqDTO;
|
||||
import cn.iocoder.mall.userservice.service.address.UserAddressService;
|
||||
import cn.iocoder.mall.userservice.service.address.bo.UserAddressBO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户收件地址 Manager
|
||||
*/
|
||||
@Service
|
||||
public class UserAddressManager {
|
||||
|
||||
@Autowired
|
||||
private UserAddressService userAddressService;
|
||||
|
||||
/**
|
||||
* 创建用户收件地址
|
||||
*
|
||||
* @param createDTO 创建用户收件地址 DTO
|
||||
* @return 用户收件地址
|
||||
*/
|
||||
public Integer createUserAddress(UserAddressCreateReqDTO createDTO) {
|
||||
UserAddressBO userAddressBO = userAddressService.createUserAddress(UserAddressConvert.INSTANCE.convert(createDTO));
|
||||
return userAddressBO.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新用户收件地址
|
||||
*
|
||||
* @param updateDTO 更新用户收件地址 DTO
|
||||
*/
|
||||
public void updateUserAddress(UserAddressUpdateReqDTO updateDTO) {
|
||||
userAddressService.updateUserAddress(UserAddressConvert.INSTANCE.convert(updateDTO));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除用户收件地址
|
||||
*
|
||||
* @param userAddressId 用户收件地址编号
|
||||
*/
|
||||
public void deleteUserAddress(Integer userAddressId) {
|
||||
userAddressService.deleteUserAddress(userAddressId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得用户收件地址
|
||||
*
|
||||
* @param userAddressId 用户收件地址编号
|
||||
* @return 用户收件地址
|
||||
*/
|
||||
public UserAddressRespDTO getUserAddress(Integer userAddressId) {
|
||||
UserAddressBO userAddressBO = userAddressService.getUserAddress(userAddressId);
|
||||
return UserAddressConvert.INSTANCE.convert(userAddressBO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得用户收件地址列表
|
||||
*
|
||||
* @param userAddressIds 用户收件地址编号列表
|
||||
* @return 用户收件地址列表
|
||||
*/
|
||||
public List<UserAddressRespDTO> listUserAddresses(List<Integer> userAddressIds) {
|
||||
List<UserAddressBO> userAddressBOs = userAddressService.listUserAddresses(userAddressIds);
|
||||
return UserAddressConvert.INSTANCE.convertList02(userAddressBOs);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定用户的收件地址列表
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param type 地址类型
|
||||
* @return 收件地址列表
|
||||
*/
|
||||
public List<UserAddressRespDTO> listUserAddresses(Integer userId, Integer type) {
|
||||
List<UserAddressBO> userAddressBOs = userAddressService.listUserAddresses(userId, type);
|
||||
return UserAddressConvert.INSTANCE.convertList02(userAddressBOs);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package cn.iocoder.mall.userservice.rpc.address;
|
||||
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.userservice.manager.address.UserAddressManager;
|
||||
import cn.iocoder.mall.userservice.rpc.address.dto.UserAddressCreateReqDTO;
|
||||
import cn.iocoder.mall.userservice.rpc.address.dto.UserAddressRespDTO;
|
||||
import cn.iocoder.mall.userservice.rpc.address.dto.UserAddressUpdateReqDTO;
|
||||
import org.apache.dubbo.config.annotation.DubboService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.common.framework.vo.CommonResult.success;
|
||||
|
||||
/**
|
||||
* 用户收件地址 Rpc 实现类
|
||||
*/
|
||||
@DubboService(version = "${dubbo.provider.UserAddressRpc.version}")
|
||||
public class UserAddressRpcImpl implements UserAddressRpc {
|
||||
|
||||
@Autowired
|
||||
private UserAddressManager userAddressManager;
|
||||
|
||||
@Override
|
||||
public CommonResult<Integer> createUserAddress(UserAddressCreateReqDTO createDTO) {
|
||||
return success(userAddressManager.createUserAddress(createDTO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> updateUserAddress(UserAddressUpdateReqDTO updateDTO) {
|
||||
userAddressManager.updateUserAddress(updateDTO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> deleteUserAddress(Integer userAddressId) {
|
||||
userAddressManager.deleteUserAddress(userAddressId);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<UserAddressRespDTO> getUserAddress(Integer userAddressId) {
|
||||
return success(userAddressManager.getUserAddress(userAddressId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<List<UserAddressRespDTO>> listUserAddresses(List<Integer> userAddressIds) {
|
||||
return success(userAddressManager.listUserAddresses(userAddressIds));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<List<UserAddressRespDTO>> listUserAddresses(Integer userId, Integer type) {
|
||||
return success(userAddressManager.listUserAddresses(userId, type));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,7 +7,7 @@ import cn.iocoder.mall.userservice.rpc.sms.dto.UserVerifySmsCodeReqDTO;
|
||||
import org.apache.dubbo.config.annotation.Service;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@Service(version = "${dubbo.provider.UserSmsCodeRpc.version}", validation = "false")
|
||||
@Service(version = "${dubbo.provider.UserSmsCodeRpc.version}")
|
||||
public class UserSmsCodeRpcImpl implements UserSmsCodeRpc {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -0,0 +1,130 @@
|
||||
package cn.iocoder.mall.userservice.service.address;
|
||||
|
||||
import cn.iocoder.common.framework.exception.util.ServiceExceptionUtil;
|
||||
import cn.iocoder.common.framework.util.CollectionUtils;
|
||||
import cn.iocoder.mall.userservice.convert.address.UserAddressConvert;
|
||||
import cn.iocoder.mall.userservice.dal.mysql.dataobject.address.UserAddressDO;
|
||||
import cn.iocoder.mall.userservice.dal.mysql.mapper.address.UserAddressMapper;
|
||||
import cn.iocoder.mall.userservice.enums.address.UserAddressType;
|
||||
import cn.iocoder.mall.userservice.service.address.bo.UserAddressBO;
|
||||
import cn.iocoder.mall.userservice.service.address.bo.UserAddressCreateBO;
|
||||
import cn.iocoder.mall.userservice.service.address.bo.UserAddressUpdateBO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.mall.userservice.enums.UserErrorCodeConstants.USER_ADDRESS_NOT_FOUND;
|
||||
|
||||
/**
|
||||
* 用户收件地址 Service
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class UserAddressService {
|
||||
|
||||
@Autowired
|
||||
private UserAddressMapper userAddressMapper;
|
||||
|
||||
/**
|
||||
* 创建用户收件地址
|
||||
*
|
||||
* @param createBO 创建用户收件地址 BO
|
||||
* @return 用户收件地址
|
||||
*/
|
||||
@Transactional
|
||||
public UserAddressBO createUserAddress(@Valid UserAddressCreateBO createBO) {
|
||||
// 如果添加的是默认收件地址,则将原默认地址修改为非默认
|
||||
if (UserAddressType.DEFAULT.getType().equals(createBO.getType())) {
|
||||
List<UserAddressDO> addressDOs = userAddressMapper.selectListByUserIdAndType(
|
||||
createBO.getUserId(), UserAddressType.DEFAULT.getType());
|
||||
if (!CollectionUtils.isEmpty(addressDOs)) {
|
||||
addressDOs.forEach(userAddressDO -> userAddressMapper.updateById(new UserAddressDO()
|
||||
.setId(userAddressDO.getId()).setType(UserAddressType.DEFAULT.getType())));
|
||||
}
|
||||
}
|
||||
// 插入到数据库
|
||||
UserAddressDO userAddressDO = UserAddressConvert.INSTANCE.convert(createBO);
|
||||
userAddressMapper.insert(userAddressDO);
|
||||
// 返回
|
||||
return UserAddressConvert.INSTANCE.convert(userAddressDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新用户收件地址
|
||||
*
|
||||
* @param updateBO 更新用户收件地址 BO
|
||||
*/
|
||||
@Transactional
|
||||
public void updateUserAddress(@Valid UserAddressUpdateBO updateBO) {
|
||||
// 校验更新的用户收件地址是否存在
|
||||
if (userAddressMapper.selectById(updateBO.getId()) == null) {
|
||||
throw ServiceExceptionUtil.exception(USER_ADDRESS_NOT_FOUND);
|
||||
}
|
||||
// 如果修改的是默认收件地址,则将原默认地址修改为非默认
|
||||
if (UserAddressType.DEFAULT.getType().equals(updateBO.getType())) {
|
||||
List<UserAddressDO> addressDOs = userAddressMapper.selectListByUserIdAndType(
|
||||
updateBO.getUserId(), UserAddressType.DEFAULT.getType());
|
||||
if (!CollectionUtils.isEmpty(addressDOs)) {
|
||||
addressDOs.stream().filter(userAddressDO -> userAddressDO.getId().equals(updateBO.getId())) // 过滤掉更新的收件地址
|
||||
.forEach(userAddressDO -> userAddressMapper.updateById(new UserAddressDO()
|
||||
.setId(userAddressDO.getId()).setType(UserAddressType.DEFAULT.getType())));
|
||||
}
|
||||
}
|
||||
// 更新到数据库
|
||||
UserAddressDO updateObject = UserAddressConvert.INSTANCE.convert(updateBO);
|
||||
userAddressMapper.updateById(updateObject);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除用户收件地址
|
||||
*
|
||||
* @param userAddressId 用户收件地址编号
|
||||
*/
|
||||
public void deleteUserAddress(Integer userAddressId) {
|
||||
// 校验删除的用户收件地址是否存在
|
||||
if (userAddressMapper.selectById(userAddressId) == null) {
|
||||
throw ServiceExceptionUtil.exception(USER_ADDRESS_NOT_FOUND);
|
||||
}
|
||||
// 标记删除
|
||||
userAddressMapper.deleteById(userAddressId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得用户收件地址
|
||||
*
|
||||
* @param userAddressId 用户收件地址编号
|
||||
* @return 用户收件地址
|
||||
*/
|
||||
public UserAddressBO getUserAddress(Integer userAddressId) {
|
||||
UserAddressDO userAddressDO = userAddressMapper.selectById(userAddressId);
|
||||
return UserAddressConvert.INSTANCE.convert(userAddressDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得用户收件地址列表
|
||||
*
|
||||
* @param userAddressIds 用户收件地址编号列表
|
||||
* @return 用户收件地址列表
|
||||
*/
|
||||
public List<UserAddressBO> listUserAddresses(List<Integer> userAddressIds) {
|
||||
List<UserAddressDO> userAddressDOs = userAddressMapper.selectBatchIds(userAddressIds);
|
||||
return UserAddressConvert.INSTANCE.convertList(userAddressDOs);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定用户的收件地址列表
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param type 地址类型
|
||||
* @return 收件地址列表
|
||||
*/
|
||||
public List<UserAddressBO> listUserAddresses(Integer userId, Integer type) {
|
||||
List<UserAddressDO> userAddressDOs = userAddressMapper.selectListByUserIdAndType(userId, type);
|
||||
return UserAddressConvert.INSTANCE.convertList(userAddressDOs);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package cn.iocoder.mall.userservice.service.address.bo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 用户收件地址 BO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UserAddressBO {
|
||||
|
||||
/**
|
||||
* 收件地址编号
|
||||
*/
|
||||
private Integer id;
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
private Integer userId;
|
||||
/**
|
||||
* 收件人名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private String mobile;
|
||||
/**
|
||||
* 省份编号
|
||||
*/
|
||||
private Integer provinceCode;
|
||||
/**
|
||||
* 城市编号
|
||||
*/
|
||||
private Integer cityCode;
|
||||
/**
|
||||
* 区域编号
|
||||
*/
|
||||
private Integer countyCode;
|
||||
/**
|
||||
* 收件详细地址
|
||||
*/
|
||||
private String detailAddress;
|
||||
/**
|
||||
* 地址类型
|
||||
*/
|
||||
private Integer type;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
/**
|
||||
* 最后更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
/**
|
||||
* 删除状态
|
||||
*/
|
||||
private Integer deleted;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package cn.iocoder.mall.userservice.service.address.bo;
|
||||
|
||||
import cn.iocoder.common.framework.validator.Mobile;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 用户收件地址创建 BO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UserAddressCreateBO {
|
||||
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
@NotNull(message = "用户编号不能为空")
|
||||
private Integer userId;
|
||||
/**
|
||||
* 收件人名称
|
||||
*/
|
||||
@NotEmpty(message = "收件人名称不能为空")
|
||||
private String name;
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
@NotEmpty(message = "手机号不能为空")
|
||||
@Mobile
|
||||
private String mobile;
|
||||
/**
|
||||
* 省份编号
|
||||
*/
|
||||
@NotNull(message = "省份编号不能为空")
|
||||
private Integer provinceCode;
|
||||
/**
|
||||
* 城市编号
|
||||
*/
|
||||
@NotNull(message = "城市编号不能为空")
|
||||
private Integer cityCode;
|
||||
/**
|
||||
* 区域编号
|
||||
*/
|
||||
@NotNull(message = "区域编号不能为空")
|
||||
private Integer countyCode;
|
||||
/**
|
||||
* 收件详细地址
|
||||
*/
|
||||
@NotEmpty(message = "收件详细地址不能为空")
|
||||
private String detailAddress;
|
||||
/**
|
||||
* 地址类型
|
||||
*/
|
||||
@NotNull(message = "地址类型不能为空")
|
||||
private Integer type;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package cn.iocoder.mall.userservice.service.address.bo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 用户收件地址更新 BO
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UserAddressUpdateBO {
|
||||
|
||||
/**
|
||||
* 收件地址编号
|
||||
*/
|
||||
@NotNull(message = "收件地址编号不能为空")
|
||||
private Integer id;
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
@NotNull(message = "用户编号不能为空")
|
||||
private Integer userId;
|
||||
/**
|
||||
* 收件人名称
|
||||
*/
|
||||
@NotEmpty(message = "收件人名称不能为空")
|
||||
private String name;
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
@NotEmpty(message = "手机号不能为空")
|
||||
private String mobile;
|
||||
/**
|
||||
* 省份编号
|
||||
*/
|
||||
@NotNull(message = "省份编号不能为空")
|
||||
private Integer provinceCode;
|
||||
/**
|
||||
* 城市编号
|
||||
*/
|
||||
@NotNull(message = "城市编号不能为空")
|
||||
private Integer cityCode;
|
||||
/**
|
||||
* 区域编号
|
||||
*/
|
||||
@NotNull(message = "区域编号不能为空")
|
||||
private Integer countyCode;
|
||||
/**
|
||||
* 收件详细地址
|
||||
*/
|
||||
@NotEmpty(message = "收件详细地址不能为空")
|
||||
private String detailAddress;
|
||||
/**
|
||||
* 地址类型
|
||||
*/
|
||||
@NotNull(message = "地址类型不能为空")
|
||||
private Integer type;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user