diff --git a/epmet-auth/deploy/docker-compose-dev.yml b/epmet-auth/deploy/docker-compose-dev.yml index 3431acda04..82ce281383 100644 --- a/epmet-auth/deploy/docker-compose-dev.yml +++ b/epmet-auth/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-auth-server: container_name: epmet-auth-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/epmet-auth:0.3.26 + image: 192.168.1.130:10080/epmet-cloud-dev/epmet-auth:0.3.28 ports: - "8081:8081" network_mode: host # 使用现有网络 diff --git a/epmet-auth/pom.xml b/epmet-auth/pom.xml index 4ef8116c0e..07f4d96815 100644 --- a/epmet-auth/pom.xml +++ b/epmet-auth/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.26 + 0.3.28 com.epmet epmet-cloud diff --git a/epmet-auth/src/main/java/com/epmet/controller/GovLoginController.java b/epmet-auth/src/main/java/com/epmet/controller/GovLoginController.java index 1eb86003bd..386e162c02 100644 --- a/epmet-auth/src/main/java/com/epmet/controller/GovLoginController.java +++ b/epmet-auth/src/main/java/com/epmet/controller/GovLoginController.java @@ -36,7 +36,7 @@ public class GovLoginController { **/ @PostMapping(value = "/loginwxmp/loginbywxcode") public Result loginByWxCode(@RequestBody GovWxmpFormDTO formDTO) { - ValidatorUtils.validateEntity(formDTO); + ValidatorUtils.validateEntity(formDTO,LoginCommonFormDTO.AddUserInternalGroup.class); UserTokenResultDTO userTokenResultDTO=govLoginService.loginByWxCode(formDTO); return new Result().ok(userTokenResultDTO); } @@ -64,7 +64,7 @@ public class GovLoginController { **/ @PostMapping(value = "/loginwxmp/getmyorg") public Result> getmyorg(@RequestBody StaffOrgsFormDTO formDTO) { - ValidatorUtils.validateEntity(formDTO,StaffOrgsFormDTO.AddUserShowGroup.class); + ValidatorUtils.validateEntity(formDTO,StaffOrgsFormDTO.AddUserShowGroup.class, StaffOrgsFormDTO.GetMyOrgByLoginWxmp.class); List staffOrgs=govLoginService.getMyOrg(formDTO); return new Result>().ok(staffOrgs); } @@ -78,7 +78,7 @@ public class GovLoginController { **/ @PostMapping(value = "/loginwxmp/enterorg") public Result enterOrg(@RequestBody GovWxmpEnteOrgFormDTO formDTO) { - ValidatorUtils.validateEntity(formDTO); + ValidatorUtils.validateEntity(formDTO,GovWxmpEnteOrgFormDTO.AddUserShowGroup.class,GovWxmpEnteOrgFormDTO.AddUserInternalGroup.class); UserTokenResultDTO userTokenResultDTO=govLoginService.enterOrg(formDTO); return new Result().ok(userTokenResultDTO); } @@ -107,5 +107,19 @@ public class GovLoginController { govLoginService.updateCachedRoles(form.getStaffId(), form.getOrgId(), form.getRoleIds()); return new Result(); } + + /** + * @param formDTO + * @return com.epmet.commons.tools.utils.Result> + * @author yinzuomei + * @description 6、手机号密码获取组织 + * @Date 2020/6/30 22:43 + **/ + @PostMapping(value = "/getmyorgbypassword") + public Result> getMyOrgByPassword(@RequestBody StaffOrgsFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, StaffOrgsFormDTO.AddUserShowGroup.class, StaffOrgsFormDTO.GetMyOrgByPassWordGroup.class); + List staffOrgs = govLoginService.getMyOrgByPassword(formDTO); + return new Result>().ok(staffOrgs); + } } diff --git a/epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpEnteOrgFormDTO.java b/epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpEnteOrgFormDTO.java index 855313c695..e68df77236 100644 --- a/epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpEnteOrgFormDTO.java +++ b/epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpEnteOrgFormDTO.java @@ -1,5 +1,6 @@ package com.epmet.dto.form; +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -12,28 +13,30 @@ import java.io.Serializable; */ @Data public class GovWxmpEnteOrgFormDTO implements Serializable { + public interface AddUserInternalGroup {} + public interface AddUserShowGroup extends CustomerClientShowGroup {} /** * wxCode */ - @NotBlank(message = "wxCode不能为空") + @NotBlank(message = "wxCode不能为空",groups = {AddUserInternalGroup.class}) private String wxCode; /** * 手机号 */ - @NotBlank(message = "手机号不能为空") + @NotBlank(message = "手机号不能为空",groups = {AddUserShowGroup.class}) private String mobile; /** * 选择的组织所属的id */ - @NotBlank(message = "客户id不能为空") + @NotBlank(message = "客户id不能为空",groups = {AddUserInternalGroup.class}) private String customerId; /** * 选择的要进入的组织(根组织id) */ - @NotBlank(message = "组织id不能为空") + @NotBlank(message = "组织id不能为空",groups = {AddUserInternalGroup.class}) private String rootAgencyId; } diff --git a/epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpFormDTO.java b/epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpFormDTO.java index 4eb52a4bf7..8bab423dec 100644 --- a/epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpFormDTO.java +++ b/epmet-auth/src/main/java/com/epmet/dto/form/GovWxmpFormDTO.java @@ -13,10 +13,11 @@ import java.io.Serializable; @Data public class GovWxmpFormDTO extends LoginCommonFormDTO implements Serializable { private static final long serialVersionUID = -207861963128774742L; + /** * wxCode */ - @NotBlank(message = "wxCode不能为空") + @NotBlank(message = "wxCode不能为空",groups = {AddUserInternalGroup.class}) private String wxCode; } diff --git a/epmet-auth/src/main/java/com/epmet/dto/form/LoginByPassWordFormDTO.java b/epmet-auth/src/main/java/com/epmet/dto/form/LoginByPassWordFormDTO.java index 89e751e249..0e05cb7787 100644 --- a/epmet-auth/src/main/java/com/epmet/dto/form/LoginByPassWordFormDTO.java +++ b/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; /** * 密码 */ - @NotBlank(message = "密码不能为空") + @NotBlank(message = "密码不能为空",groups = {AddUserShowGroup.class}) private String password; /** * 验证码 */ - @NotBlank(message="验证码不能为空") + @NotBlank(message="验证码不能为空",groups = {AddUserShowGroup.class}) private String captcha; /** * 唯一标识 */ - @NotBlank(message="唯一标识不能为空") + @NotBlank(message="唯一标识不能为空",groups = {AddUserInternalGroup.class}) private String uuid; } diff --git a/epmet-auth/src/main/java/com/epmet/dto/form/LoginByWxCodeFormDTO.java b/epmet-auth/src/main/java/com/epmet/dto/form/LoginByWxCodeFormDTO.java index 6a6559df59..8ddfe9edff 100644 --- a/epmet-auth/src/main/java/com/epmet/dto/form/LoginByWxCodeFormDTO.java +++ b/epmet-auth/src/main/java/com/epmet/dto/form/LoginByWxCodeFormDTO.java @@ -17,7 +17,7 @@ public class LoginByWxCodeFormDTO extends LoginCommonFormDTO implements Serializ /** * 微信code */ - @NotBlank(message = "wxCode不能为空") + @NotBlank(message = "wxCode不能为空",groups = {AddUserInternalGroup.class}) private String wxCode; /** diff --git a/epmet-auth/src/main/java/com/epmet/dto/form/LoginCommonFormDTO.java b/epmet-auth/src/main/java/com/epmet/dto/form/LoginCommonFormDTO.java index af4df891c5..7339592d7a 100644 --- a/epmet-auth/src/main/java/com/epmet/dto/form/LoginCommonFormDTO.java +++ b/epmet-auth/src/main/java/com/epmet/dto/form/LoginCommonFormDTO.java @@ -1,5 +1,6 @@ package com.epmet.dto.form; +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -13,16 +14,17 @@ import java.io.Serializable; @Data public class LoginCommonFormDTO implements Serializable { private static final long serialVersionUID = -5582224784914714820L; - + public interface AddUserInternalGroup {} + public interface AddUserShowGroup extends CustomerClientShowGroup {} /** * 政府端:gov、居民端:resi、运营端:oper */ - @NotBlank(message = "app不能为空(政府端:gov、居民端:resi、运营端:oper)") + @NotBlank(message = "app不能为空(政府端:gov、居民端:resi、运营端:oper)",groups ={AddUserInternalGroup.class} ) private String app; /** * PC端:web、微信小程序:wxmp */ - @NotBlank(message = "client不能为空(PC端:web、微信小程序:wxmp)") + @NotBlank(message = "client不能为空(PC端:web、微信小程序:wxmp)",groups ={AddUserInternalGroup.class}) private String client; } diff --git a/epmet-auth/src/main/java/com/epmet/dto/form/StaffOrgsFormDTO.java b/epmet-auth/src/main/java/com/epmet/dto/form/StaffOrgsFormDTO.java index e2f32fd286..3faeed713e 100644 --- a/epmet-auth/src/main/java/com/epmet/dto/form/StaffOrgsFormDTO.java +++ b/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 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; + + @NotBlank(message = "密码不能为空",groups ={GetMyOrgByPassWordGroup.class}) + private String password; } diff --git a/epmet-auth/src/main/java/com/epmet/service/GovLoginService.java b/epmet-auth/src/main/java/com/epmet/service/GovLoginService.java index a07565cf50..ea6329ceda 100644 --- a/epmet-auth/src/main/java/com/epmet/service/GovLoginService.java +++ b/epmet-auth/src/main/java/com/epmet/service/GovLoginService.java @@ -1,7 +1,6 @@ package com.epmet.service; 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.GovWxmpFormDTO; import com.epmet.dto.form.SendSmsCodeFormDTO; @@ -68,4 +67,13 @@ public interface GovLoginService { * @param roleIds */ void updateCachedRoles(String staffId, String orgId, List roleIds); + + /** + * @return java.util.List + * @param formDTO + * @author yinzuomei + * @description 6、手机号密码获取组织 + * @Date 2020/6/30 22:43 + **/ + List getMyOrgByPassword(StaffOrgsFormDTO formDTO); } diff --git a/epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java b/epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java index 5c8f90e81e..56720ae8b7 100644 --- a/epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java +++ b/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.security.dto.GovTokenDto; 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.CpUserDetailRedis; import com.epmet.commons.tools.utils.DateUtils; @@ -29,6 +30,7 @@ import com.epmet.jwt.JwtTokenUtils; import com.epmet.redis.CaptchaRedis; import com.epmet.service.GovLoginService; import com.epmet.service.LoginService; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -270,6 +272,9 @@ public class GovLoginServiceImpl implements GovLoginService { throw new RenException(customerStaffDTOResult.getCode()); } CustomerStaffDTO customerStaff = customerStaffDTOResult.getData(); + if(null==customerStaff.getPassword()||"".equals(customerStaff.getPassword().trim())){ + throw new RenException(EpmetErrorCode.PLEASE_ACTIVATE_CURRENT_CUSTOMER_ACCOUNT.getCode()); + } //2、解析微信用户 WxMaJscode2SessionResult wxMaJscode2SessionResult = loginService.getWxMaUser(LoginConstant.APP_GOV, formDTO.getWxCode()); //3、记录staff_wechat,并记录用户激活状态,激活时间 @@ -320,6 +325,60 @@ public class GovLoginServiceImpl implements GovLoginService { cpUserDetailRedis.set(userDetails, jwtTokenProperties.getExpire()); } + @Override + public List getMyOrgByPassword(StaffOrgsFormDTO formDTO) { + //1、根据手机号查询到用户信息 + Result> 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 customerStaffList=customerStaffResult.getData(); + //3、查询用户所有的组织信息 + List 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> 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) { StaffLoginAgencyRecordFormDTO staffLoginAgencyRecordFormDTO = new StaffLoginAgencyRecordFormDTO(); diff --git a/epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java b/epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java index 92905f4848..b162acd39a 100644 --- a/epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java +++ b/epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java @@ -269,7 +269,6 @@ public class LoginServiceImpl implements LoginService { //3、密码是否正确 //密码错误 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()); } //4、生成token返回,且将TokenDto存到redis diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java index 45fdce2511..0d17ca70b9 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java @@ -31,6 +31,9 @@ public enum EpmetErrorCode { LOSE_EFFICACY(8006,"此邀请链接已过期"), ERROR_PHONE(8007,"请输入正确的手机号"), PLEASE_LOGIN(8008,"请重新登录"), + PASSWORD_ERROR(8009,"密码错误,请重新输入"), + PLEASE_ACTIVATE_ACCOUNT(8010,"请先使用验证码登录激活账户"), + PLEASE_ACTIVATE_CURRENT_CUSTOMER_ACCOUNT(8011,"当前组织下,账号未激活,请先使用验证码登录"), MOBILE_HAS_BEEN_USED(8101, "该手机号已注册,请更换手机号或使用原绑定的微信账号登录"), MOBILE_CODE_ERROR(8102, "验证码错误"), AUTO_CONFIRM_FAILED(8103, "党员注册失败"), diff --git a/epmet-module/data-report/data-report-server/deploy/docker-compose-dev.yml b/epmet-module/data-report/data-report-server/deploy/docker-compose-dev.yml index 59f372c5d1..48d193c2d2 100644 --- a/epmet-module/data-report/data-report-server/deploy/docker-compose-dev.yml +++ b/epmet-module/data-report/data-report-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: data-report-server: container_name: data-report-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/data-report-server:0.3.14 + image: 192.168.1.130:10080/epmet-cloud-dev/data-report-server:0.3.15 ports: - "8109:8109" network_mode: host # 使用现有网络 diff --git a/epmet-module/data-report/data-report-server/pom.xml b/epmet-module/data-report/data-report-server/pom.xml index 2b27fda73a..206fcd0f9b 100644 --- a/epmet-module/data-report/data-report-server/pom.xml +++ b/epmet-module/data-report/data-report-server/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - 0.3.14 + 0.3.15 data-report-server diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/service/user/impl/UserAnalysisServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/service/user/impl/UserAnalysisServiceImpl.java index 8c3f008f55..bedde8bf91 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/service/user/impl/UserAnalysisServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/service/user/impl/UserAnalysisServiceImpl.java @@ -289,8 +289,7 @@ public class UserAnalysisServiceImpl implements UserAnalysisService { break; } } - logger.info(String.format("找到当前网格(gridId=%s,gridName=%s)对应的数据,当前循环",dimInitResultDto.getGridId(),dimInitResultDto.getName())); - break; + logger.debug(String.format("找到当前网格(gridId=%s,gridName=%s)对应的数据,当前循环",dimInitResultDto.getGridId(),dimInitResultDto.getName())); } if(!flag){ logger.error(String.format("直属网格注册用户数缺少记录:date_id=%s,gridId=%s",formDTO.getDateId(),dimInitResultDto.getGridId())); diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/CustomerStaffDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/CustomerStaffDTO.java index a247d4e450..71efe0c029 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/CustomerStaffDTO.java +++ b/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 password; } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/deploy/docker-compose-dev.yml b/epmet-user/epmet-user-server/deploy/docker-compose-dev.yml index 62e0f89277..cfb884d0b4 100644 --- a/epmet-user/epmet-user-server/deploy/docker-compose-dev.yml +++ b/epmet-user/epmet-user-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-user-server: container_name: epmet-user-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/epmet-user-server:0.3.65 + image: 192.168.1.130:10080/epmet-cloud-dev/epmet-user-server:0.3.66 ports: - "8087:8087" network_mode: host # 不会创建新的网络 diff --git a/epmet-user/epmet-user-server/pom.xml b/epmet-user/epmet-user-server/pom.xml index 84957941b8..9adaadd7e9 100644 --- a/epmet-user/epmet-user-server/pom.xml +++ b/epmet-user/epmet-user-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.65 + 0.3.66 com.epmet epmet-user diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/CustomerStaffEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/CustomerStaffEntity.java index 7c49290044..a352125fa3 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/CustomerStaffEntity.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/CustomerStaffEntity.java @@ -97,4 +97,9 @@ public class CustomerStaffEntity extends BaseEpmetEntity { * 客户id */ private String customerId; + + /** + * 登录密码 + */ + private String password; }