Commit 2d156ae0 by 段启岩

Merge remote-tracking branch 'origin/zjx'

# Conflicts:
#	src/main/java/cn/meteor/beyondclouds/modules/user/service/IUserService.java
#	src/main/java/cn/meteor/beyondclouds/modules/user/service/impl/UserServiceImpl.java
parents 4d5d0717 859328f4
package cn.meteor.beyondclouds.modules.user.api; package cn.meteor.beyondclouds.modules.user.api;
import cn.meteor.beyondclouds.core.annotation.Anonymous; import cn.meteor.beyondclouds.core.annotation.Anonymous;
import cn.meteor.beyondclouds.core.annotation.CurrentSubject;
import cn.meteor.beyondclouds.core.api.Response; import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.bean.Subject;
import cn.meteor.beyondclouds.modules.user.entity.User;
import cn.meteor.beyondclouds.modules.user.exception.UserServiceException; import cn.meteor.beyondclouds.modules.user.exception.UserServiceException;
import cn.meteor.beyondclouds.modules.user.form.UserBaseInfoFrom;
import cn.meteor.beyondclouds.modules.user.form.UserRegisterFrom; import cn.meteor.beyondclouds.modules.user.form.UserRegisterFrom;
import cn.meteor.beyondclouds.modules.user.service.IUserService; import cn.meteor.beyondclouds.modules.user.service.IUserService;
import cn.meteor.beyondclouds.modules.user.vo.UserInfoVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid; import javax.validation.Valid;
...@@ -22,7 +25,7 @@ import javax.validation.Valid; ...@@ -22,7 +25,7 @@ import javax.validation.Valid;
@Api(tags = "用户Api") @Api(tags = "用户Api")
@RestController @RestController
@RequestMapping("/api/user") @RequestMapping("/api")
public class UserApi { public class UserApi {
private IUserService userService; private IUserService userService;
...@@ -34,7 +37,7 @@ public class UserApi { ...@@ -34,7 +37,7 @@ public class UserApi {
@Anonymous @Anonymous
@ApiOperation("用户注册") @ApiOperation("用户注册")
@PostMapping("/register/mobile") @PostMapping("/user/register/mobile")
public Response register(@RequestBody @Valid UserRegisterFrom registerFrom, BindingResult result) { public Response register(@RequestBody @Valid UserRegisterFrom registerFrom, BindingResult result) {
if (result.hasErrors()) { if (result.hasErrors()) {
...@@ -50,5 +53,73 @@ public class UserApi { ...@@ -50,5 +53,73 @@ public class UserApi {
} }
} }
@ApiOperation("修改我的基本信息")
@PutMapping("/my/baseinfo")
public Response alterBaseInfo(@RequestBody @Valid UserBaseInfoFrom userBaseinfoFrom, BindingResult result,
@CurrentSubject Subject subject){
if (result.hasErrors()) {
return Response.fieldError(result.getFieldError());
}
// 将form转换为user对象
User user = new User();
BeanUtils.copyProperties(userBaseinfoFrom, user);
// 修改基本信息
user.setUserId(user.getUserId());
userService.alterBaseInfo(user);
return Response.success();
}
@Anonymous
@ApiOperation("修改密码")
@PutMapping("/my/password")
public Response alterPassword(@RequestBody @Valid UserRegisterFrom registerFrom, BindingResult result){
if (result.hasErrors()) {
return Response.fieldError(result.getFieldError());
}
try {
userService.alterPassword(registerFrom.getMobile(), registerFrom.getPassword(), registerFrom.getVerifyCode());
return Response.success();
} catch (UserServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
@ApiOperation(("获取我的基本信息"))
@GetMapping("/my/baseinfo")
public Response myBaseInfo(@CurrentSubject Subject subject){
// 获取用户信息
User user = userService.getById(subject.getId());
UserInfoVO userInfoVO = new UserInfoVO();
BeanUtils.copyProperties(user, userInfoVO);
// 返回结果
return Response.success(userInfoVO);
}
@Anonymous
@ApiOperation(("获取他人基本信息"))
@GetMapping("/user/{userId}/baseinfo")
public Response<UserInfoVO> updateOtherBaseInfo(@PathVariable(name = "userId") String userId ){
// 获取用户信息
User user = userService.getById(userId);
UserInfoVO userInfoVO = new UserInfoVO();
BeanUtils.copyProperties(user, userInfoVO);
// 去掉敏感信息
userInfoVO.setMobile(null);
userInfoVO.setWxNumber(null);
userInfoVO.setQqNumber(null);
// 返回结果
return Response.success(userInfoVO);
}
} }
...@@ -54,5 +54,4 @@ public class User implements Serializable { ...@@ -54,5 +54,4 @@ public class User implements Serializable {
private LocalDateTime updateTime; private LocalDateTime updateTime;
} }
package cn.meteor.beyondclouds.modules.user.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author 段启岩
* @since 2020-01-31
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="UserBlacklist对象", description="")
public class UserBlacklist implements Serializable {
private static final long serialVersionUID=1L;
@TableId(value = "bl_id", type = IdType.AUTO)
private Integer blId;
@ApiModelProperty(value = "用户ID")
private String userId;
@ApiModelProperty(value = "被拉黑的用户的ID")
private String blackedId;
private LocalDateTime createTime;
private LocalDateTime updateTime;
}
package cn.meteor.beyondclouds.modules.user.form;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @program: beyond-clouds
* @description: 用户信息表
* @author: Mr.Zhang
* @create: 2020-01-31 11:41
**/
@Data
@ApiModel("用户信息表")
public class UserBaseInfoFrom {
private String nickName;
private String userAvatar;
private Integer gender;
private String signature;
private String mobile;
private String wxNumber;
private String qqNumber;
}
package cn.meteor.beyondclouds.modules.user.mapper;
import cn.meteor.beyondclouds.modules.user.entity.UserBlacklist;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author 段启岩
* @since 2020-01-31
*/
public interface UserBlacklistMapper extends BaseMapper<UserBlacklist> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.meteor.beyondclouds.modules.user.mapper.UserBlacklistMapper">
</mapper>
package cn.meteor.beyondclouds.modules.user.service;
import cn.meteor.beyondclouds.modules.user.entity.UserBlacklist;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author 段启岩
* @since 2020-01-31
*/
public interface IUserBlacklistService extends IService<UserBlacklist> {
void blacklist(String blackId, String userId);
}
package cn.meteor.beyondclouds.modules.user.service; package cn.meteor.beyondclouds.modules.user.service;
import cn.meteor.beyondclouds.modules.user.entity.User;
import cn.meteor.beyondclouds.modules.user.entity.UserFollow; import cn.meteor.beyondclouds.modules.user.entity.UserFollow;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/** /**
* @author 段启岩 * @author 段启岩
* @since 2020-01-18 * @since 2020-01-18
*/ */
public interface IUserFollowService extends IService<UserFollow> { public interface IUserFollowService extends IService<UserFollow> {
void follower(String userId, String myUserId);
void delFollower(String userId, String myUserId);
List<User> myFans(String userId);
List<User> Fans(String userId);
List<User> myFollower(String userId);
List<User> otherFollower(String userId);
} }
...@@ -3,7 +3,6 @@ package cn.meteor.beyondclouds.modules.user.service; ...@@ -3,7 +3,6 @@ package cn.meteor.beyondclouds.modules.user.service;
import cn.meteor.beyondclouds.common.bean.QQAuthResult; import cn.meteor.beyondclouds.common.bean.QQAuthResult;
import cn.meteor.beyondclouds.modules.user.entity.User; import cn.meteor.beyondclouds.modules.user.entity.User;
import cn.meteor.beyondclouds.modules.user.exception.UserServiceException; import cn.meteor.beyondclouds.modules.user.exception.UserServiceException;
import com.aliyuncs.ram.model.v20150501.CreateUserResponse;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** /**
...@@ -41,4 +40,20 @@ public interface IUserService extends IService<User> { ...@@ -41,4 +40,20 @@ public interface IUserService extends IService<User> {
* @return * @return
*/ */
User qqRegister(QQAuthResult qqAuthResult); User qqRegister(QQAuthResult qqAuthResult);
/**
* 修改用户基本信息
* @param user
*/
void alterBaseInfo(User user);
/**
* 修改密码
* @param mobile
* @param password
* @param verifyCode
* @throws UserServiceException
*/
void alterPassword(String mobile, String password, String verifyCode) throws UserServiceException;
} }
package cn.meteor.beyondclouds.modules.user.service.impl;
import cn.meteor.beyondclouds.modules.user.entity.UserBlacklist;
import cn.meteor.beyondclouds.modules.user.mapper.UserBlacklistMapper;
import cn.meteor.beyondclouds.modules.user.service.IUserBlacklistService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author 段启岩
* @since 2020-01-31
*/
@Service
public class UserBlacklistServiceImpl extends ServiceImpl<UserBlacklistMapper, UserBlacklist> implements IUserBlacklistService {
@Override
public void blacklist(String blackId, String userId) {
UserBlacklist userBlacklist = new UserBlacklist();
userBlacklist.setBlackedId(blackId);
userBlacklist.setUserId(userId);
save(userBlacklist);
}
}
package cn.meteor.beyondclouds.modules.user.service.impl; package cn.meteor.beyondclouds.modules.user.service.impl;
import cn.meteor.beyondclouds.modules.user.entity.User;
import cn.meteor.beyondclouds.modules.user.entity.UserFollow; import cn.meteor.beyondclouds.modules.user.entity.UserFollow;
import cn.meteor.beyondclouds.modules.user.mapper.IUserFollowMapper; import cn.meteor.beyondclouds.modules.user.mapper.IUserFollowMapper;
import cn.meteor.beyondclouds.modules.user.service.IUserFollowService; import cn.meteor.beyondclouds.modules.user.service.IUserFollowService;
import cn.meteor.beyondclouds.modules.user.service.IUserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* @author 段启岩 * @author 段启岩
* @since 2020-01-18 * @since 2020-01-18
...@@ -13,4 +19,81 @@ import org.springframework.stereotype.Service; ...@@ -13,4 +19,81 @@ import org.springframework.stereotype.Service;
@Service @Service
public class UserFollowServiceImpl extends ServiceImpl<IUserFollowMapper, UserFollow> implements IUserFollowService { public class UserFollowServiceImpl extends ServiceImpl<IUserFollowMapper, UserFollow> implements IUserFollowService {
private IUserService userService;
@Autowired
public void setUserService(IUserService userService) {
this.userService = userService;
}
@Override
public void follower(String userId, String myUserId) {
//1.查询被关注用户的基本信息
User user = userService.getById(userId);
//2.查询我的基本信息
User myUser = userService.getById(myUserId);
UserFollow userFollow = new UserFollow();
userFollow.setFollowedId(userId);
userFollow.setFollowedNick(user.getNickName());
userFollow.setFollowedAvatar(user.getUserAvatar());
userFollow.setFollowerId(myUserId);
userFollow.setFollowerNick(myUser.getNickName());
userFollow.setFollowerAvatar(myUser.getUserAvatar());
userFollow.setFollowStatus(0);
save(userFollow);
}
@Override
public void delFollower(String userId, String myUserId) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("follower_id", myUserId);
queryWrapper.eq("followed_id", userId);
remove(queryWrapper);
}
@Override
public List<User> myFans(String userId) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("followed_id", userId);
return list(queryWrapper);
}
@Override
public List<User> Fans(String userId) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("followed_id", userId);
return list(queryWrapper);
}
@Override
public List<User> myFollower(String userId) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("follower_id", userId);
return list(queryWrapper);
}
@Override
public List<User> otherFollower(String userId) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("follower_id", userId);
return list(queryWrapper);
}
} }
...@@ -114,4 +114,26 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I ...@@ -114,4 +114,26 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
userAuthAppService.save(userAuthApp); userAuthAppService.save(userAuthApp);
return user; return user;
} }
@Override
public void alterBaseInfo(User user) {
updateById(user);
}
@Override
public void alterPassword(String mobile, String password, String verifyCode) throws UserServiceException {
//1.检查验证码是否正确
String realVerifyCode = redisHelper.get(RedisKey.VERIFY_CODE_KEY(mobile));
if (StringUtils.isEmpty(realVerifyCode) || !realVerifyCode.equals(verifyCode)) {
throw new UserServiceException(UserErrorCode.REG_VERIFY_CODE_ERROR);
}
// 删除验证码
redisHelper.del(RedisKey.VERIFY_CODE_KEY(mobile));
UpdateWrapper updateWrapper = new UpdateWrapper();
updateWrapper.set("password", Md5Utils.encode(password));
updateWrapper.eq("mobile", mobile);
userAuthLocalService.update(updateWrapper);
}
} }
package cn.meteor.beyondclouds.modules.user.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 用户信息
* @author 段启岩
*/
@Data
public class UserInfoVO {
@ApiModelProperty(value = "用户昵称")
private String nickName;
@ApiModelProperty(value = "用户头像")
private String userAvatar;
@ApiModelProperty(value = "性别")
private Integer gender;
@ApiModelProperty(value = "个性签名")
private String signature;
@JsonInclude(JsonInclude.Include.NON_NULL)
@ApiModelProperty(value = "手机号")
private String mobile;
@JsonInclude(JsonInclude.Include.NON_NULL)
@ApiModelProperty(value = "微信号")
private String wxNumber;
@JsonInclude(JsonInclude.Include.NON_NULL)
@ApiModelProperty(value = "QQ号")
private String qqNumber;
}
spring: spring:
datasource: datasource:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/beyond_clouds?useUnicode=true&characterEncoding=UTF-8&useSSL=false url: jdbc:mysql://127.0.0.1:3306/beyond_clouds?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
username: root username: root
password: 100Centa30821%mysql password: 2018006709
swagger: swagger:
enable: true enable: true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment