Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
A
Aidea
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sa_aidea
Aidea
Commits
2535fc5a
Commit
2535fc5a
authored
Aug 20, 2021
by
马超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(微问诊): 上传药品清单接口
parent
d0efb5f6
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
463 additions
and
7 deletions
+463
-7
CdfortisConstant.java
.../java/com/cftech/cdfortis/constants/CdfortisConstant.java
+20
-0
CdfortisDrugInfo.java
...main/java/com/cftech/cdfortis/model/CdfortisDrugInfo.java
+41
-0
CdfortisService.java
...ain/java/com/cftech/cdfortis/service/CdfortisService.java
+32
-0
CdfortisServiceImpl.java
...com/cftech/cdfortis/service/impl/CdfortisServiceImpl.java
+139
-0
CdfortisResponseUtil.java
...n/java/com/cftech/cdfortis/util/CdfortisResponseUtil.java
+18
-0
CdfortisTokenUtil.java
...main/java/com/cftech/cdfortis/util/CdfortisTokenUtil.java
+120
-0
CdfortisController.java
...main/java/com/cftech/cdfortis/web/CdfortisController.java
+49
-0
PreDrugs.java
...ule/src/main/java/com/cftech/predrugs/model/PreDrugs.java
+2
-0
cdfortis.http
...ules/prescription-module/src/main/test/http/cdfortis.http
+16
-0
prescription.http
.../prescription-module/src/main/test/http/prescription.http
+0
-3
common-test.properties
cftech-common-web/src/main/resources/common-test.properties
+12
-1
common.properties
cftech-common-web/src/main/resources/common.properties
+14
-3
No files found.
aidea-modules/prescription-module/src/main/java/com/cftech/cdfortis/constants/CdfortisConstant.java
0 → 100644
View file @
2535fc5a
package
com
.
cftech
.
cdfortis
.
constants
;
public
class
CdfortisConstant
{
/**
* 返回结果returnCode结构
* {"returnCode":{"content":"成功","key":"C00010000","value":"success"}}
* 解析returnCode
*/
public
static
String
RETURN_CODE
=
"returnCode"
;
public
static
String
RETURN_CODE_KEY
=
"key"
;
public
static
String
RETURN_CODE_CONTENT
=
"content"
;
public
static
String
RETURN_CODE_VALUE
=
"value"
;
/**
* 成功的返回值
*/
public
static
String
RESULT_SUCC_CODE
=
"C00010000"
;
}
aidea-modules/prescription-module/src/main/java/com/cftech/cdfortis/model/CdfortisDrugInfo.java
0 → 100644
View file @
2535fc5a
package
com
.
cftech
.
cdfortis
.
model
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
public
class
CdfortisDrugInfo
implements
Serializable
{
/**
* 国药准字
*/
private
String
apprNumber
;
/**
* 规格
*/
private
String
spec
;
/**
* 价格
*/
private
String
price
;
/**
* ERP编号
*/
private
String
ErpId
;
/**
* 药品名称
*/
private
String
drugName
;
/**
* 生产厂家
*/
private
String
factoryName
;
}
aidea-modules/prescription-module/src/main/java/com/cftech/cdfortis/service/CdfortisService.java
0 → 100644
View file @
2535fc5a
package
com
.
cftech
.
cdfortis
.
service
;
import
com.alibaba.fastjson.JSONObject
;
import
com.cftech.predrugs.model.PreDrugs
;
import
java.util.List
;
/**
* 获取微问诊token Service
*
* @author :machao
* @date :Created in 2021/08/19 9:30
*/
public
interface
CdfortisService
{
/**
* 获取微问诊token
*
* @return
*/
JSONObject
getTokenResult
();
/**
* 药品清单上传
*
* @param preDrugsList
* @return
*/
JSONObject
uploadDrugInfo
(
List
<
PreDrugs
>
preDrugsList
);
}
aidea-modules/prescription-module/src/main/java/com/cftech/cdfortis/service/impl/CdfortisServiceImpl.java
0 → 100644
View file @
2535fc5a
package
com
.
cftech
.
cdfortis
.
service
.
impl
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.cftech.cdfortis.constants.CdfortisConstant
;
import
com.cftech.cdfortis.model.CdfortisDrugInfo
;
import
com.cftech.cdfortis.service.CdfortisService
;
import
com.cftech.cdfortis.util.CdfortisResponseUtil
;
import
com.cftech.cdfortis.util.CdfortisTokenUtil
;
import
com.cftech.core.util.SystemConfig
;
import
com.cftech.predrugs.model.PreDrugs
;
import
lombok.extern.slf4j.Slf4j
;
import
okhttp3.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* 获取微问诊token Service
*
* @author :machao
* @date :Created in 2021/08/19 9:30
*/
@Slf4j
@Service
public
class
CdfortisServiceImpl
implements
CdfortisService
{
@Autowired
CdfortisTokenUtil
cdfortisTokenUtil
;
private
OkHttpClient
client
;
private
static
final
MediaType
MEDIA_TYPE_JSON
=
MediaType
.
parse
(
"application/json; charset=utf-8"
);
private
static
String
appid
=
SystemConfig
.
p
.
getProperty
(
"cdfortis.appid"
);
@Override
public
JSONObject
getTokenResult
()
{
JSONObject
rtnJson
=
new
JSONObject
();
try
{
String
token
=
cdfortisTokenUtil
.
getToken
();
rtnJson
.
put
(
"errorNo"
,
"0"
);
rtnJson
.
put
(
"token"
,
token
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
rtnJson
.
put
(
"errorNo"
,
"1"
);
rtnJson
.
put
(
"errorMsg"
,
e
.
getMessage
());
rtnJson
.
put
(
"errorEnMsg"
,
e
.
getMessage
());
}
return
rtnJson
;
}
@Override
public
JSONObject
uploadDrugInfo
(
List
<
PreDrugs
>
preDrugsList
)
{
JSONObject
rtnJson
=
new
JSONObject
();
String
uploadUrl
=
SystemConfig
.
p
.
getProperty
(
"cdfortis.drug_upload_url"
);
try
{
// 构建参数
JSONObject
param
=
new
JSONObject
();
param
.
put
(
"appid"
,
appid
);
param
.
put
(
"token"
,
cdfortisTokenUtil
.
getToken
());
// 转换药品类型为微问诊需要的结构
List
<
CdfortisDrugInfo
>
cdfortisDrugList
=
preDrugsList
.
stream
().
map
(
this
::
fromPreDrugs
).
collect
(
Collectors
.
toList
());
param
.
put
(
"drugInfo"
,
cdfortisDrugList
);
// 构建请求
OkHttpClient
client
=
getClient
();
RequestBody
body
=
RequestBody
.
create
(
MEDIA_TYPE_JSON
,
param
.
toJSONString
());
Request
request
=
new
Request
.
Builder
().
url
(
uploadUrl
).
post
(
body
).
build
();
Response
response
=
client
.
newCall
(
request
).
execute
();
// 判断http状态值
if
(
200
!=
response
.
code
())
{
rtnJson
.
put
(
"errorNo"
,
"1"
);
rtnJson
.
put
(
"errorMsg"
,
"微问诊请求失败"
);
rtnJson
.
put
(
"errorEnMsg"
,
"request failure"
);
return
rtnJson
;
}
ResponseBody
responseBody
=
response
.
body
();
String
retStr
=
responseBody
.
string
();
log
.
debug
(
"上传接口请求结果: {}"
,
retStr
);
// 解析结果
JSONObject
retObj
=
JSONObject
.
parseObject
(
retStr
);
CdfortisResponseUtil
.
checkResponse
(
retObj
);
JSONObject
data
=
retObj
.
getJSONObject
(
"data"
);
boolean
isAllSuccess
=
data
.
getBooleanValue
(
"isAllSuccess"
);
if
(!
isAllSuccess
)
{
JSONArray
failedDataArr
=
data
.
getJSONArray
(
"failedData"
);
int
size
=
failedDataArr
.
size
();
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
JSONObject
failedData
=
failedDataArr
.
getJSONObject
(
i
);
log
.
debug
(
"{}上传失败原因: {}"
,
failedData
.
getString
(
"drugName"
),
failedData
.
getString
(
"reason"
));
}
}
rtnJson
.
put
(
"errorNo"
,
"0"
);
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
rtnJson
.
put
(
"errorNo"
,
"1"
);
rtnJson
.
put
(
"errorMsg"
,
e
.
getMessage
());
rtnJson
.
put
(
"errorEnMsg"
,
e
.
getMessage
());
}
return
rtnJson
;
}
/**
* @return
* @para preDrugs
*/
private
CdfortisDrugInfo
fromPreDrugs
(
PreDrugs
preDrugs
)
{
CdfortisDrugInfo
cdfortisDrug
=
new
CdfortisDrugInfo
();
cdfortisDrug
.
setApprNumber
(
preDrugs
.
getApprNumber
());
cdfortisDrug
.
setSpec
(
preDrugs
.
getSpec
());
cdfortisDrug
.
setPrice
(
preDrugs
.
getPrice
());
cdfortisDrug
.
setErpId
(
preDrugs
.
getDrugErpNo
());
cdfortisDrug
.
setDrugName
(
preDrugs
.
getName
());
cdfortisDrug
.
setFactoryName
(
preDrugs
.
getDrugCompay
());
return
cdfortisDrug
;
}
private
OkHttpClient
getClient
()
{
if
(
client
==
null
)
{
OkHttpClient
.
Builder
builder
=
new
OkHttpClient
.
Builder
();
Dispatcher
dispatcher
=
new
Dispatcher
();
dispatcher
.
setMaxRequests
(
100
);
dispatcher
.
setMaxRequestsPerHost
(
50
);
builder
.
dispatcher
(
dispatcher
);
client
=
builder
.
build
();
}
return
client
;
}
}
aidea-modules/prescription-module/src/main/java/com/cftech/cdfortis/util/CdfortisResponseUtil.java
0 → 100644
View file @
2535fc5a
package
com
.
cftech
.
cdfortis
.
util
;
import
com.alibaba.fastjson.JSONObject
;
import
com.cftech.cdfortis.constants.CdfortisConstant
;
import
lombok.extern.slf4j.Slf4j
;
@Slf4j
public
class
CdfortisResponseUtil
{
public
static
void
checkResponse
(
JSONObject
retObj
)
throws
Exception
{
JSONObject
returnCode
=
retObj
.
getJSONObject
(
CdfortisConstant
.
RETURN_CODE
);
if
(!
CdfortisConstant
.
RESULT_SUCC_CODE
.
equals
(
returnCode
.
getString
(
CdfortisConstant
.
RETURN_CODE_KEY
)))
{
log
.
error
(
returnCode
.
toJSONString
());
throw
new
Exception
(
returnCode
.
getString
(
CdfortisConstant
.
RETURN_CODE_CONTENT
));
}
}
}
aidea-modules/prescription-module/src/main/java/com/cftech/cdfortis/util/CdfortisTokenUtil.java
0 → 100644
View file @
2535fc5a
package
com
.
cftech
.
cdfortis
.
util
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.cftech.core.util.OKHttpUtils
;
import
com.cftech.core.util.SystemConfig
;
import
com.qcloud.cos.utils.Md5Utils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.serializer.StringRedisSerializer
;
import
org.springframework.stereotype.Component
;
import
java.io.IOException
;
import
java.util.concurrent.TimeUnit
;
/**
* 获取微问诊token Service
*
* @author :machao
* @date :Created in 2021/08/19 15:30
*/
@Slf4j
@Component
public
class
CdfortisTokenUtil
{
/**
* 获取token的Url
*/
private
static
String
tokenUrl
=
SystemConfig
.
p
.
getProperty
(
"cdfortis.token_url"
);
/**
* appkey
*/
private
static
String
appid
=
SystemConfig
.
p
.
getProperty
(
"cdfortis.appid"
);
/**
* appSecrt
*/
private
static
String
appSecret
=
SystemConfig
.
p
.
getProperty
(
"cdfortis.secret"
);
/**
* flag
*/
private
static
String
flag
=
SystemConfig
.
p
.
getProperty
(
"cdfortis.flag"
);
/**
* redis存储key
*/
private
static
String
CDFORTIS_TOKEN_KEY
=
"cdfortis_token"
+
":"
+
appid
;
@Autowired
private
RedisTemplate
<
String
,
String
>
redisTemplate
;
private
RedisTemplate
<
String
,
String
>
getConfig
()
{
StringRedisSerializer
stringSerializer
=
new
StringRedisSerializer
();
redisTemplate
.
setKeySerializer
(
stringSerializer
);
redisTemplate
.
setHashKeySerializer
(
stringSerializer
);
redisTemplate
.
setHashValueSerializer
(
stringSerializer
);
return
redisTemplate
;
}
/**
* 获取token
*
* @return
*/
public
String
getToken
()
throws
Exception
{
// 检查redis中是否存在
if
(
getConfig
().
hasKey
(
CDFORTIS_TOKEN_KEY
))
{
return
redisTemplate
.
opsForValue
().
get
(
CDFORTIS_TOKEN_KEY
);
}
long
timestamp
=
System
.
currentTimeMillis
();
// 获取签名
String
sign
=
sign
(
appid
,
appSecret
,
flag
,
timestamp
);
// 获取tokenUrl
String
url
=
tokenUrl
.
replace
(
"{appid}"
,
appid
).
replace
(
"{flag}"
,
flag
)
.
replace
(
"{timestamp}"
,
timestamp
+
""
).
replace
(
"{sign}"
,
sign
);
log
.
debug
(
"微问诊token请求地址:{}"
,
url
);
try
{
// 解析结果
String
retStr
=
OKHttpUtils
.
getJSON
(
url
);
log
.
debug
(
"微问诊token请求结果:{}"
,
retStr
);
JSONObject
retObj
=
JSON
.
parseObject
(
retStr
);
CdfortisResponseUtil
.
checkResponse
(
retObj
);
JSONObject
data
=
retObj
.
getJSONObject
(
"data"
);
String
token
=
data
.
getString
(
"token"
);
Long
expire
=
data
.
getLongValue
(
"expire"
);
//存到redis
redisTemplate
.
opsForValue
().
set
(
CDFORTIS_TOKEN_KEY
,
token
,
expire
,
TimeUnit
.
SECONDS
);
return
token
;
}
catch
(
IOException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
throw
new
Exception
(
e
.
getMessage
());
}
}
/**
* 获取签名
*
* @param appId
* @param secret
* @param flag
* @param timestamp
* @return
*/
private
String
sign
(
String
appId
,
String
secret
,
String
flag
,
long
timestamp
)
{
String
signStr
=
String
.
format
(
"appid=%s&flag=%s&secret=%s×tamp=%s"
,
appId
,
flag
,
secret
,
timestamp
);
String
sign
=
Md5Utils
.
md5Hex
(
signStr
.
getBytes
());
return
sign
;
}
}
aidea-modules/prescription-module/src/main/java/com/cftech/cdfortis/web/CdfortisController.java
0 → 100644
View file @
2535fc5a
package
com
.
cftech
.
cdfortis
.
web
;
import
com.alibaba.fastjson.JSONObject
;
import
com.cftech.cdfortis.service.CdfortisService
;
import
com.cftech.predrugs.model.PreDrugs
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* 微问诊相关接口调用Controller
*
* @author :machao
* @date :Created in 2021/08/19 9:30
*/
@Slf4j
@RestController
@CrossOrigin
@RequestMapping
(
"/mobile/auth/cdfortis"
)
public
class
CdfortisController
{
@Autowired
CdfortisService
tokenService
;
/**
* 获取微问诊token
*
* @return
*/
@GetMapping
(
"/get/token"
)
public
JSONObject
getToken
()
{
return
tokenService
.
getTokenResult
();
}
/**
* 微问诊药品清单上传
*
* @param preDrugsList
* @return
*/
@PostMapping
(
"/upload/druginfo"
)
public
JSONObject
uploadDrugInfo
(
@RequestBody
List
<
PreDrugs
>
preDrugsList
)
{
return
tokenService
.
uploadDrugInfo
(
preDrugsList
);
}
}
aidea-modules/prescription-module/src/main/java/com/cftech/predrugs/model/PreDrugs.java
View file @
2535fc5a
...
...
@@ -66,6 +66,8 @@ public class PreDrugs implements Serializable {
private
Long
createBy
;
/* 更新人 */
private
Long
updateBy
;
/* 价格 */
private
String
price
;
public
PreDrugs
()
{
this
.
delFlag
=
false
;
...
...
aidea-modules/prescription-module/src/main/test/http/cdfortis.http
0 → 100644
View file @
2535fc5a
GET http://localhost:8080/aidea/a/prescription/list
###
POST http://localhost:8080/aidea/mobile/auth/cdfortis/upload/druginfo
Content-Type: application/json
[{
"apprNumber": "test_appr_001",
"spec": "test",
"price": "14",
"drugErpNo": "test_erp_001",
"name": "666感冒灵",
"drugCompay": "xx药业"
}]
###
\ No newline at end of file
aidea-modules/prescription-module/src/main/test/http/prescription.http
deleted
100644 → 0
View file @
d0efb5f6
GET http://localhost:8080/aidea/a/prescription/list
###
\ No newline at end of file
cftech-common-web/src/main/resources/common-test.properties
View file @
2535fc5a
...
...
@@ -148,6 +148,17 @@ map.secret_key=W1je0RfMuDsfxCy73M0b3iEfZRF5cAcU
#\u83b7\u53d6\u0074\u006f\u006b\u0065\u006e\u5730\u5740
#cdfortis.token_url=https://171.cdfortis.com/api/verify/token?appid={appid}&flag={flag}×tamp={timestamp}&sign={sign}
cdfortis.token_url
=
https://api.cdfortis.com/api/verify/token?appid={appid}&flag={flag}×tamp={timestamp}&sign={sign}
#\u5fae\u95ee\u8bca\u0061\u0070\u0070\u0069\u0064
cdfortis.appid
=
74523ca670a6ceab8095a7476805c649
#\u5fae\u95ee\u8bca\u0073\u0065\u0063\u0072\u0065\u0074
cdfortis.secret
=
c2cf8d3e9a6c715a8046541bf397ccc6
#\u5fae\u95ee\u8bca\u0066\u006c\u0061\u0067
cdfortis.flag
=
aidea888
#\u5fae\u95ee\u8bca\u836f\u54c1\u6e05\u5355\u4e0a\u4f20\u63a5\u53e3\u5730\u5740
cdfortis.drug_upload_url
=
https://api.cdfortis.com/api/drug/chain
#\u5fae\u95ee\u8bca\u83b7\u53d6\u56fe\u6587\u5904\u65b9\u5217\u8868\u63a5\u53e3
cdfortis.get_fbusi_list_url
=
https://api.cdfortis.com/api/fbusi/getFbusiList
#\u5fae\u95ee\u8bca\u83b7\u53d6\u56fe\u6587\u5904\u65b9\u56fe\u7247\u63a5\u53e3
cdfortis.get_fbusi_pic_url
=
https://api.cdfortis.com/api/fbusi/getFbusiPicture
#\u5fae\u95ee\u8bca\u83b7\u53d6\u5355\u6761\u56fe\u6587\u5904\u65b9\u8be6\u60c5\u63a5\u53e3
cdfortis.get_fbusi_info_url
=
https://api.cdfortis.com/api/fbusi/getFbusiInfo
\ No newline at end of file
cftech-common-web/src/main/resources/common.properties
View file @
2535fc5a
...
...
@@ -147,6 +147,17 @@ map.secret_key=W1je0RfMuDsfxCy73M0b3iEfZRF5cAcU
#\u5fae\u95ee\u8bca\u914d\u7f6e\u53c2\u6570
#\u83b7\u53d6\u0074\u006f\u006b\u0065\u006e\u5730\u5740
cdfortis.token_url
=
https://api.cdfortis.com/api/verify/token?appid={appid}&flag={flag}×tamp={timestamp}&sign={sign}
cdfortis.appid
=
wxc587e8869baec269
cdfortis.secret
=
ad5b018eb390c9f8c1532c56f4767cc0
#\u5fae\u95ee\u8bca\u0061\u0070\u0070\u0069\u0064
cdfortis.appid
=
74523ca670a6ceab8095a7476805c649
#\u5fae\u95ee\u8bca\u0073\u0065\u0063\u0072\u0065\u0074
cdfortis.secret
=
c2cf8d3e9a6c715a8046541bf397ccc6
#\u5fae\u95ee\u8bca\u0066\u006c\u0061\u0067
cdfortis.flag
=
aidea888
#\u5fae\u95ee\u8bca\u836f\u54c1\u6e05\u5355\u4e0a\u4f20\u63a5\u53e3\u5730\u5740
cdfortis.drug_upload_url
=
https://api.cdfortis.com/api/drug/chain
#\u5fae\u95ee\u8bca\u83b7\u53d6\u56fe\u6587\u5904\u65b9\u5217\u8868\u63a5\u53e3
cdfortis.get_fbusi_list_url
=
https://api.cdfortis.com/api/fbusi/getFbusiList
#\u5fae\u95ee\u8bca\u83b7\u53d6\u56fe\u6587\u5904\u65b9\u56fe\u7247\u63a5\u53e3
cdfortis.get_fbusi_pic_url
=
https://api.cdfortis.com/api/fbusi/getFbusiPicture
#\u5fae\u95ee\u8bca\u83b7\u53d6\u5355\u6761\u56fe\u6587\u5904\u65b9\u8be6\u60c5\u63a5\u53e3
cdfortis.get_fbusi_info_url
=
https://api.cdfortis.com/api/fbusi/getFbusiInfo
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment