继续迁移用户收件地址的代码
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
package cn.iocoder.mall.userweb.controller.address;
|
||||
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.security.user.core.context.UserSecurityContextHolder;
|
||||
import cn.iocoder.mall.userweb.controller.address.vo.UserAddressCreateReqVO;
|
||||
import cn.iocoder.mall.userweb.controller.address.vo.UserAddressRespVO;
|
||||
import cn.iocoder.mall.userweb.controller.address.vo.UserAddressUpdateReqVO;
|
||||
import cn.iocoder.mall.userweb.manager.address.UserAddressManager;
|
||||
import cn.iocoder.security.annotations.RequiresPermissions;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.common.framework.vo.CommonResult.success;
|
||||
|
||||
/**
|
||||
* 用户收件地址 Controller
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/user_address")
|
||||
@Api(tags = "用户收件地址")
|
||||
@Validated
|
||||
public class UserAddressController {
|
||||
|
||||
@Autowired
|
||||
private UserAddressManager userAddressManager;
|
||||
|
||||
@PostMapping("/create")
|
||||
@ApiOperation("创建用户收件地址")
|
||||
@RequiresPermissions
|
||||
public CommonResult<Integer> createUserAddress(@Valid UserAddressCreateReqVO createVO) {
|
||||
return success(userAddressManager.createUserAddress(UserSecurityContextHolder.getUserId(), createVO));
|
||||
}
|
||||
|
||||
@PostMapping("/update")
|
||||
@ApiOperation("更新用户收件地址")
|
||||
@RequiresPermissions
|
||||
public CommonResult<Boolean> updateUserAddress(@Valid UserAddressUpdateReqVO updateVO) {
|
||||
userAddressManager.updateUserAddress(UserSecurityContextHolder.getUserId(), updateVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@PostMapping("/delete")
|
||||
@ApiOperation("删除用户收件地址")
|
||||
@ApiImplicitParam(name = "userAddressId", value = "用户收件地址编号", required = true)
|
||||
@RequiresPermissions
|
||||
public CommonResult<Boolean> deleteUserAddress(@RequestParam("userAddressId") Integer userAddressId) {
|
||||
userAddressManager.deleteUserAddress(UserSecurityContextHolder.getUserId(), userAddressId);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@ApiOperation("获得用户收件地址")
|
||||
@ApiImplicitParam(name = "userAddressId", value = "用户收件地址编号", required = true)
|
||||
@RequiresPermissions
|
||||
public CommonResult<UserAddressRespVO> getUserAddress(@RequestParam("userAddressId") Integer userAddressId) {
|
||||
return success(userAddressManager.getUserAddress(UserSecurityContextHolder.getUserId(), userAddressId));
|
||||
}
|
||||
|
||||
@GetMapping("/list")
|
||||
@ApiOperation("获得用户收件地址列表")
|
||||
@ApiImplicitParam(name = "userAddressIds", value = "用户收件地址编号列表", required = true)
|
||||
@RequiresPermissions
|
||||
public CommonResult<List<UserAddressRespVO>> listUserAddresses(@RequestParam("userAddressIds") List<Integer> userAddressIds) {
|
||||
return success(userAddressManager.listUserAddresses(UserSecurityContextHolder.getUserId(), userAddressIds));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package cn.iocoder.mall.userweb.controller.address.vo;
|
||||
|
||||
import cn.iocoder.common.framework.validator.InEnum;
|
||||
import cn.iocoder.mall.userservice.enums.address.UserAddressType;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@ApiModel("用户收件地址创建 Request VO")
|
||||
@Data
|
||||
public class UserAddressCreateReqVO {
|
||||
|
||||
@ApiModelProperty(value = "收件人名称", required = true, example = "帅艿艿")
|
||||
@NotEmpty(message = "收件人名称不能为空")
|
||||
private String name;
|
||||
@ApiModelProperty(value = "手机号", required = true, example = "15601691300")
|
||||
@NotEmpty(message = "手机号不能为空")
|
||||
private String mobile;
|
||||
@ApiModelProperty(value = "省份编号", required = true, example = "230000")
|
||||
@NotNull(message = "省份编号不能为空")
|
||||
private Integer provinceCode;
|
||||
@ApiModelProperty(value = "城市编号", required = true, example = "469031")
|
||||
@NotNull(message = "城市编号不能为空")
|
||||
private Integer cityCode;
|
||||
@ApiModelProperty(value = "区域编号", required = true, example = "610632")
|
||||
@NotNull(message = "区域编号不能为空")
|
||||
private Integer countyCode;
|
||||
@ApiModelProperty(value = "收件详细地址", required = true, example = "芋道源码 233 号 666 室")
|
||||
@NotEmpty(message = "收件详细地址不能为空")
|
||||
private String detailAddress;
|
||||
@ApiModelProperty(value = "地址类型", required = true, example = "1", notes = "参见 UserAddressType 枚举类")
|
||||
@NotNull(message = "地址类型不能为空")
|
||||
@InEnum(value = UserAddressType.class, message = "地址类型必须是 {value}")
|
||||
private Integer type;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package cn.iocoder.mall.userweb.controller.address.vo;
|
||||
|
||||
import lombok.*;
|
||||
import io.swagger.annotations.*;
|
||||
import java.util.*;
|
||||
|
||||
@ApiModel("用户收件地址 Response VO")
|
||||
@Data
|
||||
public class UserAddressRespVO {
|
||||
|
||||
@ApiModelProperty(value = "收件地址编号", required = true)
|
||||
private Integer id;
|
||||
@ApiModelProperty(value = "用户编号", required = true)
|
||||
private Integer userId;
|
||||
@ApiModelProperty(value = "收件人名称", required = true)
|
||||
private String name;
|
||||
@ApiModelProperty(value = "手机号", required = true)
|
||||
private String mobile;
|
||||
@ApiModelProperty(value = "省份编号", required = true)
|
||||
private Integer provinceCode;
|
||||
@ApiModelProperty(value = "城市编号", required = true)
|
||||
private Integer cityCode;
|
||||
@ApiModelProperty(value = "区域编号", required = true)
|
||||
private Integer countyCode;
|
||||
@ApiModelProperty(value = "收件详细地址", required = true)
|
||||
private String detailAddress;
|
||||
@ApiModelProperty(value = "地址类型", required = true)
|
||||
private Integer type;
|
||||
@ApiModelProperty(value = "创建时间", required = true)
|
||||
private Date createTime;
|
||||
@ApiModelProperty(value = "最后更新时间", required = true)
|
||||
private Date updateTime;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package cn.iocoder.mall.userweb.controller.address.vo;
|
||||
|
||||
import cn.iocoder.common.framework.validator.InEnum;
|
||||
import cn.iocoder.mall.userservice.enums.address.UserAddressType;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@ApiModel("用户收件地址更新 Request VO")
|
||||
@Data
|
||||
public class UserAddressUpdateReqVO {
|
||||
|
||||
@ApiModelProperty(value = "收件地址编号", required = true)
|
||||
@NotNull(message = "收件地址编号不能为空")
|
||||
private Integer id;
|
||||
@ApiModelProperty(value = "收件人名称", required = true, example = "帅艿艿")
|
||||
@NotEmpty(message = "收件人名称不能为空")
|
||||
private String name;
|
||||
@ApiModelProperty(value = "手机号", required = true, example = "15601691300")
|
||||
@NotEmpty(message = "手机号不能为空")
|
||||
private String mobile;
|
||||
@ApiModelProperty(value = "省份编号", required = true, example = "230000")
|
||||
@NotNull(message = "省份编号不能为空")
|
||||
private Integer provinceCode;
|
||||
@ApiModelProperty(value = "城市编号", required = true, example = "469031")
|
||||
@NotNull(message = "城市编号不能为空")
|
||||
private Integer cityCode;
|
||||
@ApiModelProperty(value = "区域编号", required = true, example = "610632")
|
||||
@NotNull(message = "区域编号不能为空")
|
||||
private Integer countyCode;
|
||||
@ApiModelProperty(value = "收件详细地址", required = true, example = "芋道源码 233 号 666 室")
|
||||
@NotEmpty(message = "收件详细地址不能为空")
|
||||
private String detailAddress;
|
||||
@ApiModelProperty(value = "地址类型", required = true, example = "1", notes = "参见 UserAddressType 枚举类")
|
||||
@NotNull(message = "地址类型不能为空")
|
||||
@InEnum(value = UserAddressType.class, message = "地址类型必须是 {value}")
|
||||
private Integer type;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
### /passport/login-by-sms 成功
|
||||
POST {{user-api-base-url}}/passport/login-by-sms
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
|
||||
mobile=15601691300&code=9999
|
||||
|
||||
### /passport/send-sms-code 成功
|
||||
POST {{user-api-base-url}}/passport/send-sms-code
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
|
||||
mobile=15601691300&scene=1
|
||||
|
||||
###
|
||||
@@ -2,10 +2,11 @@ package cn.iocoder.mall.userweb.controller.passport;
|
||||
|
||||
import cn.iocoder.common.framework.util.HttpUtil;
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.userweb.controller.passport.dto.UserPassportLoginBySmsDTO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.dto.UserPassportSendSmsCodeDTO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.vo.UserPassportVO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.vo.PassportLoginBySmsReqVO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.vo.UserPassportSendSmsRespVO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.vo.PassportAccessTokenRespVO;
|
||||
import cn.iocoder.mall.userweb.manager.passport.UserPassportManager;
|
||||
import cn.iocoder.security.annotations.RequiresNone;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -25,18 +26,18 @@ public class UserPassportController {
|
||||
@Autowired
|
||||
private UserPassportManager userPassportManager;
|
||||
|
||||
@PostMapping("/login_by_sms")
|
||||
@PostMapping("/login-by-sms")
|
||||
@ApiOperation("手机验证码登陆")
|
||||
// @RequiresNone TODO 晚点加上
|
||||
public CommonResult<UserPassportVO> loginBySms(UserPassportLoginBySmsDTO loginBySmsDTO,
|
||||
HttpServletRequest request) {
|
||||
@RequiresNone
|
||||
public CommonResult<PassportAccessTokenRespVO> loginBySms(PassportLoginBySmsReqVO loginBySmsDTO,
|
||||
HttpServletRequest request) {
|
||||
return success(userPassportManager.loginBySms(loginBySmsDTO, HttpUtil.getIp(request)));
|
||||
}
|
||||
|
||||
@PostMapping("/send_sms_code")
|
||||
@PostMapping("/send-sms-code")
|
||||
@ApiOperation("发送手机验证码")
|
||||
// @RequiresNone TODO 晚点加上
|
||||
public CommonResult<Boolean> sendSmsCode(UserPassportSendSmsCodeDTO sendSmsCodeDTO,
|
||||
@RequiresNone
|
||||
public CommonResult<Boolean> sendSmsCode(UserPassportSendSmsRespVO sendSmsCodeDTO,
|
||||
HttpServletRequest request) {
|
||||
userPassportManager.sendSmsCode(sendSmsCodeDTO, HttpUtil.getIp(request));
|
||||
// 返回成功
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package cn.iocoder.mall.userweb.controller.passport.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@ApiModel("访问令牌信息 Response VO")
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class PassportAccessTokenRespVO {
|
||||
|
||||
@ApiModelProperty(value = "访问令牌", required = true, example = "001e8f49b20e47f7b3a2de774497cd50")
|
||||
private String accessToken;
|
||||
@ApiModelProperty(value = "刷新令牌", required = true, example = "001e8f49b20e47f7b3a2de774497cd50")
|
||||
private String refreshToken;
|
||||
@ApiModelProperty(value = "过期时间", required = true)
|
||||
private Date expiresTime;
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.mall.userweb.controller.passport.dto;
|
||||
package cn.iocoder.mall.userweb.controller.passport.vo;
|
||||
|
||||
import cn.iocoder.common.framework.validator.Mobile;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
@@ -11,10 +11,10 @@ import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.Pattern;
|
||||
import java.io.Serializable;
|
||||
|
||||
@ApiModel("用户短信验证码登陆 DTO")
|
||||
@ApiModel("用户短信验证码登陆 Request VO")
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UserPassportLoginBySmsDTO implements Serializable {
|
||||
public class PassportLoginBySmsReqVO implements Serializable {
|
||||
|
||||
@ApiModelProperty(value = "手机号", required = true, example = "15601691300")
|
||||
@NotEmpty(message = "手机号不能为空")
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.mall.userweb.controller.passport.dto;
|
||||
package cn.iocoder.mall.userweb.controller.passport.vo;
|
||||
|
||||
import cn.iocoder.common.framework.validator.Mobile;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
@@ -8,10 +8,10 @@ import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@ApiModel("发送手机验证码 DTO")
|
||||
@ApiModel("发送手机验证码 Response VO")
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UserPassportSendSmsCodeDTO {
|
||||
public class UserPassportSendSmsRespVO {
|
||||
|
||||
@ApiModelProperty(value = "手机号", example = "15601691234")
|
||||
@Mobile
|
||||
@@ -1,52 +0,0 @@
|
||||
package cn.iocoder.mall.userweb.controller.passport.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@ApiModel("用户通信证信息 VO")
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UserPassportVO {
|
||||
|
||||
@ApiModel("认证信息")
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public static class Authentication {
|
||||
|
||||
@ApiModelProperty(value = "访问令牌", required = true, example = "001e8f49b20e47f7b3a2de774497cd50")
|
||||
private String accessToken;
|
||||
@ApiModelProperty(value = "刷新令牌", required = true, example = "001e8f49b20e47f7b3a2de774497cd50")
|
||||
private String refreshToken;
|
||||
@ApiModelProperty(value = "过期时间", required = true)
|
||||
private Date expiresTime;
|
||||
|
||||
}
|
||||
|
||||
@ApiModel("用户信息")
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public static class User {
|
||||
|
||||
@ApiModelProperty(value = "用户编号", required = true, example = "1")
|
||||
private Integer id;
|
||||
@ApiModelProperty(value = "用户昵称", required = true, example = "小王")
|
||||
private String nickname;
|
||||
@ApiModelProperty(value = "用户头像", required = true, example = "http://www.iocoder.cn/image")
|
||||
private String avatar;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户信息
|
||||
*/
|
||||
private User user;
|
||||
/**
|
||||
* 认证信息
|
||||
*/
|
||||
private Authentication authorization;
|
||||
|
||||
}
|
||||
@@ -2,7 +2,7 @@ package cn.iocoder.mall.userweb.controller.user;
|
||||
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.security.user.core.context.UserSecurityContextHolder;
|
||||
import cn.iocoder.mall.userweb.controller.user.vo.UserInfoVO;
|
||||
import cn.iocoder.mall.userweb.controller.user.vo.UserRespVO;
|
||||
import cn.iocoder.mall.userweb.manager.user.UserManager;
|
||||
import cn.iocoder.security.annotations.RequiresAuthenticate;
|
||||
import io.swagger.annotations.Api;
|
||||
@@ -25,8 +25,8 @@ public class UserController {
|
||||
@ApiOperation(value = "用户信息")
|
||||
@GetMapping("/info")
|
||||
@RequiresAuthenticate
|
||||
public CommonResult<UserInfoVO> info() {
|
||||
UserInfoVO user = userManager.getUser(UserSecurityContextHolder.getUserId());
|
||||
public CommonResult<UserRespVO> info() {
|
||||
UserRespVO user = userManager.getUser(UserSecurityContextHolder.getUserId());
|
||||
return success(user);
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public class UserController {
|
||||
// // 更新头像
|
||||
// return success(userService.updateUser(userUpdateDTO));
|
||||
// }
|
||||
//
|
||||
|
||||
// @PostMapping("/update_nickname")
|
||||
// @RequiresLogin
|
||||
// @ApiOperation(value = "更新昵称")
|
||||
|
||||
@@ -8,7 +8,7 @@ import lombok.experimental.Accessors;
|
||||
@ApiModel("用户信息 VO")
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UserInfoVO {
|
||||
public class UserRespVO {
|
||||
|
||||
@ApiModelProperty(value = "用户编号", required = true, example = "123")
|
||||
private Integer id;
|
||||
@@ -0,0 +1,27 @@
|
||||
package cn.iocoder.mall.userweb.convert.address;
|
||||
|
||||
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.userweb.controller.address.vo.UserAddressCreateReqVO;
|
||||
import cn.iocoder.mall.userweb.controller.address.vo.UserAddressRespVO;
|
||||
import cn.iocoder.mall.userweb.controller.address.vo.UserAddressUpdateReqVO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface UserAddressConvert {
|
||||
|
||||
UserAddressConvert INSTANCE = Mappers.getMapper(UserAddressConvert.class);
|
||||
|
||||
UserAddressUpdateReqDTO convert(UserAddressUpdateReqVO bean);
|
||||
|
||||
UserAddressRespVO convert(UserAddressRespDTO bean);
|
||||
|
||||
List<UserAddressRespVO> convertList(List<UserAddressRespDTO> list);
|
||||
|
||||
UserAddressCreateReqDTO convert(UserAddressCreateReqVO bean);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package cn.iocoder.mall.userweb.convert.passport;
|
||||
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO;
|
||||
import cn.iocoder.mall.userservice.rpc.sms.dto.UserSendSmsCodeReqDTO;
|
||||
import cn.iocoder.mall.userservice.rpc.sms.dto.UserVerifySmsCodeReqDTO;
|
||||
import cn.iocoder.mall.userservice.rpc.user.dto.UserCreateReqDTO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.vo.PassportLoginBySmsReqVO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.vo.UserPassportSendSmsRespVO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.vo.PassportAccessTokenRespVO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
@Mapper
|
||||
public interface PassportConvert {
|
||||
|
||||
PassportConvert INSTANCE = Mappers.getMapper(PassportConvert.class);
|
||||
|
||||
UserVerifySmsCodeReqDTO convert(PassportLoginBySmsReqVO bean);
|
||||
UserCreateReqDTO convert02(PassportLoginBySmsReqVO bean);
|
||||
|
||||
UserSendSmsCodeReqDTO convert(UserPassportSendSmsRespVO bean);
|
||||
|
||||
PassportAccessTokenRespVO convert(OAuth2AccessTokenRespDTO bean);
|
||||
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
package cn.iocoder.mall.userweb.convert.passport;
|
||||
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO;
|
||||
import cn.iocoder.mall.userservice.rpc.sms.dto.UserSendSmsCodeReqDTO;
|
||||
import cn.iocoder.mall.userservice.rpc.sms.dto.UserVerifySmsCodeReqDTO;
|
||||
import cn.iocoder.mall.userservice.rpc.user.dto.UserCreateReqDTO;
|
||||
import cn.iocoder.mall.userservice.rpc.user.dto.UserRespDTO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.dto.UserPassportLoginBySmsDTO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.dto.UserPassportSendSmsCodeDTO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.vo.UserPassportVO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
@Mapper
|
||||
public interface UserPassportConvert {
|
||||
|
||||
UserPassportConvert INSTANCE = Mappers.getMapper(UserPassportConvert.class);
|
||||
|
||||
UserVerifySmsCodeReqDTO convert(UserPassportLoginBySmsDTO bean);
|
||||
UserCreateReqDTO convert02(UserPassportLoginBySmsDTO bean);
|
||||
|
||||
default UserPassportVO convert(UserRespDTO userVO, OAuth2AccessTokenRespDTO accessTokenVO) {
|
||||
return new UserPassportVO().setUser(convert(userVO)).setAuthorization(convert(accessTokenVO));
|
||||
}
|
||||
UserPassportVO.User convert(UserRespDTO userVO);
|
||||
UserPassportVO.Authentication convert(OAuth2AccessTokenRespDTO accessTokenVO);
|
||||
|
||||
UserSendSmsCodeReqDTO convert(UserPassportSendSmsCodeDTO bean);
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package cn.iocoder.mall.userweb.convert.user;
|
||||
|
||||
import cn.iocoder.mall.userservice.rpc.user.dto.UserRespDTO;
|
||||
import cn.iocoder.mall.userweb.controller.user.vo.UserInfoVO;
|
||||
import cn.iocoder.mall.userweb.controller.user.vo.UserRespVO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
@@ -10,6 +10,6 @@ public interface UserConvert {
|
||||
|
||||
UserConvert INSTANCE = Mappers.getMapper(UserConvert.class);
|
||||
|
||||
UserInfoVO convert(UserRespDTO bean);
|
||||
UserRespVO convert(UserRespDTO bean);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
package cn.iocoder.mall.userweb.manager.address;
|
||||
|
||||
import cn.iocoder.common.framework.exception.GlobalException;
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.userservice.rpc.address.UserAddressRpc;
|
||||
import cn.iocoder.mall.userservice.rpc.address.dto.UserAddressRespDTO;
|
||||
import cn.iocoder.mall.userweb.controller.address.vo.UserAddressCreateReqVO;
|
||||
import cn.iocoder.mall.userweb.controller.address.vo.UserAddressRespVO;
|
||||
import cn.iocoder.mall.userweb.controller.address.vo.UserAddressUpdateReqVO;
|
||||
import cn.iocoder.mall.userweb.convert.address.UserAddressConvert;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.common.framework.exception.enums.GlobalErrorCodeConstants.FORBIDDEN;
|
||||
|
||||
/**
|
||||
* 用户收件地址 Manager
|
||||
*/
|
||||
@Service
|
||||
public class UserAddressManager {
|
||||
|
||||
@DubboReference(version = "${dubbo.consumer.UserAddressRpc.version}")
|
||||
private UserAddressRpc userAddressRpc;
|
||||
|
||||
/**
|
||||
* 创建用户收件地址
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param createVO 创建用户收件地址 VO
|
||||
* @return 用户收件地址
|
||||
*/
|
||||
public Integer createUserAddress(Integer userId, UserAddressCreateReqVO createVO) {
|
||||
CommonResult<Integer> createUserAddressResult = userAddressRpc.createUserAddress(
|
||||
UserAddressConvert.INSTANCE.convert(createVO).setUserId(userId));
|
||||
createUserAddressResult.checkError();
|
||||
return createUserAddressResult.getData();
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新用户收件地址
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param updateVO 更新用户收件地址 VO
|
||||
*/
|
||||
public void updateUserAddress(Integer userId, UserAddressUpdateReqVO updateVO) {
|
||||
// 校验是否能够操作
|
||||
check(userId, updateVO.getId());
|
||||
// 执行更新
|
||||
CommonResult<Boolean> updateUserAddressResult = userAddressRpc.updateUserAddress(UserAddressConvert.INSTANCE.convert(updateVO));
|
||||
updateUserAddressResult.checkError();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除用户收件地址
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param userAddressId 用户收件地址编号
|
||||
*/
|
||||
public void deleteUserAddress(Integer userId, Integer userAddressId) {
|
||||
// 校验是否能够操作
|
||||
check(userId, userAddressId);
|
||||
// 执行删除
|
||||
CommonResult<Boolean> deleteUserAddressResult = userAddressRpc.deleteUserAddress(userAddressId);
|
||||
deleteUserAddressResult.checkError();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得用户收件地址
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param userAddressId 用户收件地址编号
|
||||
* @return 用户收件地址
|
||||
*/
|
||||
public UserAddressRespVO getUserAddress(Integer userId, Integer userAddressId) {
|
||||
CommonResult<UserAddressRespDTO> getUserAddressResult = userAddressRpc.getUserAddress(userAddressId);
|
||||
getUserAddressResult.checkError();
|
||||
// 校验是否能够操作
|
||||
this.check(userId, userAddressId);
|
||||
return UserAddressConvert.INSTANCE.convert(getUserAddressResult.getData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得用户收件地址列表
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param userAddressIds 用户收件地址编号列表
|
||||
* @return 用户收件地址列表
|
||||
*/
|
||||
public List<UserAddressRespVO> listUserAddresses(Integer userId, List<Integer> userAddressIds) {
|
||||
CommonResult<List<UserAddressRespDTO>> listUserAddressResult = userAddressRpc.listUserAddresses(userAddressIds);
|
||||
listUserAddressResult.checkError();
|
||||
// 校验是否能够操作
|
||||
listUserAddressResult.getData().forEach(userAddressRespDTO -> check(userId, userAddressRespDTO));
|
||||
return UserAddressConvert.INSTANCE.convertList(listUserAddressResult.getData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验用户收件地址是不是属于该用户
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param userAddressId 用户收件地址
|
||||
*/
|
||||
private void check(Integer userId, Integer userAddressId) {
|
||||
CommonResult<UserAddressRespDTO> getUserAddressResult = userAddressRpc.getUserAddress(userAddressId);
|
||||
getUserAddressResult.checkError();
|
||||
this.check(userId, getUserAddressResult.getData());
|
||||
}
|
||||
|
||||
private void check(Integer userId, UserAddressRespDTO userAddressRespDTO) {
|
||||
if (!userAddressRespDTO.getUserId().equals(userId)) {
|
||||
throw new GlobalException(FORBIDDEN);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,16 +3,16 @@ package cn.iocoder.mall.userweb.manager.passport;
|
||||
import cn.iocoder.common.framework.enums.UserTypeEnum;
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.OAuth2Rpc;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenReqDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenReqDTO;
|
||||
import cn.iocoder.mall.userservice.enums.sms.UserSmsSceneEnum;
|
||||
import cn.iocoder.mall.userservice.rpc.sms.UserSmsCodeRpc;
|
||||
import cn.iocoder.mall.userservice.rpc.user.UserRpc;
|
||||
import cn.iocoder.mall.userservice.rpc.user.dto.UserRespDTO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.dto.UserPassportLoginBySmsDTO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.dto.UserPassportSendSmsCodeDTO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.vo.UserPassportVO;
|
||||
import cn.iocoder.mall.userweb.convert.passport.UserPassportConvert;
|
||||
import cn.iocoder.mall.userweb.controller.passport.vo.PassportLoginBySmsReqVO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.vo.UserPassportSendSmsRespVO;
|
||||
import cn.iocoder.mall.userweb.controller.passport.vo.PassportAccessTokenRespVO;
|
||||
import cn.iocoder.mall.userweb.convert.passport.PassportConvert;
|
||||
import org.apache.dubbo.config.annotation.Reference;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -26,14 +26,14 @@ public class UserPassportManager {
|
||||
@Reference(version = "${dubbo.consumer.OAuth2Rpc.version}", validation = "false")
|
||||
private OAuth2Rpc oauth2Rpc;
|
||||
|
||||
public UserPassportVO loginBySms(UserPassportLoginBySmsDTO loginBySmsDTO, String ip) {
|
||||
public PassportAccessTokenRespVO loginBySms(PassportLoginBySmsReqVO loginBySmsDTO, String ip) {
|
||||
// 校验验证码
|
||||
CommonResult<Boolean> verifySmsCodeResult = userSmsCodeRpc.verifySmsCode(
|
||||
UserPassportConvert.INSTANCE.convert(loginBySmsDTO).setScene(UserSmsSceneEnum.LOGIN_BY_SMS.getValue()).setIp(ip));
|
||||
PassportConvert.INSTANCE.convert(loginBySmsDTO).setScene(UserSmsSceneEnum.LOGIN_BY_SMS.getValue()).setIp(ip));
|
||||
verifySmsCodeResult.checkError();
|
||||
// 获得用户
|
||||
CommonResult<UserRespDTO> createUserResult = userRpc.createUserIfAbsent(
|
||||
UserPassportConvert.INSTANCE.convert02(loginBySmsDTO).setIp(ip));
|
||||
PassportConvert.INSTANCE.convert02(loginBySmsDTO).setIp(ip));
|
||||
createUserResult.checkError();
|
||||
// 创建访问令牌
|
||||
CommonResult<OAuth2AccessTokenRespDTO> createAccessTokenResult = oauth2Rpc.createAccessToken(
|
||||
@@ -41,12 +41,12 @@ public class UserPassportManager {
|
||||
.setUserType(UserTypeEnum.USER.getValue()).setCreateIp(ip));
|
||||
createAccessTokenResult.checkError();
|
||||
// 返回
|
||||
return UserPassportConvert.INSTANCE.convert(createUserResult.getData(), createAccessTokenResult.getData());
|
||||
return PassportConvert.INSTANCE.convert(createAccessTokenResult.getData());
|
||||
}
|
||||
|
||||
public void sendSmsCode(UserPassportSendSmsCodeDTO sendSmsCodeDTO, String ip) {
|
||||
public void sendSmsCode(UserPassportSendSmsRespVO sendSmsCodeDTO, String ip) {
|
||||
CommonResult<Boolean> sendSmsCodeResult = userSmsCodeRpc.sendSmsCode(
|
||||
UserPassportConvert.INSTANCE.convert(sendSmsCodeDTO).setIp(ip));
|
||||
PassportConvert.INSTANCE.convert(sendSmsCodeDTO).setIp(ip));
|
||||
sendSmsCodeResult.checkError();
|
||||
}
|
||||
|
||||
|
||||
@@ -3,18 +3,18 @@ package cn.iocoder.mall.userweb.manager.user;
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.userservice.rpc.user.UserRpc;
|
||||
import cn.iocoder.mall.userservice.rpc.user.dto.UserRespDTO;
|
||||
import cn.iocoder.mall.userweb.controller.user.vo.UserInfoVO;
|
||||
import cn.iocoder.mall.userweb.controller.user.vo.UserRespVO;
|
||||
import cn.iocoder.mall.userweb.convert.user.UserConvert;
|
||||
import org.apache.dubbo.config.annotation.Reference;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class UserManager {
|
||||
|
||||
@Reference(version = "${dubbo.consumer.UserRpc.version}", validation = "false")
|
||||
@DubboReference(version = "${dubbo.consumer.UserRpc.version}")
|
||||
private UserRpc userRpc;
|
||||
|
||||
public UserInfoVO getUser(Integer id) {
|
||||
public UserRespVO getUser(Integer id) {
|
||||
CommonResult<UserRespDTO> userResult = userRpc.getUser(id);
|
||||
userResult.checkError();
|
||||
return UserConvert.INSTANCE.convert(userResult.getData());
|
||||
|
||||
Reference in New Issue
Block a user