Browse Source

根据手机号、密码获取工作人员所属客户列表

dev_shibei_match
yinzuomei 5 years ago
parent
commit
0b93ffbd87
  1. 20
      epmet-auth/src/main/java/com/epmet/controller/GovLoginController.java
  2. 11
      epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpEnteOrgFormDTO.java
  3. 3
      epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpFormDTO.java
  4. 8
      epmet-auth/src/main/java/com/epmet/dto/form/LoginByPassWordFormDTO.java
  5. 2
      epmet-auth/src/main/java/com/epmet/dto/form/LoginByWxCodeFormDTO.java
  6. 8
      epmet-auth/src/main/java/com/epmet/dto/form/LoginCommonFormDTO.java
  7. 9
      epmet-auth/src/main/java/com/epmet/dto/form/StaffOrgsFormDTO.java
  8. 10
      epmet-auth/src/main/java/com/epmet/service/GovLoginService.java
  9. 56
      epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java
  10. 1
      epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java
  11. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  12. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/CustomerStaffDTO.java
  13. 5
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/CustomerStaffEntity.java

20
epmet-auth/src/main/java/com/epmet/controller/GovLoginController.java

@ -36,7 +36,7 @@ public class GovLoginController {
**/ **/
@PostMapping(value = "/loginwxmp/loginbywxcode") @PostMapping(value = "/loginwxmp/loginbywxcode")
public Result<UserTokenResultDTO> loginByWxCode(@RequestBody GovWxmpFormDTO formDTO) { public Result<UserTokenResultDTO> loginByWxCode(@RequestBody GovWxmpFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO); ValidatorUtils.validateEntity(formDTO,LoginCommonFormDTO.AddUserInternalGroup.class);
UserTokenResultDTO userTokenResultDTO=govLoginService.loginByWxCode(formDTO); UserTokenResultDTO userTokenResultDTO=govLoginService.loginByWxCode(formDTO);
return new Result<UserTokenResultDTO>().ok(userTokenResultDTO); return new Result<UserTokenResultDTO>().ok(userTokenResultDTO);
} }
@ -64,7 +64,7 @@ public class GovLoginController {
**/ **/
@PostMapping(value = "/loginwxmp/getmyorg") @PostMapping(value = "/loginwxmp/getmyorg")
public Result<List<StaffOrgsResultDTO>> getmyorg(@RequestBody StaffOrgsFormDTO formDTO) { public Result<List<StaffOrgsResultDTO>> getmyorg(@RequestBody StaffOrgsFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO,StaffOrgsFormDTO.AddUserShowGroup.class); ValidatorUtils.validateEntity(formDTO,StaffOrgsFormDTO.AddUserShowGroup.class, StaffOrgsFormDTO.GetMyOrgByLoginWxmp.class);
List<StaffOrgsResultDTO> staffOrgs=govLoginService.getMyOrg(formDTO); List<StaffOrgsResultDTO> staffOrgs=govLoginService.getMyOrg(formDTO);
return new Result<List<StaffOrgsResultDTO>>().ok(staffOrgs); return new Result<List<StaffOrgsResultDTO>>().ok(staffOrgs);
} }
@ -78,7 +78,7 @@ public class GovLoginController {
**/ **/
@PostMapping(value = "/loginwxmp/enterorg") @PostMapping(value = "/loginwxmp/enterorg")
public Result<UserTokenResultDTO> enterOrg(@RequestBody GovWxmpEnteOrgFormDTO formDTO) { public Result<UserTokenResultDTO> enterOrg(@RequestBody GovWxmpEnteOrgFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO); ValidatorUtils.validateEntity(formDTO,GovWxmpEnteOrgFormDTO.AddUserShowGroup.class,GovWxmpEnteOrgFormDTO.AddUserInternalGroup.class);
UserTokenResultDTO userTokenResultDTO=govLoginService.enterOrg(formDTO); UserTokenResultDTO userTokenResultDTO=govLoginService.enterOrg(formDTO);
return new Result<UserTokenResultDTO>().ok(userTokenResultDTO); return new Result<UserTokenResultDTO>().ok(userTokenResultDTO);
} }
@ -107,5 +107,19 @@ public class GovLoginController {
govLoginService.updateCachedRoles(form.getStaffId(), form.getOrgId(), form.getRoleIds()); govLoginService.updateCachedRoles(form.getStaffId(), form.getOrgId(), form.getRoleIds());
return new Result(); return new Result();
} }
/**
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List < com.epmet.dto.result.StaffOrgsResultDTO>>
* @author yinzuomei
* @description 6手机号密码获取组织
* @Date 2020/6/30 22:43
**/
@PostMapping(value = "/getmyorgbypassword")
public Result<List<StaffOrgsResultDTO>> getMyOrgByPassword(@RequestBody StaffOrgsFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, StaffOrgsFormDTO.AddUserShowGroup.class, StaffOrgsFormDTO.GetMyOrgByPassWordGroup.class);
List<StaffOrgsResultDTO> staffOrgs = govLoginService.getMyOrgByPassword(formDTO);
return new Result<List<StaffOrgsResultDTO>>().ok(staffOrgs);
}
} }

11
epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpEnteOrgFormDTO.java

@ -1,5 +1,6 @@
package com.epmet.dto.form; package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
@ -12,28 +13,30 @@ import java.io.Serializable;
*/ */
@Data @Data
public class GovWxmpEnteOrgFormDTO implements Serializable { public class GovWxmpEnteOrgFormDTO implements Serializable {
public interface AddUserInternalGroup {}
public interface AddUserShowGroup extends CustomerClientShowGroup {}
/** /**
* wxCode * wxCode
*/ */
@NotBlank(message = "wxCode不能为空") @NotBlank(message = "wxCode不能为空",groups = {AddUserInternalGroup.class})
private String wxCode; private String wxCode;
/** /**
* 手机号 * 手机号
*/ */
@NotBlank(message = "手机号不能为空") @NotBlank(message = "手机号不能为空",groups = {AddUserShowGroup.class})
private String mobile; private String mobile;
/** /**
* 选择的组织所属的id * 选择的组织所属的id
*/ */
@NotBlank(message = "客户id不能为空") @NotBlank(message = "客户id不能为空",groups = {AddUserInternalGroup.class})
private String customerId; private String customerId;
/** /**
* 选择的要进入的组织(根组织id) * 选择的要进入的组织(根组织id)
*/ */
@NotBlank(message = "组织id不能为空") @NotBlank(message = "组织id不能为空",groups = {AddUserInternalGroup.class})
private String rootAgencyId; private String rootAgencyId;
} }

3
epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpFormDTO.java

@ -13,10 +13,11 @@ import java.io.Serializable;
@Data @Data
public class GovWxmpFormDTO extends LoginCommonFormDTO implements Serializable { public class GovWxmpFormDTO extends LoginCommonFormDTO implements Serializable {
private static final long serialVersionUID = -207861963128774742L; private static final long serialVersionUID = -207861963128774742L;
/** /**
* wxCode * wxCode
*/ */
@NotBlank(message = "wxCode不能为空") @NotBlank(message = "wxCode不能为空",groups = {AddUserInternalGroup.class})
private String wxCode; private String wxCode;
} }

8
epmet-auth/src/main/java/com/epmet/dto/form/LoginByPassWordFormDTO.java

@ -17,24 +17,24 @@ public class LoginByPassWordFormDTO extends LoginCommonFormDTO implements Serial
/** /**
* 手机号 * 手机号
*/ */
@NotBlank(message = "手机号不能为空") @NotBlank(message = "手机号不能为空",groups = {AddUserShowGroup.class})
private String phone; private String phone;
/** /**
* 密码 * 密码
*/ */
@NotBlank(message = "密码不能为空") @NotBlank(message = "密码不能为空",groups = {AddUserShowGroup.class})
private String password; private String password;
/** /**
* 验证码 * 验证码
*/ */
@NotBlank(message="验证码不能为空") @NotBlank(message="验证码不能为空",groups = {AddUserShowGroup.class})
private String captcha; private String captcha;
/** /**
* 唯一标识 * 唯一标识
*/ */
@NotBlank(message="唯一标识不能为空") @NotBlank(message="唯一标识不能为空",groups = {AddUserInternalGroup.class})
private String uuid; private String uuid;
} }

2
epmet-auth/src/main/java/com/epmet/dto/form/LoginByWxCodeFormDTO.java

@ -17,7 +17,7 @@ public class LoginByWxCodeFormDTO extends LoginCommonFormDTO implements Serializ
/** /**
* 微信code * 微信code
*/ */
@NotBlank(message = "wxCode不能为空") @NotBlank(message = "wxCode不能为空",groups = {AddUserInternalGroup.class})
private String wxCode; private String wxCode;
/** /**

8
epmet-auth/src/main/java/com/epmet/dto/form/LoginCommonFormDTO.java

@ -1,5 +1,6 @@
package com.epmet.dto.form; package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
@ -13,16 +14,17 @@ import java.io.Serializable;
@Data @Data
public class LoginCommonFormDTO implements Serializable { public class LoginCommonFormDTO implements Serializable {
private static final long serialVersionUID = -5582224784914714820L; private static final long serialVersionUID = -5582224784914714820L;
public interface AddUserInternalGroup {}
public interface AddUserShowGroup extends CustomerClientShowGroup {}
/** /**
* 政府端:gov居民端:resi运营端:oper * 政府端:gov居民端:resi运营端:oper
*/ */
@NotBlank(message = "app不能为空(政府端:gov、居民端:resi、运营端:oper)") @NotBlank(message = "app不能为空(政府端:gov、居民端:resi、运营端:oper)",groups ={AddUserInternalGroup.class} )
private String app; private String app;
/** /**
* PC端:web微信小程序:wxmp * PC端:web微信小程序:wxmp
*/ */
@NotBlank(message = "client不能为空(PC端:web、微信小程序:wxmp)") @NotBlank(message = "client不能为空(PC端:web、微信小程序:wxmp)",groups ={AddUserInternalGroup.class})
private String client; private String client;
} }

9
epmet-auth/src/main/java/com/epmet/dto/form/StaffOrgsFormDTO.java

@ -21,6 +21,10 @@ public class StaffOrgsFormDTO implements Serializable {
*/ */
public interface AddUserShowGroup extends CustomerClientShowGroup { public interface AddUserShowGroup extends CustomerClientShowGroup {
} }
public interface GetMyOrgByPassWordGroup extends CustomerClientShowGroup {
}
public interface GetMyOrgByLoginWxmp extends CustomerClientShowGroup{}
/** /**
* 手机号 * 手机号
*/ */
@ -30,7 +34,10 @@ public class StaffOrgsFormDTO implements Serializable {
/** /**
* 验证码 * 验证码
*/ */
@NotBlank(message="验证码不能为空") @NotBlank(message="验证码不能为空", groups = {GetMyOrgByLoginWxmp.class})
private String smsCode; private String smsCode;
@NotBlank(message = "密码不能为空",groups ={GetMyOrgByPassWordGroup.class})
private String password;
} }

10
epmet-auth/src/main/java/com/epmet/service/GovLoginService.java

@ -1,7 +1,6 @@
package com.epmet.service; package com.epmet.service;
import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.GovWxmpEnteOrgFormDTO; import com.epmet.dto.form.GovWxmpEnteOrgFormDTO;
import com.epmet.dto.form.GovWxmpFormDTO; import com.epmet.dto.form.GovWxmpFormDTO;
import com.epmet.dto.form.SendSmsCodeFormDTO; import com.epmet.dto.form.SendSmsCodeFormDTO;
@ -68,4 +67,13 @@ public interface GovLoginService {
* @param roleIds * @param roleIds
*/ */
void updateCachedRoles(String staffId, String orgId, List<String> roleIds); void updateCachedRoles(String staffId, String orgId, List<String> roleIds);
/**
* @return java.util.List<com.epmet.dto.result.StaffOrgsResultDTO>
* @param formDTO
* @author yinzuomei
* @description 6手机号密码获取组织
* @Date 2020/6/30 22:43
**/
List<StaffOrgsResultDTO> getMyOrgByPassword(StaffOrgsFormDTO formDTO);
} }

56
epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java

@ -9,6 +9,7 @@ import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.GovTokenDto; import com.epmet.commons.tools.security.dto.GovTokenDto;
import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.password.PasswordUtils;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.CpUserDetailRedis; import com.epmet.commons.tools.utils.CpUserDetailRedis;
import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.DateUtils;
@ -29,6 +30,7 @@ import com.epmet.jwt.JwtTokenUtils;
import com.epmet.redis.CaptchaRedis; import com.epmet.redis.CaptchaRedis;
import com.epmet.service.GovLoginService; import com.epmet.service.GovLoginService;
import com.epmet.service.LoginService; import com.epmet.service.LoginService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -320,6 +322,60 @@ public class GovLoginServiceImpl implements GovLoginService {
cpUserDetailRedis.set(userDetails, jwtTokenProperties.getExpire()); cpUserDetailRedis.set(userDetails, jwtTokenProperties.getExpire());
} }
@Override
public List<StaffOrgsResultDTO> getMyOrgByPassword(StaffOrgsFormDTO formDTO) {
//1、根据手机号查询到用户信息
Result<List<CustomerStaffDTO>> customerStaffResult = epmetUserFeignClient.checkCustomerStaff(formDTO.getMobile());
if (!customerStaffResult.success()) {
logger.error(String.format("手机密码登录异常,手机号[%s],code[%s],msg[%s]", formDTO.getMobile(), customerStaffResult.getCode(), customerStaffResult.getMsg()));
throw new RenException(customerStaffResult.getCode());
}
//2、密码是否正确
List<CustomerStaffDTO> customerStaffList=customerStaffResult.getData();
//3、查询用户所有的组织信息
List<String> customerIdList = new ArrayList<>();
//是否设置过密码
boolean havePasswordFlag=false;
//密码是否正确
boolean passwordRightFlag=false;
for (CustomerStaffDTO customerStaffDTO : customerStaffList) {
if(StringUtils.isNotBlank(customerStaffDTO.getPassword())){
havePasswordFlag=true;
}else{
logger.warn(String.format("当前用户:手机号%s,客户Id%s下未设置密码.",formDTO.getMobile(),customerStaffDTO.getCustomerId()));
}
if (!PasswordUtils.matches(formDTO.getPassword(), customerStaffDTO.getPassword())) {
logger.warn(String.format("当前用户:手机号%s,客户Id%s密码输入错误.",formDTO.getMobile(),customerStaffDTO.getCustomerId()));
}else{
logger.warn(String.format("当前用户:手机号%s,客户Id%s密码匹配正确.",formDTO.getMobile(),customerStaffDTO.getCustomerId()));
passwordRightFlag=true;
}
customerIdList.add(customerStaffDTO.getCustomerId());
}
//根据手机号查出来所有用户,密码都为空,表明用户未激活账户,未设置密码
if(!havePasswordFlag){
throw new RenException(EpmetErrorCode.PLEASE_ACTIVATE_ACCOUNT.getCode());
}
//密码错误
if(!passwordRightFlag){
throw new RenException(EpmetErrorCode.PASSWORD_ERROR.getCode());
}
StaffOrgFormDTO staffOrgFormDTO = new StaffOrgFormDTO();
staffOrgFormDTO.setCustomerIdList(customerIdList);
Result<List<StaffOrgsResultDTO>> result = govOrgFeignClient.getStaffOrgList(staffOrgFormDTO);
if(result.success()&&null!=result.getData()){
return result.getData();
}
logger.error(String .format("手机验证码获取组织,调用%s服务失败,入参手机号%s,密码%s,返回错误码%s,错误提示信息%s",
ServiceConstant.GOV_ORG_SERVER,
formDTO.getMobile(),
formDTO.getPassword(),
result.getCode(),
result.getMsg()));
return new ArrayList<>();
}
//保存登录日志 //保存登录日志
private Result saveStaffLoginRecord(GovWxmpEnteOrgFormDTO formDTO, String staffId, String openId) { private Result saveStaffLoginRecord(GovWxmpEnteOrgFormDTO formDTO, String staffId, String openId) {
StaffLoginAgencyRecordFormDTO staffLoginAgencyRecordFormDTO = new StaffLoginAgencyRecordFormDTO(); StaffLoginAgencyRecordFormDTO staffLoginAgencyRecordFormDTO = new StaffLoginAgencyRecordFormDTO();

1
epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java

@ -269,7 +269,6 @@ public class LoginServiceImpl implements LoginService {
//3、密码是否正确 //3、密码是否正确
//密码错误 //密码错误
if (!PasswordUtils.matches(formDTO.getPassword(), userInfoResult.getData().getPassWord())) { if (!PasswordUtils.matches(formDTO.getPassword(), userInfoResult.getData().getPassWord())) {
logger.error(String.format("手机号密码登陆失败,返回10004密码错误,用户输入密码%s,数据库密码%s",formDTO.getPassword(), userInfoResult.getData().getPassWord()));
throw new RenException(EpmetErrorCode.ERR10004.getCode()); throw new RenException(EpmetErrorCode.ERR10004.getCode());
} }
//4、生成token返回,且将TokenDto存到redis //4、生成token返回,且将TokenDto存到redis

2
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -31,6 +31,8 @@ public enum EpmetErrorCode {
LOSE_EFFICACY(8006,"此邀请链接已过期"), LOSE_EFFICACY(8006,"此邀请链接已过期"),
ERROR_PHONE(8007,"请输入正确的手机号"), ERROR_PHONE(8007,"请输入正确的手机号"),
PLEASE_LOGIN(8008,"请重新登录"), PLEASE_LOGIN(8008,"请重新登录"),
PASSWORD_ERROR(8009,"密码错误,请重新输入"),
PLEASE_ACTIVATE_ACCOUNT(8010,"请先使用验证码登录激活账户"),
MOBILE_HAS_BEEN_USED(8101, "该手机号已注册,请更换手机号或使用原绑定的微信账号登录"), MOBILE_HAS_BEEN_USED(8101, "该手机号已注册,请更换手机号或使用原绑定的微信账号登录"),
MOBILE_CODE_ERROR(8102, "验证码错误"), MOBILE_CODE_ERROR(8102, "验证码错误"),
AUTO_CONFIRM_FAILED(8103, "党员注册失败"), AUTO_CONFIRM_FAILED(8103, "党员注册失败"),

5
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/CustomerStaffDTO.java

@ -133,4 +133,9 @@ public class CustomerStaffDTO implements Serializable {
* 角色名称 * 角色名称
*/ */
private String roleName; private String roleName;
/**
* 登录密码
*/
private String password;
} }

5
epmet-user/epmet-user-server/src/main/java/com/epmet/entity/CustomerStaffEntity.java

@ -97,4 +97,9 @@ public class CustomerStaffEntity extends BaseEpmetEntity {
* 客户id * 客户id
*/ */
private String customerId; private String customerId;
/**
* 登录密码
*/
private String password;
} }

Loading…
Cancel
Save