1
0
Ciallo преди 9 месеца
родител
ревизия
4f85b2491d

+ 17 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/mapper/UserMapper.java

@@ -0,0 +1,17 @@
+package com.ruoyi.web.work.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.work.domain.User;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author lsw
+ * @date 2024-07-16
+ */
+public interface UserMapper extends BaseMapper<User> {
+    List<User> selectList(User user);
+
+    User selectByOpenId(@Param("openId") String openId);
+}

+ 48 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/IUserService.java

@@ -0,0 +1,48 @@
+package com.ruoyi.web.work.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.web.work.domain.User;
+import com.ruoyi.web.work.domain.dto.LoginDto;
+import com.ruoyi.web.work.domain.dto.UserEditDto;
+
+import java.rmi.ServerException;
+import java.util.List;
+
+/**
+ * @author lsw
+ * @date 2024-07-16LoginDto
+ */
+public interface IUserService extends IService<User>{
+    List<User> selectList(User user);
+
+    /**
+     * 微信登陆
+     *
+     * @param dto
+     * @return
+     */
+    AjaxResult login(LoginDto dto) throws ServerException;
+
+
+    /**
+     * 编辑用户信息
+     *
+     * @param dto
+     * @return
+     */
+    AjaxResult edit(UserEditDto dto);
+
+    /**
+     * 退出登陆
+     *
+     * @return
+     */
+    AjaxResult exit();
+
+    /**
+     * 用户详情
+     * @return
+     */
+    AjaxResult info();
+}

+ 95 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/UserServiceImpl.java

@@ -0,0 +1,95 @@
+package com.ruoyi.web.work.service.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.http.HttpUtils;
+import com.ruoyi.web.work.api.config.TokenServices;
+import com.ruoyi.web.work.api.util.AppUtil;
+import com.ruoyi.web.work.domain.User;
+import com.ruoyi.web.work.domain.dto.LoginDto;
+import com.ruoyi.web.work.domain.dto.UserEditDto;
+import com.ruoyi.web.work.mapper.UserMapper;
+import com.ruoyi.web.work.service.IUserService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Service;
+
+import java.rmi.ServerException;
+import java.util.List;
+
+/**
+ * @author lsw
+ * @date 2024-07-16
+ */
+@Service
+public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
+    @Autowired
+    private UserMapper userMapper;
+
+    @Autowired
+    private TokenServices tokenService;
+
+    @Autowired
+    private Environment env;
+
+    @Override
+    public List<User> selectList(User user) {
+        return userMapper.selectList(user);
+    }
+
+    @Override
+    public AjaxResult login(LoginDto dto) throws ServerException {
+        JSONObject res = JSON.parseObject(HttpUtils.sendGet("https://api.weixin.qq.com/sns/jscode2session?appid=" + env.getProperty("wx.appid") + "&secret=" + env.getProperty("wx.appSecret") + "&js_code=" + dto.getCode() + "&grant_type=authorization_code", null));
+        if (StringUtils.isNotEmpty(res.getString("errmsg"))) {
+            return AjaxResult.error("获取openid失败");
+        }
+        User user = userMapper.selectByOpenId(res.getString("openid"));
+        if (user == null) {
+            user = new User();
+            user.setOpenId(res.getString("openid"));
+            user.setState(0);
+            if (!save(user)) {
+                throw new ServerException("登录失败,请联系管理员");
+            }
+            return AjaxResult.success(new AjaxResult().put("token", tokenService.createToken(user)));
+        }
+        if (user.getState() == 1) {
+            return AjaxResult.error(403, "你的账号被锁定,请联系管理员");
+        }
+        if (!updateById(user)) {
+            throw new ServerException("登录失败,请联系管理员");
+        }
+        return AjaxResult.success(new AjaxResult().put("token", tokenService.createToken(user)));
+    }
+
+    @Override
+    public AjaxResult edit(UserEditDto dto) {
+        User user = new User();
+        BeanUtils.copyProperties(dto, user);
+        user.setId(AppUtil.getUser().getId());
+        if (!updateById(user)) {
+            throw new ServiceException("编辑用户信息失败");
+        }
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult exit() {
+        try {
+            tokenService.delLoginUser(AppUtil.getUser().getToken());
+            return AjaxResult.success();
+        } catch (Exception e) {
+            return AjaxResult.error("退出登录失败");
+        }
+    }
+
+    @Override
+    public AjaxResult info() {
+        return AjaxResult.success(getById(AppUtil.getUser().getId()));
+    }
+}