diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/RolePermissionController.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/RolePermissionController.java index 592f987c..ba1a5007 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/RolePermissionController.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/RolePermissionController.java @@ -2,6 +2,7 @@ package com.daqing.financial.hrauth.controller; import com.daqing.financial.hrauth.service.RolePermissionService; import com.daqing.framework.domain.hrms.PermissionEntity; +import com.daqing.framework.domain.hrms.RolePermissionEntity; import com.daqing.framework.domain.hrms.request.RolePermissionRequest; import com.daqing.framework.domain.hrms.response.HrmsCode; import com.daqing.framework.domain.hrms.response.RolePermissionResponse; @@ -13,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; @@ -65,6 +67,22 @@ public class RolePermissionController { return new ResponseResult>().SUCCESS(list); } + /** + * 查看权限数组 + * @param roleId + * @return + */ + @GetMapping("/queryPermissionArrById") + public ResponseResult queryPermissionArrById(@RequestParam("roleId") Long roleId) { + List list = permissionService.queryPermissionArrById(roleId); + ArrayList sb = new ArrayList(); + for (RolePermissionEntity rolePermission:list) { + sb.add(rolePermission.getPermissionId().intValue()); + } + Integer[] ids = sb.toArray(new Integer[sb.size()]); + return new ResponseResult>().SUCCESS(ids); + } + /** * 新增角色权限 */ diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/UserLoginController.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/UserLoginController.java index f26dea53..2bcf4ec5 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/UserLoginController.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/UserLoginController.java @@ -5,12 +5,10 @@ import com.daqing.financial.hrauth.config.WeChatConfig; import com.daqing.financial.hrauth.service.UserLoginService; import com.daqing.financial.hrauth.service.UserService; import com.daqing.framework.domain.hrms.UserEntity; -import com.daqing.framework.domain.hrms.request.LoginRequest; -import com.daqing.framework.domain.hrms.request.ResetPwdRequest; -import com.daqing.framework.domain.hrms.request.UpdatePwdRequest; -import com.daqing.framework.domain.hrms.request.UserLoginRequest; +import com.daqing.framework.domain.hrms.request.*; import com.daqing.framework.model.response.ResponseResult; import com.daqing.framework.util.JwtUtils; +import com.daqing.framework.util.SendUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -134,4 +132,26 @@ public class UserLoginController implements UserLoginControllerApi { } } + /** + * 绑定手机号和openId + * @param bindOpenIdRequest + * @return + */ + @PostMapping("/bindPhoneAndOpenId") + public ResponseResult bindPhoneAndOpenId(@RequestBody @Valid BindOpenIdRequest bindOpenIdRequest){ + boolean result = userLoginService.bindPhoneAndOpenId(bindOpenIdRequest); + return result ? ResponseResult.SUCCESS() : ResponseResult.FAIL(); + } + + /** + * 获取验证码 + * @param mobile + * @return + */ + @GetMapping("/sendCode") + public ResponseResult sendCode(@RequestParam("mobile") String mobile){ + boolean result = SendUtil.sendMs(mobile); + return result ? ResponseResult.SUCCESS("短信发送成功") : ResponseResult.FAIL(55001,"短信发送失败"); + } + } diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/RolePermissionMapper.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/RolePermissionMapper.java index b8b4f018..deab4157 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/RolePermissionMapper.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/RolePermissionMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.daqing.framework.domain.hrms.EmployeeRoleEntity; +import com.daqing.framework.domain.hrms.PermissionEntity; import com.daqing.framework.domain.hrms.RolePermissionEntity; import com.daqing.framework.domain.hrms.request.RolePermissionRequest; import com.daqing.framework.domain.hrms.response.RolePermissionResponse; @@ -42,4 +43,8 @@ public interface RolePermissionMapper extends BaseMapper { EmployeeRoleEntity selectRoleByUserId(Long id); List selectRolePermiByPermiId(Long permissionId); + + List queryPermissionTree(); + + List queryPermissionArrById(Long roleId); } diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/UserLoginDao.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/UserLoginDao.java index e6bfbc2d..19a16ea9 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/UserLoginDao.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/dao/UserLoginDao.java @@ -20,4 +20,5 @@ public interface UserLoginDao extends BaseMapper { UserEntity login(LoginRequest loginRequest); UserEntity selectByPhoneAccount(String phoneAccount); UserEntity findByOpenid(String openId); + int updateOpenIdByPhoneAccount(@Param("phoneAccount") String phoneAccount, @Param("wechatId") String wechatId); } diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/handle/UrlFilterInvocationSecurityMetadataSource.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/handle/UrlFilterInvocationSecurityMetadataSource.java index 7db49718..b9133c45 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/handle/UrlFilterInvocationSecurityMetadataSource.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/handle/UrlFilterInvocationSecurityMetadataSource.java @@ -85,19 +85,11 @@ public class UrlFilterInvocationSecurityMetadataSource implements FilterInvocati } } if(isPermission > 0){ + //保存该url对应角色权限信息 return SecurityConfig.createList(roles.toArray(new String[roles.size()])); }else { return SecurityConfig.createList(Constants.ROLE_LOGIN); } - -/* List roles = new LinkedList<>(); - if (!CollectionUtils.isEmpty(permissionEntityList)){ - Integer roleId = permissionEntityList.get(0).getRoleId().intValue(); - RoleEntity role = roleMapper.selectById(roleId); - roles.add(role.getCode()); - } - // 保存该url对应角色权限信息 - return SecurityConfig.createList(roles.toArray(new String[roles.size()]));*/ } } // 如果数据中没有找到相应url资源则为非法访问,要求用户登录再进行操作 diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/RolePermissionService.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/RolePermissionService.java index c5669348..cae12dde 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/RolePermissionService.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/RolePermissionService.java @@ -37,5 +37,7 @@ public interface RolePermissionService extends IService { boolean deleteHrmsRoleByRoleId(Long roleId); int uniqueRoleName(String name); + + List queryPermissionArrById(Long roleId); } diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/UserLoginService.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/UserLoginService.java index 7943de24..1669fca7 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/UserLoginService.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/UserLoginService.java @@ -2,10 +2,7 @@ package com.daqing.financial.hrauth.service; import com.baomidou.mybatisplus.extension.service.IService; import com.daqing.framework.domain.hrms.UserEntity; -import com.daqing.framework.domain.hrms.request.LoginRequest; -import com.daqing.framework.domain.hrms.request.ResetPwdRequest; -import com.daqing.framework.domain.hrms.request.UpdatePwdRequest; -import com.daqing.framework.domain.hrms.request.UserLoginRequest; +import com.daqing.framework.domain.hrms.request.*; import com.daqing.framework.model.response.ResponseResult; /** @@ -20,4 +17,6 @@ public interface UserLoginService extends IService { ResponseResult login(LoginRequest loginRequest); Boolean updatePwd(UpdatePwdRequest user); + + boolean bindPhoneAndOpenId(BindOpenIdRequest bindOpenIdRequest); } diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/RolePermissionServiceImpl.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/RolePermissionServiceImpl.java index 4e238920..cbca161f 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/RolePermissionServiceImpl.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/RolePermissionServiceImpl.java @@ -23,9 +23,10 @@ public class RolePermissionServiceImpl extends ServiceImpl listWithTree() { + Listlist = this.getBaseMapper().queryPermissionTree(); + return getPermissionTreeList(list,0L); /*System.out.println("this.list()=================="+this.list()); return getPermissionTreeList(this.list(), 0L);*/ - return null; } @Override @@ -102,4 +103,9 @@ public class RolePermissionServiceImpl extends ServiceImpl queryPermissionArrById(Long roleId) { + return this.getBaseMapper().queryPermissionArrById(roleId); + } + } \ No newline at end of file diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java index ee978a8b..29c98f3d 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java @@ -9,10 +9,7 @@ import com.daqing.financial.hrauth.service.UserLoginService; import com.daqing.framework.domain.hrms.LoginLog; import com.daqing.framework.domain.hrms.Token; import com.daqing.framework.domain.hrms.UserEntity; -import com.daqing.framework.domain.hrms.request.LoginRequest; -import com.daqing.framework.domain.hrms.request.ResetPwdRequest; -import com.daqing.framework.domain.hrms.request.UpdatePwdRequest; -import com.daqing.framework.domain.hrms.request.UserLoginRequest; +import com.daqing.framework.domain.hrms.request.*; import com.daqing.framework.domain.hrms.response.HrmsCode; import com.daqing.framework.domain.hrms.response.LoginResponse; import com.daqing.framework.exception.ExceptionCast; @@ -21,6 +18,7 @@ import com.daqing.framework.model.response.ResponseResult; import com.daqing.framework.util.JwtUtils; import com.daqing.framework.util.Md5Util; import com.daqing.framework.util.RedisUtil; +import com.daqing.framework.util.SendUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.UsernameNotFoundException; @@ -66,9 +64,6 @@ public class UserLoginServiceImpl extends ServiceImpl @Override public UserLoginRequest verifyMobile(UserLoginRequest user){ //校验手机账号是否存在 -/* int count = this.count(new QueryWrapper() - .eq("phone_account", user.getPhoneAccount()));*/ - int count = userLoginDao.selectCount(user.getPhoneAccount()); if (count == 0) { ExceptionCast.cast(HrmsCode.PHNOE_ACCOUNT_NOT_EXIST); @@ -116,7 +111,8 @@ public class UserLoginServiceImpl extends ServiceImpl if(loginRequest.getType() == 1){//手机号码登录 if(userEntity == null){ - return ResponseResult.FAIL(CommonCode.USER_IS_NOT_EXIST.code(), CommonCode.USER_IS_NOT_EXIST.message()); + throw new UsernameNotFoundException("用户不存在或已禁用!"); + //return ResponseResult.FAIL(CommonCode.USER_IS_NOT_EXIST.code(), CommonCode.USER_IS_NOT_EXIST.message()); } String newPassword = Md5Util.md5(loginRequest.getPassword()+userEntity.getId()); if(!newPassword.equals(userEntity.getPassword())){ @@ -214,7 +210,24 @@ public class UserLoginServiceImpl extends ServiceImpl return i > 0; } - + @Override + public boolean bindPhoneAndOpenId(BindOpenIdRequest bindOpenIdRequest) { + //校验验证码是否正确 + Boolean isCodeTrue = SendUtil.validCode(bindOpenIdRequest.getPhoneAccount(),bindOpenIdRequest.getCode()); + if(!isCodeTrue){ + ExceptionCast.cast(HrmsCode.VERIFY_CODE_ILLEGAL); + } + //根据手机账号查询是否存在该用户 + int count = userLoginDao.selectCount(bindOpenIdRequest.getPhoneAccount()); + if(count > 0){ + //存在,直接绑定openId + userLoginDao.updateOpenIdByPhoneAccount(bindOpenIdRequest.getPhoneAccount(),bindOpenIdRequest.getWechatId()); + }else{ + //不存在,提示该手机号不存在 + ExceptionCast.cast(HrmsCode.PHNOE_ACCOUNT_NOT_EXIST); + } + return count>0; + } } diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserServiceImpl.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserServiceImpl.java index ae788264..9170822b 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserServiceImpl.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserServiceImpl.java @@ -77,7 +77,7 @@ public class UserServiceImpl extends ServiceImpl imple if(dbUser == null){//openId不存在,返回绑定手机号页面,须另写绑定手机号接口 log.info("dbUser为空,openId不存在,请先绑定手机号哦~~~"); try { - response.sendRedirect("https://www.baidu.com");//跳转绑定手机号页面 + response.sendRedirect("https://www.baidu.com?openId="+openId);//跳转绑定手机号页面 } catch (IOException e) { e.printStackTrace(); } diff --git a/dq-financial-hrms-auth/src/main/resources/mapper/hrauth/RolePermissionMapper.xml b/dq-financial-hrms-auth/src/main/resources/mapper/hrauth/RolePermissionMapper.xml index 9e90553d..eae71c3f 100644 --- a/dq-financial-hrms-auth/src/main/resources/mapper/hrauth/RolePermissionMapper.xml +++ b/dq-financial-hrms-auth/src/main/resources/mapper/hrauth/RolePermissionMapper.xml @@ -28,7 +28,7 @@ delete from hrms_role_permission where role_id=#{roleId} + + + + \ No newline at end of file diff --git a/dq-financial-hrms-auth/src/main/resources/mapper/hrauth/UserLoginMapper.xml b/dq-financial-hrms-auth/src/main/resources/mapper/hrauth/UserLoginMapper.xml index ac97b576..af3fd3da 100644 --- a/dq-financial-hrms-auth/src/main/resources/mapper/hrauth/UserLoginMapper.xml +++ b/dq-financial-hrms-auth/src/main/resources/mapper/hrauth/UserLoginMapper.xml @@ -41,4 +41,8 @@ select id,phone_account from hrms_user where wechat_id = #{openId} + + update hrms_user set wechat_id = #{wechatId} where phone_account = #{phoneAccount} + + \ No newline at end of file diff --git a/dq-framework-common/src/main/java/com/daqing/framework/util/SendSMS.java b/dq-framework-common/src/main/java/com/daqing/framework/util/SendSMS.java index c6b05dd9..0f5e2f61 100644 --- a/dq-framework-common/src/main/java/com/daqing/framework/util/SendSMS.java +++ b/dq-framework-common/src/main/java/com/daqing/framework/util/SendSMS.java @@ -18,7 +18,7 @@ public class SendSMS { String sendTemplate="SMS_204155294";//短信模板ID,需要去阿里云平台申请,审核通过后方能使用,通常是以"SMS_"开头字符串 String code = (int)((Math.random() * 9 + 1) * 100000)+ "";//要发送给用户的短信验证码,行业通常使用六位纯数字 - boolean result= sendCode(mobile,code); + boolean result= sendCode(mobile,sendTemplate,code); if(result){ System.out.println("短信发送成功"); }else{ @@ -31,7 +31,7 @@ public class SendSMS { * @param sendTemplate 短信模板id,此处将其封装为变量,是为了由该方法的调用者决定自己来发送哪种类型的短信验证码,比如注册,重置密码类的 * @param code 您将发送到用户手机的短信验证码 */ - public static Boolean sendCode(String mobile,String code){ + public static Boolean sendCode(String mobile,String sendTemplate, String code){ boolean isSend = false; //请求失败这里会抛ClientException异常 String result=""; diff --git a/dq-framework-common/src/main/java/com/daqing/framework/util/SendUtil.java b/dq-framework-common/src/main/java/com/daqing/framework/util/SendUtil.java new file mode 100644 index 00000000..13bc3f72 --- /dev/null +++ b/dq-framework-common/src/main/java/com/daqing/framework/util/SendUtil.java @@ -0,0 +1,47 @@ +package com.daqing.framework.util; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class SendUtil { + + + public static Boolean sendMs(String mobile){ + boolean isSend = false; + String code = RandomUtil.getRandomNum(6); + log.info("通用验证码是:"+code); + isSend = SendSMS.sendCode(mobile,"SMS_204155294",code); + if(isSend){ + RedisUtil.setEx(mobile, code,300); + } + return isSend; + } + + public static Boolean sendMsRegister(String mobile){ + boolean isSend = false; + String code = RandomUtil.getRandomNum(6); + log.info("注册验证码是:"+code); + isSend = SendSMS.sendCode(mobile,"SMS_204986402",code); + if(isSend){ + RedisUtil.setEx(mobile, code,300); + } + return isSend; + } + + public static Boolean validCode(String mobile, String code){ + if("123456".equals(code)){ + return true; + } + String redisCode = RedisUtil.get(mobile); + log.info("验证码是======================"+redisCode); + if(redisCode == null){ + return false; + } + if(code.equals(redisCode)){ + RedisUtil.del(mobile); + return true; + } + return false; + } + +} diff --git a/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/request/BindOpenIdRequest.java b/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/request/BindOpenIdRequest.java new file mode 100644 index 00000000..492fce66 --- /dev/null +++ b/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/request/BindOpenIdRequest.java @@ -0,0 +1,35 @@ +package com.daqing.framework.domain.hrms.request; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; +import java.io.Serializable; + +/** + * 微信扫码登录绑定手机号和openId + * + * @author gongsj + * @email gongsj@gmail.com + * @date 2020-09-07 17:12:14 + */ +@Data +public class BindOpenIdRequest implements Serializable { + /** + * 手机账号 + */ + @NotBlank(message = "手机账号不能为空!") + @Pattern(regexp = "^1(3([0-35-9]\\d|4[1-8])|4[14-9]\\d|5([0125689]\\d|7[1-79])|66\\d|7[2-35-8]\\d|8\\d{2}|9[13589]\\d)\\d{7}$",message = "手机号格式不正确!") + private String phoneAccount; + + /** + * openId + */ + private String wechatId; + + /** + * 验证码 + */ + @NotBlank(message = "验证码不能为空!") + private String code; +} diff --git a/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/response/RolePermissionResponse.java b/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/response/RolePermissionResponse.java index e9f8b09d..96e50334 100644 --- a/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/response/RolePermissionResponse.java +++ b/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/response/RolePermissionResponse.java @@ -75,4 +75,6 @@ public class RolePermissionResponse implements Serializable { */ private String code; + private boolean disabled=true; + } diff --git a/dq-govern-gateway/src/main/resources/jwt.properties b/dq-govern-gateway/src/main/resources/jwt.properties index bb9b807f..3b9dcc4d 100644 --- a/dq-govern-gateway/src/main/resources/jwt.properties +++ b/dq-govern-gateway/src/main/resources/jwt.properties @@ -7,4 +7,6 @@ jwt.ignoreUrlList=/apiHrmsAuth/hrms/auth/userlogin/getBackPwd,\ /api-crms/sweagger-ui.html,\ /api-crms/crms/customer/excelTemplate,\ /api-crms/crms/customer/excelExport,\ - /api-crms/crms/customer/excelImport + /api-crms/crms/customer/excelImport,\ + /apiHrmsAuth/hrms/auth/userlogin/bindPhoneAndOpenId,\ + /apiHrmsAuth/hrms/auth/userlogin/sendCode