Commit 6a999e74 authored by chenzhao's avatar chenzhao

农户登录注册修改

parent 04f4304f
......@@ -2,6 +2,8 @@ package com.yeejoin.amos.boot.module.hygf.api.util;
import org.springframework.beans.BeanUtils;
import java.lang.reflect.Field;
public class BeanDtoUtils {
......@@ -34,4 +36,37 @@ public class BeanDtoUtils {
return null;
}
}
public static <S, T> void copyPropertiesNonNull(S source, T target) {
if (source == null || target == null) {
throw new IllegalArgumentException("Source and target cannot be null");
}
// 使用反射获取源对象的所有属性
Field[] sourceFields = source.getClass().getDeclaredFields();
for (Field sourceField : sourceFields) {
if (sourceField.getName().equals("serialVersionUID")){
continue;
}
sourceField.setAccessible(true);
// 获取目标对象中对应的属性
try {
Field targetField = target.getClass().getDeclaredField(sourceField.getName());
targetField.setAccessible(true);
// 获取源对象的属性值
Object sourceValue = sourceField.get(source);
// 如果源对象的属性值不是 null,则复制到目标对象
if (sourceValue != null ) {
targetField.set(target, sourceValue);
}
} catch (NoSuchFieldException e) {
// 如果目标对象没有对应的属性,则忽略
} catch (IllegalAccessException e) {
// 如果访问属性时发生异常,则抛出运行时异常
throw new RuntimeException(e);
}
}
}
}
......@@ -6,12 +6,15 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.hygf.api.dto.MobileLoginParamDto;
import com.yeejoin.amos.boot.module.hygf.api.dto.PeasantHouseholdDto;
import com.yeejoin.amos.boot.module.hygf.api.dto.PeasantHouseholdWxDto;
import com.yeejoin.amos.boot.module.hygf.api.entity.PeasantHousehold;
import com.yeejoin.amos.boot.module.hygf.api.service.IWxService;
import com.yeejoin.amos.boot.module.hygf.api.util.BeanDtoUtils;
import com.yeejoin.amos.boot.module.hygf.biz.service.impl.HouseholdContractServiceImpl;
import com.yeejoin.amos.boot.module.hygf.biz.service.impl.PeasantHouseholdServiceImpl;
import com.yeejoin.amos.boot.module.hygf.biz.service.impl.SurveyInformationServiceImpl;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.robot.AmosRequestContext;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.RegionModel;
......@@ -21,9 +24,11 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
......@@ -107,52 +112,87 @@ public class PeasantHouseholdWxController extends BaseController {
return ResponseHelper.buildResponse(peasantHouseholdServiceImpl.wxUserLogin(mobileLoginParam));
}
@TycloudOperation (ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping (value = "/getRegisterPhone", method = RequestMethod.POST)
@ApiOperation (httpMethod = "POST", value = "获取手机号及回填信息", notes = "获取手机号及回填信息")
public ResponseModel<Map<String,Object>> getRegisterPhone(@ApiParam @RequestBody MobileLoginParamDto mobileLoginParam) {
log.info("微信授权注册入参 => {}", mobileLoginParam);
if (StringUtils.isBlank(mobileLoginParam.getAmosUserId())) {
// 扫码的userId为空, 则取默认值
mobileLoginParam.setAmosUserId(defaultUserId);
}
return ResponseHelper.buildResponse(peasantHouseholdServiceImpl.getRegisterPhone(mobileLoginParam));
}
@TycloudOperation (ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping (value = "/register", method = RequestMethod.POST)
@ApiOperation (httpMethod = "POST", value = "微信农户注册", notes = "微信农户注册")
public ResponseModel<PeasantHouseholdDto> wxUserRegister(@ApiParam @RequestBody MobileLoginParamDto mobileLoginParam) {
log.info("微信农户注册, 入参 => {}", mobileLoginParam);
PeasantHouseholdDto model = mobileLoginParam.getPeasantHouseholdDto();
validatedPeasantHouseholdDto(model);
AgencyUserModel userInfo = getUserInfo();
model.setAmosUserId(userInfo.getUserId());// 绑定平台userId
model.setPeasantHouseholdNo(peasantHouseholdServiceImpl.getPeasantHouseholdNo(model.getRegionalCompaniesSeq()));
model.setIsCertified(1);// 这里就实名认证
model.setSurveyOrNot(0);
model.setReview(0);
JSONArray regionName = getRegionName();
List<RegionModel> list = JSONArray.parseArray(regionName.toJSONString(), RegionModel.class);
// 处理项目地址
String area = "";
if (model.getProjectAddress() != null && model.getProjectAddress().size() != 0) {
for (Integer reg : model.getProjectAddress())
for (RegionModel re : list) {
if (re.getRegionCode().equals(Integer.valueOf(reg))) {
area = area + re.getRegionName() + "/";
public ResponseModel<PeasantHouseholdWxDto> wxUserRegister(@ApiParam @RequestBody MobileLoginParamDto mobileLoginParam) {
//注册并登录 生成农户信息表数据
PeasantHouseholdWxDto peasantHouseholdWxDto = peasantHouseholdServiceImpl.registerAndLogin(mobileLoginParam);
PeasantHousehold peasantHousehold = peasantHouseholdWxDto.getPeasantHousehold();
try {
log.info("微信农户注册, 入参 => {}", mobileLoginParam);
PeasantHouseholdDto model = mobileLoginParam.getPeasantHouseholdDto();
validatedPeasantHouseholdDto(model);
BeanDtoUtils.copyPropertiesNonNull(peasantHousehold,model);
model.setPeasantHouseholdNo(peasantHouseholdServiceImpl.getPeasantHouseholdNo(model.getRegionalCompaniesSeq()));
model.setIsCertified(1);// 这里就实名认证
model.setSurveyOrNot(0);
model.setReview(0);
JSONArray regionName = getRegionName();
List<RegionModel> list = JSONArray.parseArray(regionName.toJSONString(), RegionModel.class);
// 处理项目地址
String area = "";
if (model.getProjectAddress() != null && model.getProjectAddress().size() != 0) {
for (Integer reg : model.getProjectAddress())
for (RegionModel re : list) {
if (re.getRegionCode().equals(Integer.valueOf(reg))) {
area = area + re.getRegionName() + "/";
}
}
}
model.setProjectAddressName(area.length() > 2 ? area.substring(0, area.length() - 1) : area);
if ("1".equals(model.getIsPermanent()) || "true".equals(model.getIsPermanent())) {
model.setPermanentAddress(model.getProjectAddress());
model.setPermanentAddressDetail(model.getProjectAddressDetail());
model.setPermanentAddressName(area.length() > 2 ? area.substring(0, area.length() - 1) : area);
} else {
// 处理常住地址
String permanent = "";
if (model.getPermanentAddress() != null && model.getPermanentAddress().size() != 0) {
for (Integer reg : model.getPermanentAddress())
for (RegionModel re : list) {
if (re.getRegionCode().equals(Integer.valueOf(reg))) {
permanent = permanent + re.getRegionName() + "/";
model.setProjectAddressName(area.length() > 2 ? area.substring(0, area.length() - 1) : area);
if ("1".equals(model.getIsPermanent()) || "true".equals(model.getIsPermanent())) {
model.setPermanentAddress(model.getProjectAddress());
model.setPermanentAddressDetail(model.getProjectAddressDetail());
model.setPermanentAddressName(area.length() > 2 ? area.substring(0, area.length() - 1) : area);
} else {
// 处理常住地址
String permanent = "";
if (model.getPermanentAddress() != null && model.getPermanentAddress().size() != 0) {
for (Integer reg : model.getPermanentAddress())
for (RegionModel re : list) {
if (re.getRegionCode().equals(Integer.valueOf(reg))) {
permanent = permanent + re.getRegionName() + "/";
}
}
}
model.setPermanentAddressName(permanent.length() > 2 ? permanent.substring(0, permanent.length() - 1) : permanent);
model.setPermanentAddressName(permanent.length() > 2 ? permanent.substring(0, permanent.length() - 1) : permanent);
}
}
}
BeanDtoUtils.copyPropertiesNonNull(model,peasantHousehold);
PeasantHouseholdDto result = peasantHouseholdServiceImpl.savePeasantHousehold(model, null);
peasantHouseholdWxDto.setPeasantHousehold(peasantHousehold);
return ResponseHelper.buildResponse(peasantHouseholdWxDto);
}catch (Exception e) {
log.error(e.getMessage());
if (null != peasantHousehold) {
log.error("调用平台接口回滚注册的用户 => {}", e, peasantHousehold.getAmosUserId());
// 调用平台接口回滚注册的用户
RequestContext.setAppKey("AMOS_STUDIO");
RequestContext.setProduct("AMOS_STUDIO_WEB");
RequestContext.setToken(requestContext.getToken());
Privilege.agencyUserClient.multDeleteUser(peasantHousehold.getAmosUserId());
}
if (e instanceof BadRequest || e.getCause() instanceof BadRequest) {
throw new BadRequest(e.getMessage());
}
throw new BadRequest(e.getMessage());
}
PeasantHouseholdDto result = peasantHouseholdServiceImpl.savePeasantHousehold(model, userInfo);
return ResponseHelper.buildResponse(result);
}
public JSONArray getRegionName() {
......
package com.yeejoin.amos.boot.module.hygf.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -296,9 +297,9 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
public PeasantHouseholdWxDto wxUserLogin(MobileLoginParamDto wxDTO) {
// 通过手机号和验证码调用平台接口进行验证
String phoneNo = this.parsePhoneNo(wxDTO);
if (phoneNo == null) {
log.error("获取手机号失败!");
throw new BadRequest("微信授权失败, 请重新授权");
if (phoneNo == null) {
log.error("获取手机号失败!");
throw new BadRequest("解析手机号失败");
}
log.info("用户手机号码 => {} 开始登录", phoneNo);
wxDTO.setPhoneNo(phoneNo);
......@@ -318,12 +319,12 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
if (StringUtils.isEmpty(wxDTO.getAmosUserId())){
throw new RuntimeException("请扫描经销商开发人员区域二维码进行注册");
}
FeignClientResult<AgencyUserModel> registerUserModelRestult = doRegister(wxDTO);
if (registerUserModelRestult == null || registerUserModelRestult.getStatus() != 200) {
log.error("用户手机号码 => " + phoneNo + " 调用平台创建用户信息失败: " + registerUserModelRestult.getDevMessage());
throw new RuntimeException(registerUserModelRestult.getMessage());
}
registerUserModel = registerUserModelRestult.getResult();
// FeignClientResult<AgencyUserModel> registerUserModelRestult = doRegister(wxDTO);
// if (registerUserModelRestult == null || registerUserModelRestult.getStatus() != 200) {
// log.error("用户手机号码 => " + phoneNo + " 调用平台创建用户信息失败: " + registerUserModelRestult.getDevMessage());
// throw new RuntimeException(registerUserModelRestult.getMessage());
// }
// registerUserModel = registerUserModelRestult.getResult();
}
}
// endregion
......@@ -334,25 +335,25 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
// 查询农户信息
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(null));// 开发方code
peasantHousehold.setDeveloperId(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperId).orElse(null));// 开发方id
peasantHousehold.setDeveloperName(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperName).orElse(null));// 开发方名称
peasantHousehold.setDeveloper(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloper).orElse(null));// 开发人
peasantHousehold.setDeveloperUserId(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperUserId).orElse(null));
peasantHousehold.setRegionalCompaniesSeq(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesSeq).orElse(null));
peasantHousehold.setRegionalCompaniesCode(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesCode).orElse(null));
peasantHousehold.setRegionalCompaniesName(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesName).orElse(null));
peasantHousehold.setIsCertified(0);
// 过滤传给前端的数据
this.save(peasantHousehold);
}
// 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(null));// 开发方code
// peasantHousehold.setDeveloperId(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperId).orElse(null));// 开发方id
// peasantHousehold.setDeveloperName(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperName).orElse(null));// 开发方名称
// peasantHousehold.setDeveloper(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloper).orElse(null));// 开发人
// peasantHousehold.setDeveloperUserId(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperUserId).orElse(null));
// peasantHousehold.setRegionalCompaniesSeq(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesSeq).orElse(null));
// peasantHousehold.setRegionalCompaniesCode(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesCode).orElse(null));
// peasantHousehold.setRegionalCompaniesName(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesName).orElse(null));
// peasantHousehold.setIsCertified(0);
// // 过滤传给前端的数据
// this.save(peasantHousehold);
// }
/*else {
// 场景:扫码未实名认证的情况下, 关掉小程序第二次扫另一个区域经销商的二维码
//
......@@ -384,6 +385,79 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
}
}
public Map<String,Object> getRegisterPhone(MobileLoginParamDto wxDTO){
// 机器人token
RequestContext.setAppKey("AMOS_STUDIO");
RequestContext.setProduct("AMOS_STUDIO_WEB");
RequestContext.setToken(requestContext.getToken());
PeasantHouseholdDto peasantHouseholdDto = this.buildDefaultPeasantHouseholdDto(wxDTO.getAmosUserId(), wxDTO.getQrCodeType(), wxDTO.getPhoneNo());
String phoneNo = this.parsePhoneNo(wxDTO);
if (StringUtils.isNotEmpty(phoneNo)){
peasantHouseholdDto.setTelephone(phoneNo);
}else {
peasantHouseholdDto.setTelephone("");
}
return BeanUtil.beanToMap(peasantHouseholdDto);
}
public PeasantHouseholdWxDto registerAndLogin(MobileLoginParamDto wxDTO){
// 机器人token
RequestContext.setAppKey("AMOS_STUDIO");
RequestContext.setProduct("AMOS_STUDIO_WEB");
RequestContext.setToken(requestContext.getToken());
wxDTO.setPhoneNo(wxDTO.getPeasantHouseholdDto().getTelephone());
AgencyUserModel registerUserModel = null;
// region 判断有无在平台内部注册过用户 没有注册则去平台注册
FeignClientResult<LoginInfoModel> loginInfo = Privilege.agencyUserClient.getLoginInfo(wxDTO.getPhoneNo());
if (loginInfo != null && 200 == loginInfo.getStatus()) {
LoginInfoModel loginInfoModel = loginInfo.getResult();
if (loginInfoModel == null || !StringUtils.isNotBlank(loginInfoModel.getLoginId())) {
// 没有认证过, 去注册用户
if (StringUtils.isEmpty(wxDTO.getAmosUserId())){
throw new RuntimeException("请扫描经销商开发人员区域二维码进行注册");
}
FeignClientResult<AgencyUserModel> registerUserModelRestult = doRegister(wxDTO);
if (registerUserModelRestult == null || registerUserModelRestult.getStatus() != 200) {
log.error("用户手机号码 => " + wxDTO.getPhoneNo() + " 调用平台创建用户信息失败: " + registerUserModelRestult.getDevMessage());
throw new RuntimeException(registerUserModelRestult.getMessage());
}
registerUserModel = registerUserModelRestult.getResult();
}
}
// endregion
// 登录
PeasantHouseholdWxDto loginResult;
loginResult = doLogin(wxDTO, registerUserModel);
// 查询农户信息
List<PeasantHousehold> peasantHouseholds = this.query().eq("telephone", wxDTO.getPhoneNo()).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.setAmosUserId(registerUserModel.getUserId());
peasantHousehold.setTelephone(wxDTO.getPhoneNo());
PeasantHouseholdDto peasantHouseholdDto = buildDefaultPeasantHouseholdDto(wxDTO.getAmosUserId(), wxDTO.getQrCodeType(), wxDTO.getPhoneNo());
peasantHousehold.setDeveloperCode(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperCode).orElse(null));// 开发方code
peasantHousehold.setDeveloperId(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperId).orElse(null));// 开发方id
peasantHousehold.setDeveloperName(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperName).orElse(null));// 开发方名称
peasantHousehold.setDeveloper(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloper).orElse(null));// 开发人
peasantHousehold.setDeveloperUserId(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getDeveloperUserId).orElse(null));
peasantHousehold.setRegionalCompaniesSeq(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesSeq).orElse(null));
peasantHousehold.setRegionalCompaniesCode(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesCode).orElse(null));
peasantHousehold.setRegionalCompaniesName(Optional.ofNullable(peasantHouseholdDto).map(PeasantHouseholdDto::getRegionalCompaniesName).orElse(null));
peasantHousehold.setIsCertified(0);
this.save(peasantHousehold);
}
loginResult.setPeasantHousehold(peasantHousehold);
return loginResult;
}
/**
* 农户微信注册
*
......
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