Commit 552a1e8f authored by 杨阳's avatar 杨阳

接口改动 - 农户列表增加已认证限制条件

parent 17e8f5ec
package com.yeejoin.amos.boot.module.hygf.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 农户认证状态
*
* @author Provence
* @version v1.0
* @date 2023/8/25 10:17
*/
@Getter
@AllArgsConstructor
public enum PeasantHouseholdEnum {
未认证("未认证", 0),
已认证("已认证", 1);
/**
* 名称,描述
*/
private String name;
/**
* 编码
*/
private int code;
public static PeasantHouseholdEnum getNodeByCode(int code) {
PeasantHouseholdEnum peasantHouseholdEnum = null;
for (PeasantHouseholdEnum type : PeasantHouseholdEnum.values()) {
if (type.getCode() == code) {
peasantHouseholdEnum = type;
break;
}
}
return peasantHouseholdEnum;
}
}
......@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.hygf.api.Enum.PeasantHouseholdEnum;
import com.yeejoin.amos.boot.module.hygf.api.Enum.PhoneRegisterTypeEum;
import com.yeejoin.amos.boot.module.hygf.api.dto.MobileLoginParamDto;
import com.yeejoin.amos.boot.module.hygf.api.dto.PeasantHouseholdWxDto;
......@@ -227,7 +228,8 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
* 分页查询
*/
public Page<PeasantHouseholdDto> queryForPeasantHouseholdPage(Page<PeasantHouseholdDto> page,String developerCode,@Condition(Operator.like) String ownersName,Long developerId) {
Page<PeasantHouseholdDto> peasantHouseholdDtoPage = this.queryForPage(page, "rec_date", false,developerCode,ownersName,developerId);
int isCertified = PeasantHouseholdEnum.已认证.getCode();
Page<PeasantHouseholdDto> peasantHouseholdDtoPage = this.queryForPage(page, "rec_date", false,developerCode,ownersName,developerId,isCertified);
List<PeasantHouseholdDto> records = peasantHouseholdDtoPage.getRecords();
List<PeasantHouseholdDto> newRecords = records.stream().map(item -> {
if(item.getSurveyOrNot() != null){
......@@ -260,7 +262,8 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
* 列表查询 示例
*/
public List<PeasantHouseholdDto> queryForPeasantHouseholdList() {
return this.queryForList("" , false);
int isCertified = PeasantHouseholdEnum.已认证.getCode();
return this.queryForList("" , false, isCertified);
}
public Boolean doAuthenticate(Long sequenceNbr) {
......@@ -278,7 +281,8 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
// 通过手机号和验证码调用平台接口进行验证
String phoneNo = this.parsePhoneNo(wxDTO);
if (phoneNo == null) {
throw new BadRequest("获取手机号失败!");
log.error("获取手机号失败!");
throw new BadRequest("微信授权失败, 请重新授权");
}
log.info("用户手机号码 => {} 开始登录", phoneNo);
wxDTO.setPhoneNo(phoneNo);
......@@ -288,7 +292,7 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
RequestContext.setToken(requestContext.getToken());
AgencyUserModel registerUserModel = null;
// 判断有无在平台内部注册过用户
// region 判断有无在平台内部注册过用户 没有注册则去平台注册
FeignClientResult<LoginInfoModel> loginInfo = Privilege.agencyUserClient.getLoginInfo(phoneNo);
if (loginInfo != null && 200 == loginInfo.getStatus()) {
......@@ -296,39 +300,62 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
if (loginInfoModel == null || !StringUtils.isNotBlank(loginInfoModel.getLoginId())) {
// 没有认证过, 去注册用户
FeignClientResult<AgencyUserModel> registerUserModelRestult = doRegister(wxDTO);
if (registerUserModelRestult != null && registerUserModelRestult.getStatus() != 200) {
log.error("调用平台创建用户信息失败:{}" + registerUserModelRestult.getDevMessage());
throw new BadRequest(registerUserModelRestult.getMessage());
if (registerUserModelRestult == null || registerUserModelRestult.getStatus() != 200) {
log.error("用户手机号码 => " + phoneNo + " 调用平台创建用户信息失败: " + registerUserModelRestult.getDevMessage());
throw new RuntimeException(registerUserModelRestult.getMessage());
}
registerUserModel = registerUserModelRestult.getResult();
}
}
// endregion
// 登录
PeasantHouseholdWxDto loginResult = doLogin(wxDTO, registerUserModel);
// 查询农户信息
List<PeasantHousehold> peasantHouseholds = this.query().eq("telephone", phoneNo).orderByDesc("rec_date").list();
PeasantHousehold peasantHousehold = peasantHouseholds.size() > 0 ? peasantHouseholds.get(0) : null;
if (null == peasantHousehold) {
peasantHousehold = new PeasantHousehold();
peasantHousehold.setIsCertified(0);
peasantHousehold.setSurveyOrNot(0);
peasantHousehold.setReview(0);
peasantHousehold.setTelephone(phoneNo);
PeasantHouseholdDto peasantHouseholdDto = buildDefaultPeasantHouseholdDto(wxDTO.getAmosUserId(), wxDTO.getQrCodeType(), phoneNo);
peasantHousehold.setDeveloperCode(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperCode).orElse(""));// 开发方code
peasantHousehold.setDeveloperId(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperId).orElse(null));// 开发方id
peasantHousehold.setDeveloperName(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperName).orElse(""));// 开发方名称
peasantHousehold.setDeveloper(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloper).orElse(""));// 开发人
peasantHousehold.setRegionalCompaniesSeq(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesSeq).orElse(null));
peasantHousehold.setRegionalCompaniesCode(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesCode).orElse(""));
peasantHousehold.setRegionalCompaniesName(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesName).orElse(""));
peasantHousehold.setIsCertified(0);
// 过滤传给前端的数据
this.save(peasantHousehold);
PeasantHouseholdWxDto loginResult;
try {
loginResult = doLogin(wxDTO, registerUserModel);
// 查询农户信息
List<PeasantHousehold> peasantHouseholds = this.query().eq("telephone", phoneNo).orderByDesc("rec_date").list();
PeasantHousehold peasantHousehold = peasantHouseholds.size() > 0 ? peasantHouseholds.get(0) : null;
if (null == peasantHousehold) {
peasantHousehold = new PeasantHousehold();
peasantHousehold.setIsCertified(0);
peasantHousehold.setSurveyOrNot(0);
peasantHousehold.setReview(0);
peasantHousehold.setTelephone(phoneNo);
PeasantHouseholdDto peasantHouseholdDto = buildDefaultPeasantHouseholdDto(wxDTO.getAmosUserId(), wxDTO.getQrCodeType(), phoneNo);
peasantHousehold.setDeveloperCode(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperCode).orElse(""));// 开发方code
peasantHousehold.setDeveloperId(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperId).orElse(null));// 开发方id
peasantHousehold.setDeveloperName(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperName).orElse(""));// 开发方名称
peasantHousehold.setDeveloper(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloper).orElse(""));// 开发人
peasantHousehold.setRegionalCompaniesSeq(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesSeq).orElse(null));
peasantHousehold.setRegionalCompaniesCode(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesCode).orElse(""));
peasantHousehold.setRegionalCompaniesName(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesName).orElse(""));
peasantHousehold.setIsCertified(0);
// 过滤传给前端的数据
this.save(peasantHousehold);
log.debug("返回给前端数据, 手机号码 => {}, 农户信息 => {}", phoneNo, peasantHousehold);
// 装载农户信息
loginResult.setPeasantHousehold(peasantHousehold);
return loginResult;
}
/*else {
// 场景:扫码未实名认证的情况下, 关掉小程序第二次扫另一个区域经销商的二维码
//
wxDTO.getAmosUserId();// 二维码携带的经销商userId
PeasantHouseholdDto peasantHouseholdDto = buildDefaultPeasantHouseholdDto(wxDTO.getAmosUserId(), wxDTO.getQrCodeType(), phoneNo);
Long newRegionalCompaniesSeq = Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesSeq).orElse(null);
if (newRegionalCompaniesSeq.compareTo()) {
throw new RuntimeException("");
}
}*/
} catch (Exception e) {
log.error("调用平台接口回滚注册的用户 => {}", e, registerUserModel.getUserId());
// 调用平台接口回滚注册的用户
Privilege.agencyUserClient.multDeleteUser(registerUserModel.getUserId());
if (e instanceof BadRequest || e.getCause() instanceof BadRequest) {
throw new BadRequest(e.getMessage());
}
throw new RuntimeException(e.getMessage());
}
log.debug("返回给前端数据, 手机号码 => {}, 农户信息 => {}", phoneNo, peasantHousehold);
// 装载农户信息
loginResult.setPeasantHousehold(peasantHousehold);
return loginResult;
}
......@@ -399,7 +426,8 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
RequestContext.setAppKey("studio_normalapp_5133538");
String phoneNo = param.getPhoneNo();
if (phoneNo == null) {
throw new BadRequest("获取手机号失败!");
log.error("获取手机号失败!");
throw new BadRequest("微信授权失败, 请重新授权");
}
FeignClientResult loginResult;
if (!param.getIsNeedVerify() || ("dev".equals(loginEnvironment) && "666666".equals(param.getVerifyCode()))) {
......@@ -417,24 +445,24 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
loginResult = Privilege.authClient.mobileVerifyCode(model);
}
if (loginResult == null || loginResult.getStatus() != 200) {
log.error("远程调用Privilege服务失败: " + loginResult.getDevMessage());
log.error("手机号码 => " + phoneNo + " 登录失败: " + loginResult.getDevMessage());
String message = StringUtils.isEmpty(loginResult.getMessage()) ? "账号或密码错误" : loginResult.getMessage();
throw new RuntimeException(message);
}
HashMap resultMap = (HashMap) loginResult.getResult();
String token = resultMap.get("token").toString();
// 设置登录信息
RequestContext.setToken(token);
// redisUtils.set(model.getPhone() + "_token", token, TOKEN_TIME);
// 设置登录信息
String userId = (String) resultMap.get("userId");
// 组装数据
PeasantHouseholdWxDto peasantHouseholdWxDto = new PeasantHouseholdWxDto();
peasantHouseholdWxDto.setExpire(Long.valueOf((String) resultMap.get("expire")));
peasantHouseholdWxDto.setUserId(userId);
// 判断用户是否刚刚注册过
// 组装authInfo数据
Map<String, Object> authInfo = new HashMap<>();
authInfo.put("token", resultMap.get("token"));
authInfo.put("personId", resultMap.get("userId"));
authInfo.put("token", token);
authInfo.put("personId", userId);
/*authInfo.put("appKey", "STUDIO_APP_MOBILE");
authInfo.put("product", "studio_normalapp_5133538");*/
peasantHouseholdWxDto.setAuthInfo(authInfo);
......@@ -496,9 +524,9 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
* @throws
*/
private PeasantHouseholdDto buildDefaultPeasantHouseholdDto(String userId, String qrCodeType, String phoneNo) {
// 获取区域
// 这里的userId 是解析区域二维码得到的参数, 如果第一次扫码进来会创建一条农户数据然后关联起来
if (StringUtils.isBlank(userId)) {
throw new BadRequest("区域二维码userId不能为空");
throw new BadRequest("请通过区域二维码扫码进入");
}
FeignClientResult<AgencyUserModel> userInfoResult = Privilege.agencyUserClient.queryByUserId(userId);// 获取用户
if (userInfoResult == null || userInfoResult.getStatus() != 200) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment