瀏覽代碼

新增接口

xusonglin 5 年之前
父節點
當前提交
3bb1204111

+ 24 - 0
src/main/java/com/jkcredit/invoice/hub/constant/CommonConstant.java

@@ -11,4 +11,28 @@ public class CommonConstant {
     public static String MESSAGE_FAILED = "失败";
     public static String USER_NOT_EXIST = "用户不存在";
     public static Integer ACTIVATED_DELETED = 2;
+    public static String[] CAR_FREE_API_ARGS = {"COMPANY_QUERY_V1", "COMPANY_ADD_V1", "VEHICLE_REGISTER_QUERY",
+            "VEHICLE_REGISTER", "WAY_BILL_START", "WAY_BILL_END", "WAY_BILL_HISTORY_START", "WAY_BILL_HISTORY_END",
+            "WAY_BILL_NUM_FIND_INVOICE", "WAY_BILL_COUNT_QUERY"};
+    // 公司查询
+    public static String COMPANY_QUERY_V1 = "COMPANY_QUERY_V1";
+    // 企业注册
+    public static String COMPANY_ADD_V1 = "COMPANY_ADD_V1";
+    // 无车-车辆备案查询
+    public static String VEHICLE_REGISTER_QUERY = "VEHICLE_REGISTER_QUERY";
+    // 无车-车辆备案
+    public static String VEHICLE_REGISTER = "VEHICLE_REGISTER";
+    // 无车-运单开始指令
+    public static String WAY_BILL_START = "WAY_BILL_START";
+    // 无车-运单结束指令
+    public static String WAY_BILL_END = "WAY_BILL_END";
+    // 无车-历史运单开始指令
+    public static String WAY_BILL_HISTORY_START = "WAY_BILL_HISTORY_START";
+    // 无车-历史运单结束指令
+    public static String WAY_BILL_HISTORY_END = "WAY_BILL_HISTORY_END";
+    // 无车-运单号查询发票数据
+    public static String WAY_BILL_NUM_FIND_INVOICE = "WAY_BILL_NUM_FIND_INVOICE";
+    // 月账单交易查询
+    public static String WAY_BILL_COUNT_QUERY = "WAY_BILL_COUNT_QUERY";
+
 }

+ 3 - 0
src/main/java/com/jkcredit/invoice/hub/constant/ResponseStatus.java

@@ -10,4 +10,7 @@ public class ResponseStatus {
     public static Integer SUCCESS = 1;
     public static Integer FAILED = 0;
     public static Integer NOT_FOUND = 3;
+
+    public static Integer API_RESPONSE_DATA_1 = 1;
+    public static Integer API_RESPONSE_DATA_3 = 3;
 }

+ 36 - 2
src/main/java/com/jkcredit/invoice/hub/controller/rest/forward/ForwardResource.java

@@ -1,8 +1,19 @@
 package com.jkcredit.invoice.hub.controller.rest.forward;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.jkcredit.invoice.hub.constant.CommonConstant;
+import com.jkcredit.invoice.hub.constant.ResponseStatus;
 import com.jkcredit.invoice.hub.controller.base.RestResource;
-import com.jkcredit.invoice.hub.spi.web.data.ApiRequestParam;
+import com.jkcredit.invoice.hub.enums.ApiResponseCodeEnum;
+import com.jkcredit.invoice.hub.service.apiCompany.ApiCompanyService;
+import com.jkcredit.invoice.hub.service.apiUser.ApiUserService;
+import com.jkcredit.invoice.hub.spi.lang.exception.ServiceException;
+import com.jkcredit.invoice.hub.spi.rest.data.ApiRequestParam;
+import com.jkcredit.invoice.hub.spi.rest.data.ApiResponseData;
+import com.jkcredit.invoice.hub.util.EnumStatusUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
@@ -16,8 +27,31 @@ import org.springframework.web.bind.annotation.RestController;
 @Slf4j
 @RestController
 public class ForwardResource extends RestResource {
+    @Autowired
+    ApiUserService apiUserService;
+    @Autowired
+    ApiCompanyService apiCompanyService;
+
     @PostMapping("/rest")
-    public void forwardRequest(@RequestBody ApiRequestParam param) {
+    public ApiResponseData forwardRequest(@RequestBody ApiRequestParam param) {
+        try {
+            validate(param);
+        } catch (ServiceException se) {
+            log.error("接口参数ApiRequestParam校验失败,失败原因:{}", se.getMessage());
+            return ApiResponseData.failure(ApiResponseCodeEnum.CODE_1010.getValue(), ApiResponseCodeEnum.CODE_1010.getDesc());
+        }
+
+        // 校验用户key secret, 权限,余额
+        Integer validateUserResult = apiUserService.validateUser(param.getAppKey(), param.getAppSecret(), param.getApi());
+        if (!validateUserResult.equals(ApiResponseCodeEnum.CODE_200.getValue())) {
+            return ApiResponseData.failure(validateUserResult, EnumStatusUtils.getStatusByValue(ApiResponseCodeEnum.class, validateUserResult).getDesc());
+        }
+
+        if (param.getApi().equals(CommonConstant.COMPANY_QUERY_V1)) {
+            return apiCompanyService.companyQuery(JSON.parseObject(JSON.toJSONString(param.getData())));
+        }
+
         log.info(param.toString());
+        return new ApiResponseData();
     }
 }

+ 10 - 10
src/main/java/com/jkcredit/invoice/hub/controller/web/user/UserResource.java

@@ -33,16 +33,16 @@ public class UserResource extends WebResource {
     @Autowired
     UserService userService;
 
-    @PreAuthorize("hasPermission('user','read')")
-    @GetMapping("/user/{id}")
-    public ResponseEntity<AppResponseVo> getUserById(@PathVariable("id") Long id) {
-        try {
-            UserVO userVo = userService.getUserById(id);
-            return ResponseEntity.ok(new AppResponseVo(ResponseStatus.SUCCESS, CommonConstant.MESSAGE_SUCCESS, userVo));
-        } catch (ServiceException serviceException) {
-            return ResponseEntity.ok(new AppResponseVo(ResponseStatus.FAILED, serviceException.getMessage(), null));
-        }
-    }
+//    @PreAuthorize("hasPermission('user','read')")
+//    @GetMapping("/user/{id}")
+//    public ResponseEntity<AppResponseVo> getUserById(@PathVariable("id") Long id) {
+//        try {
+//            UserVO userVo = userService.getUserById(id);
+//            return ResponseEntity.ok(new AppResponseVo(ResponseStatus.SUCCESS, CommonConstant.MESSAGE_SUCCESS, userVo));
+//        } catch (ServiceException serviceException) {
+//            return ResponseEntity.ok(new AppResponseVo(ResponseStatus.FAILED, serviceException.getMessage(), null));
+//        }
+//    }
 
     @PreAuthorize("hasPermission('user','read')")
     @GetMapping("/page/users")

+ 2 - 1
src/main/java/com/jkcredit/invoice/hub/enums/ApiResponseCodeEnum.java

@@ -19,7 +19,8 @@ public enum ApiResponseCodeEnum implements EnumStatus {
     CODE_1090(1090, "商户余额不足!"),
     CODE_1100(1100, "请求的API模块不存在!"),
     CODE_1110(1110, "商户单位时间内请求超过限制!"),
-    CODE_9999(9999, "其他异常-");
+    CODE_9999(9999, "其他异常-"),
+    CODE_200(200, "成功");
 
     private Integer value;
     private String desc;

+ 2 - 0
src/main/java/com/jkcredit/invoice/hub/mapper/UserMapper.java

@@ -15,4 +15,6 @@ public interface UserMapper extends BaseMapper<UserPo> {
     IPage<UserPo> getUsersPage(Page page, @Param("query") UserDto userDto);
 
     UserPo getUserById(Long id);
+
+    UserPo getUserByAppKey(String appKey);
 }

+ 16 - 0
src/main/java/com/jkcredit/invoice/hub/service/apiCompany/ApiCompanyService.java

@@ -0,0 +1,16 @@
+package com.jkcredit.invoice.hub.service.apiCompany;
+
+import com.alibaba.fastjson.JSONObject;
+import com.jkcredit.invoice.hub.spi.rest.data.ApiResponseData;
+
+import java.util.Map;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/1/15 23:50
+ * @version: V1.0
+ **/
+public interface ApiCompanyService {
+    ApiResponseData companyQuery(JSONObject param);
+}

+ 54 - 0
src/main/java/com/jkcredit/invoice/hub/service/apiCompany/ApiCompanyServiceImpl.java

@@ -0,0 +1,54 @@
+package com.jkcredit.invoice.hub.service.apiCompany;
+
+import cn.com.taiji.sdk.comm.ETCCommHelper;
+import cn.com.taiji.sdk.model.comm.protocol.eoms.company.CompanyQueryRequest;
+import cn.com.taiji.sdk.model.comm.protocol.eoms.company.CompanyQueryResponse;
+import com.alibaba.fastjson.JSONObject;
+import com.jkcredit.invoice.hub.enums.ApiResponseCodeEnum;
+import com.jkcredit.invoice.hub.spi.rest.data.ApiResponseData;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/1/15 23:50
+ * @version: V1.0
+ **/
+@Service
+@Slf4j
+public class ApiCompanyServiceImpl implements ApiCompanyService {
+    @Override
+    public ApiResponseData companyQuery(JSONObject param) {
+        long costTimeStart = System.currentTimeMillis();
+        String result;
+
+        CompanyQueryRequest request = new CompanyQueryRequest();
+        request.setCompanyName(param.get("companyName").toString().trim());
+        request.setTaxpaterCode(param.get("taxplayerCode").toString().trim());
+        String fileName = request.getFilename();
+
+        try {
+            // (4)指定协议的响应模型(IssuerUploadResponse),调用upload 发送数据
+            CompanyQueryResponse response = ETCCommHelper.upload(fileName, request, CompanyQueryResponse.class);
+
+            // (5)发送成功处理(这里为示例,简单的将响应模型转为json字符串输出,各省根据实际情况处理)
+            result = response.toJson();
+            long costTimeEnd = System.currentTimeMillis();
+            log.info("[-companyQuery-] result is " + result.replaceAll("\r|\n", "") + " , request is "
+                    + param + ",costtime=" + (costTimeEnd - costTimeStart) + ",startTime=" + costTimeStart
+                    + ",endTime=" + costTimeEnd);
+        } catch (IOException e) {
+            // todo 失败返回码和信息
+            log.info("[-companyQuery-] 网络异常 " + e);
+            return ApiResponseData.failure(1, "");
+        } catch (Exception apie) {
+            // todo 失败返回码和信息
+            log.info("[-companyQuery-] 错误信息:" + apie.getMessage());
+            return ApiResponseData.failure(1, "");
+        }
+        return ApiResponseData.success(ApiResponseCodeEnum.CODE_200.getValue(), result);
+    }
+}

+ 11 - 0
src/main/java/com/jkcredit/invoice/hub/service/apiUser/ApiUserService.java

@@ -0,0 +1,11 @@
+package com.jkcredit.invoice.hub.service.apiUser;
+
+/**
+ * @description: 接口用户信息验证
+ * @author: xusonglin
+ * @create: 2020/1/15 22:51
+ * @version: V1.0
+ **/
+public interface ApiUserService {
+    Integer validateUser(String appKey, String appSecret, String api);
+}

+ 43 - 0
src/main/java/com/jkcredit/invoice/hub/service/apiUser/ApiUserServiceImpl.java

@@ -0,0 +1,43 @@
+package com.jkcredit.invoice.hub.service.apiUser;
+
+import com.jkcredit.invoice.hub.constant.CommonConstant;
+import com.jkcredit.invoice.hub.enums.ApiResponseCodeEnum;
+import com.jkcredit.invoice.hub.model.po.user.UserPo;
+import com.jkcredit.invoice.hub.service.base.BaseService;
+import com.jkcredit.invoice.hub.service.user.UserService;
+import com.jkcredit.invoice.hub.spi.lang.exception.ServiceException;
+import com.jkcredit.invoice.hub.util.CommonUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.thymeleaf.util.ArrayUtils;
+
+/**
+ * @description: 接口用户信息验证
+ * @author: xusonglin
+ * @create: 2020/1/15 22:51
+ * @version: V1.0
+ **/
+@Slf4j
+@Service
+public class ApiUserServiceImpl extends BaseService implements ApiUserService {
+    @Autowired
+    UserService userService;
+
+    @Override
+    public Integer validateUser(String appKey, String appSecret, String api) {
+        // 无效用户
+        UserPo userPo = userService.getUserByAppKey(appKey);
+        if (userPo == null) {
+            return ApiResponseCodeEnum.CODE_1000.getValue();
+        } else if (!userPo.getAppSecret().equals(appSecret)) {
+            return ApiResponseCodeEnum.CODE_1000.getValue();
+        } else if (!ArrayUtils.contains(CommonConstant.CAR_FREE_API_ARGS, api)) {
+            return ApiResponseCodeEnum.CODE_1080.getValue();
+        } else if (CommonUtil.parseDouble(userPo.getBalance()) / CommonUtil.parseDouble(userPo.getPrice()) < CommonUtil.parseDouble(userPo.getPrice())) {
+            return ApiResponseCodeEnum.CODE_1090.getValue();
+        } else {
+            return ApiResponseCodeEnum.CODE_200.getValue();
+        }
+    }
+}

+ 3 - 0
src/main/java/com/jkcredit/invoice/hub/service/user/UserService.java

@@ -20,4 +20,7 @@ public interface UserService {
     Boolean updateUser(UserDto userDto);
 
     void deleteUser(Long id);
+
+    UserPo getUserByAppKey(String appKey);
+
 }

+ 9 - 0
src/main/java/com/jkcredit/invoice/hub/service/user/UserServiceImpl.java

@@ -143,4 +143,13 @@ public class UserServiceImpl extends BaseService implements UserService {
             }
         }
     }
+
+    @Override
+    public UserPo getUserByAppKey(String appKey) {
+        UserPo userPo = userMapper.getUserByAppKey(appKey);
+        if (userPo == null) {
+            throw new ServiceException(ExceptionMessage.USER_NOT_EXIST);
+        }
+        return userPo;
+    }
 }

+ 1 - 4
src/main/java/com/jkcredit/invoice/hub/spi/web/data/ApiRequestParam.java

@@ -1,13 +1,10 @@
-package com.jkcredit.invoice.hub.spi.web.data;
+package com.jkcredit.invoice.hub.spi.rest.data;
 
-import com.jkcredit.invoice.hub.enums.ApiResponseCodeEnum;
-import com.jkcredit.invoice.hub.util.EnumStatusUtils;
 import lombok.Data;
 import lombok.ToString;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
 
 /**
  * @description:

+ 33 - 0
src/main/java/com/jkcredit/invoice/hub/spi/rest/data/ApiResponseData.java

@@ -0,0 +1,33 @@
+package com.jkcredit.invoice.hub.spi.rest.data;
+
+import com.jkcredit.invoice.hub.util.CommonUtil;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/1/15 22:02
+ * @version: V1.0
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ApiResponseData {
+    public static Integer SUCCESS = 1;
+    public static Integer FAILED = 3;
+
+    private Integer data;
+    private Integer code;
+    private String requestid;
+    private String msg;
+
+    public static ApiResponseData success(Integer code, String msg) {
+        return new ApiResponseData(SUCCESS, code, CommonUtil.getRequestId(), msg);
+    }
+
+    public static ApiResponseData failure(Integer code, String msg) {
+        return new ApiResponseData(FAILED, code, CommonUtil.getRequestId(), msg);
+    }
+}

+ 8 - 0
src/main/java/com/jkcredit/invoice/hub/util/CommonUtil.java

@@ -1,6 +1,9 @@
 package com.jkcredit.invoice.hub.util;
 
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.UUID;
 
 /**
  * @description:
@@ -12,4 +15,9 @@ public class CommonUtil {
     public static Double parseDouble(BigDecimal bigDecimal) {
         return bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
     }
+
+    public static String getRequestId() {
+        return new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + ","
+                + UUID.randomUUID().toString();
+    }
 }

+ 13 - 0
src/main/resources/mapper/UserMapper.xml

@@ -87,4 +87,17 @@
         where
         id = #{id}
     </select>
+
+    <select id="getUserByAppKey" resultMap="baseResultMap">
+        select
+            user.id, user.app_key, user.app_secret, user.price, balance.balance
+        from
+            h_user user
+        left join
+            h_user_balance balance
+        on
+            user.id = balance.user_id
+        where
+            activated = 1 and status = 1 and app_key = #{appKey}
+    </select>
 </mapper>

+ 11 - 0
src/main/resources/sdk.properties

@@ -0,0 +1,11 @@
+dtsServiceURL=https://dts.txffp.com
+tempPath=/home/dts/tmp
+enableGzip=true
+enableEvent=false
+authStr=119901_0061nnPiC2
+#½Ó¿ÚÔÝÍ£
+#dtsServiceURL=https://testdts.txffp.com
+#tempPath=/home/dts/tmp
+#enableGzip=true
+#enableEvent=false
+#authStr=000000_issuer123456