From 75aa42c51ae2a63d7c1e5e813c0a88fd303bdbf4 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 03 一月 2025 18:04:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'gitee/master'

---
 medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppLoginController.java |  205 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 205 insertions(+), 0 deletions(-)

diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppLoginController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppLoginController.java
new file mode 100644
index 0000000..42a86cb
--- /dev/null
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/applet/AppLoginController.java
@@ -0,0 +1,205 @@
+package com.sinata.web.controller.applet;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.sinata.common.constant.Constants;
+import com.sinata.common.core.domain.AjaxResult;
+import com.sinata.common.core.domain.R;
+import com.sinata.common.core.domain.entity.SysMenu;
+import com.sinata.common.core.domain.entity.SysRole;
+import com.sinata.common.core.domain.entity.SysUser;
+import com.sinata.common.core.domain.model.LoginBody;
+import com.sinata.common.core.domain.model.LoginUser;
+import com.sinata.common.utils.SecurityUtils;
+import com.sinata.common.utils.StringUtils;
+import com.sinata.framework.web.service.SysLoginService;
+import com.sinata.framework.web.service.SysPermissionService;
+import com.sinata.framework.web.service.TokenService;
+import com.sinata.system.domain.SysDepartment;
+import com.sinata.system.domain.SysUserRole;
+import com.sinata.system.domain.dto.UserInfoDTO;
+import com.sinata.system.mapper.SysUserRoleMapper;
+import com.sinata.system.service.ISysMenuService;
+import com.sinata.system.service.ISysRoleService;
+import com.sinata.system.service.ISysUserService;
+import com.sinata.system.service.SysDepartmentService;
+import com.sinata.system.service.biz.AliSmsService;
+import com.sinata.web.controller.tool.weChat.WXCore;
+import com.sinata.web.controller.tool.weChat.WeChatUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+
+/**
+ * 登录验证
+ * 
+ * @author ruoyi
+ */
+@Api(tags = {"登录"})
+@RestController
+@RequestMapping("/applet")
+public class AppLoginController
+{
+    @Autowired
+    private SysLoginService loginService;
+
+    @Autowired
+    private ISysMenuService menuService;
+
+    @Autowired
+    private SysPermissionService permissionService;
+
+    @Autowired
+    private TokenService tokenService;
+
+    @Autowired
+    private ISysRoleService roleService;
+
+    @Resource
+    private SysDepartmentService departmentService;
+    @Resource
+    private AliSmsService aliSmsService;
+    @Resource
+    private ISysUserService userService;
+
+
+    @PostMapping("/getCode")
+    @ApiOperation("获取验证码")
+    public AjaxResult getCode(String phone)
+    {
+        Random random = new Random();
+
+        int i = 100000 + random.nextInt(900000);
+        aliSmsService.sendLoginCode(phone, String.valueOf(i));
+        return AjaxResult.success();
+    }
+    @Resource
+    private WeChatUtil weChatUtil;
+
+
+    @PostMapping("/getPhone")
+    @ApiOperation("获取手机号")
+    public R getPhone(String jscoe, String EncryptedData_phone,String Iv_phone)
+    {
+        //使用jscode获取微信openid
+        Map<String, Object> map = weChatUtil.code2Session(jscoe);
+        Integer errcode = Integer.valueOf(map.get("errcode").toString());
+        if(0 != errcode){
+            return R.fail(map.get("msg").toString());
+        }
+        String openid = map.get("openid").toString();
+        String sessionKey = map.get("sessionKey").toString();
+
+
+        String decrypt = WXCore.decrypt(EncryptedData_phone, sessionKey, Iv_phone);
+        if (StringUtils.isEmpty(decrypt)) {
+            return R.fail("获取手机信息失败");
+        }
+        JSONObject phone = JSON.parseObject(decrypt);
+        String purePhoneNumber = phone.getString("purePhoneNumber");
+        return R.ok(purePhoneNumber);
+
+    }
+    /**
+     * 登录方法
+     * 
+     * @param loginBody 登录信息
+     * @return 结果
+     */
+    @PostMapping("/login")
+    @ApiOperation("验证码登录")
+    public AjaxResult login(@RequestBody LoginBody loginBody)
+    {
+        AjaxResult ajax = AjaxResult.success();
+        // 生成令牌
+        LoginUser loginUser = loginService.login1(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
+                loginBody.getUuid());
+        ajax.put(Constants.TOKEN, tokenService.createToken(loginUser));
+//        List<SysRole> roles = loginUser.getUser().getRoles();
+//        if (CollectionUtils.isEmpty(roles)) {
+//            return AjaxResult.error("请关联角色!");
+//        }
+
+        List<SysMenu> menus = roleService.roleInfoFromUserId(loginUser.getUserId());
+
+//        ajax.put("menus", menus);
+        ajax.put("userInfo", loginUser);
+        return ajax;
+    }
+
+    @PostMapping("/get/department")
+    @ApiOperation("登录后获取部门")
+    public R<SysDepartment> department()
+    {
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        SysDepartment byId = departmentService.getById(user.getDepartmentId());
+        return R.ok(byId);
+    }
+    @Resource
+    private  SysUserRoleMapper sysUserRoleMapper;
+    @PostMapping("/get/user")
+    @ApiOperation("获取个人信息")
+    public R<UserInfoDTO> user()
+    {
+        SysUser user1 = SecurityUtils.getLoginUser().getUser();
+        SysUser user = userService.getById(user1.getUserId());
+        Set<String> roles = permissionService.getRolePermission(user);
+        SysDepartment byId2 = departmentService.getById(user.getDepartmentId());
+        UserInfoDTO userInfoDTO = new UserInfoDTO();
+        userInfoDTO.setNickName(user.getNickName());
+        userInfoDTO.setDepartment(byId2);
+        userInfoDTO.setRoles(roles);
+        SysUserRole sysUserRole = sysUserRoleMapper.selectOne(Wrappers.<SysUserRole>lambdaQuery().eq(SysUserRole::getUserId, user.getUserId()));
+        if (sysUserRole != null) {
+            SysRole byId = roleService.getById(sysUserRole.getRoleId());
+            userInfoDTO.setRole(byId);
+        }
+        return R.ok(userInfoDTO);
+    }
+
+
+
+    /**
+     * 获取用户信息
+     * 
+     * @return 用户信息
+     */
+    @GetMapping("getInfo")
+    public AjaxResult getInfo()
+    {
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        // 角色集合
+        Set<String> roles = permissionService.getRolePermission(user);
+        // 权限集合
+        Set<String> permissions = permissionService.getMenuPermission(user);
+        AjaxResult ajax = AjaxResult.success();
+        ajax.put("user", user);
+        ajax.put("roles", roles);
+        ajax.put("permissions", permissions);
+        return ajax;
+    }
+
+    /**
+     * 获取路由信息
+     * 
+     * @return 路由信息
+     */
+    @GetMapping("getRouters")
+    public AjaxResult getRouters()
+    {
+        Long userId = SecurityUtils.getUserId();
+        List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
+        return AjaxResult.success(menuService.buildMenus(menus));
+    }
+}

--
Gitblit v1.7.1