Commit 3badd5158cff9c7c215d74dd2d09ea2fb7254c31

Authored by 芋道源码
Committed by Gitee
2 parents e490195c 65eddc63

!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&lt;MemberAddressDO&gt; { @@ -18,5 +21,28 @@ public interface AddressMapper extends BaseMapperX&lt;MemberAddressDO&gt; {
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 }