diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/HomeController.java b/mallinkAdmin/src/main/java/com/iformall/controller/HomeController.java index 5bcbaab0e..bc4513cc9 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/HomeController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/HomeController.java @@ -112,7 +112,6 @@ public class HomeController extends BaseController { } else { info.setWithWechat(false); } -// System.out.println("id:"+ SecurityUtils.getSubject().getSession().getId()); String menus = mallUserRoleService.getPermissionsByUser(info); if(menus != null) { info.setMenus(menus); @@ -169,20 +168,16 @@ public class HomeController extends BaseController { Subject subject = SecurityUtils.getSubject(); UseriFormallToken token = new UseriFormallToken(user.getUsername()); subject.login(token); -// List roleList = sysRoleService.findRoleByUserId(user.getId()); -// if (null != roleList && roleList.size() > 0) { -// List permissionList = sysPermissionService -// .findPermissionByRoleIds(roleList.stream().map(MallRole::getId).collect(Collectors.toList())); -// user.setRole(roleList); -// user.setPermission(permissionList); -// } MallUserInfo info = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute(UserSession.userInfo); info.setPassword("保密"); if(StringUtils.isNotBlank(info.getBopenId())) info.setBopenId("保密"); - if(StringUtils.isNotBlank(info.getWebOpenId())) + if(StringUtils.isNotBlank(info.getWebOpenId())) { info.setWebOpenId("保密"); -// System.out.println("id:"+ SecurityUtils.getSubject().getSession().getId()); + info.setWithWechat(true); + } else { + info.setWithWechat(false); + } String menus = mallUserRoleService.getPermissionsByUser(info); if(menus != null) { info.setMenus(menus); @@ -247,9 +242,12 @@ public class HomeController extends BaseController { info.setPassword("保密"); if(StringUtils.isNotBlank(info.getBopenId())) info.setBopenId("保密"); - if(StringUtils.isNotBlank(info.getWebOpenId())) + if(StringUtils.isNotBlank(info.getWebOpenId())) { info.setWebOpenId("保密"); -// System.out.println("id:"+ SecurityUtils.getSubject().getSession().getId()); + info.setWithWechat(true); + } else { + info.setWithWechat(false); + } String menus = mallUserRoleService.getPermissionsByUser(info); if(menus != null) { info.setMenus(menus); @@ -306,8 +304,12 @@ public class HomeController extends BaseController { info.setPassword("保密"); if(StringUtils.isNotBlank(info.getBopenId())) info.setBopenId("保密"); - if(StringUtils.isNotBlank(info.getWebOpenId())) + if(StringUtils.isNotBlank(info.getWebOpenId())) { info.setWebOpenId("保密"); + info.setWithWechat(true); + } else { + info.setWithWechat(false); + } String menus = mallUserRoleService.getPermissionsByUser(info); if(menus != null) { info.setMenus(menus); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/MallUserInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/MallUserInfoController.java index b5ed99604..549cde12d 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/MallUserInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/MallUserInfoController.java @@ -5,6 +5,7 @@ import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; +import com.iformall.domain.vo.MallUserInfoVo; import com.iformall.enums.EnumMallUserStatus; import com.iformall.enums.EnumUserAdmin; import com.iformall.enums.EnumFlowPermissionType; @@ -392,4 +393,5 @@ public class MallUserInfoController extends BaseController { resultMap.put("billUserList",billUserList); return new ResultData(resultMap); } + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java index a44307da5..429baf53c 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java @@ -1,10 +1,14 @@ package com.iformall.controller; +import com.iformall.common.ResultData; import com.iformall.domain.po.MallUserInfo; +import com.iformall.domain.vo.MallUserInfoVo; import com.iformall.service.MallUserInfoService; import com.iformall.service.MallUserRoleService; import com.iformall.shiro.UserSession; import com.iformall.shiro.UseriFormallToken; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; @@ -73,6 +77,7 @@ public class WechatLoginController extends BaseController { info.setPassword("保密"); info.setBopenId("保密"); info.setWebOpenId("保密"); + info.setWithWechat(true); String menus = mallUserRoleService.getPermissionsByUser(info); if(menus != null) { info.setMenus(menus); @@ -107,6 +112,50 @@ public class WechatLoginController extends BaseController { } } + @ApiOperation(value = "微信登录用户信息列表") + @GetMapping("getMallUserList") + @ApiImplicitParams({ + @ApiImplicitParam(name = "openId", value = "openId", dataType = "String", paramType = "query", required = true)}) + public ResultData getMallUserList(String openId) { + log.debug("[" + getIpAddr() + "] MallUserInfoController::getMallUserList"); + List users = mallUserInfoService.getUsersByWebOpenId(openId); + // TODO 添加 加密串 + + return new ResultData(users); + } + + @ApiOperation(value = "微信用户登录") + @GetMapping("weChatUserLogin") + @ApiImplicitParams({ + @ApiImplicitParam(name = "openId", value = "openId", dataType = "String", paramType = "query", required = true), + @ApiImplicitParam(name = "uname", value = "uname", dataType = "String", paramType = "query", required = true)}) + public void weChatUserLogin(String uname, String openId, HttpServletRequest request, HttpServletResponse response) { + log.debug("[" + getIpAddr() + "] MallUserInfoController::weChatUserLogin"); + String host = request.getHeader("host"); + MallUserInfo userInfo = mallUserInfoService.getByUsernameWebOpenId(uname, openId); + try { + Subject subject = SecurityUtils.getSubject(); + UseriFormallToken token = new UseriFormallToken(userInfo.getUsername()); + subject.login(token); + MallUserInfo info = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute(UserSession.userInfo); + info.setPassword("保密"); + info.setBopenId("保密"); + info.setWebOpenId("保密"); + info.setWithWechat(true); + String menus = mallUserRoleService.getPermissionsByUser(info); + if(menus != null) { + info.setMenus(menus); + } + Cookie unameCookie = new Cookie("uname", info.getUsername()); + unameCookie.setMaxAge(60); + response.addCookie(unameCookie); + log.debug("https://" + host + "/#/"); + response.sendRedirect("https://" + host + "/#/layout"); + } catch (Exception e) { + log.error(e.getMessage()); + } + } + @ApiOperation(value = "微信第三方登录绑定", notes = "请配置此callback到网页redirect_uri") @GetMapping("bindWebOpenId") public void userBindWebOpenId(String code, String state, HttpServletRequest request, HttpServletResponse response) { diff --git a/mallinkService/src/main/java/com/iformall/mapper/MallUserInfoMapper.java b/mallinkService/src/main/java/com/iformall/mapper/MallUserInfoMapper.java index 96e5d9f26..cfd2206ee 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/MallUserInfoMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/MallUserInfoMapper.java @@ -14,6 +14,8 @@ public interface MallUserInfoMapper extends CommonMapper { MallUserInfo selectByUserName(@Param("username") String username); + MallUserInfo selectByUserNameWebOpen(@Param("username") String username, @Param("webOpenId") String webOpenId); + MallUserInfo selectByBOpenId(@Param("bopenId") String bopenId, @Param("tenantId") String tenantId); List selectByWebOpenId(@Param("webOpenId") String webOpenId); @@ -27,4 +29,6 @@ public interface MallUserInfoMapper extends CommonMapper { List selectUsersByPhone(@Param("phone") String phone); + List selectUsersByWebOpenId(@Param("webOpenId") String webOpenId); + } diff --git a/mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java b/mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java index ba9d570c6..a36e01afd 100644 --- a/mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java +++ b/mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java @@ -113,10 +113,25 @@ public interface MallUserInfoService { /** * 根据web端OpenId获得实体 * - * @param openId + * @param webOpenId + * @return + */ + List getByWebOpenId(String webOpenId); + + /** + * 根据phone获得展示列表 + * + * @param webOpenId + * @return + */ + List getUsersByWebOpenId(String webOpenId); + + /** + * 根据用户名webOpenId查询用户对象 + * @param username * @return */ - List getByWebOpenId(String openId); + MallUserInfo getByUsernameWebOpenId(String username, String webOpenId); void updateWebOpenId(MallUserInfo user); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java index ec1b7ac1d..96537ac1c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java @@ -81,8 +81,18 @@ public class MallUserInfoServiceImpl implements MallUserInfoService { } @Override - public List getByWebOpenId(String openId) { - return mallUserInfoMapper.selectByWebOpenId(openId); + public List getByWebOpenId(String webOpenId) { + return mallUserInfoMapper.selectByWebOpenId(webOpenId); + } + + @Override + public List getUsersByWebOpenId(String webOpenId) { + return mallUserInfoMapper.selectUsersByWebOpenId(webOpenId); + } + + @Override + public MallUserInfo getByUsernameWebOpenId(String username, String webOpenId) { + return mallUserInfoMapper.selectByUserNameWebOpen(username, webOpenId); } @Override diff --git a/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml b/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml index 35e954471..f6ef56545 100644 --- a/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml @@ -18,6 +18,10 @@ + + `id`,`tenant_id`,`username`,`name`,`password`,`create_time`,`last_login_time`,`status`,`is_admin`,`nick_name`,`phone`,`flow_permission` + + `id`,`tenant_id`,`username`,`name`,`password`,`create_time`,`last_login_time`,`status`,`is_admin`,`nick_name`,`phone`,`bopen_id`,`web_open_id`,`flow_permission` @@ -87,7 +91,7 @@ @@ -102,11 +106,24 @@ - select from mall_user_info where 1=1 + + and username=#{username} + + + and `web_open_id`=#{webOpenId} + + + + select - + from mall_user_info u left join wx_mall m where m.`tenant_id` = u.`tenant_id` where 1=1 @@ -201,4 +223,15 @@ + +