Commit 20546a37cc89fbdf530dbc4f7a9bc3598869311c
1 parent
8dd83f4a
mall:code review 收件地址
Showing
9 changed files
with
18 additions
and
140 deletions
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/controller/app/address/AppAddressController.java
| ... | ... | @@ -34,14 +34,12 @@ public class AppAddressController { |
| 34 | 34 | |
| 35 | 35 | @PostMapping("/create") |
| 36 | 36 | @ApiOperation("创建用户收件地址") |
| 37 | - | |
| 38 | 37 | public CommonResult<Long> createAddress(@Valid @RequestBody AppAddressCreateReqVO createReqVO) { |
| 39 | 38 | return success(addressService.createAddress(getLoginUserId(), createReqVO)); |
| 40 | 39 | } |
| 41 | 40 | |
| 42 | 41 | @PutMapping("/update") |
| 43 | 42 | @ApiOperation("更新用户收件地址") |
| 44 | - | |
| 45 | 43 | public CommonResult<Boolean> updateAddress(@Valid @RequestBody AppAddressUpdateReqVO updateReqVO) { |
| 46 | 44 | addressService.updateAddress(getLoginUserId(), updateReqVO); |
| 47 | 45 | return success(true); |
| ... | ... | @@ -50,7 +48,6 @@ public class AppAddressController { |
| 50 | 48 | @DeleteMapping("/delete") |
| 51 | 49 | @ApiOperation("删除用户收件地址") |
| 52 | 50 | @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class) |
| 53 | - | |
| 54 | 51 | public CommonResult<Boolean> deleteAddress(@RequestParam("id") Long id) { |
| 55 | 52 | addressService.deleteAddress(getLoginUserId(), id); |
| 56 | 53 | return success(true); |
| ... | ... | @@ -59,7 +56,6 @@ public class AppAddressController { |
| 59 | 56 | @GetMapping("/get") |
| 60 | 57 | @ApiOperation("获得用户收件地址") |
| 61 | 58 | @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) |
| 62 | - | |
| 63 | 59 | public CommonResult<AppAddressRespVO> getAddress(@RequestParam("id") Long id) { |
| 64 | 60 | AddressDO address = addressService.getAddress(getLoginUserId(), id); |
| 65 | 61 | return success(AddressConvert.INSTANCE.convert(address)); |
| ... | ... | @@ -67,7 +63,6 @@ public class AppAddressController { |
| 67 | 63 | |
| 68 | 64 | @GetMapping("/get-default") |
| 69 | 65 | @ApiOperation("获得默认的用户收件地址") |
| 70 | - | |
| 71 | 66 | public CommonResult<AppAddressRespVO> getDefaultUserAddress() { |
| 72 | 67 | AddressDO address = addressService.getDefaultUserAddress(getLoginUserId()); |
| 73 | 68 | return success(AddressConvert.INSTANCE.convert(address)); |
| ... | ... | @@ -75,7 +70,6 @@ public class AppAddressController { |
| 75 | 70 | |
| 76 | 71 | @GetMapping("/list") |
| 77 | 72 | @ApiOperation("获得用户收件地址列表") |
| 78 | - | |
| 79 | 73 | public CommonResult<List<AppAddressRespVO>> getAddressList() { |
| 80 | 74 | List<AddressDO> list = addressService.getAddressList(getLoginUserId()); |
| 81 | 75 | return success(AddressConvert.INSTANCE.convertList(list)); | ... | ... |
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/controller/app/address/vo/AppAddressBaseVO.java
| ... | ... | @@ -12,6 +12,8 @@ import javax.validation.constraints.*; |
| 12 | 12 | @Data |
| 13 | 13 | public class AppAddressBaseVO { |
| 14 | 14 | |
| 15 | + // TODO @shuaidawang:swagger 注解的 example;其它 VO 类也要补充下 | |
| 16 | + | |
| 15 | 17 | @ApiModelProperty(value = "收件人名称", required = true) |
| 16 | 18 | @NotNull(message = "收件人名称不能为空") |
| 17 | 19 | private String name; |
| ... | ... | @@ -28,7 +30,7 @@ public class AppAddressBaseVO { |
| 28 | 30 | @NotNull(message = "收件详细地址不能为空") |
| 29 | 31 | private String detailAddress; |
| 30 | 32 | |
| 31 | - @ApiModelProperty(value = "地址类型", required = true) | |
| 33 | + @ApiModelProperty(value = "地址类型", required = true) // TODO @shuaidawang:这个是枚举字段,最好说明下对应的枚举类 | |
| 32 | 34 | @NotNull(message = "地址类型不能为空") |
| 33 | 35 | private Integer type; |
| 34 | 36 | ... | ... |
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/controller/app/address/vo/AppAddressExportReqVO.java deleted
| 1 | -package cn.iocoder.yudao.module.member.controller.app.address.vo; | |
| 2 | - | |
| 3 | -import lombok.*; | |
| 4 | -import java.util.*; | |
| 5 | -import io.swagger.annotations.*; | |
| 6 | -import cn.iocoder.yudao.framework.common.pojo.PageParam; | |
| 7 | -import org.springframework.format.annotation.DateTimeFormat; | |
| 8 | - | |
| 9 | -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | |
| 10 | - | |
| 11 | -@ApiModel(value = "用户 APP - 用户收件地址 Excel 导出 Request VO", description = "参数和 AddressPageReqVO 是一致的") | |
| 12 | -@Data | |
| 13 | -public class AppAddressExportReqVO { | |
| 14 | - | |
| 15 | - @ApiModelProperty(value = "用户编号") | |
| 16 | - private Long userId; | |
| 17 | - | |
| 18 | - @ApiModelProperty(value = "收件人名称") | |
| 19 | - private String name; | |
| 20 | - | |
| 21 | - @ApiModelProperty(value = "手机号") | |
| 22 | - private String mobile; | |
| 23 | - | |
| 24 | - @ApiModelProperty(value = "地区编码") | |
| 25 | - private Integer areaCode; | |
| 26 | - | |
| 27 | - @ApiModelProperty(value = "收件详细地址") | |
| 28 | - private String detailAddress; | |
| 29 | - | |
| 30 | - @ApiModelProperty(value = "地址类型") | |
| 31 | - private Integer type; | |
| 32 | - | |
| 33 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | |
| 34 | - @ApiModelProperty(value = "开始创建时间") | |
| 35 | - private Date beginCreateTime; | |
| 36 | - | |
| 37 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | |
| 38 | - @ApiModelProperty(value = "结束创建时间") | |
| 39 | - private Date endCreateTime; | |
| 40 | - | |
| 41 | -} |
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/controller/app/address/vo/AppAddressPageReqVO.java deleted
| 1 | -package cn.iocoder.yudao.module.member.controller.app.address.vo; | |
| 2 | - | |
| 3 | -import lombok.*; | |
| 4 | -import java.util.*; | |
| 5 | -import io.swagger.annotations.*; | |
| 6 | -import cn.iocoder.yudao.framework.common.pojo.PageParam; | |
| 7 | -import org.springframework.format.annotation.DateTimeFormat; | |
| 8 | - | |
| 9 | -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | |
| 10 | - | |
| 11 | -@ApiModel("用户 APP - 用户收件地址分页 Request VO") | |
| 12 | -@Data | |
| 13 | -@EqualsAndHashCode(callSuper = true) | |
| 14 | -@ToString(callSuper = true) | |
| 15 | -public class AppAddressPageReqVO extends PageParam { | |
| 16 | - | |
| 17 | - @ApiModelProperty(value = "用户编号") | |
| 18 | - private Long userId; | |
| 19 | - | |
| 20 | - @ApiModelProperty(value = "收件人名称") | |
| 21 | - private String name; | |
| 22 | - | |
| 23 | - @ApiModelProperty(value = "手机号") | |
| 24 | - private String mobile; | |
| 25 | - | |
| 26 | - @ApiModelProperty(value = "地区编码") | |
| 27 | - private Integer areaCode; | |
| 28 | - | |
| 29 | - @ApiModelProperty(value = "收件详细地址") | |
| 30 | - private String detailAddress; | |
| 31 | - | |
| 32 | - @ApiModelProperty(value = "地址类型") | |
| 33 | - private Integer type; | |
| 34 | - | |
| 35 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | |
| 36 | - @ApiModelProperty(value = "开始创建时间") | |
| 37 | - private Date beginCreateTime; | |
| 38 | - | |
| 39 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | |
| 40 | - @ApiModelProperty(value = "结束创建时间") | |
| 41 | - private Date endCreateTime; | |
| 42 | - | |
| 43 | -} |
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/address/AddressDO.java
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/address/AddressMapper.java
| ... | ... | @@ -29,16 +29,4 @@ public interface AddressMapper extends BaseMapperX<AddressDO> { |
| 29 | 29 | .orderByDesc(AddressDO::getId)); |
| 30 | 30 | } |
| 31 | 31 | |
| 32 | - default List<AddressDO> selectList(AppAddressExportReqVO reqVO) { | |
| 33 | - return selectList(new LambdaQueryWrapperX<AddressDO>() | |
| 34 | - .eqIfPresent(AddressDO::getUserId, reqVO.getUserId()) | |
| 35 | - .likeIfPresent(AddressDO::getName, reqVO.getName()) | |
| 36 | - .eqIfPresent(AddressDO::getMobile, reqVO.getMobile()) | |
| 37 | - .eqIfPresent(AddressDO::getAreaCode, reqVO.getAreaCode()) | |
| 38 | - .eqIfPresent(AddressDO::getDetailAddress, reqVO.getDetailAddress()) | |
| 39 | - .eqIfPresent(AddressDO::getType, reqVO.getType()) | |
| 40 | - .betweenIfPresent(AddressDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | |
| 41 | - .orderByDesc(AddressDO::getId)); | |
| 42 | - } | |
| 43 | - | |
| 44 | 32 | } | ... | ... |
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/enums/AddressTypeEnum.java
| ... | ... | @@ -11,11 +11,11 @@ import lombok.Getter; |
| 11 | 11 | public enum AddressTypeEnum { |
| 12 | 12 | |
| 13 | 13 | DEFAULT(1, "默认收件地址"), |
| 14 | - NORMAL(2, "普通收件地址"), // 即非默认收件笛之爱 | |
| 14 | + NORMAL(2, "普通收件地址"), // 即非默认收件地址 | |
| 15 | 15 | |
| 16 | 16 | ; |
| 17 | 17 | |
| 18 | 18 | private final Integer type; |
| 19 | 19 | private final String desc; |
| 20 | 20 | |
| 21 | -} | |
| 22 | 21 | \ No newline at end of file |
| 22 | +} | ... | ... |
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/service/address/AddressService.java
| ... | ... | @@ -54,23 +54,7 @@ public interface AddressService { |
| 54 | 54 | * @return 用户收件地址列表 |
| 55 | 55 | */ |
| 56 | 56 | List<AddressDO> getAddressList(Long userId); |
| 57 | - | |
| 58 | - /** | |
| 59 | - * 获得用户收件地址分页 | |
| 60 | - * | |
| 61 | - * @param pageReqVO 分页查询 | |
| 62 | - * @return 用户收件地址分页 | |
| 63 | - */ | |
| 64 | - PageResult<AddressDO> getAddressPage(AppAddressPageReqVO pageReqVO); | |
| 65 | - | |
| 66 | - /** | |
| 67 | - * 获得用户收件地址列表, 用于 Excel 导出 | |
| 68 | - * | |
| 69 | - * @param exportReqVO 查询条件 | |
| 70 | - * @return 用户收件地址列表 | |
| 71 | - */ | |
| 72 | - List<AddressDO> getAddressList(AppAddressExportReqVO exportReqVO); | |
| 73 | - | |
| 57 | + | |
| 74 | 58 | /** |
| 75 | 59 | * 获得用户收件地址 |
| 76 | 60 | * | ... | ... |
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/service/address/AddressServiceImpl.java
| ... | ... | @@ -34,10 +34,11 @@ public class AddressServiceImpl implements AddressService { |
| 34 | 34 | @Resource |
| 35 | 35 | private AddressMapper addressMapper; |
| 36 | 36 | |
| 37 | - @Override | |
| 37 | + @Override // TODO @shuaidawang:事务要加下哈 | |
| 38 | 38 | public Long createAddress(Long userId, AppAddressCreateReqVO createReqVO) { |
| 39 | 39 | // 如果添加的是默认收件地址,则将原默认地址修改为非默认 |
| 40 | 40 | if (AddressTypeEnum.DEFAULT.getType().equals(createReqVO.getType())) { |
| 41 | + // TODO @shuaidawang:查询到一个,然后进行 update | |
| 41 | 42 | List<AddressDO> addressDOs = selectListByUserIdAndType(userId, AddressTypeEnum.DEFAULT.getType()); |
| 42 | 43 | if (!CollectionUtils.isEmpty(addressDOs)) { |
| 43 | 44 | addressDOs.forEach(userAddressDO -> addressMapper.updateById(new AddressDO() |
| ... | ... | @@ -52,12 +53,13 @@ public class AddressServiceImpl implements AddressService { |
| 52 | 53 | return address.getId(); |
| 53 | 54 | } |
| 54 | 55 | |
| 55 | - @Override | |
| 56 | + @Override // TODO @shuaidawang:事务要加下哈 | |
| 56 | 57 | public void updateAddress(Long userId, AppAddressUpdateReqVO updateReqVO) { |
| 57 | - // 校验存在,校验是否能够操作 | |
| 58 | + // 校验存在,校验是否能够操作 TODO shuaidawang:改成基于 id + userId 查询,以前的做法不太好; | |
| 58 | 59 | check(userId, updateReqVO.getId()); |
| 59 | 60 | // 如果修改的是默认收件地址,则将原默认地址修改为非默认 |
| 60 | 61 | if (AddressTypeEnum.DEFAULT.getType().equals(updateReqVO.getType())) { |
| 62 | + // TODO @shuaidawang:查询到一个,然后进行 update,需要排除自己哈 | |
| 61 | 63 | List<AddressDO> addressDOs = selectListByUserIdAndType( |
| 62 | 64 | userId, AddressTypeEnum.DEFAULT.getType()); |
| 63 | 65 | if (!CollectionUtils.isEmpty(addressDOs)) { |
| ... | ... | @@ -68,13 +70,13 @@ public class AddressServiceImpl implements AddressService { |
| 68 | 70 | } |
| 69 | 71 | // 更新 |
| 70 | 72 | AddressDO updateObj = AddressConvert.INSTANCE.convert(updateReqVO); |
| 71 | - updateObj.setUserId(userId); | |
| 73 | + updateObj.setUserId(userId); // TODO @shuaidawang:不用加 userId | |
| 72 | 74 | addressMapper.updateById(updateObj); |
| 73 | 75 | } |
| 74 | 76 | |
| 75 | 77 | @Override |
| 76 | 78 | public void deleteAddress(Long userId, Long id) { |
| 77 | - // 校验存在,校验是否能够操作 | |
| 79 | + // 校验存在,校验是否能够操作 TODO shuaidawang:改成基于 id + userId 查询,以前的做法不太好; | |
| 78 | 80 | check(userId, id); |
| 79 | 81 | // 删除 |
| 80 | 82 | addressMapper.deleteById(id); |
| ... | ... | @@ -107,18 +109,8 @@ public class AddressServiceImpl implements AddressService { |
| 107 | 109 | } |
| 108 | 110 | |
| 109 | 111 | @Override |
| 110 | - public PageResult<AddressDO> getAddressPage(AppAddressPageReqVO pageReqVO) { | |
| 111 | - return addressMapper.selectPage(pageReqVO); | |
| 112 | - } | |
| 113 | - | |
| 114 | - @Override | |
| 115 | - public List<AddressDO> getAddressList(AppAddressExportReqVO exportReqVO) { | |
| 116 | - return addressMapper.selectList(exportReqVO); | |
| 117 | - } | |
| 118 | - | |
| 119 | - @Override | |
| 120 | 112 | public AddressDO getAddress(Long userId, Long id) { |
| 121 | - AddressDO address = getAddress(id); | |
| 113 | + AddressDO address = getAddress(id); // TODO shuaidawang:改成基于 id + userId 查询,以前的做法不太好; | |
| 122 | 114 | check(userId, id); |
| 123 | 115 | return address; |
| 124 | 116 | } |
| ... | ... | @@ -130,10 +122,12 @@ public class AddressServiceImpl implements AddressService { |
| 130 | 122 | */ |
| 131 | 123 | @Override |
| 132 | 124 | public AddressDO getDefaultUserAddress(Long userId) { |
| 125 | + // TODO @shuaidawang:查询,都抽到 mapper 中 | |
| 133 | 126 | List<AddressDO> addressDOList = selectListByUserIdAndType(userId, AddressTypeEnum.DEFAULT.getType()); |
| 134 | 127 | return addressDOList.stream().findFirst().orElse(null); |
| 135 | 128 | } |
| 136 | 129 | |
| 130 | + // TODO @shuaidawang:查询,都抽到 mapper 中 | |
| 137 | 131 | /** |
| 138 | 132 | * 根据类型获取地址列表 |
| 139 | 133 | * @param userId | ... | ... |