| @@ -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<MallRole> roleList = sysRoleService.findRoleByUserId(user.getId()); | |||
| // if (null != roleList && roleList.size() > 0) { | |||
| // List<MallPermission> 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); | |||
| @@ -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); | |||
| } | |||
| } | |||
| @@ -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<MallUserInfoVo> 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) { | |||
| @@ -14,6 +14,8 @@ public interface MallUserInfoMapper extends CommonMapper<MallUserInfo, String> { | |||
| 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<MallUserInfo> selectByWebOpenId(@Param("webOpenId") String webOpenId); | |||
| @@ -27,4 +29,6 @@ public interface MallUserInfoMapper extends CommonMapper<MallUserInfo, String> { | |||
| List<MallUserInfoVo> selectUsersByPhone(@Param("phone") String phone); | |||
| List<MallUserInfoVo> selectUsersByWebOpenId(@Param("webOpenId") String webOpenId); | |||
| } | |||
| @@ -113,10 +113,25 @@ public interface MallUserInfoService { | |||
| /** | |||
| * 根据web端OpenId获得实体 | |||
| * | |||
| * @param openId | |||
| * @param webOpenId | |||
| * @return | |||
| */ | |||
| List<MallUserInfo> getByWebOpenId(String webOpenId); | |||
| /** | |||
| * 根据phone获得展示列表 | |||
| * | |||
| * @param webOpenId | |||
| * @return | |||
| */ | |||
| List<MallUserInfoVo> getUsersByWebOpenId(String webOpenId); | |||
| /** | |||
| * 根据用户名webOpenId查询用户对象 | |||
| * @param username | |||
| * @return | |||
| */ | |||
| List<MallUserInfo> getByWebOpenId(String openId); | |||
| MallUserInfo getByUsernameWebOpenId(String username, String webOpenId); | |||
| void updateWebOpenId(MallUserInfo user); | |||
| @@ -81,8 +81,18 @@ public class MallUserInfoServiceImpl implements MallUserInfoService { | |||
| } | |||
| @Override | |||
| public List<MallUserInfo> getByWebOpenId(String openId) { | |||
| return mallUserInfoMapper.selectByWebOpenId(openId); | |||
| public List<MallUserInfo> getByWebOpenId(String webOpenId) { | |||
| return mallUserInfoMapper.selectByWebOpenId(webOpenId); | |||
| } | |||
| @Override | |||
| public List<MallUserInfoVo> getUsersByWebOpenId(String webOpenId) { | |||
| return mallUserInfoMapper.selectUsersByWebOpenId(webOpenId); | |||
| } | |||
| @Override | |||
| public MallUserInfo getByUsernameWebOpenId(String username, String webOpenId) { | |||
| return mallUserInfoMapper.selectByUserNameWebOpen(username, webOpenId); | |||
| } | |||
| @Override | |||
| @@ -18,6 +18,10 @@ | |||
| <result column="flow_permission" property="flowPermission"/> | |||
| </resultMap> | |||
| <sql id="allSafeColumns"> | |||
| `id`,`tenant_id`,`username`,`name`,`password`,`create_time`,`last_login_time`,`status`,`is_admin`,`nick_name`,`phone`,`flow_permission` | |||
| </sql> | |||
| <sql id="allColumns"> | |||
| `id`,`tenant_id`,`username`,`name`,`password`,`create_time`,`last_login_time`,`status`,`is_admin`,`nick_name`,`phone`,`bopen_id`,`web_open_id`,`flow_permission` | |||
| </sql> | |||
| @@ -87,7 +91,7 @@ | |||
| <select id="findList" parameterType="com.iformall.domain.po.MallUserInfo" resultMap="BaseResultMap"> | |||
| select | |||
| <include refid="allColumns"/> | |||
| <include refid="allSafeColumns"/> | |||
| from mall_user_info | |||
| <include refid="dynamicWhereConditions"/> | |||
| </select> | |||
| @@ -102,11 +106,24 @@ | |||
| </if> | |||
| </select> | |||
| <select id="selectByBOpenId" resultMap="BaseResultMap"> | |||
| <select id="selectByUserNameWebOpen" resultMap="BaseResultMap"> | |||
| select | |||
| <include refid="allColumns"/> | |||
| from mall_user_info | |||
| where 1=1 | |||
| <if test=" null != username "> | |||
| and username=#{username} | |||
| </if> | |||
| <if test=" null != webOpenId "> | |||
| and `web_open_id`=#{webOpenId} | |||
| </if> | |||
| </select> | |||
| <select id="selectByBOpenId" resultMap="BaseResultMap"> | |||
| select | |||
| <include refid="allSafeColumns"/> | |||
| from mall_user_info | |||
| where 1=1 | |||
| <if test=" null != tenantId "> | |||
| and `tenant_id`=#{tenantId} | |||
| </if> | |||
| @@ -184,15 +201,20 @@ | |||
| <result column="img_url_h" jdbcType="VARCHAR" property="imgUrlH"/> | |||
| </resultMap> | |||
| <sql id="allSafeVColumns"> | |||
| u.`id`,u.`tenant_id`,u.`username`,u.`name`,u.`password`,u.`create_time`,u.`last_login_time`,u.`status`,u.`is_admin`,u.`nick_name`,u.`phone`,u.`flow_permission`, | |||
| m.`name` as mall_name, m.`group` as mall_group, m.`img_url`, m.`img_url_h` | |||
| </sql> | |||
| <sql id="allVColumns"> | |||
| u.`id`,u.`tenant_id`,u.`username`,u.`name`,u.`password`,u.`create_time`,u.`last_login_time`,u.`status`,u.`is_admin`,u.`nick_name`,u.`phone`,u.`bopen_id`,u.`web_open_id`,u.`flow_permission`, | |||
| u.`id`,u.`tenant_id`,u.`username`,u.`name`,u.`password`,u.`create_time`,u.`last_login_time`,u.`status`,u.`is_admin`,u.`nick_name`,u.`phone`,u.`flow_permission`, | |||
| m.`name` as mall_name, m.`group` as mall_group, m.`img_url`, m.`img_url_h` | |||
| </sql> | |||
| <select id="selectUsersByPhone" resultMap="VBaseResultMap"> | |||
| select | |||
| <include refid="allVColumns"/> | |||
| <include refid="allSafeVColumns"/> | |||
| from mall_user_info u | |||
| left join wx_mall m where m.`tenant_id` = u.`tenant_id` | |||
| where 1=1 | |||
| @@ -201,4 +223,15 @@ | |||
| </if> | |||
| </select> | |||
| <select id="selectUsersByWebOpenId" resultMap="VBaseResultMap"> | |||
| select | |||
| <include refid="allSafeVColumns"/> | |||
| from mall_user_info u | |||
| left join wx_mall m where m.`tenant_id` = u.`tenant_id` | |||
| where 1=1 | |||
| <if test=" null != webOpenId "> | |||
| and u.`web_open_id` = #{webOpenId} | |||
| </if> | |||
| </select> | |||
| </mapper> | |||