增加用户修改自己头像和昵称

This commit is contained in:
YunaiV 2019-03-10 20:39:01 +08:00
parent e771a9a5ae
commit 3ffdc44669
15 changed files with 131 additions and 46 deletions

View File

@ -7,7 +7,7 @@ import cn.iocoder.mall.user.service.api.MobileCodeService;
import cn.iocoder.mall.user.service.api.OAuth2Service; import cn.iocoder.mall.user.service.api.OAuth2Service;
import cn.iocoder.mall.user.service.api.UserService; import cn.iocoder.mall.user.service.api.UserService;
import cn.iocoder.mall.user.service.api.bo.OAuth2AccessTokenBO; import cn.iocoder.mall.user.service.api.bo.OAuth2AccessTokenBO;
import cn.iocoder.mall.user.application.vo.MobileRegisterVO; import cn.iocoder.mall.user.application.vo.users.MobileRegisterVO;
import com.alibaba.dubbo.config.annotation.Reference; import com.alibaba.dubbo.config.annotation.Reference;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
@RequestMapping("user/passport") @RequestMapping("users/passport")
@Api("Passport 模块") @Api("Passport 模块")
public class PassportController { public class PassportController {

View File

@ -1,9 +1,11 @@
package cn.iocoder.mall.user.application.controller.users; package cn.iocoder.mall.user.application.controller.users;
import cn.iocoder.common.framework.vo.CommonResult; import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.user.application.convert.UserConvert;
import cn.iocoder.mall.user.sdk.context.UserSecurityContextHolder; import cn.iocoder.mall.user.sdk.context.UserSecurityContextHolder;
import cn.iocoder.mall.user.application.vo.UsersUserVO; import cn.iocoder.mall.user.application.vo.users.UsersUserVO;
import cn.iocoder.mall.user.service.api.UserService; import cn.iocoder.mall.user.service.api.UserService;
import cn.iocoder.mall.user.service.api.bo.UserBO;
import cn.iocoder.mall.user.service.api.dto.UserUpdateDTO; import cn.iocoder.mall.user.service.api.dto.UserUpdateDTO;
import com.alibaba.dubbo.config.annotation.Reference; import com.alibaba.dubbo.config.annotation.Reference;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -15,15 +17,14 @@ import org.springframework.web.bind.annotation.*;
@Api("用户模块") @Api("用户模块")
public class UserController { public class UserController {
@Reference @Reference(validation = "true")
private UserService userService; private UserService userService;
@GetMapping("/info") @GetMapping("/info")
@ApiOperation(value = "用户信息") @ApiOperation(value = "用户信息")
public CommonResult<UsersUserVO> info() { public CommonResult<UsersUserVO> info() {
// TODO 芋艿正在实现中 CommonResult<UserBO> userResult = userService.getUser(UserSecurityContextHolder.getContext().getUserId());
UsersUserVO user = new UsersUserVO().setId(UserSecurityContextHolder.getContext().getUserId()); return UserConvert.INSTANCE.convert2(userResult);
return CommonResult.success(user);
} }
@PostMapping("/update_avatar") @PostMapping("/update_avatar")

View File

@ -2,7 +2,7 @@ package cn.iocoder.mall.user.application.convert;
import cn.iocoder.common.framework.vo.CommonResult; import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.user.service.api.bo.OAuth2AccessTokenBO; import cn.iocoder.mall.user.service.api.bo.OAuth2AccessTokenBO;
import cn.iocoder.mall.user.application.vo.MobileRegisterVO; import cn.iocoder.mall.user.application.vo.users.MobileRegisterVO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mappings; import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;

View File

@ -2,6 +2,8 @@ package cn.iocoder.mall.user.application.convert;
import cn.iocoder.common.framework.vo.CommonResult; import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.user.application.vo.admins.AdminsUserPageVO; import cn.iocoder.mall.user.application.vo.admins.AdminsUserPageVO;
import cn.iocoder.mall.user.application.vo.users.UsersUserVO;
import cn.iocoder.mall.user.service.api.bo.UserBO;
import cn.iocoder.mall.user.service.api.bo.UserPageBO; import cn.iocoder.mall.user.service.api.bo.UserPageBO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mappings; import org.mapstruct.Mappings;
@ -15,4 +17,7 @@ public interface UserConvert {
@Mappings({}) @Mappings({})
CommonResult<AdminsUserPageVO> convert(CommonResult<UserPageBO> result); CommonResult<AdminsUserPageVO> convert(CommonResult<UserPageBO> result);
} @Mappings({})
CommonResult<UsersUserVO> convert2(CommonResult<UserBO> result);
}

View File

@ -1,21 +0,0 @@
package cn.iocoder.mall.user.application.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel("用户信息 VO")
public class UsersUserVO {
@ApiModelProperty(value = "用户编号", required = true, example = "123")
private Integer id;
public Integer getId() {
return id;
}
public UsersUserVO setId(Integer id) {
this.id = id;
return this;
}
}

View File

@ -1,4 +1,4 @@
package cn.iocoder.mall.user.application.vo; package cn.iocoder.mall.user.application.vo.users;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;

View File

@ -0,0 +1,54 @@
package cn.iocoder.mall.user.application.vo.users;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel("用户信息 VO")
public class UsersUserVO {
@ApiModelProperty(value = "用户编号", required = true, example = "123")
private Integer id;
@ApiModelProperty(value = "手机号", required = true, example = "15601691300")
private String mobile;
@ApiModelProperty(value = "昵称", required = true, example = "小王")
private String nickname;
@ApiModelProperty(value = "头像", required = true, example = "http://www.iocoder.cn/xxx.jpg")
private String avatar;
public Integer getId() {
return id;
}
public UsersUserVO setId(Integer id) {
this.id = id;
return this;
}
public String getMobile() {
return mobile;
}
public UsersUserVO setMobile(String mobile) {
this.mobile = mobile;
return this;
}
public String getNickname() {
return nickname;
}
public UsersUserVO setNickname(String nickname) {
this.nickname = nickname;
return this;
}
public String getAvatar() {
return avatar;
}
public UsersUserVO setAvatar(String avatar) {
this.avatar = avatar;
return this;
}
}

View File

@ -38,7 +38,7 @@ public class UserSecurityInterceptor extends HandlerInterceptorAdapter {
} }
authentication = result.getData(); authentication = result.getData();
// 添加到 SecurityContext // 添加到 SecurityContext
UserSecurityContext context = new UserSecurityContext(authentication.getUid()); UserSecurityContext context = new UserSecurityContext(authentication.getUserId());
UserSecurityContextHolder.setContext(context); UserSecurityContextHolder.setContext(context);
} }
// 校验是否需要已授权 // 校验是否需要已授权

View File

@ -1,6 +1,7 @@
package cn.iocoder.mall.user.service.api; package cn.iocoder.mall.user.service.api;
import cn.iocoder.common.framework.vo.CommonResult; import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.user.service.api.bo.UserBO;
import cn.iocoder.mall.user.service.api.bo.UserPageBO; import cn.iocoder.mall.user.service.api.bo.UserPageBO;
import cn.iocoder.mall.user.service.api.dto.UserPageDTO; import cn.iocoder.mall.user.service.api.dto.UserPageDTO;
import cn.iocoder.mall.user.service.api.dto.UserUpdateDTO; import cn.iocoder.mall.user.service.api.dto.UserUpdateDTO;
@ -9,6 +10,8 @@ public interface UserService {
CommonResult<UserPageBO> getUserPage(UserPageDTO userPageDTO); CommonResult<UserPageBO> getUserPage(UserPageDTO userPageDTO);
CommonResult<UserBO> getUser(Integer userId);
/** /**
* 更新用户基本信息 * 更新用户基本信息
* *

View File

@ -7,14 +7,14 @@ public class OAuth2AuthenticationBO implements Serializable {
/** /**
* 用户编号 * 用户编号
*/ */
private Integer uid; private Integer userId;
public Integer getUid() { public Integer getUserId() {
return uid; return userId;
} }
public OAuth2AuthenticationBO setUid(Integer uid) { public OAuth2AuthenticationBO setUserId(Integer userId) {
this.uid = uid; this.userId = userId;
return this; return this;
} }

View File

@ -1,6 +1,8 @@
package cn.iocoder.mall.user.service; package cn.iocoder.mall.user.service;
import cn.iocoder.common.framework.constant.SysErrorCodeEnum;
import cn.iocoder.common.framework.util.ServiceExceptionUtil; import cn.iocoder.common.framework.util.ServiceExceptionUtil;
import cn.iocoder.common.framework.util.ValidationUtil;
import cn.iocoder.common.framework.vo.CommonResult; import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.user.dao.MobileCodeMapper; import cn.iocoder.mall.user.dao.MobileCodeMapper;
import cn.iocoder.mall.user.dataobject.MobileCodeDO; import cn.iocoder.mall.user.dataobject.MobileCodeDO;
@ -77,10 +79,8 @@ public class MobileCodeServiceImpl implements MobileCodeService {
// TODO 芋艿后面要返回有效时间 // TODO 芋艿后面要返回有效时间
public CommonResult<Void> send(String mobile) { public CommonResult<Void> send(String mobile) {
// TODO 芋艿校验手机格式 if (!ValidationUtil.isMobile(mobile)) {
// 校验手机号码是否已经注册 return CommonResult.error(SysErrorCodeEnum.VALIDATION_REQUEST_PARAM_ERROR.getCode(), "手机格式不正确"); // TODO 有点搓
if (userService.getUser(mobile) != null) {
return ServiceExceptionUtil.error(UserErrorCodeEnum.USER_MOBILE_ALREADY_REGISTERED.getCode());
} }
// 校验是否可以发送验证码 // 校验是否可以发送验证码
MobileCodeDO lastMobileCodePO = mobileCodeMapper.selectLast1ByMobile(mobile); MobileCodeDO lastMobileCodePO = mobileCodeMapper.selectLast1ByMobile(mobile);

View File

@ -11,6 +11,7 @@ import cn.iocoder.mall.user.dao.UserRegisterMapper;
import cn.iocoder.mall.user.dataobject.UserDO; import cn.iocoder.mall.user.dataobject.UserDO;
import cn.iocoder.mall.user.dataobject.UserRegisterDO; import cn.iocoder.mall.user.dataobject.UserRegisterDO;
import cn.iocoder.mall.user.service.api.UserService; import cn.iocoder.mall.user.service.api.UserService;
import cn.iocoder.mall.user.service.api.bo.UserBO;
import cn.iocoder.mall.user.service.api.bo.UserPageBO; import cn.iocoder.mall.user.service.api.bo.UserPageBO;
import cn.iocoder.mall.user.service.api.constant.UserConstants; import cn.iocoder.mall.user.service.api.constant.UserConstants;
import cn.iocoder.mall.user.service.api.constant.UserErrorCodeEnum; import cn.iocoder.mall.user.service.api.constant.UserErrorCodeEnum;
@ -76,6 +77,11 @@ public class UserServiceImpl implements UserService {
return CommonResult.success(userPageBO); return CommonResult.success(userPageBO);
} }
@Override
public CommonResult<UserBO> getUser(Integer userId) {
return CommonResult.success(UserConvert.INSTANCE.convert(userMapper.selectById(userId)));
}
@Override @Override
public CommonResult<Boolean> updateUser(UserUpdateDTO userUpdateDTO) { public CommonResult<Boolean> updateUser(UserUpdateDTO userUpdateDTO) {
// 校验用户存在 // 校验用户存在

View File

@ -5,7 +5,7 @@
<insert id="insert" parameterType="MobileCodeDO"> <insert id="insert" parameterType="MobileCodeDO">
INSERT INTO mobile_code ( INSERT INTO mobile_code (
id, mobile, code, today_index, used, id, mobile, code, today_index, used,
used_uid, used_time, create_time userd_user_id, used_time, create_time
) VALUES ( ) VALUES (
#{id}, #{mobile}, #{code}, #{todayIndex}, #{used}, #{id}, #{mobile}, #{code}, #{todayIndex}, #{used},
#{usedUserId}, #{usedTime}, #{createTime} #{usedUserId}, #{usedTime}, #{createTime}
@ -16,7 +16,7 @@
UPDATE mobile_code UPDATE mobile_code
<set> <set>
<if test="used != null"> used = #{used}, </if> <if test="used != null"> used = #{used}, </if>
<if test="usedUserId != null"> used_uid = #{usedUserId}, </if> <if test="usedUserId != null"> userd_user_id = #{usedUserId}, </if>
<if test="usedTime != null"> used_time = #{usedTime}, </if> <if test="usedTime != null"> used_time = #{usedTime}, </if>
</set> </set>
WHERE id = #{id} WHERE id = #{id}
@ -25,7 +25,7 @@
<select id="selectLast1ByMobile" parameterType="String" resultType="MobileCodeDO"> <select id="selectLast1ByMobile" parameterType="String" resultType="MobileCodeDO">
SELECT SELECT
id, mobile, code, today_index, used, id, mobile, code, today_index, used,
used_uid, used_time, create_time userd_user_id, used_time, create_time
FROM mobile_code FROM mobile_code
WHERE mobile = #{mobile} WHERE mobile = #{mobile}
ORDER BY id DESC ORDER BY id DESC

View File

@ -14,7 +14,7 @@
<select id="selectByTokenId" parameterType="String" resultType="OAuth2AccessTokenDO"> <select id="selectByTokenId" parameterType="String" resultType="OAuth2AccessTokenDO">
SELECT SELECT
id, adminId, valid, expires_time id, user_id, valid, expires_time
FROM oauth2_access_token FROM oauth2_access_token
WHERE id = #{id} WHERE id = #{id}
</select> </select>

View File

@ -2,11 +2,14 @@ package cn.iocoder.mall.user.convert;
import cn.iocoder.mall.user.dataobject.UserDO; import cn.iocoder.mall.user.dataobject.UserDO;
import cn.iocoder.mall.user.service.api.bo.UserBO; import cn.iocoder.mall.user.service.api.bo.UserBO;
import cn.iocoder.mall.user.service.api.dto.UserUpdateDTO;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Generated; import javax.annotation.Generated;
@Generated( @Generated(
value = "org.mapstruct.ap.MappingProcessor", value = "org.mapstruct.ap.MappingProcessor",
date = "2019-03-08T17:14:01+0800", date = "2019-03-10T20:36:11+0800",
comments = "version: 1.3.0.Final, compiler: javac, environment: Java 11.0.1 (Oracle Corporation)" comments = "version: 1.3.0.Final, compiler: javac, environment: Java 11.0.1 (Oracle Corporation)"
) )
public class UserConvertImpl implements UserConvert { public class UserConvertImpl implements UserConvert {
@ -19,8 +22,42 @@ public class UserConvertImpl implements UserConvert {
UserBO userBO = new UserBO(); UserBO userBO = new UserBO();
userBO.setId( userDO.getId() );
userBO.setMobile( userDO.getMobile() ); userBO.setMobile( userDO.getMobile() );
userBO.setNickname( userDO.getNickname() );
userBO.setAvatar( userDO.getAvatar() );
userBO.setStatus( userDO.getStatus() );
userBO.setCreateTime( userDO.getCreateTime() );
return userBO; return userBO;
} }
@Override
public UserDO convert(UserUpdateDTO userUpdateDTO) {
if ( userUpdateDTO == null ) {
return null;
}
UserDO userDO = new UserDO();
userDO.setId( userUpdateDTO.getId() );
userDO.setNickname( userUpdateDTO.getNickname() );
userDO.setAvatar( userUpdateDTO.getAvatar() );
return userDO;
}
@Override
public List<UserBO> convert(List<UserDO> userDOs) {
if ( userDOs == null ) {
return null;
}
List<UserBO> list = new ArrayList<UserBO>( userDOs.size() );
for ( UserDO userDO : userDOs ) {
list.add( convert( userDO ) );
}
return list;
}
} }