Commit 3badd5158cff9c7c215d74dd2d09ea2fb7254c31
Committed by
Gitee
!589 新增 管理后台 用户收件地址管理接口
Merge pull request !589 from 风狗/管理后台_用户收件地址管理接口
Showing
12 changed files
with
467 additions
and
0 deletions
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/address/AddressController.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.member.controller.admin.address; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.member.dal.dataobject.address.MemberAddressDO; | ||
| 4 | +import org.springframework.web.bind.annotation.*; | ||
| 5 | +import javax.annotation.Resource; | ||
| 6 | +import org.springframework.validation.annotation.Validated; | ||
| 7 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 8 | +import io.swagger.v3.oas.annotations.tags.Tag; | ||
| 9 | +import io.swagger.v3.oas.annotations.Parameter; | ||
| 10 | +import io.swagger.v3.oas.annotations.Operation; | ||
| 11 | + | ||
| 12 | +import javax.validation.constraints.*; | ||
| 13 | +import javax.validation.*; | ||
| 14 | +import javax.servlet.http.*; | ||
| 15 | +import java.util.*; | ||
| 16 | +import java.io.IOException; | ||
| 17 | + | ||
| 18 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 19 | +import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||
| 20 | +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||
| 21 | + | ||
| 22 | +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | ||
| 23 | + | ||
| 24 | +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | ||
| 25 | +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; | ||
| 26 | + | ||
| 27 | +import cn.iocoder.yudao.module.member.controller.admin.address.vo.*; | ||
| 28 | +import cn.iocoder.yudao.module.member.convert.address.AddressConvert; | ||
| 29 | +import cn.iocoder.yudao.module.member.service.address.AddressService; | ||
| 30 | + | ||
| 31 | +@Tag(name = "管理后台 - 用户收件地址") | ||
| 32 | +@RestController | ||
| 33 | +@RequestMapping("/member/address") | ||
| 34 | +@Validated | ||
| 35 | +public class AddressController { | ||
| 36 | + | ||
| 37 | + @Resource | ||
| 38 | + private AddressService addressService; | ||
| 39 | + | ||
| 40 | + @PostMapping("/create") | ||
| 41 | + @Operation(summary = "创建用户收件地址") | ||
| 42 | + @PreAuthorize("@ss.hasPermission('member:address:create')") | ||
| 43 | + public CommonResult<Long> createAddress(@Valid @RequestBody AddressCreateReqVO createReqVO) { | ||
| 44 | + return success(addressService.createAddress(createReqVO)); | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + @PutMapping("/update") | ||
| 48 | + @Operation(summary = "更新用户收件地址") | ||
| 49 | + @PreAuthorize("@ss.hasPermission('member:address:update')") | ||
| 50 | + public CommonResult<Boolean> updateAddress(@Valid @RequestBody AddressUpdateReqVO updateReqVO) { | ||
| 51 | + addressService.updateAddress(updateReqVO); | ||
| 52 | + return success(true); | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + @DeleteMapping("/delete") | ||
| 56 | + @Operation(summary = "删除用户收件地址") | ||
| 57 | + @Parameter(name = "id", description = "编号", required = true) | ||
| 58 | + @PreAuthorize("@ss.hasPermission('member:address:delete')") | ||
| 59 | + public CommonResult<Boolean> deleteAddress(@RequestParam("id") Long id) { | ||
| 60 | + addressService.deleteAddress(id); | ||
| 61 | + return success(true); | ||
| 62 | + } | ||
| 63 | + | ||
| 64 | + @GetMapping("/get") | ||
| 65 | + @Operation(summary = "获得用户收件地址") | ||
| 66 | + @Parameter(name = "id", description = "编号", required = true, example = "1024") | ||
| 67 | + @PreAuthorize("@ss.hasPermission('member:address:query')") | ||
| 68 | + public CommonResult<AddressRespVO> getAddress(@RequestParam("id") Long id) { | ||
| 69 | + MemberAddressDO address = addressService.getAddress(id); | ||
| 70 | + return success(AddressConvert.INSTANCE.convert2(address)); | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + @GetMapping("/list") | ||
| 74 | + @Operation(summary = "获得用户收件地址列表") | ||
| 75 | + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") | ||
| 76 | + @PreAuthorize("@ss.hasPermission('member:address:query')") | ||
| 77 | + public CommonResult<List<AddressRespVO>> getAddressList(@RequestParam("ids") Collection<Long> ids) { | ||
| 78 | + List<MemberAddressDO> list = addressService.getAddressList(ids); | ||
| 79 | + return success(AddressConvert.INSTANCE.convertList2(list)); | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + @GetMapping("/page") | ||
| 83 | + @Operation(summary = "获得用户收件地址分页") | ||
| 84 | + @PreAuthorize("@ss.hasPermission('member:address:query')") | ||
| 85 | + public CommonResult<PageResult<AddressRespVO>> getAddressPage(@Valid AddressPageReqVO pageVO) { | ||
| 86 | + PageResult<MemberAddressDO> pageResult = addressService.getAddressPage(pageVO); | ||
| 87 | + return success(AddressConvert.INSTANCE.convertPage(pageResult)); | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + @GetMapping("/export-excel") | ||
| 91 | + @Operation(summary = "导出用户收件地址 Excel") | ||
| 92 | + @PreAuthorize("@ss.hasPermission('member:address:export')") | ||
| 93 | + @OperateLog(type = EXPORT) | ||
| 94 | + public void exportAddressExcel(@Valid AddressExportReqVO exportReqVO, | ||
| 95 | + HttpServletResponse response) throws IOException { | ||
| 96 | + List<MemberAddressDO> list = addressService.getAddressList(exportReqVO); | ||
| 97 | + // 导出 Excel | ||
| 98 | + List<AddressExcelVO> datas = AddressConvert.INSTANCE.convertList02(list); | ||
| 99 | + ExcelUtils.write(response, "用户收件地址.xls", "数据", AddressExcelVO.class, datas); | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | +} |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/address/vo/AddressBaseVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.member.controller.admin.address.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.*; | ||
| 5 | +import java.time.LocalDateTime; | ||
| 6 | +import java.time.LocalDateTime; | ||
| 7 | +import java.util.*; | ||
| 8 | +import javax.validation.constraints.*; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * 用户收件地址 Base VO,提供给添加、修改、详细的子 VO 使用 | ||
| 12 | + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 | ||
| 13 | + */ | ||
| 14 | +@Data | ||
| 15 | +public class AddressBaseVO { | ||
| 16 | + | ||
| 17 | + @Schema(description = "收件人名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") | ||
| 18 | + @NotNull(message = "收件人名称不能为空") | ||
| 19 | + private String name; | ||
| 20 | + | ||
| 21 | + @Schema(description = "手机号", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 22 | + @NotNull(message = "手机号不能为空") | ||
| 23 | + private String mobile; | ||
| 24 | + | ||
| 25 | + @Schema(description = "地区编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "15716") | ||
| 26 | + @NotNull(message = "地区编码不能为空") | ||
| 27 | + private Long areaId; | ||
| 28 | + | ||
| 29 | + @Schema(description = "收件详细地址", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 30 | + @NotNull(message = "收件详细地址不能为空") | ||
| 31 | + private String detailAddress; | ||
| 32 | + | ||
| 33 | + @Schema(description = "是否默认", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") | ||
| 34 | + @NotNull(message = "是否默认不能为空") | ||
| 35 | + private Boolean defaultStatus; | ||
| 36 | + | ||
| 37 | +} |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/address/vo/AddressCreateReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.member.controller.admin.address.vo; | ||
| 2 | + | ||
| 3 | +import lombok.*; | ||
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 6 | +import javax.validation.constraints.*; | ||
| 7 | + | ||
| 8 | +@Schema(description = "管理后台 - 用户收件地址创建 Request VO") | ||
| 9 | +@Data | ||
| 10 | +@EqualsAndHashCode(callSuper = true) | ||
| 11 | +@ToString(callSuper = true) | ||
| 12 | +public class AddressCreateReqVO extends AddressBaseVO { | ||
| 13 | + | ||
| 14 | +} |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/address/vo/AddressExcelVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.member.controller.admin.address.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.*; | ||
| 5 | +import java.util.*; | ||
| 6 | +import java.time.LocalDateTime; | ||
| 7 | +import java.time.LocalDateTime; | ||
| 8 | + | ||
| 9 | +import com.alibaba.excel.annotation.ExcelProperty; | ||
| 10 | + | ||
| 11 | +/** | ||
| 12 | + * 用户收件地址 Excel VO | ||
| 13 | + * | ||
| 14 | + * @author 绮梦 | ||
| 15 | + */ | ||
| 16 | +@Data | ||
| 17 | +public class AddressExcelVO { | ||
| 18 | + | ||
| 19 | + @ExcelProperty("收件地址编号") | ||
| 20 | + private Long id; | ||
| 21 | + | ||
| 22 | + @ExcelProperty("收件人名称") | ||
| 23 | + private String name; | ||
| 24 | + | ||
| 25 | + @ExcelProperty("手机号") | ||
| 26 | + private String mobile; | ||
| 27 | + | ||
| 28 | + @ExcelProperty("地区编码") | ||
| 29 | + private Long areaId; | ||
| 30 | + | ||
| 31 | + @ExcelProperty("收件详细地址") | ||
| 32 | + private String detailAddress; | ||
| 33 | + | ||
| 34 | + @ExcelProperty("是否默认") | ||
| 35 | + private Boolean defaultStatus; | ||
| 36 | + | ||
| 37 | + @ExcelProperty("创建时间") | ||
| 38 | + private LocalDateTime createTime; | ||
| 39 | + | ||
| 40 | +} |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/address/vo/AddressExportReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.member.controller.admin.address.vo; | ||
| 2 | + | ||
| 3 | +import lombok.*; | ||
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 6 | +import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||
| 7 | +import java.time.LocalDateTime; | ||
| 8 | +import org.springframework.format.annotation.DateTimeFormat; | ||
| 9 | + | ||
| 10 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 11 | + | ||
| 12 | +@Schema(description = "管理后台 - 用户收件地址 Excel 导出 Request VO,参数和 AddressPageReqVO 是一致的") | ||
| 13 | +@Data | ||
| 14 | +public class AddressExportReqVO { | ||
| 15 | + | ||
| 16 | + @Schema(description = "用户编号", example = "20369") | ||
| 17 | + private Long userId; | ||
| 18 | + | ||
| 19 | + @Schema(description = "收件人名称", example = "张三") | ||
| 20 | + private String name; | ||
| 21 | + | ||
| 22 | + @Schema(description = "手机号") | ||
| 23 | + private String mobile; | ||
| 24 | + | ||
| 25 | + @Schema(description = "地区编码", example = "15716") | ||
| 26 | + private Long areaId; | ||
| 27 | + | ||
| 28 | + @Schema(description = "收件详细地址") | ||
| 29 | + private String detailAddress; | ||
| 30 | + | ||
| 31 | + @Schema(description = "是否默认", example = "2") | ||
| 32 | + private Boolean defaultStatus; | ||
| 33 | + | ||
| 34 | + @Schema(description = "创建时间") | ||
| 35 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 36 | + private LocalDateTime[] createTime; | ||
| 37 | + | ||
| 38 | +} |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/address/vo/AddressPageReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.member.controller.admin.address.vo; | ||
| 2 | + | ||
| 3 | +import lombok.*; | ||
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 6 | +import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||
| 7 | +import org.springframework.format.annotation.DateTimeFormat; | ||
| 8 | +import java.time.LocalDateTime; | ||
| 9 | + | ||
| 10 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 11 | + | ||
| 12 | +@Schema(description = "管理后台 - 用户收件地址分页 Request VO") | ||
| 13 | +@Data | ||
| 14 | +@EqualsAndHashCode(callSuper = true) | ||
| 15 | +@ToString(callSuper = true) | ||
| 16 | +public class AddressPageReqVO extends PageParam { | ||
| 17 | + | ||
| 18 | + @Schema(description = "用户编号", example = "20369") | ||
| 19 | + private Long userId; | ||
| 20 | + | ||
| 21 | + @Schema(description = "收件人名称", example = "张三") | ||
| 22 | + private String name; | ||
| 23 | + | ||
| 24 | + @Schema(description = "手机号") | ||
| 25 | + private String mobile; | ||
| 26 | + | ||
| 27 | + @Schema(description = "地区编码", example = "15716") | ||
| 28 | + private Long areaId; | ||
| 29 | + | ||
| 30 | + @Schema(description = "收件详细地址") | ||
| 31 | + private String detailAddress; | ||
| 32 | + | ||
| 33 | + @Schema(description = "是否默认", example = "2") | ||
| 34 | + private Boolean defaultStatus; | ||
| 35 | + | ||
| 36 | + @Schema(description = "创建时间") | ||
| 37 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 38 | + private LocalDateTime[] createTime; | ||
| 39 | + | ||
| 40 | +} |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/address/vo/AddressRespVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.member.controller.admin.address.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.*; | ||
| 5 | +import java.time.LocalDateTime; | ||
| 6 | + | ||
| 7 | +@Schema(description = "管理后台 - 用户收件地址 Response VO") | ||
| 8 | +@Data | ||
| 9 | +@EqualsAndHashCode(callSuper = true) | ||
| 10 | +@ToString(callSuper = true) | ||
| 11 | +public class AddressRespVO extends AddressBaseVO { | ||
| 12 | + | ||
| 13 | + @Schema(description = "收件地址编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "7380") | ||
| 14 | + private Long id; | ||
| 15 | + | ||
| 16 | + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 17 | + private LocalDateTime createTime; | ||
| 18 | + | ||
| 19 | +} |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/address/vo/AddressUpdateReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.member.controller.admin.address.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.*; | ||
| 5 | +import java.util.*; | ||
| 6 | +import javax.validation.constraints.*; | ||
| 7 | + | ||
| 8 | +@Schema(description = "管理后台 - 用户收件地址更新 Request VO") | ||
| 9 | +@Data | ||
| 10 | +@EqualsAndHashCode(callSuper = true) | ||
| 11 | +@ToString(callSuper = true) | ||
| 12 | +public class AddressUpdateReqVO extends AddressBaseVO { | ||
| 13 | + | ||
| 14 | + @Schema(description = "收件地址编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "7380") | ||
| 15 | + @NotNull(message = "收件地址编号不能为空") | ||
| 16 | + private Long id; | ||
| 17 | + | ||
| 18 | +} |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/address/AddressConvert.java
| 1 | package cn.iocoder.yudao.module.member.convert.address; | 1 | package cn.iocoder.yudao.module.member.convert.address; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 3 | import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; | 4 | import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; |
| 4 | import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO; | 5 | import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO; |
| 6 | +import cn.iocoder.yudao.module.member.controller.admin.address.vo.AddressCreateReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.member.controller.admin.address.vo.AddressExcelVO; | ||
| 8 | +import cn.iocoder.yudao.module.member.controller.admin.address.vo.AddressRespVO; | ||
| 9 | +import cn.iocoder.yudao.module.member.controller.admin.address.vo.AddressUpdateReqVO; | ||
| 5 | import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressCreateReqVO; | 10 | import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressCreateReqVO; |
| 6 | import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressRespVO; | 11 | import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressRespVO; |
| 7 | import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressUpdateReqVO; | 12 | import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressUpdateReqVO; |
| @@ -39,4 +44,15 @@ public interface AddressConvert { | @@ -39,4 +44,15 @@ public interface AddressConvert { | ||
| 39 | return AreaUtils.format(areaId); | 44 | return AreaUtils.format(areaId); |
| 40 | } | 45 | } |
| 41 | 46 | ||
| 47 | + MemberAddressDO convert(AddressCreateReqVO bean); | ||
| 48 | + | ||
| 49 | + MemberAddressDO convert(AddressUpdateReqVO bean); | ||
| 50 | + | ||
| 51 | + AddressRespVO convert2(MemberAddressDO bean); | ||
| 52 | + | ||
| 53 | + List<AddressRespVO> convertList2(List<MemberAddressDO> list); | ||
| 54 | + | ||
| 55 | + PageResult<AddressRespVO> convertPage(PageResult<MemberAddressDO> page); | ||
| 56 | + | ||
| 57 | + List<AddressExcelVO> convertList02(List<MemberAddressDO> list); | ||
| 42 | } | 58 | } |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/address/AddressMapper.java
| 1 | package cn.iocoder.yudao.module.member.dal.mysql.address; | 1 | package cn.iocoder.yudao.module.member.dal.mysql.address; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 3 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | +import cn.iocoder.yudao.module.member.controller.admin.address.vo.AddressExportReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.member.controller.admin.address.vo.AddressPageReqVO; | ||
| 5 | import cn.iocoder.yudao.module.member.dal.dataobject.address.MemberAddressDO; | 8 | import cn.iocoder.yudao.module.member.dal.dataobject.address.MemberAddressDO; |
| 6 | import org.apache.ibatis.annotations.Mapper; | 9 | import org.apache.ibatis.annotations.Mapper; |
| 7 | 10 | ||
| @@ -18,5 +21,28 @@ public interface AddressMapper extends BaseMapperX<MemberAddressDO> { | @@ -18,5 +21,28 @@ public interface AddressMapper extends BaseMapperX<MemberAddressDO> { | ||
| 18 | return selectList(new LambdaQueryWrapperX<MemberAddressDO>().eq(MemberAddressDO::getUserId, userId) | 21 | return selectList(new LambdaQueryWrapperX<MemberAddressDO>().eq(MemberAddressDO::getUserId, userId) |
| 19 | .eqIfPresent(MemberAddressDO::getDefaultStatus, defaulted)); | 22 | .eqIfPresent(MemberAddressDO::getDefaultStatus, defaulted)); |
| 20 | } | 23 | } |
| 24 | + default PageResult<MemberAddressDO> selectPage(AddressPageReqVO reqVO) { | ||
| 25 | + return selectPage(reqVO, new LambdaQueryWrapperX<MemberAddressDO>() | ||
| 26 | + .eqIfPresent(MemberAddressDO::getUserId, reqVO.getUserId()) | ||
| 27 | + .likeIfPresent(MemberAddressDO::getName, reqVO.getName()) | ||
| 28 | + .eqIfPresent(MemberAddressDO::getMobile, reqVO.getMobile()) | ||
| 29 | + .eqIfPresent(MemberAddressDO::getAreaId, reqVO.getAreaId()) | ||
| 30 | + .eqIfPresent(MemberAddressDO::getDetailAddress, reqVO.getDetailAddress()) | ||
| 31 | + .eqIfPresent(MemberAddressDO::getDefaultStatus, reqVO.getDefaultStatus()) | ||
| 32 | + .betweenIfPresent(MemberAddressDO::getCreateTime, reqVO.getCreateTime()) | ||
| 33 | + .orderByDesc(MemberAddressDO::getId)); | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + default List<MemberAddressDO> selectList(AddressExportReqVO reqVO) { | ||
| 37 | + return selectList(new LambdaQueryWrapperX<MemberAddressDO>() | ||
| 38 | + .eqIfPresent(MemberAddressDO::getUserId, reqVO.getUserId()) | ||
| 39 | + .likeIfPresent(MemberAddressDO::getName, reqVO.getName()) | ||
| 40 | + .eqIfPresent(MemberAddressDO::getMobile, reqVO.getMobile()) | ||
| 41 | + .eqIfPresent(MemberAddressDO::getAreaId, reqVO.getAreaId()) | ||
| 42 | + .eqIfPresent(MemberAddressDO::getDetailAddress, reqVO.getDetailAddress()) | ||
| 43 | + .eqIfPresent(MemberAddressDO::getDefaultStatus, reqVO.getDefaultStatus()) | ||
| 44 | + .betweenIfPresent(MemberAddressDO::getCreateTime, reqVO.getCreateTime()) | ||
| 45 | + .orderByDesc(MemberAddressDO::getId)); | ||
| 46 | + } | ||
| 21 | 47 | ||
| 22 | } | 48 | } |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/address/AddressService.java
| 1 | package cn.iocoder.yudao.module.member.service.address; | 1 | package cn.iocoder.yudao.module.member.service.address; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | +import cn.iocoder.yudao.module.member.controller.admin.address.vo.AddressCreateReqVO; | ||
| 5 | +import cn.iocoder.yudao.module.member.controller.admin.address.vo.AddressExportReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.member.controller.admin.address.vo.AddressPageReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.member.controller.admin.address.vo.AddressUpdateReqVO; | ||
| 3 | import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressCreateReqVO; | 8 | import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressCreateReqVO; |
| 4 | import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressUpdateReqVO; | 9 | import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressUpdateReqVO; |
| 5 | import cn.iocoder.yudao.module.member.dal.dataobject.address.MemberAddressDO; | 10 | import cn.iocoder.yudao.module.member.dal.dataobject.address.MemberAddressDO; |
| 6 | 11 | ||
| 7 | import javax.validation.Valid; | 12 | import javax.validation.Valid; |
| 13 | +import java.util.Collection; | ||
| 8 | import java.util.List; | 14 | import java.util.List; |
| 9 | 15 | ||
| 10 | /** | 16 | /** |
| @@ -64,4 +70,57 @@ public interface AddressService { | @@ -64,4 +70,57 @@ public interface AddressService { | ||
| 64 | */ | 70 | */ |
| 65 | MemberAddressDO getDefaultUserAddress(Long userId); | 71 | MemberAddressDO getDefaultUserAddress(Long userId); |
| 66 | 72 | ||
| 73 | + /** | ||
| 74 | + * 创建用户收件地址 | ||
| 75 | + * | ||
| 76 | + * @param createReqVO 创建信息 | ||
| 77 | + * @return 编号 | ||
| 78 | + */ | ||
| 79 | + Long createAddress(@Valid AddressCreateReqVO createReqVO); | ||
| 80 | + | ||
| 81 | + /** | ||
| 82 | + * 更新用户收件地址 | ||
| 83 | + * | ||
| 84 | + * @param updateReqVO 更新信息 | ||
| 85 | + */ | ||
| 86 | + void updateAddress(@Valid AddressUpdateReqVO updateReqVO); | ||
| 87 | + | ||
| 88 | + /** | ||
| 89 | + * 删除用户收件地址 | ||
| 90 | + * | ||
| 91 | + * @param id 编号 | ||
| 92 | + */ | ||
| 93 | + void deleteAddress(Long id); | ||
| 94 | + | ||
| 95 | + /** | ||
| 96 | + * 获得用户收件地址 | ||
| 97 | + * | ||
| 98 | + * @param id 编号 | ||
| 99 | + * @return 用户收件地址 | ||
| 100 | + */ | ||
| 101 | + MemberAddressDO getAddress(Long id); | ||
| 102 | + | ||
| 103 | + /** | ||
| 104 | + * 获得用户收件地址列表 | ||
| 105 | + * | ||
| 106 | + * @param ids 编号 | ||
| 107 | + * @return 用户收件地址列表 | ||
| 108 | + */ | ||
| 109 | + List<MemberAddressDO> getAddressList(Collection<Long> ids); | ||
| 110 | + | ||
| 111 | + /** | ||
| 112 | + * 获得用户收件地址分页 | ||
| 113 | + * | ||
| 114 | + * @param pageReqVO 分页查询 | ||
| 115 | + * @return 用户收件地址分页 | ||
| 116 | + */ | ||
| 117 | + PageResult<MemberAddressDO> getAddressPage(AddressPageReqVO pageReqVO); | ||
| 118 | + | ||
| 119 | + /** | ||
| 120 | + * 获得用户收件地址列表, 用于 Excel 导出 | ||
| 121 | + * | ||
| 122 | + * @param exportReqVO 查询条件 | ||
| 123 | + * @return 用户收件地址列表 | ||
| 124 | + */ | ||
| 125 | + List<MemberAddressDO> getAddressList(AddressExportReqVO exportReqVO); | ||
| 67 | } | 126 | } |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/address/AddressServiceImpl.java
| 1 | package cn.iocoder.yudao.module.member.service.address; | 1 | package cn.iocoder.yudao.module.member.service.address; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 5 | +import cn.iocoder.yudao.module.member.controller.admin.address.vo.AddressCreateReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.member.controller.admin.address.vo.AddressExportReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.member.controller.admin.address.vo.AddressPageReqVO; | ||
| 8 | +import cn.iocoder.yudao.module.member.controller.admin.address.vo.AddressUpdateReqVO; | ||
| 4 | import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressCreateReqVO; | 9 | import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressCreateReqVO; |
| 5 | import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressUpdateReqVO; | 10 | import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressUpdateReqVO; |
| 6 | import cn.iocoder.yudao.module.member.convert.address.AddressConvert; | 11 | import cn.iocoder.yudao.module.member.convert.address.AddressConvert; |
| @@ -11,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional; | @@ -11,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional; | ||
| 11 | import org.springframework.validation.annotation.Validated; | 16 | import org.springframework.validation.annotation.Validated; |
| 12 | 17 | ||
| 13 | import javax.annotation.Resource; | 18 | import javax.annotation.Resource; |
| 19 | +import java.util.Collection; | ||
| 14 | import java.util.List; | 20 | import java.util.List; |
| 15 | 21 | ||
| 16 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 22 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| @@ -94,4 +100,56 @@ public class AddressServiceImpl implements AddressService { | @@ -94,4 +100,56 @@ public class AddressServiceImpl implements AddressService { | ||
| 94 | return CollUtil.getFirst(addresses); | 100 | return CollUtil.getFirst(addresses); |
| 95 | } | 101 | } |
| 96 | 102 | ||
| 103 | + @Override | ||
| 104 | + public Long createAddress(AddressCreateReqVO createReqVO) { | ||
| 105 | + // 插入 | ||
| 106 | + MemberAddressDO address = AddressConvert.INSTANCE.convert(createReqVO); | ||
| 107 | + addressMapper.insert(address); | ||
| 108 | + // 返回 | ||
| 109 | + return address.getId(); | ||
| 110 | + } | ||
| 111 | + | ||
| 112 | + @Override | ||
| 113 | + public void updateAddress(AddressUpdateReqVO updateReqVO) { | ||
| 114 | + // 校验存在 | ||
| 115 | + validateAddressExists(updateReqVO.getId()); | ||
| 116 | + // 更新 | ||
| 117 | + MemberAddressDO updateObj = AddressConvert.INSTANCE.convert(updateReqVO); | ||
| 118 | + addressMapper.updateById(updateObj); | ||
| 119 | + } | ||
| 120 | + | ||
| 121 | + @Override | ||
| 122 | + public void deleteAddress(Long id) { | ||
| 123 | + // 校验存在 | ||
| 124 | + validateAddressExists(id); | ||
| 125 | + // 删除 | ||
| 126 | + addressMapper.deleteById(id); | ||
| 127 | + } | ||
| 128 | + | ||
| 129 | + private void validateAddressExists(Long id) { | ||
| 130 | + if (addressMapper.selectById(id) == null) { | ||
| 131 | + throw exception(ADDRESS_NOT_EXISTS); | ||
| 132 | + } | ||
| 133 | + } | ||
| 134 | + | ||
| 135 | + @Override | ||
| 136 | + public MemberAddressDO getAddress(Long id) { | ||
| 137 | + return addressMapper.selectById(id); | ||
| 138 | + } | ||
| 139 | + | ||
| 140 | + @Override | ||
| 141 | + public List<MemberAddressDO> getAddressList(Collection<Long> ids) { | ||
| 142 | + return addressMapper.selectBatchIds(ids); | ||
| 143 | + } | ||
| 144 | + | ||
| 145 | + @Override | ||
| 146 | + public PageResult<MemberAddressDO> getAddressPage(AddressPageReqVO pageReqVO) { | ||
| 147 | + return addressMapper.selectPage(pageReqVO); | ||
| 148 | + } | ||
| 149 | + | ||
| 150 | + @Override | ||
| 151 | + public List<MemberAddressDO> getAddressList(AddressExportReqVO exportReqVO) { | ||
| 152 | + return addressMapper.selectList(exportReqVO); | ||
| 153 | + } | ||
| 154 | + | ||
| 97 | } | 155 | } |