Commit a37f2347 authored by 杨阳's avatar 杨阳

1. 登录方式更换成 平台的微信登录

2. 认证字段返回bug fixed 3. 登录权限 bug修复 4. 农户信息入库问题测试
parent 23d6dfe7
......@@ -19,6 +19,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
......@@ -143,7 +144,7 @@ public class PeasantHouseholdWxController extends BaseController {
}
}
model.setProjectAddressName(area.length() > 2 ? area.substring(0, area.length() - 2) : area);
if ("1".equals(model.getIsPermanent())) {
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() - 2) : area);
......@@ -203,6 +204,7 @@ public class PeasantHouseholdWxController extends BaseController {
@RequestParam (value = "width", required = false, defaultValue = "350") String width,
HttpServletResponse response) {
AgencyUserModel userInfo = getUserInfo();
log.info("获取区域经销商二维码, userId:{}", userInfo.getUserId());
String accessToken = wxService.getAccessToken();
// 生成二维码
String page = miniprogramLoginPage;
......
......@@ -25,6 +25,7 @@ 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.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.privilege.model.IdPasswordAuthModel;
import com.yeejoin.amos.feign.privilege.model.LoginInfoModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
......@@ -112,6 +113,9 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
@Value("${farmer.roleId:1678211468450885633}")
private String farmerRoleId;
@Value("${farmer.registerPassword}")
private String registerPassword;
@Autowired
private RedisUtils redisUtils;
......@@ -143,7 +147,7 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
UnitInfoServiceImpl unitInfoServiceImpl;
@Autowired
AmosRequestContext requestContext;
public static final String SECRETKEY = "tzs";
public static final String SECRETKEY = "qaz";
@Transactional (rollbackFor = Exception.class)
public PeasantHouseholdDto savePeasantHousehold(PeasantHouseholdDto model) {
......@@ -264,22 +268,31 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
if (phoneNo == null) {
throw new BadRequest("获取手机号失败!");
}
log.debug("getPhoneNo:{}", phoneNo);
log.info("用户手机号码 => {} 开始登录", phoneNo);
wxDTO.setPhoneNo(phoneNo);
//
RequestContext.setAppKey("AMOS_STUDIO");
RequestContext.setProduct("AMOS_STUDIO_WEB");
RequestContext.setToken(requestContext.getToken());
// 在平台里注册过但是没有农户信息
AgencyUserModel registerUserModel = null;
// 判断有无在平台内部注册过用户
FeignClientResult<LoginInfoModel> loginInfo = Privilege.agencyUserClient.getLoginInfo(phoneNo);
if (200 == loginInfo.getStatus()) {
if (loginInfo != null && 200 == loginInfo.getStatus()) {
LoginInfoModel loginInfoModel = loginInfo.getResult();
if (loginInfoModel == null || !StringUtils.isNotBlank(loginInfoModel.getLoginId())) {
log.debug("没有发现用户,开始注册:{}", phoneNo);
doRegister(wxDTO);
// 没有认证过, 去注册用户
FeignClientResult<AgencyUserModel> registerUserModelRestult = doRegister(wxDTO);
if (registerUserModelRestult != null && registerUserModelRestult.getStatus() != 200) {
log.error("调用平台创建用户信息失败:{}" + registerUserModelRestult.getDevMessage());
throw new BadRequest(registerUserModelRestult.getMessage());
}
registerUserModel = registerUserModelRestult.getResult();
}
}
// 登录
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;
......@@ -289,7 +302,7 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
peasantHousehold.setIsCertified(0);
peasantHousehold.setSurveyOrNot(0);
peasantHousehold.setReview(0);
}
peasantHousehold.setTelephone(phoneNo);
PeasantHouseholdDto peasantHouseholdDto = buildDefaultPeasantHouseholdDto(wxDTO.getUserId(), wxDTO.getQrCodeType(), phoneNo);
peasantHousehold.setDeveloperCode(peasantHouseholdDto.getDeveloperCode());// 开发方code
peasantHousehold.setDeveloperId(peasantHouseholdDto.getDeveloperId());// 开发方id
......@@ -298,7 +311,9 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
peasantHousehold.setRegionalCompaniesSeq(peasantHouseholdDto.getRegionalCompaniesSeq());
peasantHousehold.setRegionalCompaniesCode(peasantHouseholdDto.getRegionalCompaniesCode());
peasantHousehold.setRegionalCompaniesName(peasantHouseholdDto.getRegionalCompaniesName());
PeasantHouseholdWxDto loginResult = doLogin(wxDTO);
// 过滤传给前端的数据
}
log.info("返回给前端数据, 手机号码 => {}, 农户信息 => {}", phoneNo, peasantHousehold);
// 装载农户信息
loginResult.setPeasantHousehold(peasantHousehold);
return loginResult;
......@@ -314,20 +329,28 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
* @throws
* @date 2023/8/21 18:05
*/
public AgencyUserModel doRegister(MobileLoginParamDto mobileLoginParamDto) {
List<RoleModel> userRoleList = new ArrayList<>();
public FeignClientResult<AgencyUserModel> doRegister(MobileLoginParamDto mobileLoginParamDto) {
CompanyModel companyInfo = new CompanyModel();
companyInfo.setSequenceNbr(orgSequenceNbr);
companyInfo.setCompanyOrgCode(Integer.valueOf(orgCode));
RoleModel allRoleList = null;
FeignClientResult<RoleModel> roleListResult = Privilege.roleClient.seleteOne(Long.valueOf(farmerRoleId));
if (roleListResult != null && roleListResult.getStatus() == 200) {
allRoleList = roleListResult.getResult();
}
List<RoleModel> userRoleList = new ArrayList<>();
List<String> split = Arrays.asList(StringUtils.split(appCodes, ','));
Map<Long, List<Long>> roleSeqMap = new HashMap<>();
Map<Long, List<RoleModel>> orgRoles = new HashMap<>();
// 提前建立好一个默认角色
List<Long> roleIds = new ArrayList<>();
userRoleList.add(allRoleList);
roleIds.add(Long.valueOf(farmerRoleId));
roleSeqMap.put(orgSequenceNbr, roleIds);
orgRoles.put(orgSequenceNbr, userRoleList);
//
String custPassword = com.yeejoin.precontrol.common.utils.DesUtil.encode("ns"+mobileLoginParamDto.getPhoneNo(), SECRETKEY);
roleSeqMap.put(companyInfo.getSequenceNbr(), roleIds);
orgRoles.put(companyInfo.getSequenceNbr(), userRoleList);
// 初始默认密码 a1234560
String custPassword = com.yeejoin.precontrol.common.utils.DesUtil.encode(registerPassword, SECRETKEY);
AgencyUserModel agencyUserModel = new AgencyUserModel();
agencyUserModel.setUserName(mobileLoginParamDto.getPhoneNo());
agencyUserModel.setRealName(mobileLoginParamDto.getPhoneNo());
......@@ -339,13 +362,19 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
agencyUserModel.setAppCodes(split);
agencyUserModel.setOrgRoles(orgRoles);
agencyUserModel.setOrgRoleSeqs(roleSeqMap);
log.info("agencyUserModel:{}", agencyUserModel);
FeignClientResult<AgencyUserModel> userResult = Privilege.agencyUserClient.create(agencyUserModel);
if (userResult.getStatus() != 200) {
log.error("调用平台创建用户信息失败:{}" + userResult.getDevMessage());
throw new BadRequest(userResult.getMessage());
log.debug("注册用户入参, agencyUserModel => {}", agencyUserModel);
FeignClientResult<AgencyUserModel> agencyUserResult = Privilege.agencyUserClient.create(agencyUserModel);
try {
FeignClientResult<LoginInfoModel> wechatResult = Privilege.agencyUserClient.createWechatLoginInfo(agencyUserResult.getResult());
log.info("wechatResult:{}", wechatResult);
} catch (Exception e) {
e.printStackTrace();
}
return userResult.getResult();
/* agencyUserModel.setOpenId("openid");
agencyUserModel.setVerifyCode(com.yeejoin.precontrol.common.utils.DesUtil.encode(mobileLoginParamDto.getPhoneNo(), SECRETKEY));
FeignClientResult<AgencyUserModel> wechatResult = Privilege.agencyUserClient.wechatRegister(agencyUserModel);*/
return agencyUserResult;
}
/**
......@@ -358,56 +387,83 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
* @throws
* @date 2023/8/21 18:05
*/
public PeasantHouseholdWxDto doLogin(MobileLoginParamDto param) {
public PeasantHouseholdWxDto doLogin(MobileLoginParamDto param, AgencyUserModel registerUserModel) {
RequestContext.setToken("");
RequestContext.setProduct(product);
RequestContext.setAppKey(appKey);
RequestContext.setProduct("STUDIO_APP_MOBILE");
RequestContext.setAppKey("studio_normalapp_5133538");
String phoneNo = param.getPhoneNo();
if (phoneNo == null) {
throw new BadRequest("获取手机号失败!");
}
FeignClientResult loginResult;
if (!param.getIsNeedVerify() || ("dev".equals(loginEnvironment) && "666666".equals(param.getVerifyCode()))) {
IdPasswordAuthModel authModel = new IdPasswordAuthModel();
// 授权登录
VerifyCodeAuthModel verifyCodeAuthModel = new VerifyCodeAuthModel();
verifyCodeAuthModel.setLoginId(phoneNo);
verifyCodeAuthModel.setVerifyCode(com.yeejoin.precontrol.common.utils.DesUtil.encode(phoneNo, SECRETKEY));// 手机号码 + 密码言
log.info("微信登录入参 => {}", verifyCodeAuthModel);
loginResult = Privilege.authClient.Wechat(verifyCodeAuthModel);
/* IdPasswordAuthModel authModel = new IdPasswordAuthModel();
authModel.setLoginId(phoneNo);
authModel.setPassword(com.yeejoin.precontrol.common.utils.DesUtil.encode(phoneNo, phoneNo));
loginResult = Privilege.authClient.idpassword(authModel);
authModel.setPassword(com.yeejoin.precontrol.common.utils.DesUtil.encode(registerPassword, SECRETKEY));
loginResult = Privilege.authClient.idpassword(authModel);*/
} else {
// 验证码
VerifyCodeAuthModel model = new VerifyCodeAuthModel();
model.setLoginId(phoneNo);
model.setVerifyCode(param.getVerifyCode());
loginResult = Privilege.authClient.mobileVerifyCode(model);
}
if (loginResult.getStatus() != 200) {
if (loginResult == null || loginResult.getStatus() != 200) {
log.error("远程调用Privilege服务失败: " + loginResult.getDevMessage());
String message = StringUtils.isEmpty(loginResult.getMessage()) ? "账号或密码错误" : loginResult.getMessage();
throw new BadRequest(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((String) resultMap.get("userId"));
peasantHouseholdWxDto.setUserId(userId);
// 判断用户是否刚刚注册过
AgencyUserModel userModel;
/*if (registerUserModel != null) {
// 使用注册接口返回的用户信息
userModel = registerUserModel;
} else {
// 查询用户信息
FeignClientResult<AgencyUserModel> getme = Privilege.agencyUserClient.getme();
getme.getResult().setPassword("");
getme.getResult().setAppCodes(new ArrayList());
AgencyUserModel userModel = (AgencyUserModel) getme.getResult();
Map<String, Object> userInfo = Bean.BeantoMap(userModel);
userInfo.put("phoneNo", phoneNo);
userInfo.put("companyId", userModel.getCompanys().get(0).getCompanyOrgCode());
FeignClientResult<AgencyUserModel> getme = Privilege.agencyUserClient.queryByUserId(userId);
*//*FeignClientResult<AgencyUserModel> getme = Privilege.agencyUserClient.getme();*//*
if (null == getme || getme.getStatus() != 200) {
throw new BadRequest("获取用户信息失败");
}
userModel = (AgencyUserModel) getme.getResult();
}*/
FeignClientResult<AgencyUserModel> getme = Privilege.agencyUserClient.queryByUserId(userId);
if (null == getme || getme.getStatus() != 200) {
throw new BadRequest("获取用户信息失败");
}
userModel = (AgencyUserModel) getme.getResult();
// 组装userInfo数据
Map<String, Object> userInfo = new HashMap<>();
userInfo.put("realName", userModel.getRealName());
userInfo.put("mobile", userModel.getMobile());
userInfo.put("orgNames", userModel.getOrgNames());
userInfo.put("orgNamesWithoutRole", userModel.getOrgNamesWithoutRole());
// userInfo.put("phoneNo", phoneNo);
// userInfo.put("companyId", userModel.getCompanys().get(0).getCompanyOrgCode());
//
// userInfo.put("userModel", userModel);
peasantHouseholdWxDto.setUserInfo(userInfo);
// 组装authInfo数据
Map<String, Object> authInfo = new HashMap<>();
authInfo.put("token", resultMap.get("token"));
authInfo.put("personId", resultMap.get("userId"));
authInfo.put("appKey", appKey);
authInfo.put("product", product);
authInfo.put("appKey", "STUDIO_APP_MOBILE");
authInfo.put("product", "studio_normalapp_5133538");
peasantHouseholdWxDto.setAuthInfo(authInfo);
return peasantHouseholdWxDto;
......@@ -429,14 +485,13 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
if (CollectionUtils.isEmpty(userInfo.getCompanys())) {
throw new BadRequest("查询不到经销商单位信息");
}
log.info("buildDefaultPeasantHouseholdDto, user => {}", userInfo.getUserId());
log.info("buildDefaultPeasantHouseholdDto, user's companys => {}", JSONObject.toJSONString(userInfo.getCompanys()));
log.info("通过区域/个人二维码扫描组装信息, user => {}, user's companys => {}", userInfo.getUserId(), JSONObject.toJSONString(userInfo.getCompanys()));
Long sequenceNbr = userInfo.getCompanys().get(0).getSequenceNbr();
Integer companyOrgCode = userInfo.getCompanys().get(0).getCompanyOrgCode();
String companyName = userInfo.getCompanys().get(0).getCompanyName();
// unitInfoServiceImpl.createCompanyAndUser 创建经销商的时候绑定的平台用户
List<UnitInfo> unitInfos = unitInfoServiceImpl.list(new LambdaQueryWrapper<UnitInfo>().eq(UnitInfo::getAmosCompanySeq, sequenceNbr));
UnitInfo unitInfo = null;
UnitInfo unitInfo;
if (CollectionUtils.isEmpty(unitInfos)) {
log.warn("userId:{} 查询不到经销商信息", userInfo.getUserId());
throw new BadRequest("查询不到经销商信息");
......@@ -445,18 +500,7 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
Long regionalCompaniesSeq = unitInfo.getRegionalCompaniesSeq();
String regionalCompaniesCode = unitInfo.getRegionalCompaniesCode();
String regionalCompaniesName = unitInfo.getRegionalCompaniesName();
// 先写假数据
/*Long sequenceNbr = Long.valueOf("1678209772383399937");
Integer companyOrgCode = 86;
String companyName = "经销商测试单位01";
Long regionalCompaniesSeq = Long.valueOf("1678209772383399937");
String regionalCompaniesCode = "C2365";
String regionalCompaniesName = "经销商测试区域";*/
PeasantHouseholdDto dto = new PeasantHouseholdDto();
/*dto.setPeasantHouseholdNo(this.getPeasantHouseholdNo());
dto.setIsCertified(0);// 未认证
dto.setSurveyOrNot(0);
dto.setReview(0);*/
// 先在后台创建一个角色和公司,微信农户新建的用户使用统一的
// 用户光伏-微信农户
// 非扫码进入注册页面,默认
......@@ -514,6 +558,7 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
} catch (Exception e) {
e.printStackTrace();
log.error("getPhoneNumber error:", e);
throw new BadRequest("微信授权失败, 请重新授权");
}
JSONObject object = JSONObject.parseObject(resultString);
if (object != null) {
......
......@@ -93,14 +93,16 @@ public class WxServiceImpl implements IWxService {
StringBuffer buildUrl = new StringBuffer();
buildUrl.append(url).append("grant_type=" + grant_type).append("&appid=" + appid).append("&secret=" + secret);
try {
log.info("获取access_token入参 => {}", buildUrl);
String resultStr = HttpUtils.doGet(buildUrl.toString());
log.info("获取access_token返回值 => {}", resultStr);
AccessTokenDto accessToken = JSON.parseObject(resultStr, AccessTokenDto.class);
if (accessToken.getErrcode() != null && 0 != accessToken.getErrcode()) {
throw new RuntimeException(accessToken.getErrmsg());
}
return accessToken;
} catch (Exception e) {
log.error("getSmallPro token is error url:{}", buildUrl.toString());
log.error("获取access_token is error url:{}", buildUrl.toString());
throw new RuntimeException(e.getMessage());
}
}
......@@ -121,6 +123,7 @@ public class WxServiceImpl implements IWxService {
*/
private WechatQrCodeDTO buildQrParam(String url, String access_token, String scene, String page, Long width,
Boolean auto_color, JSONObject line_color, Boolean is_hyaline) {
log.info("生成二维码入参, url=>{}, access_token=>{}, scene=>{}, page=>{},", url, access_token, scene, page);
WechatQrCodeDTO smallProQrCodeVo = new WechatQrCodeDTO();
StringBuffer buildUrl = new StringBuffer();
buildUrl.append(url).append("access_token=" + access_token);
......@@ -223,7 +226,7 @@ public class WxServiceImpl implements IWxService {
log.info("微信 Code2Session, code =>{}, 结果 => {}", code, resultStr);
JSONObject jsonObject = JSONObject.parseObject(resultStr);
if (jsonObject == null || jsonObject.getIntValue("errcode") != 0) {
throw new BadRequest(jsonObject.getString("errmsg"));
throw new BadRequest("微信授权失败, 请重新授权");
}
return jsonObject;
}
......
......@@ -138,9 +138,11 @@ hygfProgram.secret=3bfd098cfdac002126e728d2dbf83c0d
farmer.orgCode=86
farmer.sequenceNbr=1620981815542046722
farmer.orgNamesWithoutRole=
farmer.roleId=1678211468450885633
farmer.roleId=1693559312426758146
# 配置接口授权用户
platform.access.loginId=hygf_platform
platform.access.password=AC286A35E74D2DD281EB979789DECF3A
# 测试用的经销商userid
dealer.userId=
# 测试的时候默认密码
farmer.registerPassword=a123456
\ No newline at end of file
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