From 4440cdda8530906faf89348a3e480b05c20d4e25 Mon Sep 17 00:00:00 2001
From: chengf <2156125618@qq.com>
Date: 星期四, 07 八月 2025 18:46:34 +0800
Subject: [PATCH] 费用初始化2025/08/07

---
 service-api/src/main/java/com/java110/api/controller/app/AppController.java |  190 ++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 168 insertions(+), 22 deletions(-)

diff --git a/service-api/src/main/java/com/java110/api/controller/app/AppController.java b/service-api/src/main/java/com/java110/api/controller/app/AppController.java
index 9713c5d..73c3eeb 100644
--- a/service-api/src/main/java/com/java110/api/controller/app/AppController.java
+++ b/service-api/src/main/java/com/java110/api/controller/app/AppController.java
@@ -16,16 +16,20 @@
 package com.java110.api.controller.app;
 
 import com.alibaba.fastjson.JSONObject;
-import com.java110.api.smo.IApiServiceSMO;
 import com.java110.api.smo.api.IApiSMO;
 import com.java110.api.smo.privilege.IPrivilegeSMO;
 import com.java110.core.base.controller.BaseController;
 import com.java110.core.context.IPageData;
+import com.java110.core.context.PageData;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.core.language.Java110Lang;
+import com.java110.core.log.LoggerFactory;
 import com.java110.utils.constant.CommonConstant;
+import com.java110.utils.util.DateUtil;
+import com.java110.vo.ResultVo;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -50,8 +54,10 @@
 public class AppController extends BaseController {
     private final static Logger logger = LoggerFactory.getLogger(AppController.class);
 
+
+
     @Autowired
-    private IApiServiceSMO apiServiceSMOImpl;
+    private IApiSMO apiSMOImpl;
 
     @Autowired
     private RestTemplate restTemplate;
@@ -60,11 +66,12 @@
     private IPrivilegeSMO privilegeSMOImpl;
 
     /**
-     * 璧勬簮璇锋眰 post鏂瑰紡
+     * 璧勬簮璇锋眰 post鏂瑰紡 缁熶竴鍏ュ彛绫�
      * <p>
      * /app/user.listUser
      * <p>
      * /api/user.listUser
+     *
      *
      * @param service  璇锋眰鎺ュ彛鏂瑰紡
      * @param postInfo post鍐呭
@@ -75,22 +82,31 @@
     @RequestMapping(path = "/{service:.+}", method = RequestMethod.POST)
     @ApiOperation(value = "璧勬簮post璇锋眰", notes = "test: 杩斿洖 2XX 琛ㄧず鏈嶅姟姝e父")
     @ApiImplicitParam(paramType = "query", name = "service", value = "鐢ㄦ埛缂栧彿", required = true, dataType = "String")
+    @Java110Lang
     public ResponseEntity<String> servicePost(@PathVariable String service,
                                               @RequestBody String postInfo,
                                               HttpServletRequest request) {
         ResponseEntity<String> responseEntity = null;
         try {
             Map<String, String> headers = new HashMap<String, String>();
+            //todo 灏佽璇锋眰涓殑 澶翠俊鎭�
             this.getRequestInfo(request, headers);
+            //todo 灏嗘帴鍙g紪鐮侊紙鏈嶅姟缂栫爜锛� 鏀惧叆澶翠俊鎭� 閫氳繃澶翠俊鎭殑鏂瑰紡 浼犻�掑埌鍚庣
             headers.put(CommonConstant.HTTP_SERVICE, service);
+            // todo 璇锋眰鏂瑰紡 鏀惧叆鍒板ご淇℃伅
             headers.put(CommonConstant.HTTP_METHOD, CommonConstant.HTTP_METHOD_POST);
             logger.debug("api锛歿} 璇锋眰鎶ユ枃涓猴細{},header淇℃伅涓猴細{}", service, postInfo, headers);
+            //todo 鑾峰彇鐢� PageProcessAspect aop 鎷︽埅灏佽鐨� pd 椤甸潰鏁版嵁瀵硅薄
             IPageData pd = (IPageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA);
+            //todo 鏍规嵁鐧诲綍鐢ㄦ埛 鐨勬潈闄� 鏍¢獙 鐢ㄦ埛鏄惁鏈夋潈闄愯闂鎺ュ彛,姝ゆ椂鐨�"/app/" + service 涓� 寮�鍙戣繖璐︽埛 鑿滃崟鏉冮檺涓嬬殑璧勬簮鍦板潃
             privilegeSMOImpl.hasPrivilege(restTemplate, pd, "/app/" + service);
-            responseEntity = apiServiceSMOImpl.service(postInfo, headers);
+            //todo 杩涘叆 鎺ュ彛鐩稿叧 涓氬姟澶勭悊
+            responseEntity = apiSMOImpl.doApi(postInfo, headers,request);
+            //todo 鍐欏叆 token
+            wirteToken(request,pd,service,responseEntity);
         } catch (Throwable e) {
             logger.error("璇锋眰post 鏂规硶[" + service + "]澶辫触锛�" + postInfo, e);
-            responseEntity = new ResponseEntity<String>("璇锋眰鍙戠敓寮傚父锛�" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+            responseEntity = ResultVo.error("璇锋眰鍙戠敓寮傚父锛�" + e.getMessage(),HttpStatus.INTERNAL_SERVER_ERROR);
         }
         logger.debug("api锛歿} 杩斿洖淇℃伅涓猴細{}", service, responseEntity);
 
@@ -98,7 +114,7 @@
     }
 
     /**
-     * 璧勬簮璇锋眰 get鏂瑰紡
+     * 璧勬簮璇锋眰 get鏂瑰紡 缁熶竴鍏ュ彛绫�
      *
      * @param service 璇锋眰鎺ュ彛鏂瑰紡
      * @param request 璇锋眰瀵硅薄 鏌ヨ澶翠俊鎭� url绛変俊鎭�
@@ -108,23 +124,29 @@
     @RequestMapping(path = "/{service:.+}", method = RequestMethod.GET)
     @ApiOperation(value = "璧勬簮get璇锋眰", notes = "test: 杩斿洖 2XX 琛ㄧず鏈嶅姟姝e父")
     @ApiImplicitParam(paramType = "query", name = "service", value = "鐢ㄦ埛缂栧彿", required = true, dataType = "String")
+    @Java110Lang
     public ResponseEntity<String> serviceGet(@PathVariable String service,
                                              HttpServletRequest request) {
         ResponseEntity<String> responseEntity = null;
         try {
             Map<String, String> headers = new HashMap<String, String>();
+            //todo 灏佽璇锋眰涓殑 澶翠俊鎭�
             this.getRequestInfo(request, headers);
+            //todo 灏嗘帴鍙g紪鐮侊紙鏈嶅姟缂栫爜锛� 鏀惧叆澶翠俊鎭� 閫氳繃澶翠俊鎭殑鏂瑰紡 浼犻�掑埌鍚庣
             headers.put(CommonConstant.HTTP_SERVICE, service);
+            // todo 璇锋眰鏂瑰紡 鏀惧叆鍒板ご淇℃伅
             headers.put(CommonConstant.HTTP_METHOD, CommonConstant.HTTP_METHOD_GET);
             logger.debug("api锛歿} 璇锋眰鎶ユ枃涓猴細{},header淇℃伅涓猴細{}", "", headers);
+            //todo 鑾峰彇鐢� PageProcessAspect aop 鎷︽埅灏佽鐨� pd 椤甸潰鏁版嵁瀵硅薄
             IPageData pd = (IPageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA);
+            //todo 鏍规嵁鐧诲綍鐢ㄦ埛 鐨勬潈闄� 鏍¢獙 鐢ㄦ埛鏄惁鏈夋潈闄愯闂鎺ュ彛,姝ゆ椂鐨�"/app/" + service 涓� 寮�鍙戣繖璐︽埛 鑿滃崟鏉冮檺涓嬬殑璧勬簮鍦板潃
             privilegeSMOImpl.hasPrivilege(restTemplate, pd, "/app/" + service);
-            //responseEntity = apiSMOImpl.doApi(JSONObject.toJSONString(getParameterStringMap(request)), headers, request);
-            responseEntity = apiServiceSMOImpl.service(JSONObject.toJSONString(getParameterStringMap(request)), headers);
+            //todo 杩涘叆 鎺ュ彛鐩稿叧 涓氬姟澶勭悊
+            responseEntity = apiSMOImpl.doApi(JSONObject.toJSONString(getParameterStringMap(request)), headers, request);
 
         } catch (Throwable e) {
             logger.error("璇锋眰get 鏂规硶[" + service + "]澶辫触锛�", e);
-            responseEntity = new ResponseEntity<String>("璇锋眰鍙戠敓寮傚父锛�" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+            responseEntity = ResultVo.error("璇锋眰鍙戠敓寮傚父锛�" + e.getMessage(),HttpStatus.INTERNAL_SERVER_ERROR);
         }
         logger.debug("api锛歿} 杩斿洖淇℃伅涓猴細{}", service, responseEntity);
 
@@ -141,6 +163,7 @@
     @RequestMapping(path = "/{resource}/{action}", method = RequestMethod.GET)
     @ApiOperation(value = "璧勬簮get璇锋眰", notes = "test: 杩斿洖 2XX 琛ㄧず鏈嶅姟姝e父")
     @ApiImplicitParam(paramType = "query", name = "subServiceGet", value = "鐢ㄦ埛缂栧彿", required = true, dataType = "String")
+    @Java110Lang
     public ResponseEntity<String> subServiceGet(
             @PathVariable String resource,
             @PathVariable String action,
@@ -156,11 +179,11 @@
             logger.debug("api锛歿} 璇锋眰鎶ユ枃涓猴細{},header淇℃伅涓猴細{}", "", headers);
             IPageData pd = (IPageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA);
             privilegeSMOImpl.hasPrivilege(restTemplate, pd, "/app/" + resource + "/" + action);
-            //responseEntity = apiSMOImpl.doApi(JSONObject.toJSONString(getParameterStringMap(request)), headers, request);
-            responseEntity = apiServiceSMOImpl.service(JSONObject.toJSONString(getParameterStringMap(request)), headers);
+            responseEntity = apiSMOImpl.doApi(JSONObject.toJSONString(getParameterStringMap(request)), headers, request);
+            //responseEntity = apiServiceSMOImpl.service(JSONObject.toJSONString(getParameterStringMap(request)), headers);
         } catch (Throwable e) {
             logger.error("璇锋眰get 鏂规硶[" + action + "]澶辫触锛�", e);
-            responseEntity = new ResponseEntity<String>("璇锋眰鍙戠敓寮傚父锛�" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+            responseEntity = ResultVo.error("璇锋眰鍙戠敓寮傚父锛�" + e.getMessage(),HttpStatus.INTERNAL_SERVER_ERROR);
         }
         logger.debug("api锛歿} 杩斿洖淇℃伅涓猴細{}", action, responseEntity);
 
@@ -178,6 +201,7 @@
     @RequestMapping(path = "/{resource}/{action}", method = RequestMethod.POST)
     @ApiOperation(value = "璧勬簮post璇锋眰", notes = "test: 杩斿洖 2XX 琛ㄧず鏈嶅姟姝e父")
     @ApiImplicitParam(paramType = "query", name = "subServicePost", value = "鐢ㄦ埛缂栧彿", required = true, dataType = "String")
+    @Java110Lang
     public ResponseEntity<String> subServicePost(
             @PathVariable String resource,
             @PathVariable String action,
@@ -194,11 +218,11 @@
             logger.debug("api锛歿} 璇锋眰鎶ユ枃涓猴細{},header淇℃伅涓猴細{}", action, postInfo, headers);
             IPageData pd = (IPageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA);
             privilegeSMOImpl.hasPrivilege(restTemplate, pd, "/app/" + resource + "/" + action);
-            //responseEntity = apiSMOImpl.doApi(postInfo, headers, request);
-            responseEntity = apiServiceSMOImpl.service(JSONObject.toJSONString(getParameterStringMap(request)), headers);
+            responseEntity = apiSMOImpl.doApi(postInfo, headers, request);
+            //responseEntity = apiServiceSMOImpl.service(JSONObject.toJSONString(getParameterStringMap(request)), headers);
         } catch (Throwable e) {
             logger.error("璇锋眰post 鏂规硶[" + action + "]澶辫触锛�" + postInfo, e);
-            responseEntity = new ResponseEntity<String>("璇锋眰鍙戠敓寮傚父锛�" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+            responseEntity = ResultVo.error("璇锋眰鍙戠敓寮傚父锛�" + e.getMessage(),HttpStatus.INTERNAL_SERVER_ERROR);
         }
         logger.debug("api锛歿} 杩斿洖淇℃伅涓猴細{}", action, responseEntity);
 
@@ -217,6 +241,7 @@
     @RequestMapping(path = "/{service:.+}", method = RequestMethod.PUT)
     @ApiOperation(value = "璧勬簮put璇锋眰", notes = "test: 杩斿洖 2XX 琛ㄧず鏈嶅姟姝e父")
     @ApiImplicitParam(paramType = "query", name = "service", value = "鐢ㄦ埛缂栧彿", required = true, dataType = "String")
+    @Java110Lang
     public ResponseEntity<String> servicePut(@PathVariable String service,
                                              @RequestBody String postInfo,
                                              HttpServletRequest request) {
@@ -229,11 +254,11 @@
             logger.debug("api锛歿} 璇锋眰鎶ユ枃涓猴細{},header淇℃伅涓猴細{}", service, postInfo, headers);
             IPageData pd = (IPageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA);
             privilegeSMOImpl.hasPrivilege(restTemplate, pd, "/app/" + service);
-            //responseEntity = apiSMOImpl.doApi(postInfo, headers, request);
-            responseEntity = apiServiceSMOImpl.service(JSONObject.toJSONString(getParameterStringMap(request)), headers);
+            responseEntity = apiSMOImpl.doApi(postInfo, headers, request);
+            //responseEntity = apiServiceSMOImpl.service(JSONObject.toJSONString(getParameterStringMap(request)), headers);
         } catch (Throwable e) {
             logger.error("璇锋眰put 鏂规硶[" + service + "]澶辫触锛�", e);
-            responseEntity = new ResponseEntity<String>("璇锋眰鍙戠敓寮傚父锛�" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+            responseEntity = ResultVo.error("璇锋眰鍙戠敓寮傚父锛�" + e.getMessage(),HttpStatus.INTERNAL_SERVER_ERROR);
         }
         logger.debug("api锛歿} 杩斿洖淇℃伅涓猴細{}", service, responseEntity);
         return responseEntity;
@@ -250,6 +275,7 @@
     @RequestMapping(path = "/{service:.+}", method = RequestMethod.DELETE)
     @ApiOperation(value = "璧勬簮delete璇锋眰", notes = "test: 杩斿洖 2XX 琛ㄧず鏈嶅姟姝e父")
     @ApiImplicitParam(paramType = "query", name = "service", value = "鐢ㄦ埛缂栧彿", required = true, dataType = "String")
+    @Java110Lang
     public ResponseEntity<String> serviceDelete(@PathVariable String service,
                                                 HttpServletRequest request) {
         ResponseEntity<String> responseEntity = null;
@@ -261,14 +287,97 @@
             logger.debug("api锛歿} 璇锋眰鎶ユ枃涓猴細{},header淇℃伅涓猴細{}", service, "", headers);
             IPageData pd = (IPageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA);
             privilegeSMOImpl.hasPrivilege(restTemplate, pd, "/app/" + service);
-            //responseEntity = apiSMOImpl.doApi(JSONObject.toJSONString(getParameterStringMap(request)), headers, request);
-            responseEntity = apiServiceSMOImpl.service(JSONObject.toJSONString(getParameterStringMap(request)), headers);
+            responseEntity = apiSMOImpl.doApi(JSONObject.toJSONString(getParameterStringMap(request)), headers, request);
+            //responseEntity = apiServiceSMOImpl.service(JSONObject.toJSONString(getParameterStringMap(request)), headers);
         } catch (Throwable e) {
             logger.error("璇锋眰delete 鏂规硶[" + service + "]澶辫触锛�", e);
-            responseEntity = new ResponseEntity<String>("璇锋眰鍙戠敓寮傚父锛�" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+            responseEntity = ResultVo.error("璇锋眰鍙戠敓寮傚父锛�" + e.getMessage(),HttpStatus.INTERNAL_SERVER_ERROR);
         }
 
         logger.debug("api锛歿} 杩斿洖淇℃伅涓猴細{}", service, responseEntity);
+        return responseEntity;
+    }
+
+    /**
+     * 澶栭儴绯荤粺浣跨敤 get
+     * 瀵规帴涓�浜涘ぇ绯荤粺鏃� 浠栦滑涓嶄細鎸夌収HC鐨勮姹�
+     * 鎵�浠ュ皢HC瑕佹眰鐨刟ppId 鏀惧埌璺姴鍦板潃
+     * @param request 璇锋眰瀵硅薄 鏌ヨ澶翠俊鎭� url绛変俊鎭�
+     * @return http status 200 鎴愬姛 鍏朵粬澶辫触
+     */
+
+    @RequestMapping(path = "/ext/{serviceCode}/{appId}", method = RequestMethod.GET)
+    @Java110Lang
+    public ResponseEntity<String> extGet(
+            @PathVariable String serviceCode,
+            @PathVariable String appId,
+            HttpServletRequest request) {
+        ResponseEntity<String> responseEntity = null;
+        Map<String, String> headers = new HashMap<String, String>();
+        try {
+            this.getRequestInfo(request, headers);
+            //todo 琛ュ厖appId淇℃伅
+            headers.put("app-id",appId);
+            headers.put("user-id","-1");
+            headers.put("transaction-id", GenerateCodeFactory.getUUID());
+            headers.put("req-time", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_DEFAULT));
+            headers.put(CommonConstant.HTTP_SERVICE, serviceCode);
+            headers.put(CommonConstant.HTTP_METHOD, CommonConstant.HTTP_METHOD_GET);
+            logger.debug("api锛歿} 璇锋眰鎶ユ枃涓猴細{},header淇℃伅涓猴細{}", "", headers);
+            IPageData pd = (IPageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA);
+            IPageData newPd = PageData.newInstance().builder(pd.getUserId(), pd.getUserName(), pd.getToken(), pd.getReqData(),
+                    "", "", "", pd.getSessionId(), appId, pd.getPayerObjId(), pd.getPayerObjType(), pd.getEndTime());
+            request.setAttribute(CommonConstant.CONTEXT_PAGE_DATA,newPd);
+            privilegeSMOImpl.hasPrivilege(restTemplate, newPd, "/app/" + serviceCode);
+            responseEntity = apiSMOImpl.doApi(JSONObject.toJSONString(getParameterStringMap(request)), headers, request);
+        } catch (Throwable e) {
+            logger.error("璇锋眰get 鏂规硶[" + serviceCode + "]澶辫触锛�", e);
+            responseEntity = ResultVo.error("璇锋眰鍙戠敓寮傚父锛�" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+        }
+        logger.debug("api锛歿} 杩斿洖淇℃伅涓猴細{}", serviceCode, responseEntity);
+
+        return responseEntity;
+    }
+
+    /**
+     * 澶栭儴绯荤粺浣跨敤 post
+     * 瀵规帴涓�浜涘ぇ绯荤粺鏃� 浠栦滑涓嶄細鎸夌収HC鐨勮姹�
+     * 鎵�浠ュ皢HC瑕佹眰鐨刟ppId 鏀惧埌璺姴鍦板潃
+     * @param request 璇锋眰瀵硅薄 鏌ヨ澶翠俊鎭� url绛変俊鎭�
+     * @return http status 200 鎴愬姛 鍏朵粬澶辫触
+     */
+
+    @RequestMapping(path = "/ext/{appId}/{serviceCode}", method = RequestMethod.POST)
+    @Java110Lang
+    public ResponseEntity<String> extPost(
+            @PathVariable String serviceCode,
+            @PathVariable String appId,
+            @RequestBody String postInfo,
+            HttpServletRequest request) {
+        ResponseEntity<String> responseEntity = null;
+        Map<String, String> headers = new HashMap<String, String>();
+        try {
+            this.getRequestInfo(request, headers);
+            //todo 琛ュ厖appId淇℃伅
+            headers.put("app-id",appId);
+            headers.put("user-id","-1");
+            headers.put("transaction-id", GenerateCodeFactory.getUUID());
+            headers.put("req-time", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_DEFAULT));
+            headers.put(CommonConstant.HTTP_SERVICE, serviceCode);
+            headers.put(CommonConstant.HTTP_METHOD, CommonConstant.HTTP_METHOD_POST);
+            logger.debug("api锛歿} 璇锋眰鎶ユ枃涓猴細{},header淇℃伅涓猴細{}", "", headers);
+            IPageData pd = (IPageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA);
+            IPageData newPd = PageData.newInstance().builder(pd.getUserId(), pd.getUserName(), pd.getToken(), postInfo,
+                    "", "", "", pd.getSessionId(), appId, pd.getPayerObjId(), pd.getPayerObjType(), pd.getEndTime());
+            request.setAttribute(CommonConstant.CONTEXT_PAGE_DATA,newPd);
+            privilegeSMOImpl.hasPrivilege(restTemplate, newPd, "/app/" + serviceCode);
+            responseEntity = apiSMOImpl.doApi(postInfo, headers, request);
+        } catch (Throwable e) {
+            logger.error("璇锋眰get 鏂规硶[" + serviceCode + "]澶辫触锛�", e);
+            responseEntity = ResultVo.error("璇锋眰鍙戠敓寮傚父锛�" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+        }
+        logger.debug("api锛歿} 杩斿洖淇℃伅涓猴細{}", serviceCode, responseEntity);
+
         return responseEntity;
     }
 
@@ -305,7 +414,44 @@
             if ("userId".equals(key)) {
                 headers.put("user_id", claims.get(key));
             }
+            if("userName".equals(key)){
+                headers.put("userName", "-");
+            }
             headers.put(key, claims.get(key));
         }
     }
+
+    /**
+     * 鍐欏叆 token
+     * @param request
+     * @param pd
+     * @param service
+     * @param responseEntity
+     */
+    private void wirteToken(HttpServletRequest request, IPageData pd, String service, ResponseEntity<String> responseEntity) {
+        String[] services = new String[]{
+                "login.accessTokenLogin"
+        };
+
+        if(responseEntity.getStatusCode() != HttpStatus.OK){
+            return;
+        }
+        boolean flag = false;
+        for(String tmpService : services){
+            if(tmpService.equals(service)){
+                flag =true;
+            }
+        }
+
+        if(!flag){
+            return;
+        }
+
+        JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
+        if(!"0".equals(paramOut.getString("code"))){
+            return;
+        }
+        String token = paramOut.getJSONObject("data").getString("token");
+        pd.setToken(token);
+    }
 }

--
Gitblit v1.8.0