Commit eb7518ea authored by 杨阳's avatar 杨阳

发货单

新增/编辑/详情接口 更新发货单状态接口
parent b06741c0
...@@ -54,5 +54,6 @@ public class MobileLoginParamDto { ...@@ -54,5 +54,6 @@ public class MobileLoginParamDto {
@ApiModelProperty("注册类型为2-手机验证登录时使用:验证码") @ApiModelProperty("注册类型为2-手机验证登录时使用:验证码")
private String verifyCode; private String verifyCode;
@ApiModelProperty("农户信息")
private PeasantHouseholdDto peasantHouseholdDto; private PeasantHouseholdDto peasantHouseholdDto;
} }
...@@ -105,13 +105,13 @@ public class PeasantHouseholdDto extends BaseDto { ...@@ -105,13 +105,13 @@ public class PeasantHouseholdDto extends BaseDto {
private List<String> permanentAddressText; private List<String> permanentAddressText;
@ApiModelProperty(value = "区域公司id") @ApiModelProperty(value = "区域公司id")
private String companyId; private String regionalCompaniesSeq;
@ApiModelProperty(value = "区域公司code") @ApiModelProperty(value = "区域公司code")
private String companyCode; private String regionalCompaniesCode;
@ApiModelProperty(value = "区域公司名称") @ApiModelProperty(value = "区域公司名称")
private String companyName; private String regionalCompaniesName;
@ApiModelProperty(value = "身份证正面") @ApiModelProperty(value = "身份证正面")
@TableField(typeHandler = FastjsonTypeHandler.class) @TableField(typeHandler = FastjsonTypeHandler.class)
...@@ -126,10 +126,4 @@ public class PeasantHouseholdDto extends BaseDto { ...@@ -126,10 +126,4 @@ public class PeasantHouseholdDto extends BaseDto {
@ApiModelProperty(value = "是否已认证(0-未认证,1-已认证)") @ApiModelProperty(value = "是否已认证(0-未认证,1-已认证)")
private Integer isCertified; private Integer isCertified;
@ApiModelProperty(value = "微信注册账号")
private String loginId;
@ApiModelProperty(value = "微信注册密码")
private String loginPassword;
} }
...@@ -19,15 +19,9 @@ import java.util.List; ...@@ -19,15 +19,9 @@ import java.util.List;
* @date 2023/8/21 13:16 * @date 2023/8/21 13:16
*/ */
@Data @Data
@ApiModel (value="PeasantHouseholdWxDto", description="农户信息") @ApiModel (value="PeasantHouseholdWxDto", description="微信农户登录信息")
public class PeasantHouseholdWxDto { public class PeasantHouseholdWxDto {
@ApiModelProperty (value = "登录方式")
private String loginType;
@ApiModelProperty (value = "验证码登录code")
private String verifyCode;
@ApiModelProperty @ApiModelProperty
private String userState; private String userState;
......
...@@ -143,18 +143,18 @@ public class PeasantHousehold extends BaseEntity { ...@@ -143,18 +143,18 @@ public class PeasantHousehold extends BaseEntity {
/* /*
* 区域公司id * 区域公司id
* */ * */
@TableField("company_id") @TableField("regional_companies_seq")
private String companyId; private String regionalCompaniesSeq;
/* /*
* 区域公司code * 区域公司code
* */ * */
@TableField("company_code") @TableField("regional_companies_code")
private String companyCode; private String regionalCompaniesCode;
/* /*
* 区域公司名称 * 区域公司名称
* */ * */
@TableField("company_name") @TableField("regional_companies_name")
private String companyName; private String regionalCompaniesName;
/* /*
* 身份证正面 * 身份证正面
* */ * */
...@@ -175,15 +175,5 @@ public class PeasantHousehold extends BaseEntity { ...@@ -175,15 +175,5 @@ public class PeasantHousehold extends BaseEntity {
* */ * */
@TableField("is_certified") @TableField("is_certified")
private Integer isCertified; private Integer isCertified;
/*
* 微信注册账号
* */
@TableField("login_id")
private String loginId;
/*
* 微信注册密码
* */
@TableField("login_password")
private String loginPassword;
} }
...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.hygf.biz.controller; ...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.hygf.biz.controller;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; 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.MobileLoginParamDto;
...@@ -16,6 +17,8 @@ import com.yeejoin.amos.feign.systemctl.Systemctl; ...@@ -16,6 +17,8 @@ import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.RegionModel; import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -30,6 +33,7 @@ import org.springframework.web.bind.annotation.RequestMethod; ...@@ -30,6 +33,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper; import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
...@@ -46,200 +50,123 @@ import java.util.List; ...@@ -46,200 +50,123 @@ import java.util.List;
* @date 2023-07-07 * @date 2023-07-07
*/ */
@RestController @RestController
@Api(tags = "农户信息Api") @Api (tags = "农户信息Api for mobile端")
@RequestMapping(value = "/peasant-household/miniprogram") @RequestMapping (value = "/peasant-household/mobile")
@Slf4j
public class PeasantHouseholdWxController extends BaseController { public class PeasantHouseholdWxController extends BaseController {
@Autowired @Autowired
SurveyInformationServiceImpl surveyInformationServiceImpl; SurveyInformationServiceImpl surveyInformationServiceImpl;
@Autowired @Autowired
PeasantHouseholdServiceImpl peasantHouseholdServiceImpl; PeasantHouseholdServiceImpl peasantHouseholdServiceImpl;
@Autowired @Autowired
RedisUtils redisUtils; RedisUtils redisUtils;
private static final String regionRedis="app_region_redis"; private static final String regionRedis = "app_region_redis";
/** /*@TycloudOperation (ApiLevel = UserType.AGENCY, needAuth = false)
* 新增农户信息 @RequestMapping (value = "/authenticate", method = RequestMethod.POST)
* @ApiOperation (httpMethod = "POST", value = "微信农户认证", notes = "微信农户认证")
* @return public ResponseModel<Boolean> authenticate(@ApiParam(name = "农户信息id") @RequestParam Long sequenceNbr) {
*/ return ResponseHelper.buildResponse(peasantHouseholdServiceImpl.doAuthenticate(sequenceNbr));
@TycloudOperation(ApiLevel = UserType.AGENCY) }*/
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增农户信息", notes = "新增农户信息") @TycloudOperation (ApiLevel = UserType.AGENCY, needAuth = false)
public ResponseModel<PeasantHouseholdDto> save(@RequestBody PeasantHouseholdDto model) { @RequestMapping (value = "/login", method = RequestMethod.POST)
AgencyUserModel userInfo = getUserInfo(); @ApiOperation (httpMethod = "POST", value = "微信授权登陆", notes = "微信授权登陆")
SurveyInformationDto surveyInformationDto = new SurveyInformationDto(); public ResponseModel<PeasantHouseholdWxDto> wxUserLogin(@ApiParam @RequestBody MobileLoginParamDto mobileLoginParam) {
surveyInformationServiceImpl.createWithModel(surveyInformationDto); return ResponseHelper.buildResponse(peasantHouseholdServiceImpl.wxUserLogin(mobileLoginParam));
JSONArray regionName = getRegionName(); }
List<RegionModel> list = JSONArray.parseArray(regionName.toJSONString(), RegionModel.class);
// 处理项目地址
String area = "";
if(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.substring(0, area.length() - 2));
if ("1".equals(model.getIsPermanent())) {
model.setPermanentAddress(model.getProjectAddress());
model.setPermanentAddressDetail(model.getProjectAddressDetail());
model.setPermanentAddressName(area.substring(0, area.length() - 2));
}else {
// 处理常住地址
String permanent = "";
if(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.substring(0, permanent.length() - 2));
}
}
}
model.setSurveyInformationId(surveyInformationDto.getSequenceNbr()); @TycloudOperation (ApiLevel = UserType.AGENCY, needAuth = false)
model.setSurveyOrNot(0); @RequestMapping (value = "/register", method = RequestMethod.POST)
model.setReview(0); @ApiOperation (httpMethod = "POST", value = "微信农户注册", notes = "微信农户注册")
model.setDeveloperCode(userInfo.getCompanys().get(0).getOrgCode()); public ResponseModel<PeasantHouseholdWxDto> wxUserRegister(@ApiParam @RequestBody MobileLoginParamDto mobileLoginParam) {
log.info("微信农户注册, 入参 => {}", JSONObject.toJSONString(mobileLoginParam));
if (null == mobileLoginParam.getPeasantHouseholdDto()) {
throw new BadRequest("农户信息不能为空");
}
PeasantHouseholdDto model = mobileLoginParam.getPeasantHouseholdDto();
SurveyInformationDto surveyInformationDto = new SurveyInformationDto();
surveyInformationServiceImpl.createWithModel(surveyInformationDto);
JSONArray regionName = getRegionName();
List<RegionModel> list = JSONArray.parseArray(regionName.toJSONString(), RegionModel.class);
// 处理项目地址
String area = "";
if (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.substring(0, area.length() - 2));
if ("1".equals(model.getIsPermanent())) {
model.setPermanentAddress(model.getProjectAddress());
model.setPermanentAddressDetail(model.getProjectAddressDetail());
model.setPermanentAddressName(area.substring(0, area.length() - 2));
} else {
// 处理常住地址
String permanent = "";
if (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.substring(0, permanent.length() - 2));
}
}
}
model.setSurveyInformationId(surveyInformationDto.getSequenceNbr());
model.setSurveyOrNot(0);
model.setReview(0);
/*model.setDeveloperCode(userInfo.getCompanys().get(0).getOrgCode());
model.setDeveloperId(userInfo.getCompanys().get(0).getSequenceNbr()); model.setDeveloperId(userInfo.getCompanys().get(0).getSequenceNbr());
model.setDeveloperName(userInfo.getOrgNamesWithoutRole()); model.setDeveloperName(userInfo.getOrgNamesWithoutRole());
if(StringUtils.isEmpty(model.getDeveloper())){ if (StringUtils.isEmpty(model.getDeveloper())) {
model.setDeveloper(userInfo.getRealName()); model.setDeveloper(userInfo.getRealName());
} }*/
if(model.getCreationTime() == null){ if (model.getCreationTime() == null) {
model.setCreationTime(new Date()); model.setCreationTime(new Date());
} }
model.setIsCertified(0);// 未认证 model.setIsCertified(model.getIsCertified() == null ? 0 : model.getIsCertified());// 未认证
PeasantHouseholdDto householdDto = peasantHouseholdServiceImpl.createWithModel(model); mobileLoginParam.setPeasantHouseholdDto(model);
return ResponseHelper.buildResponse(householdDto); return ResponseHelper.buildResponse(peasantHouseholdServiceImpl.wxUserRegister(mobileLoginParam));
}
/**
* 根据sequenceNbr更新
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新农户信息", notes = "根据sequenceNbr更新农户信息")
public ResponseModel<PeasantHouseholdDto> updateBySequenceNbrPeasantHousehold(@RequestBody PeasantHouseholdDto model,@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
model.setSequenceNbr(sequenceNbr);
JSONArray regionName = getRegionName();
List<RegionModel> list = JSONArray.parseArray(regionName.toJSONString(), RegionModel.class);
if(model.getProjectAddress().size()>0){
// 处理项目地址
String projectAddressName = "";
for (Integer reg : model.getProjectAddress())
for (RegionModel re : list) {
if (re.getRegionCode().equals(Integer.valueOf(reg))) {
projectAddressName = projectAddressName + re.getRegionName() + "/";
}
}
model.setProjectAddressName(projectAddressName.substring(0, projectAddressName.length() - 2));
}
if ("1".equals(model.getIsPermanent())) {
model.setPermanentAddress(model.getProjectAddress());
model.setPermanentAddressDetail(model.getProjectAddressDetail());
}
if(model.getPermanentAddress().size()>0){
// 处理常驻地址
String permanentAddressName = "";
for (Integer reg : model.getPermanentAddress())
for (RegionModel re : list) {
if (re.getRegionCode().equals(Integer.valueOf(reg))) {
permanentAddressName = permanentAddressName + re.getRegionName() + "/";
}
}
model.setPermanentAddressName(permanentAddressName.substring(0, permanentAddressName.length() - 2));
}
PeasantHouseholdDto peasantHouseholdDto = peasantHouseholdServiceImpl.queryBySeq(sequenceNbr);
BeanUtils.copyProperties(model,peasantHouseholdDto);
return ResponseHelper.buildResponse(peasantHouseholdServiceImpl.updateWithModel(peasantHouseholdDto));
}
/**
* 根据sequenceNbr删除
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除农户信息", notes = "根据sequenceNbr删除农户信息")
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr){
return ResponseHelper.buildResponse(peasantHouseholdServiceImpl.deletePeasantHouseholdBySequenceNbr(sequenceNbr));
} }
/** public JSONArray getRegionName() {
* 根据sequenceNbr查询 JSONArray jsonArray = new JSONArray();
* if (redisUtils.hasKey(regionRedis)) {
* @param sequenceNbr 主键 jsonArray = JSONArray.parseArray(redisUtils.get(regionRedis).toString());
* @return } else {
*/ Collection<RegionModel> regionChild = new ArrayList<>();
@TycloudOperation(ApiLevel = UserType.AGENCY) RegionModel regionModel1 = new RegionModel();
@GetMapping(value = "/{sequenceNbr}") regionChild.add(regionModel1);
@ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个农户信息", notes = "根据sequenceNbr查询单个农户信息") FeignClientResult<Collection<RegionModel>> collectionFeignClientResult = Systemctl.regionClient.queryForTreeParent(610000L);
public ResponseModel<PeasantHouseholdDto> selectOne(@PathVariable Long sequenceNbr) { Collection<RegionModel> result = collectionFeignClientResult.getResult();
PeasantHouseholdDto peasantHouseholdDto = peasantHouseholdServiceImpl.queryBySeq(sequenceNbr); for (RegionModel regionModel : result) {
if(JSON.toJSONString(peasantHouseholdDto.getProjectAddress()).equals(JSON.toJSONString(peasantHouseholdDto.getPermanentAddress()))){ if (null != regionModel && null != regionModel.getChildren()) {
peasantHouseholdDto.setIsPermanent("1"); for (RegionModel child : regionModel.getChildren()) {
}else { if (null != child && null != child.getChildren()) {
peasantHouseholdDto.setIsPermanent("0"); for (RegionModel childChild : child.getChildren()) {
} jsonArray.add(childChild);
return ResponseHelper.buildResponse(peasantHouseholdDto); }
} child.setChildren(regionChild);
jsonArray.add(child);
public JSONArray getRegionName(){ }
JSONArray jsonArray = new JSONArray(); }
if (redisUtils.hasKey(regionRedis)) { regionModel.setChildren(regionChild);
jsonArray= JSONArray.parseArray(redisUtils.get(regionRedis).toString()); jsonArray.add(regionModel);
}else { }
Collection<RegionModel> regionChild = new ArrayList<>(); }
RegionModel regionModel1 = new RegionModel();
regionChild.add(regionModel1); redisUtils.set(regionRedis, jsonArray);
FeignClientResult<Collection<RegionModel>> collectionFeignClientResult = Systemctl.regionClient.queryForTreeParent(610000L); }
Collection<RegionModel> result = collectionFeignClientResult.getResult(); return jsonArray;
for (RegionModel regionModel : result) { }
if(null != regionModel && null != regionModel.getChildren()) {
for (RegionModel child : regionModel.getChildren()) {
if(null != child && null != child.getChildren()) {
for (RegionModel childChild : child.getChildren()) {
jsonArray.add(childChild);
}
child.setChildren(regionChild);
jsonArray.add(child);
}
}
regionModel.setChildren(regionChild);
jsonArray.add(regionModel);
}
}
redisUtils.set(regionRedis,jsonArray);
}
return jsonArray;
}
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@RequestMapping(value = "/mobile/login", method = RequestMethod.POST)
@ApiOperation(httpMethod = "POST", value = "微信授权登陆", notes = "微信授权登陆")
public ResponseModel<PeasantHouseholdWxDto> wxUserLogin(@RequestBody MobileLoginParamDto wx) {
return ResponseHelper.buildResponse(peasantHouseholdServiceImpl.wxUserLogin(wx));
}
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@RequestMapping(value = "/mobile/register", method = RequestMethod.POST)
@ApiOperation(httpMethod = "POST", value = "微信农户注册", notes = "微信农户注册")
public ResponseModel<PeasantHouseholdWxDto> wxUserRegister(@RequestBody MobileLoginParamDto wx) {
return ResponseHelper.buildResponse(peasantHouseholdServiceImpl.wxUserRegister(wx));
}
} }
...@@ -18,6 +18,7 @@ import com.yeejoin.amos.boot.module.jxiop.api.util.HttpUtil; ...@@ -18,6 +18,7 @@ import com.yeejoin.amos.boot.module.jxiop.api.util.HttpUtil;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.Privilege; import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel; import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import com.yeejoin.amos.feign.privilege.model.VerifyCodeAuthModel; import com.yeejoin.amos.feign.privilege.model.VerifyCodeAuthModel;
import com.yeejoin.amos.feign.privilege.util.DesUtil; import com.yeejoin.amos.feign.privilege.util.DesUtil;
import lombok.Data; import lombok.Data;
...@@ -43,6 +44,7 @@ import java.util.ArrayList; ...@@ -43,6 +44,7 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -54,6 +56,35 @@ import java.util.stream.Collectors; ...@@ -54,6 +56,35 @@ import java.util.stream.Collectors;
@Service @Service
public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto,PeasantHousehold,PeasantHouseholdMapper> implements IPeasantHouseholdService { public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto,PeasantHousehold,PeasantHouseholdMapper> implements IPeasantHouseholdService {
private Long TOKEN_TIME = 1209600l;
@Value("${security.productWeb}")
private String product;
@Value("${security.appKey}")
private String appKey;
@Value("${login.environment}")
private String loginEnvironment;
@Value("${farmer.orgCode}")
private String orgCode;
@Value("${farmer.sequenceNbr}")
private Long orgSequenceNbr;
@Value("${farmer.orgNamesWithoutRole}")
private String orgNamesWithoutRole;
@Value("${dealer.appcode}")
private String appCodes;
@Autowired
private RedisUtils redisUtils;
@Autowired
private WxServiceImpl wxService;
@Autowired @Autowired
SurveyInformationServiceImpl surveyInformationService; SurveyInformationServiceImpl surveyInformationService;
...@@ -134,89 +165,114 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto ...@@ -134,89 +165,114 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
return this.queryForList("" , false); return this.queryForList("" , false);
} }
@Value("${security.productWeb}") public Boolean doAuthenticate(Long sequenceNbr) {
private String product; // 判断是否注册过
PeasantHousehold peasantHousehold = this.getById(sequenceNbr);
@Value("${security.appKey}") if (null == peasantHousehold) {
private String appKey; throw new BadRequest("认证失败, 农户信息不存在");
}
@Autowired peasantHousehold.setIsCertified(1);// 认证
RedisUtils redisUtils; return this.updateById(peasantHousehold);
}
@Value("${login.environment}")
private String loginEnvironment;
private Long TOKEN_TIME = 1209600l;
@Autowired
private WxServiceImpl wxService;
public PeasantHouseholdWxDto wxUserLogin(MobileLoginParamDto wxDTO) { public PeasantHouseholdWxDto wxUserLogin(MobileLoginParamDto wxDTO) {
// 判断是否注册过
/*boolean isUseVerifyCode = "2".equals(wxDTO.getRegisterType());
if (isUseVerifyCode) {
peasantHousehold = this.query().eq("telephone", wxDTO.getPhoneNo()).one();
} else {
peasantHousehold = this.query().eq("open_id", wxDTO.getOpenId()).one();
}*/
// 通过手机号和验证码调用平台接口进行验证 // 通过手机号和验证码调用平台接口进行验证
String phoneNo = this.parsePhoneNo(wxDTO); String phoneNo = this.parsePhoneNo(wxDTO);
if (phoneNo == null) { if (phoneNo == null) {
throw new BadRequest("获取手机号失败!"); throw new BadRequest("获取手机号失败!");
} }
wxDTO.setPhoneNo(phoneNo);
// 判断是否注册过
PeasantHousehold peasantHousehold = this.query().eq("telephone", phoneNo).one(); PeasantHousehold peasantHousehold = this.query().eq("telephone", phoneNo).one();
// 在平台里注册过但是没有农户信息 // 在平台里注册过但是没有农户信息
/*String loginId;
String password;*/
if (null == peasantHousehold) { if (null == peasantHousehold) {
// 没注册过,进行返回 // 没注册过,进行返回
PeasantHouseholdWxDto peasantHouseholdWxDto = new PeasantHouseholdWxDto(); PeasantHouseholdWxDto peasantHouseholdWxDto = new PeasantHouseholdWxDto();
AgencyUserModel agencyUserModel = new AgencyUserModel(); AgencyUserModel agencyUserModel = new AgencyUserModel();
agencyUserModel.setMobile(phoneNo); agencyUserModel.setMobile(phoneNo);
peasantHouseholdWxDto.setUserInfo(agencyUserModel); peasantHouseholdWxDto.setUserInfo(agencyUserModel);
peasantHouseholdWxDto.setUserState("0"); peasantHouseholdWxDto.setUserState("0");// 未注册
// 创建一个农户信息
// AgencyUserModel registerUser = doRegister(wxDTO);
PeasantHouseholdDto peasantHouseholdDto = buildDefaultPeasantHouseholdDto(phoneNo);
peasantHousehold = new PeasantHousehold();
BeanUtils.copyProperties(peasantHouseholdDto, peasantHousehold);
peasantHouseholdWxDto.setPeasantHousehold(peasantHousehold);
return peasantHouseholdWxDto; return peasantHouseholdWxDto;
} }
PeasantHouseholdWxDto loginResult = doLogin(wxDTO); PeasantHouseholdWxDto loginResult = doLogin(wxDTO);
// 装载农户信息
loginResult.setPeasantHousehold(peasantHousehold); loginResult.setPeasantHousehold(peasantHousehold);
return loginResult; return loginResult;
} }
/**
* 微信农户注册
*
*
* @param wxDTO wxDTO
* @return {@link PeasantHouseholdWxDto}
* @author Provence
* @throws
* @date 2023/8/21 16:41
*/
public PeasantHouseholdWxDto wxUserRegister(MobileLoginParamDto wxDTO) { public PeasantHouseholdWxDto wxUserRegister(MobileLoginParamDto wxDTO) {
PeasantHouseholdDto model = wxDTO.getPeasantHouseholdDto();
// String phoneNo = this.parsePhoneNo(wxDTO);
String phoneNo = model.getTelephone();
if (phoneNo == null) {
throw new BadRequest("获取手机号失败!");
}
wxDTO.setPhoneNo(phoneNo);
// 注册用户 // 注册用户
doRegister(wxDTO); AgencyUserModel userModel = doRegister(wxDTO);
/*FeignClientResult<AgencyUserModel> userResult = Privilege.agencyUserClient.queryByUserId(phoneNo);
if (null == userResult.getResult()) {
userModel = doRegister(wxDTO);
} else {
userModel = userResult.getResult();
}*/
// 创建一个农户信息 // 创建一个农户信息
PeasantHouseholdDto peasantHouseholdDto = wxDTO.getPeasantHouseholdDto(); PeasantHouseholdDto peasantHouseholdDto = wxDTO.getPeasantHouseholdDto();
peasantHouseholdDto.setTelephone(phoneNo);
peasantHouseholdDto = this.createWithModel(peasantHouseholdDto); peasantHouseholdDto = this.createWithModel(peasantHouseholdDto);
PeasantHouseholdWxDto loginResult = doLogin(wxDTO);
PeasantHousehold peasantHousehold = new PeasantHousehold(); PeasantHousehold peasantHousehold = new PeasantHousehold();
BeanUtils.copyProperties(peasantHouseholdDto, peasantHousehold); BeanUtils.copyProperties(peasantHouseholdDto, peasantHousehold);
// 注册完成后直接登录系统
PeasantHouseholdWxDto loginResult = doLogin(wxDTO);
loginResult.setPeasantHousehold(peasantHousehold); loginResult.setPeasantHousehold(peasantHousehold);
return loginResult; return loginResult;
} }
/**
* 农户微信注册
*
*
* @param mobileLoginParamDto mobileLoginParamDto
* @return {@link AgencyUserModel}
* @author Provence
* @throws
* @date 2023/8/21 18:05
*/
public AgencyUserModel doRegister(MobileLoginParamDto mobileLoginParamDto) { public AgencyUserModel doRegister(MobileLoginParamDto mobileLoginParamDto) {
/*FeignClientResult<List<RoleModel>> roleListResult = Privilege.roleClient.queryRoleList(null, null); FeignClientResult<List<RoleModel>> roleListResult = Privilege.roleClient.queryRoleList(null, null);
List<RoleModel> allRoleList = roleListResult.getResult(); List<RoleModel> allRoleList = roleListResult.getResult();
List<RoleModel> userRoleList = new ArrayList<>(); List<RoleModel> userRoleList = new ArrayList<>();
List<Long> roleIds = new ArrayList<>(); List<Long> roleIds = new ArrayList<>();
// 创建一个空的用户信息,等待认证
String custPassword = DesUtil.encode(password, "qaz");
List<String> split = Arrays.asList(StringUtils.split(appCodes, ',')); List<String> split = Arrays.asList(StringUtils.split(appCodes, ','));
Map<Long, List<Long>> roleSeqMap = new HashMap<>(); Map<Long, List<Long>> roleSeqMap = new HashMap<>();
Map<Long, List<RoleModel>> orgRoles = new HashMap<>(); Map<Long, List<RoleModel>> orgRoles = new HashMap<>();
userRoleList = allRoleList.stream().filter(r -> r.getRoleName().equals(regUnitInfo.getUnitTypeCode())) // 提前建立好一个默认角色
String defaultUnitTypeCode = "";
userRoleList = allRoleList.stream().filter(r -> r.getRoleName().equals(defaultUnitTypeCode))
.collect(Collectors.toList()); .collect(Collectors.toList());
userRoleList.forEach(r -> { userRoleList.forEach(r -> {
if (!roleIds.contains(r.getSequenceNbr())) { if (!roleIds.contains(r.getSequenceNbr())) {
roleIds.add(r.getSequenceNbr()); roleIds.add(r.getSequenceNbr());
} }
}); });
roleSeqMap.put(companyInfo.getSequenceNbr(), roleIds); roleSeqMap.put(orgSequenceNbr, roleIds);
orgRoles.put(companyInfo.getSequenceNbr(), userRoleList);*/ orgRoles.put(orgSequenceNbr, userRoleList);
// //
String custPassword = DesUtil.encode(mobileLoginParamDto.getPhoneNo(), "qaz"); String custPassword = DesUtil.encode(mobileLoginParamDto.getPhoneNo(), "qaz");
AgencyUserModel agencyUserModel = new AgencyUserModel(); AgencyUserModel agencyUserModel = new AgencyUserModel();
...@@ -227,26 +283,31 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto ...@@ -227,26 +283,31 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
agencyUserModel.setLockStatus("LOCK"); agencyUserModel.setLockStatus("LOCK");
agencyUserModel.setAgencyCode("JXIOP"); agencyUserModel.setAgencyCode("JXIOP");
agencyUserModel.setMobile(mobileLoginParamDto.getPhoneNo()); agencyUserModel.setMobile(mobileLoginParamDto.getPhoneNo());
/*agencyUserModel.setAppCodes(split); agencyUserModel.setAppCodes(split);
agencyUserModel.setOrgRoles(orgRoles); agencyUserModel.setOrgRoles(orgRoles);
agencyUserModel.setOrgRoleSeqs(roleSeqMap);*/ agencyUserModel.setOrgRoleSeqs(roleSeqMap);
FeignClientResult<AgencyUserModel> userResult = Privilege.agencyUserClient.create(agencyUserModel); FeignClientResult<AgencyUserModel> userResult = Privilege.agencyUserClient.create(agencyUserModel);
if (userResult == null || userResult.getResult() == null) { if (userResult == null || userResult.getResult() == null) {
throw new BadRequest("单位注册失败"); throw new BadRequest("用户注册失败");
} }
return userResult.getResult(); return userResult.getResult();
} }
/**
* 农户微信登录
*
*
* @param param param
* @return {@link PeasantHouseholdWxDto}
* @author Provence
* @throws
* @date 2023/8/21 18:05
*/
public PeasantHouseholdWxDto doLogin(MobileLoginParamDto param) { public PeasantHouseholdWxDto doLogin(MobileLoginParamDto param) {
RequestContext.setToken(""); RequestContext.setToken("");
RequestContext.setProduct(product); RequestContext.setProduct(product);
RequestContext.setAppKey(appKey); RequestContext.setAppKey(appKey);
/*IdPasswordAuthModel idPasswordAuthModel = new IdPasswordAuthModel();
idPasswordAuthModel.setLoginId(loginId);
idPasswordAuthModel.setPassword(password);*/
String phoneNo = this.parsePhoneNo(param); String phoneNo = this.parsePhoneNo(param);
if (phoneNo == null) { if (phoneNo == null) {
throw new BadRequest("获取手机号失败!"); throw new BadRequest("获取手机号失败!");
...@@ -258,9 +319,6 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto ...@@ -258,9 +319,6 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
} else { } else {
model.setVerifyCode(param.getVerifyCode()); model.setVerifyCode(param.getVerifyCode());
} }
// FeignClientResult loginResult = Privilege.authClient.idpassword(idPasswordAuthModel);
FeignClientResult loginResult = Privilege.authClient.mobileVerifyCode(model); FeignClientResult loginResult = Privilege.authClient.mobileVerifyCode(model);
if (loginResult.getStatus() != 200) { if (loginResult.getStatus() != 200) {
...@@ -291,6 +349,21 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto ...@@ -291,6 +349,21 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
return peasantHouseholdWxDto; return peasantHouseholdWxDto;
} }
private PeasantHouseholdDto buildDefaultPeasantHouseholdDto(String phoneNo) {
PeasantHouseholdDto dto = new PeasantHouseholdDto();
dto.setIsCertified(0);// 未认证
dto.setSurveyOrNot(0);
dto.setReview(0);
// 先在后台创建一个角色和公司,微信农户新建的用户使用统一的
// 用户光伏-微信农户
dto.setDeveloperCode(orgCode);
dto.setDeveloperId(orgSequenceNbr);
dto.setDeveloperName(orgNamesWithoutRole);
dto.setDeveloper(phoneNo);
dto.setTelephone(phoneNo);
return dto;
}
/** /**
* 手机号解析 * 手机号解析
* *
......
...@@ -13,7 +13,7 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest; ...@@ -13,7 +13,7 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.io.InputStream; import java.io.InputStream;
/** /**
* TODO(一句话描述该类的功能) * 农户微信小程序
* *
* @author Provence * @author Provence
* @version v1.0 * @version v1.0
...@@ -41,22 +41,13 @@ public class WxServiceImpl { ...@@ -41,22 +41,13 @@ public class WxServiceImpl {
public JSONObject getCode2Session(String code) { public JSONObject getCode2Session(String code) {
String url = buildOpenIdUrl(appId, secret, code); String url = buildOpenIdUrl(appId, secret, code);
String resultStr = HttpUtil.sendHttpGet(url); String resultStr = HttpUtil.sendHttpGet(url);
ResponeVo responeVo = JSONObject.parseObject(resultStr, ResponeVo.class); // resultStr => {"session_key":"Mj5xbDhcZU73DtUduI1xKg==","openid":"oRraY5aYJkxkDJiG4rBaaw4MSmPA"}
log.error("手机号解析结果" + JSONObject.toJSONString(responeVo)); log.info("微信 Code2Session, code =>{}, 结果 => {}", code, resultStr);
System.out.println("手机号解析结果" + JSONObject.toJSONString(responeVo)); JSONObject jsonObject = JSONObject.parseObject(resultStr);
JSONObject jsonObject = JSONObject.parseObject(responeVo.getContent()); if (jsonObject == null || jsonObject.getIntValue("errcode") != 0) {
if (jsonObject != null) { throw new BadRequest(jsonObject.getString("errmsg"));
int errcode = jsonObject.getIntValue("errcode");
if (errcode == 0) {
// session_key 会话秘钥
// String openId = jsonObject.getString("openid");
return jsonObject;
} else {
throw new BadRequest(jsonObject.getString("errmsg"));
}
} else {
throw new BadRequest("微信接口调用失败");
} }
return jsonObject;
} }
private String buildOpenIdUrl(String appId, String secret, String code) { private String buildOpenIdUrl(String appId, String secret, String code) {
...@@ -73,4 +64,13 @@ public class WxServiceImpl { ...@@ -73,4 +64,13 @@ public class WxServiceImpl {
byte[] inStream; byte[] inStream;
InputStream inputStream; InputStream inputStream;
} }
public String getOpenId(String code) {
JSONObject jsonObject = getCode2Session(code);
String openId = null;
if (jsonObject != null) {
openId = jsonObject.getString("openid");
}
return openId;
}
} }
...@@ -112,9 +112,15 @@ hygf.user.group.id=1679755750924120066 ...@@ -112,9 +112,15 @@ hygf.user.group.id=1679755750924120066
unitInfo.station.examine.planId=51776087-a9cf-4a87-9a03-24fd24a8cf45 unitInfo.station.examine.planId=51776087-a9cf-4a87-9a03-24fd24a8cf45
hygf.sms.tempCodeJXS=SMS_HYGF_0002 hygf.sms.tempCodeJXS=SMS_HYGF_0002
# ============================================= v20230821 add properties =============================================
security.productWeb=AMOS_STUDIO_WEB
security.appKey=AMOS_STUDIO
login.environment= login.environment=dev
security.productWeb= # 光伏农户微信小程序信息
security.appKey=
hygfProgram.appid=wx2188769349b1ddeb hygfProgram.appid=wx2188769349b1ddeb
hygfProgram.secret= hygfProgram.secret=3bfd098cfdac002126e728d2dbf83c0d
\ No newline at end of file # 默认微信小程序农户经销商
farmer.orgCode=86
farmer.sequenceNbr=1620981815542046722
farmer.orgNamesWithoutRole=智信能源科技有限公司
\ 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