diff --git a/deployment-master.yaml b/deployment-master.yaml index 8bd9734..1dc2948 100644 --- a/deployment-master.yaml +++ b/deployment-master.yaml @@ -57,7 +57,7 @@ spec: containers: - name: biz-service-ebtp-extend image: harbor.dcos.xixian.unicom.local/eshop/biz-service-ebtp-extend:latest - args: ["java", "-Djava.security.egd=file:/dev/./urandom", "-javaagent:/pinpoint/tianyan-springboot-agent/pinpoint-bootstrap-1.8.0.jar", "-Dpinpoint.agentId=$(MY_POD_IP)","-Dpinpoint.applicationName=$(APP_NAME)", "-Dpinpoint.licence=$(AGENT_LICENCE_DEV)", "-jar", "/app.jar"] + args: ["java", "-Djava.security.egd=file:/dev/./urandom", "-javaagent:/pinpoint/tianyan-springboot-agent/pinpoint-bootstrap-1.8.0.jar", "-Dpinpoint.agentId=$(MY_POD_IP)","-Dpinpoint.applicationName=$(APP_NAME)", "-Dpinpoint.licence=$(AGENT_LICENCE)", "-jar", "/app.jar"] volumeMounts: - name: log mountPath: /log diff --git a/lib/access_token1.3.jar b/lib/access_token1.3.jar new file mode 100644 index 0000000..dc162fc Binary files /dev/null and b/lib/access_token1.3.jar differ diff --git a/pom.xml b/pom.xml index d9e5db1..2891d44 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.chinaunicom.ebtp mall-ebtp-cloud-parent - 0.0.1-SNAPSHOT + 2.0.0-SNAPSHOT com.chinaunicom.mall.ebtp @@ -20,29 +20,10 @@ com.chinaunicom.mall.ebtp uboot-core - 0.0.1-SNAPSHOT - - - - com.chinaunicom.ebtp - mall-ebtp-cloud-attachment-sdk - - - - com.chinaunicom.ebtp - mall-ebtp-cloud-apollo-starter + 2.0.0-SNAPSHOT - - mysql - mysql-connector-java - - - - org.apache.shardingsphere - sharding-jdbc-spring-boot-starter - - + com.deepoove poi-tl @@ -98,9 +79,9 @@ cryp.access accessToken - 1.0 + 1.3 system - ${basedir}/lib/access_token1.1.jar + ${basedir}/lib/access_token1.3.jar diff --git a/sim.yaml b/sim.yaml new file mode 100644 index 0000000..20efd36 --- /dev/null +++ b/sim.yaml @@ -0,0 +1,115 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: biz-service-ebtp-extend #[1] Deployment名称,可填写微服务名称 + namespace: default + labels: + app: biz-service-ebtp-extend + +spec: + replicas: 3 + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + selector: + matchLabels: + app: biz-service-ebtp-extend #[2] 选择器匹配时标签名称,可填写微服务名称 + template: + metadata: + labels: + app: biz-service-ebtp-extend #[3] 模板名称,可填写微服务名称 + annotations: + prometheus.io/port: '18018' + prometheus.io/jl-pod: 'true' + spec: + volumes: + - name: log + hostPath: + path: /var/lib/docker/log/349553515466-preprod/default-group/all + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app + operator: In + values: + - biz-service-ebtp-extend + topologyKey: "kubernetes.io/hostname" + containers: + - name: biz-service-ebtp-extend #[6] 必选,容器名称,可填写微服务名称 + image: harbor.dcos.guangzhou.unicom.local/eshop/biz-service-ebtp-extend:latest #[7] 镜像名称,请把biz-service-ebtp-extend替换为服务名称 + args: ["java", "-Djava.security.egd=file:/dev/./urandom", "-javaagent:/pinpoint/tianyan-springboot-agent/pinpoint-bootstrap-1.8.0.jar", "-Dpinpoint.agentId=$(MY_POD_IP)","-Dpinpoint.applicationName=$(APP_NAME)", "-Dpinpoint.licence=$(AGENT_LICENCE_DEV)", "-jar", "/app.jar"] + volumeMounts: + - name: log + mountPath: /log + ports: + - containerPort: 18018 + livenessProbe: + failureThreshold: 3 + httpGet: + port: 18018 + path: /actuator/health + scheme: HTTP + initialDelaySeconds: 300 + periodSeconds: 60 + successThreshold: 1 + timeoutSeconds: 2 + readinessProbe: + failureThreshold: 1 + httpGet: + port: 18018 + path: /actuator/health + scheme: HTTP + periodSeconds: 5 + successThreshold: 2 + timeoutSeconds: 2 + resources: + requests: + cpu: 1000m + memory: 2Gi + limits: + cpu: 3000m + memory: 6Gi + env: + - name: APP_NAME + value: biz_ebtp_extend + - name: AGENT_LICENCE + value: 527BFA7B28577578 + - name: APOLLO_CONFIGSERVICE + value: http://apollo-configservice:8080 + - name: MY_POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: JAVA_TOOL_OPTIONS + value: + -XX:+UnlockExperimentalVMOptions + -XX:+UseContainerSupport + -XX:+UseCGroupMemoryLimitForHeap + -XX:InitialRAMPercentage=40.0 + -XX:MinRAMPercentage=20.0 + -XX:MaxRAMPercentage=80.0 +--- +kind: Service +apiVersion: v1 +metadata: + name: biz-service-ebtp-extend-svc # [11] service的名字,格式为“服务名-svc” + namespace: default + labels: + service: biz-service-ebtp-extend-svc # [12] service的标签,可与参数[11]相同 + annotations: + prometheus.io/port: '18018' #[13] prometheus自动发现service的端口,也是该微服务所使用的端口,与参数[4]相同 + prometheus.io/jl-svc: 'true' + +spec: + ports: + - port: 18018 #[15] 与参数4相同 + targetPort: 18018 #[16] 与参数4相同 + selector: + app: biz-service-ebtp-extend #[17] 该service对应Deployment的名字,与参数[1]相同 +--- + + + diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/crypconfigure/service/impl/CrypConfigureServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/crypconfigure/service/impl/CrypConfigureServiceImpl.java index ba1d66b..bd794c0 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/crypconfigure/service/impl/CrypConfigureServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/crypconfigure/service/impl/CrypConfigureServiceImpl.java @@ -3,15 +3,11 @@ package com.chinaunicom.mall.ebtp.extend.crypconfigure.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.serializer.SerializerFeature; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.chinaunicom.baas.util.AccessToken; import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService; import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; import com.chinaunicom.mall.ebtp.common.constant.CommonConstants; import com.chinaunicom.mall.ebtp.common.crypto.service.CrypServiceImpl; -import com.chinaunicom.mall.ebtp.common.crypto.tenderfee.test; import com.chinaunicom.mall.ebtp.common.exception.common.CommonExceptionEnum; import com.chinaunicom.mall.ebtp.common.uniBss.constant.UniBssConstant; import com.chinaunicom.mall.ebtp.common.uniBss.entity.*; @@ -27,13 +23,11 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.core.io.ClassPathResource; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.io.InputStream; import java.io.UnsupportedEncodingException; -import java.net.URL; import java.text.SimpleDateFormat; import java.util.*; @@ -54,16 +48,21 @@ public class CrypConfigureServiceImpl extends BaseServiceImpl jsonMap = JSONArray.parseObject(json,Map.class); + Map jsonMap = JSONArray.parseObject(json); Object signObject = new Object(); if(jsonMap.get("BODY_LIST")!=null){ @@ -200,14 +213,23 @@ public class CrypConfigureServiceImpl extends BaseServiceImpl parseJSON2Map(String jsonStr){ + Map map = new HashMap(); + Map strmap = JSONArray.parseObject(jsonStr,Map.class); + for(Object k : strmap.keySet()){ + Object v = strmap.get(k); + if(v instanceof JSONArray){ + List> list = new ArrayList>(); + Iterator it = ((JSONArray)v).iterator(); + while (it.hasNext()){ + Object json2 = it.next(); + list.add(parseJSON2Map(json2.toString())); + } + map.put(k.toString(),list); + }else{ + map.put(k.toString(),v); + } + } + return map; + } + public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, UnsupportedEncodingException { -// String token = AccessToken.tokenCreate("123"); -// System.out.println(token); + //String json = "{\"RESULT_ID\":\"1\",\"TP_ID\":\"2\",\"SECTION_ID\":\"3\",\"REPORT_ID\":\"4\",\"RESULTDETAIL\":[{\"RESULT_DETAIL_ID\":\"51\",\"RESULT_ID\":\"52\",\"TENDERER_ID\":\"53\",\"WINNER_CANDIDATE\":\"54\",\"PRICE\":\"55\",\"PRICE_REVIEW\":\"56\",\"BUSINESS_SCORE\":\"57\",\"TECHNICAL_SCORE\":\"58\",\"SERVICE_SCORE\":\"59\",\"PRICE_SCORE\":\"60\",\"TOTAL_SCORE\":\"61\",\"CONTRACTED_MONEY\":\"62\",\"TAX_RATE_PRICE\":\"63\",\"SCOREDETAIL\":[{\"RESULT_DETAIL_ID\":\"71\",\"TENDERER_ID\":\"72\",\"USER_ID\":\"73\",\"BUSINESS_SCORE\":\"74\",\"TECHNICAL_SCORE\":\"75\",\"SERVICE_SCORE\":\"76\",\"PRICE_SCORE\":\"77\"}]}]}"; + + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //format.setTimeZone(TimeZone.getTimeZone("GMT")); + String date = format.format(new Date()); + + String token = AccessToken.tokenCreate("bidding"); + System.out.println(token); // example of HashMap entity, treeMap can also work out, // but LinkedHashMap is NOT supported // Map mapb= new HashMap<>(); @@ -275,25 +323,24 @@ public class CrypConfigureServiceImpl extends BaseServiceImpl f.getSupplierRegisterId().equals(vo.getId())).findFirst().orElseGet(BidEvalDetailSummaryVO::new); Map memberScoreMap = detailSummary.getScoreMap(); for (JuryPrintVO memberVO : memberAll) { - if (memberScoreMap.containsKey(memberVO.getUserId())) { + if (memberScoreMap != null && memberScoreMap.containsKey(memberVO.getUserId())) { BigDecimal score = memberScoreMap.get(memberVO.getUserId()).getScore(); this.createCell(row, cellIndex++, cellStyle, score == null ? "" : String.valueOf(score)); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java index 753aeab..9c288bf 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java @@ -18,7 +18,7 @@ import java.util.List; public interface TenderFeignService { @ApiOperation("查询评审室下初审投标状态") - @GetMapping("/v1/supplier_register/room/tender/{roomId}") + @GetMapping("v1/supplier_register/room/downloaded/{roomId}") BaseResponse> queryRoomTenderCount(@ApiParam(value = "评审室id", required = true) @PathVariable String roomId); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/userinfo/controller/UserInfoController.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/userinfo/controller/UserInfoController.java new file mode 100644 index 0000000..0489224 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/userinfo/controller/UserInfoController.java @@ -0,0 +1,39 @@ +package com.chinaunicom.mall.ebtp.extend.userinfo.controller; + +import com.chinaunicom.mall.ebtp.cloud.userinfo.starter.service.UserInfoService; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@RestController +@RequestMapping("/v1/userinfo/") +public class UserInfoController { + + @Autowired + private UserInfoService service; + + /** + * 获取用户信息 + * + * @param token (认证token) + * @return + */ + @GetMapping("get") + public ResponseEntity getUserInfo( + @RequestHeader(name = "Authorization", required = false) String token) { + if (StringUtils.isEmpty(token)) { + log.error("access token is empty"); + return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build(); + } + return ResponseEntity.ok(service.getUserInfo(token)); + } + +} diff --git a/src/main/resources/application-sim.yml b/src/main/resources/application-sim.yml new file mode 100644 index 0000000..aa507b5 --- /dev/null +++ b/src/main/resources/application-sim.yml @@ -0,0 +1,179 @@ +server: + port: 18018 + servlet: + context-path: / + +seata: + service: + vgroup-mapping: + biz-service-ebtp-extend-service-group: seata-server-jl + registry: + type: eureka + eureka: + serviceUrl: http://eureka-1-svc:8080/eureka,http://eureka-2-svc:8080/eureka,http://eureka-3-svc:8080/eureka + +# 对应 apollo 配置中心的应用名 +app: + id: biz-service-ebtp-extend + +# Apollo 配置信息 +apollo: + meta: http://10.242.31.54:6001 + bootstrap: + namespace: application + enabled: true + eagerLoad: + enabled: true + +spring: + aop: + auto: true #开启spring的aop配置 + proxy-target-class: true + + application: + name: biz-service-ebtp-extend + + shardingsphere: + datasource: + names: ds0 + ds0: + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + username: mall + password: unicom + jdbc-url: jdbc:mysql://10.125.160.37:3306/ebtp_mall_extend?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + url: jdbc:mysql://10.125.160.37:3306/ebtp_mall_extend?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + filters: stat,wall,log4j + maxActive: 20 + initialSize: 1 + maxWait: 60000 + minIdle: 1 + timeBetweenEvictionRunsMillis: 60000 + minEvictableIdleTimeMillis: 300000 + validationQuery: select 'x' + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + poolPreparedStatements: true + maxOpenPreparedStatements: 20 + connection-properties: druid.stat.merggSql=ture;druid.stat.slowSqlMillis=5000 + + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + serialization: + write-dates-as-timestamps: false + + # 天宫Kafka增加了安全认证,需要配置安全属性 + kafka: + bootstrap-servers: 10.125.164.24:32002,10.125.164.192:32096,10.125.164.89:32002 + template: + default-topic: jl_eshop + + # 生产者配置参数 + producer: + client-id: core-service-ebtp-crypt + properties: + security.protocol: SASL_PLAINTEXT + sasl.mechanism: SCRAM-SHA-256 + sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="eshop-kafka-sim" password="Unicom#135"; + + # 消费者配置参数 + consumer: + group-id: core-service-ebtp-crypt-consumer + auto-offset-reset: latest + properties: + security.protocol: SASL_PLAINTEXT + sasl.mechanism: SCRAM-SHA-256 + sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="eshop-kafka-sim" password="Unicom#135"; + + # 生产区 redis 配置 + redis: + sentinel: + master: eshop-redis-sim + nodes: 10.125.164.24:32510,10.125.164.90:32515,10.125.164.89:32516 + password: Unicom#135 + +# 天宫Eureka配置 +eureka: + client: + service-url: + defaultZone: http://eureka-1-svc:8080/eureka,http://eureka-2-svc:8080/eureka,http://eureka-3-svc:8080/eureka + instance: + prefer-ip-address: true + instance-ip: ${spring.cloud.client.ip-address}:${server.port} + +mybatis-plus: + configuration: + # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射 + map-underscore-to-camel-case: true + auto-mapping-behavior: full + # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + mapper-locations: classpath*:com/chinaunicom/mall/ebtp/**/mapper/*Mapper.xml + global-config: + # 逻辑删除配置 + db-config: + # logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2) @TableLogic + logic-delete-value: deleted # 逻辑已删除值 + logic-not-delete-value: normal # 逻辑未删除值 + +# --------------feign ------------ +feign: + httpclient: + enabled: false + okhttp: + enabled: true + client: + config: + default: + connect-timeout: 20000 + read-timeout: 20000 + +hystrix: + command: + default: + execution: + timeout: + enabled: true + isolation: + strategy: SEMAPHORE + thread: + timeoutInMilliseconds: 200000 #熔断超时时间 + circuitBreaker: + sleepWindowInMilliseconds: 20000 + forceClosed: true + +ribbon: + ReadTimeout: 20000 #请求处理的超时时间 + ConnectTimeout: 20000 #请求连接超时时间 + MaxAutoRetries: 0 #对当前实例的重试次数 + MaxAutoRetriesNextServer: 1 #切换实例的重试次数 1 + +mconfig: + workerId: 1 + datacenterId: 1 + # 服务名 + feign: + name: + open: biz-service-ebtp-opening #开标大厅服务 + process: biz-service-ebtp-process #评审流程服务 + project: biz-service-ebtp-project #项目服务 + resps: biz-service-ebtp-resps #应答结构化服务 + rsms: biz-service-ebtp-rsms #评审结构化服务 + tender: biz-service-ebtp-tender #投标服务 + documentcenter: core-service-document-center #文档中心 + usercenter: core-service-usercenter-public #用户中心 + +document: + clientHttpUrl: http://10.242.31.54:8100/auth/oauth/token?grant_type=client_credentials&client_id=bVS46ElU&client_secret=58ea04ba02475c8da2321cc99849d2a10f15b749 + +# 用户暴露给 prometheus 的健康数据 +management: + endpoints: + web: + exposure: + include: "*" + cors: + allowed-origins: "*" + allowed-methods: "*" diff --git a/src/main/resources/bidding.crt b/src/main/resources/bidding.crt new file mode 100644 index 0000000..b85b39f --- /dev/null +++ b/src/main/resources/bidding.crt @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE----- +MIICtjCCAlygAwIBAgIUe215ilr4OdlnuVCXfgTrqJrcqpcwCgYIKoZIzj0EAwIw +ezELMAkGA1UEBhMCQ04xETAPBgNVBAgTCFNoYW5Eb25nMQ4wDAYDVQQHEwVKaU5h +bjEiMCAGA1UEChMZc2V0dGxlc3VwcGx5Y2hhaW40cnN1cHBseTElMCMGA1UEAxMc +Y2Euc2V0dGxlc3VwcGx5Y2hhaW40cnN1cHBseTAeFw0yMTA4MjYwODAwMDBaFw0y +MjA4MjYwODA1MDBaMDkxHjANBgNVBAsTBmNsaWVudDANBgNVBAsTBnN1cHBseTEX +MBUGA1UEAwwOYmlkZGluZ0BzdXBwbHkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC +AARrEnl3cvS8/iptIoDWCbzdEDYBmCPQLQSsCfiv+qSJ3dx0UQv16t0v1JaL6ihp +N5GwdGn16k8gLER0Z3Pivhyko4H/MIH8MA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMB +Af8EAjAAMB0GA1UdDgQWBBQqt95Q16+r/2QBxPOt9baxT6hRCzArBgNVHSMEJDAi +gCCoEmkNovEkOgVGTQoOz5I4GjY1A8RZIA08NVJkoU/TczAnBgNVHREEIDAeghxi +YWFzLWZhYnJpYy03ZjY2ODU1Y2ZmLTZ4NThyMGcGCCoDBAUGBwgBBFt7ImF0dHJz +Ijp7ImhmLkFmZmlsaWF0aW9uIjoic3VwcGx5IiwiaGYuRW5yb2xsbWVudElEIjoi +YmlkZGluZ0BzdXBwbHkiLCJoZi5UeXBlIjoiY2xpZW50In19MAoGCCqGSM49BAMC +A0gAMEUCIQCjRuJ4PjFSQxpBZGLrYF7AkwkzV+tWpHRoWffYWnAGWgIgP8L6WIBC +CRrxg9Jv/oB2MNAHjaw6WLJdpSjB2Xv/QCs= +-----END CERTIFICATE----- diff --git a/src/main/resources/bidding_certPrivate.pem b/src/main/resources/bidding_certPrivate.pem new file mode 100644 index 0000000..ca54b7f --- /dev/null +++ b/src/main/resources/bidding_certPrivate.pem @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgXgGSyYeypZ4JK9Au +gOxkTu0Yj2SMVkzcKZOC1Pe2LRqhRANCAARrEnl3cvS8/iptIoDWCbzdEDYBmCPQ +LQSsCfiv+qSJ3dx0UQv16t0v1JaL6ihpN5GwdGn16k8gLER0Z3Pivhyk +-----END PRIVATE KEY-----