parent
b9d4b907e8
commit
7df7d9dcff
@ -0,0 +1,201 @@ |
||||
package com.jianshui.api.controller.http.invoice.v1; |
||||
|
||||
import com.alibaba.fastjson.JSONObject; |
||||
import com.jianshui.common.core.domain.AjaxResult; |
||||
import com.jianshui.common.core.domain.entity.Companyservice; |
||||
import com.jianshui.common.enums.ErrorCode; |
||||
import com.jianshui.common.utils.StringUtils; |
||||
import com.jianshui.invoice.service.ElephantInvoiceService; |
||||
import com.jianshui.system.service.ICompanyserviceService; |
||||
import io.swagger.annotations.ApiImplicitParam; |
||||
import io.swagger.annotations.ApiImplicitParams; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.web.bind.annotation.*; |
||||
|
||||
import java.util.Map; |
||||
|
||||
@Slf4j |
||||
@RestController |
||||
@RequestMapping("/api/invoice/front/v1") |
||||
public class InvoiceFrontController { |
||||
|
||||
@Autowired |
||||
private ICompanyserviceService iCompanyserviceService; |
||||
|
||||
@Autowired |
||||
private ElephantInvoiceService elephantInvoiceService; |
||||
|
||||
|
||||
/** |
||||
* 数电登录接口(前端使用) |
||||
*/ |
||||
@ApiImplicitParams({ |
||||
@ApiImplicitParam(name = "identity", value = "身份认证", dataType = "java.lang.String", example = "1130", required = true), |
||||
@ApiImplicitParam(name = "secret", value = "身份认证Key", dataType = "java.lang.String", example = "LTEO+oOgWMsuQAOUglqXuQ==", required = true), |
||||
@ApiImplicitParam(name = "params", value = "请求体", dataType = "java.lang.String", required = true) |
||||
}) |
||||
@PostMapping("/rpaLogin/{identity}/{secret}") |
||||
public Object rpaLogin(@RequestBody Map<String,Object> params,@PathVariable("identity") String identity, @PathVariable("secret") String secret) { |
||||
|
||||
JSONObject paramJson = new JSONObject(params); |
||||
|
||||
log.debug("rpaLogin param{} identity:{} secret:{}", paramJson.toJSONString(), identity, secret); |
||||
|
||||
//参数校验
|
||||
if (StringUtils.isBlank(identity)){ |
||||
return AjaxResult.error("公司ID不能为空"); |
||||
} |
||||
|
||||
if (StringUtils.isBlank(secret)){ |
||||
return AjaxResult.error("公司Key不能为空"); |
||||
} |
||||
|
||||
|
||||
if (StringUtils.isBlank(paramJson.getString("yhm"))){ |
||||
return AjaxResult.error("电子税局登录名不能为空"); |
||||
} |
||||
|
||||
if (StringUtils.isBlank(paramJson.getString("mm"))){ |
||||
return AjaxResult.error("电子税局密码不能为空"); |
||||
} |
||||
//方法名处理
|
||||
if (StringUtils.isBlank(paramJson.getString("ffm"))){ |
||||
return AjaxResult.error("方法名不能为空"); |
||||
} |
||||
|
||||
if ("0".equals(paramJson.getString("ffm"))){ |
||||
paramJson.put("ffm","login"); |
||||
} |
||||
if ("1".equals(paramJson.getString("ffm"))){ |
||||
paramJson.put("ffm","send_sms"); |
||||
} |
||||
if ("2".equals(paramJson.getString("ffm"))){ |
||||
if (StringUtils.isBlank(paramJson.getString("zrrlx"))){ |
||||
return AjaxResult.error("责任人类型不能为空"); |
||||
} |
||||
paramJson.put("ffm","select_zrrlx"); |
||||
} |
||||
if ("3".equals(paramJson.getString("ffm"))){ |
||||
if (StringUtils.isBlank(paramJson.getString("dxyzm"))){ |
||||
return AjaxResult.error("短信验证码不能为空"); |
||||
} |
||||
paramJson.put("ffm","sms_login"); |
||||
} |
||||
|
||||
Companyservice companyservice = iCompanyserviceService.selectCompanyserviceByIdentity(identity); |
||||
if (companyservice == null || !secret.equals(companyservice.getSecret())) { |
||||
return AjaxResult.error(ErrorCode.COMPANY_NOT_FOUND); |
||||
} |
||||
|
||||
return elephantInvoiceService.rpaLogin(paramJson,companyservice); |
||||
|
||||
} |
||||
|
||||
|
||||
/** |
||||
* 数电账号查询接口(前端使用) |
||||
*/ |
||||
@ApiImplicitParams({ |
||||
@ApiImplicitParam(name = "identity", value = "身份认证", dataType = "java.lang.String", example = "1130", required = true), |
||||
@ApiImplicitParam(name = "secret", value = "身份认证Key", dataType = "java.lang.String", example = "LTEO+oOgWMsuQAOUglqXuQ==", required = true) |
||||
}) |
||||
@PostMapping("/queryRpaTaxAccount/{identity}/{secret}") |
||||
public Object queryRpaTaxAccount(@PathVariable("identity") String identity, @PathVariable("secret") String secret ){ |
||||
|
||||
log.debug("queryRpaTaxAccount param identity:{} secret:{}",identity,secret); |
||||
//参数校验
|
||||
if (StringUtils.isBlank(identity)){ |
||||
return AjaxResult.error("公司ID不能为空"); |
||||
} |
||||
|
||||
if (StringUtils.isBlank(secret)){ |
||||
return AjaxResult.error("公司Key不能为空"); |
||||
} |
||||
|
||||
Companyservice companyservice = iCompanyserviceService.selectCompanyserviceByIdentity(identity); |
||||
if (companyservice == null || !secret.equals(companyservice.getSecret())) { |
||||
return AjaxResult.error(ErrorCode.COMPANY_NOT_FOUND); |
||||
} |
||||
|
||||
return elephantInvoiceService.queryRpaTaxAccount(companyservice.getSellertax(),companyservice); |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 数电获取二维码接口(前端使用) |
||||
*/ |
||||
@ApiImplicitParams({ |
||||
@ApiImplicitParam(name = "identity", value = "身份认证", dataType = "java.lang.String", example = "1130", required = true), |
||||
@ApiImplicitParam(name = "secret", value = "身份认证Key", dataType = "java.lang.String", example = "LTEO+oOgWMsuQAOUglqXuQ==", required = true), |
||||
@ApiImplicitParam(name = "yhm", value = "电子税局登陆账号", dataType = "java.lang.String", required = true) |
||||
}) |
||||
@PostMapping("/getRpaQrCode/{identity}/{secret}") |
||||
public Object getRpaQrCode(@RequestBody Map<String,Object> params,@PathVariable("identity") String identity, @PathVariable("secret") String secret ) { |
||||
|
||||
JSONObject paramJson = new JSONObject(params); |
||||
log.debug("getRpaQrCode param params:{} identity:{} secret:{}", paramJson,identity,secret); |
||||
|
||||
//参数校验
|
||||
if (StringUtils.isBlank(identity)){ |
||||
return AjaxResult.error("公司ID不能为空"); |
||||
} |
||||
|
||||
if (StringUtils.isBlank(secret)){ |
||||
return AjaxResult.error("公司Key不能为空"); |
||||
} |
||||
|
||||
if (StringUtils.isBlank(paramJson.getString("yhm"))){ |
||||
return AjaxResult.error("电子税局登录名不能为空"); |
||||
} |
||||
|
||||
Companyservice companyservice = iCompanyserviceService.selectCompanyserviceByIdentity(identity); |
||||
|
||||
if (companyservice == null || !secret.equals(companyservice.getSecret())) { |
||||
return AjaxResult.error(ErrorCode.COMPANY_NOT_FOUND); |
||||
} |
||||
|
||||
return elephantInvoiceService.getRpaQrCode(paramJson,companyservice); |
||||
|
||||
} |
||||
|
||||
|
||||
/** |
||||
* 数电登录接口(前端使用) |
||||
*/ |
||||
@ApiImplicitParams({ |
||||
@ApiImplicitParam(name = "identity", value = "身份认证", dataType = "java.lang.String", example = "1130", required = true), |
||||
@ApiImplicitParam(name = "secret", value = "身份认证Key", dataType = "java.lang.String", example = "LTEO+oOgWMsuQAOUglqXuQ==", required = true), |
||||
@ApiImplicitParam(name = "params", value = "请求体", dataType = "java.lang.String", required = true) |
||||
}) |
||||
@PostMapping("/getRpaAuthStatus/{identity}/{secret}") |
||||
public Object getRpaAuthStatus(@RequestBody Map<String,Object> params, @PathVariable("identity") String identity, @PathVariable("secret") String secret ) { |
||||
|
||||
JSONObject paramJson = new JSONObject(params); |
||||
|
||||
log.debug("getRpaAuthStatus param{} identity:{} secret:{}", paramJson.toJSONString(), identity, secret); |
||||
|
||||
//参数校验
|
||||
if (StringUtils.isBlank(identity)){ |
||||
return AjaxResult.error("公司ID不能为空"); |
||||
} |
||||
|
||||
if (StringUtils.isBlank(secret)){ |
||||
return AjaxResult.error("公司Key不能为空"); |
||||
} |
||||
|
||||
if (StringUtils.isBlank(paramJson.getString("rzid"))){ |
||||
return AjaxResult.error("认证ID不能为空"); |
||||
} |
||||
|
||||
Companyservice companyservice = iCompanyserviceService.selectCompanyserviceByIdentity(identity); |
||||
if (companyservice == null || !secret.equals(companyservice.getSecret())) { |
||||
return AjaxResult.error(ErrorCode.COMPANY_NOT_FOUND); |
||||
} |
||||
|
||||
return elephantInvoiceService.getRpaAuthStatus(paramJson,companyservice); |
||||
|
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,37 @@ |
||||
package com.jianshui.common.constant; |
||||
|
||||
public enum PersonList { |
||||
|
||||
PERSON_TYPE_01("01", "法定代表人"), |
||||
PERSON_TYPE_02("02", "财务负责人"), |
||||
PERSON_TYPE_03("03", "办税员"), |
||||
PERSON_TYPE_05("05", "管理员"), |
||||
PERSON_TYPE_08("08", "社保经办人"), |
||||
PERSON_TYPE_09("09", "开票员"), |
||||
PERSON_TYPE_10("10", "销售人员"); |
||||
|
||||
private String type; |
||||
private String name; |
||||
|
||||
PersonList(String type, String name){ |
||||
this.type = type; |
||||
this.name = name; |
||||
} |
||||
|
||||
public String getType(){ |
||||
return type; |
||||
} |
||||
|
||||
public String getName(){ |
||||
return name; |
||||
} |
||||
|
||||
public static String getName(String type){ |
||||
for(PersonList personList : PersonList.values()){ |
||||
if(personList.getType().equals(type)){ |
||||
return personList.getName(); |
||||
} |
||||
} |
||||
return "未知类型"; |
||||
} |
||||
} |
@ -0,0 +1,20 @@ |
||||
package com.jianshui.invoice.service; |
||||
|
||||
import com.alibaba.fastjson.JSONObject; |
||||
import com.jianshui.common.core.domain.AjaxResult; |
||||
import com.jianshui.common.core.domain.entity.Companyservice; |
||||
|
||||
public interface ElephantInvoiceService { |
||||
|
||||
//查询电子税局账户
|
||||
AjaxResult queryRpaTaxAccount(String sellertax, Companyservice companyservice); |
||||
|
||||
//数电账户登陆
|
||||
AjaxResult rpaLogin(JSONObject paramJson, Companyservice companyservice); |
||||
|
||||
//获取二维码
|
||||
AjaxResult getRpaQrCode(JSONObject paramJson, Companyservice companyservice); |
||||
|
||||
//获取状态
|
||||
AjaxResult getRpaAuthStatus(JSONObject paramJson, Companyservice companyservice); |
||||
} |
@ -0,0 +1,149 @@ |
||||
package com.jianshui.invoice.service.impl; |
||||
|
||||
import cn.hutool.json.JSONUtil; |
||||
import com.alibaba.fastjson.JSONArray; |
||||
import com.alibaba.fastjson.JSONObject; |
||||
import com.dxhy.order.protocol.invoke.DxhyInterfaceResponse; |
||||
import com.jianshui.common.constant.PersonList; |
||||
import com.jianshui.common.core.domain.AjaxResult; |
||||
import com.jianshui.common.core.domain.entity.Companyservice; |
||||
import com.jianshui.common.utils.JsonKeyCase; |
||||
import com.jianshui.invoice.constant.elephant.ElephantConstantsV6; |
||||
import com.jianshui.invoice.domain.dto.HXResponse; |
||||
import com.jianshui.invoice.service.ElephantInvoiceService; |
||||
import com.jianshui.invoice.utils.elephant.ElephantUtils; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import java.io.UnsupportedEncodingException; |
||||
import java.security.InvalidKeyException; |
||||
import java.security.NoSuchAlgorithmException; |
||||
import java.util.HashMap; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
@Slf4j |
||||
@Service |
||||
public class ElephantInvoiceServiceImpl implements ElephantInvoiceService { |
||||
|
||||
//调用大象获取电子税局账号
|
||||
@Override |
||||
public AjaxResult queryRpaTaxAccount(String sellertax, Companyservice companyservice) { |
||||
|
||||
Map<String,String> param = new HashMap<>(); |
||||
param.put("NSRSBH",sellertax); |
||||
|
||||
DxhyInterfaceResponse dxhyInterfaceResponse = null; |
||||
try { |
||||
log.info("front queryRpaTaxAccount param{}",JSONObject.toJSONString(param)); |
||||
dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.QUERY_RPA_TAX_ACCOUNT_LOCALHOST, ElephantConstantsV6.QUERY_RPA_TAX_ACCOUNT_METHOD, JSONUtil.parse(param), companyservice); |
||||
log.info("front queryRpaTaxAccount response{}",JSONObject.toJSONString(dxhyInterfaceResponse)); |
||||
} catch (UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e) { |
||||
log.error("获取电子税局账号失败{}",e); |
||||
return AjaxResult.error("009999", "系统异常!"); |
||||
} |
||||
|
||||
if (!"000000".equals(dxhyInterfaceResponse.getCode())){ |
||||
return AjaxResult.error(dxhyInterfaceResponse.getMessage()); |
||||
} |
||||
|
||||
JSONObject responJson = JSONObject.parseObject(dxhyInterfaceResponse.getData()); |
||||
responJson = JsonKeyCase.JsonKeyCase(responJson,1); |
||||
if (!"000000".equals(responJson.getString("ztdm"))){ |
||||
return AjaxResult.error(responJson.getString("ztxx")); |
||||
} |
||||
return AjaxResult.success(responJson.getJSONArray("data")); |
||||
} |
||||
|
||||
//调用大象进行登录
|
||||
@Override |
||||
public AjaxResult rpaLogin(JSONObject paramJson, Companyservice companyservice) { |
||||
|
||||
paramJson.put("NSRSBH",companyservice.getSellertax()); |
||||
DxhyInterfaceResponse dxhyInterfaceResponse = null; |
||||
try { |
||||
paramJson = JsonKeyCase.JsonKeyCase(paramJson); |
||||
log.info("front rpaLogin param{}",paramJson); |
||||
dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.RPA_LOGIN_LOCALHOST, ElephantConstantsV6.RPA_LOGIN_METHOD, JSONUtil.parse(paramJson), companyservice); |
||||
log.info("front rpaLogin response{}",JSONObject.toJSONString(dxhyInterfaceResponse)); |
||||
} catch (UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e) { |
||||
log.error("电子税局登陆失败{}",e); |
||||
return AjaxResult.error("009999", "系统异常!"); |
||||
} |
||||
if (!"000000".equals(dxhyInterfaceResponse.getCode())){ |
||||
return AjaxResult.error(dxhyInterfaceResponse.getMessage()); |
||||
} |
||||
//获取返回数据
|
||||
JSONObject responJson = JSONObject.parseObject(dxhyInterfaceResponse.getData()); |
||||
//key转成小写
|
||||
responJson = JsonKeyCase.JsonKeyCase(responJson,1); |
||||
|
||||
if (!"000000".equals(responJson.getString("ztdm"))){ |
||||
return AjaxResult.error(responJson.getString("ztxx")); |
||||
} |
||||
//判断后续方法是否为3
|
||||
JSONObject dataJson = responJson.getJSONObject("data"); |
||||
if ("2".equals(dataJson.getString("hxff"))){ |
||||
JSONObject sj = dataJson.getJSONObject("sj"); |
||||
List<String> personList = sj.getJSONArray("personList").toJavaList(String.class); |
||||
Map<String,String> personTypes = new HashMap<>(); |
||||
personList.forEach(e->personTypes.put(e, PersonList.getName(e))); |
||||
dataJson.put("personList",personTypes); |
||||
} |
||||
|
||||
return AjaxResult.success(dataJson); |
||||
} |
||||
|
||||
//获取二维码
|
||||
@Override |
||||
public AjaxResult getRpaQrCode(JSONObject paramJson, Companyservice companyservice) { |
||||
|
||||
paramJson.put("NSRSBH",companyservice.getSellertax()); |
||||
DxhyInterfaceResponse dxhyInterfaceResponse = null; |
||||
try { |
||||
paramJson = JsonKeyCase.JsonKeyCase(paramJson); |
||||
log.info("front getRpaQrCode param{}",JSONObject.toJSONString(paramJson)); |
||||
dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.GET_RPA_QY_CODE_LOCALHOST, ElephantConstantsV6.GET_RPA_QY_CODE_METHOD, JSONUtil.parse(paramJson), companyservice); |
||||
log.info("front getRpaQrCode response{}",JSONObject.toJSONString(dxhyInterfaceResponse)); |
||||
} catch (UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e) { |
||||
log.error("电子税局登陆失败{}",e); |
||||
return AjaxResult.error("009999", "系统异常!"); |
||||
} |
||||
if (!"000000".equals(dxhyInterfaceResponse.getCode())){ |
||||
return AjaxResult.error(dxhyInterfaceResponse.getMessage()); |
||||
} |
||||
JSONObject responJson = JSONObject.parseObject(dxhyInterfaceResponse.getData()); |
||||
responJson = JsonKeyCase.JsonKeyCase(responJson,1); |
||||
|
||||
if (!"000000".equals(responJson.getString("ztdm"))){ |
||||
return AjaxResult.error(responJson.getString("ztxx")); |
||||
} |
||||
return AjaxResult.success(responJson.getJSONObject("data")); |
||||
} |
||||
|
||||
//数电实名认证状态
|
||||
@Override |
||||
public AjaxResult getRpaAuthStatus(JSONObject paramJson, Companyservice companyservice) { |
||||
paramJson.put("NSRSBH",companyservice.getSellertax()); |
||||
DxhyInterfaceResponse dxhyInterfaceResponse = null; |
||||
try { |
||||
paramJson = JsonKeyCase.JsonKeyCase(paramJson); |
||||
log.info("front getRpaAuthStatus param{}",paramJson); |
||||
dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.GET_RPA_AUTH_STATUS_LOCALHOST, ElephantConstantsV6.GET_RPA_AUTH_STATUS_METHOD, JSONUtil.parse(paramJson), companyservice); |
||||
log.info("front getRpaAuthStatus response{}",JSONObject.toJSONString(dxhyInterfaceResponse)); |
||||
} catch (UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e) { |
||||
log.error("电子税局登陆失败{}",e); |
||||
return AjaxResult.error("009999", "系统异常!"); |
||||
} |
||||
if (!"000000".equals(dxhyInterfaceResponse.getCode())){ |
||||
return AjaxResult.error(dxhyInterfaceResponse.getMessage()); |
||||
} |
||||
JSONObject responJson = JSONObject.parseObject(dxhyInterfaceResponse.getData()); |
||||
responJson = JsonKeyCase.JsonKeyCase(responJson,1); |
||||
|
||||
if (!"000000".equals(responJson.getString("ztdm"))){ |
||||
return AjaxResult.error(responJson.getString("ztxx")); |
||||
} |
||||
return AjaxResult.success(responJson.getJSONObject("data")); |
||||
} |
||||
} |
Loading…
Reference in new issue