feat: 用户信息修改接口

This commit is contained in:
ivmiku
2024-09-09 17:45:18 +08:00
parent 1397512e70
commit 4a39ca48ee
3 changed files with 55 additions and 10 deletions

View File

@@ -2,21 +2,19 @@ package com.ivmiku.tutorial.controller;
import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import cn.binarywang.wx.miniapp.util.WxMaConfigHolder; import cn.binarywang.wx.miniapp.util.WxMaConfigHolder;
import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.StpUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.ivmiku.tutorial.entity.User; import com.ivmiku.tutorial.entity.User;
import com.ivmiku.tutorial.entity.UserDTO;
import com.ivmiku.tutorial.mapper.UserMapper; import com.ivmiku.tutorial.mapper.UserMapper;
import com.ivmiku.tutorial.response.Result; import com.ivmiku.tutorial.response.Result;
import com.ivmiku.tutorial.service.UserService;
import com.ivmiku.tutorial.utils.RedisUtil; import com.ivmiku.tutorial.utils.RedisUtil;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.error.WxErrorException;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap; import java.util.HashMap;
@@ -32,17 +30,16 @@ public class UserController {
@Resource @Resource
private RedisUtil redisUtil; private RedisUtil redisUtil;
@Resource
private UserService userService;
@GetMapping("/login") @GetMapping("/login")
public Object login(@RequestParam(name = "code") String code, public Object login(@RequestParam(name = "code") String code,
@RequestParam(name = "rawdata") String rawData, @RequestParam(name = "rawdata") String rawData,
@RequestParam(name = "signature") String signature, @RequestParam(name = "signature") String signature) {
@RequestParam(name = "encryptedData") String encryptedData,
@RequestParam(name = "iv") String iv) {
WxMaJscode2SessionResult session; WxMaJscode2SessionResult session;
WxMaUserInfo userInfo;
try { try {
session = wxMaService.getUserService().getSessionInfo(code); session = wxMaService.getUserService().getSessionInfo(code);
userInfo = wxMaService.getUserService().getUserInfo(session.getSessionKey(), encryptedData, iv);
} catch (WxErrorException e) { } catch (WxErrorException e) {
return JSON.toJSON(Result.error(e.getMessage())); return JSON.toJSON(Result.error(e.getMessage()));
} }
@@ -77,4 +74,11 @@ public class UserController {
} }
return Result.ok(); return Result.ok();
} }
@PostMapping("/edit")
public Object editInfo(@RequestBody UserDTO userDTO) {
String loginId = (String) StpUtil.getLoginId();
userService.changeUserInfo(userDTO, loginId);
return Result.ok();
}
} }

View File

@@ -0,0 +1,12 @@
package com.ivmiku.tutorial.entity;
import lombok.Data;
@Data
public class UserDTO {
private String nickname;
private String avatarUrl;
private String phoneNum;
private String birthday;
private String gender;
}

View File

@@ -1,6 +1,9 @@
package com.ivmiku.tutorial.service; package com.ivmiku.tutorial.service;
import cn.hutool.core.util.DesensitizedUtil;
import cn.hutool.crypto.SecureUtil;
import com.ivmiku.tutorial.entity.User; import com.ivmiku.tutorial.entity.User;
import com.ivmiku.tutorial.entity.UserDTO;
import com.ivmiku.tutorial.mapper.UserMapper; import com.ivmiku.tutorial.mapper.UserMapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -13,4 +16,30 @@ public class UserService {
public User selectUserById(String id) { public User selectUserById(String id) {
return userMapper.selectById(id); return userMapper.selectById(id);
} }
public void changeUserInfo(UserDTO userDTO, String openid) {
String nickname = userDTO.getNickname();
String avatarUrl = userDTO.getAvatarUrl();
String gender = userDTO.getGender();
String phoneNum = userDTO.getPhoneNum();
String birthday = userDTO.getBirthday();
User user = userMapper.selectById(openid);
if (nickname != null) {
user.setNickname(nickname);
}
if (avatarUrl != null) {
user.setAvatarUrl(avatarUrl);
}
if (gender != null) {
user.setGender(gender);
}
if (phoneNum != null) {
phoneNum = DesensitizedUtil.mobilePhone(phoneNum);
user.setPhoneNum(phoneNum);
}
if (birthday != null) {
user.setBirthday(birthday);
}
userMapper.updateById(user);
}
} }