Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Q
qianhe-slsy
Overview
Overview
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xuwenhao
qianhe-slsy
Commits
34ac4fea
Commit
34ac4fea
authored
Apr 28, 2024
by
jiang'yun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改问题
parent
93c702d5
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
1412 additions
and
216 deletions
+1412
-216
qianhe-admin/pom.xml
+25
-10
qianhe-admin/src/main/java/com/qianhe/system/config/Config.java
+48
-0
qianhe-admin/src/main/java/com/qianhe/system/controller/CCBRefundController.java
+99
-0
qianhe-admin/src/main/java/com/qianhe/system/controller/CCBTask.java
+41
-0
qianhe-admin/src/main/java/com/qianhe/system/controller/WaterGoodsController.java
+2
-0
qianhe-admin/src/main/java/com/qianhe/system/controller/WaterOrderController.java
+5
-1
qianhe-admin/src/main/java/com/qianhe/system/domain/CcbKey.java
+33
-0
qianhe-admin/src/main/java/com/qianhe/system/domain/WaterOrder.java
+7
-0
qianhe-admin/src/main/java/com/qianhe/system/enums/TransRequestEnum.java
+44
-0
qianhe-admin/src/main/java/com/qianhe/system/mapper/CcbKeyMapper.java
+64
-0
qianhe-admin/src/main/java/com/qianhe/system/service/impl/WaterGoodsServiceImpl.java
+3
-3
qianhe-admin/src/main/java/com/qianhe/system/service/impl/WaterOrderServiceImpl.java
+113
-6
qianhe-admin/src/main/java/com/qianhe/system/utils/CCBMisSdkUtils.java
+15
-0
qianhe-admin/src/main/java/com/qianhe/system/utils/ImageThumbnailsUtil.java
+0
-194
qianhe-admin/src/main/java/com/qianhe/system/utils/JsonUtil.java
+65
-0
qianhe-admin/src/main/java/com/qianhe/system/utils/KeyUtilsBean.java
+28
-0
qianhe-admin/src/main/java/com/qianhe/system/utils/MisApiUtil.java
+134
-0
qianhe-admin/src/main/java/com/qianhe/system/utils/ProxyConfig.java
+37
-0
qianhe-admin/src/main/java/com/qianhe/system/utils/RequestService.java
+162
-0
qianhe-admin/src/main/java/com/qianhe/system/vo/MisApiFather.java
+63
-0
qianhe-admin/src/main/java/com/qianhe/system/vo/MisApiHttpVo.java
+116
-0
qianhe-admin/src/main/java/com/qianhe/system/vo/MisApiResponseVo.java
+63
-0
qianhe-admin/src/main/java/com/qianhe/system/vo/TransData.java
+43
-0
qianhe-admin/src/main/java/com/qianhe/system/vo/TransRequest.java
+51
-0
qianhe-admin/src/main/java/com/qianhe/system/vo/TransResult.java
+72
-0
qianhe-admin/src/main/java/com/qianhe/system/vo/WaterOrderVo.java
+2
-0
qianhe-admin/src/main/resources/application.yml
+4
-0
qianhe-admin/src/main/resources/lib/CCBMisSdk.jar
+0
-0
qianhe-admin/src/main/resources/mapper/CcbKeyMapper.xml
+69
-0
qianhe-admin/src/main/resources/mapper/WaterOrderMapper.xml
+1
-0
qianhe-framework/src/main/java/com/qianhe/framework/config/SecurityConfig.java
+3
-2
No files found.
qianhe-admin/pom.xml
View file @
34ac4fea
...
@@ -81,11 +81,7 @@
...
@@ -81,11 +81,7 @@
<version>4.3.1.wso2v1</version>
<version>4.3.1.wso2v1</version>
</dependency>-->
</dependency>-->
<dependency>
<groupId>
org.bouncycastle
</groupId>
<artifactId>
bcprov-jdk15on
</artifactId>
<version>
1.59
</version>
</dependency>
<!-- mybatis-plus -->
<!-- mybatis-plus -->
<dependency>
<dependency>
...
@@ -108,11 +104,11 @@
...
@@ -108,11 +104,11 @@
<version>
0.4.8
</version>
<version>
0.4.8
</version>
</dependency>
</dependency>
<dependency
>
<!-- <dependency>--
>
<groupId>
org.jpedal
</groupId
>
<!-- <groupId>org.jpedal</groupId>--
>
<artifactId>
OpenViewerFX
</artifactId
>
<!-- <artifactId>OpenViewerFX</artifactId>--
>
<version>
6.6.14
</version
>
<!-- <version>6.6.14</version>--
>
</dependency
>
<!-- </dependency>--
>
<dependency>
<dependency>
<groupId>
com.google.code.gson
</groupId>
<groupId>
com.google.code.gson
</groupId>
...
@@ -192,6 +188,25 @@
...
@@ -192,6 +188,25 @@
<artifactId>
weixin-java-mp
</artifactId>
<artifactId>
weixin-java-mp
</artifactId>
<version>
3.0.0
</version>
<version>
3.0.0
</version>
</dependency>
</dependency>
<!-- 建行SDK-->
<!-- <dependency>-->
<!-- <groupId>org.bouncycastle</groupId>-->
<!-- <artifactId>bcprov-jdk15on</artifactId>-->
<!-- <version>1.59</version>-->
<!-- </dependency>-->
<dependency>
<groupId>
org.bouncycastle
</groupId>
<artifactId>
bcprov-jdk15to18
</artifactId>
<version>
1.66
</version>
</dependency>
<dependency>
<groupId>
CCBMisSdk
</groupId>
<artifactId>
CCBMisSdk
</artifactId>
<version>
2.0
</version>
<!-- <scope>system</scope>-->
<!-- <systemPath>${basedir}/src/main/resources/lib/CCBMisSdk.jar</systemPath>-->
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
qianhe-admin/src/main/java/com/qianhe/system/config/Config.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
config
;
/**
* @author: Tan Manguang
* @date: 2022/3/29
*/
public
class
Config
{
//地址 https://smartpos.ccb.com/mistest/misapi/
public
static
final
String
url
=
"https://smartpos.ccb.com/mis/misapi/"
;
//商户号
public
static
final
String
merchantCode
=
"105000149005386"
;
//终端号
public
static
final
String
terminalId
=
"10846608"
;
//交易密钥
public
static
final
String
key
=
"3e9c5f4bc0722270c2caf799ec5c592e"
;
//授权码
public
static
final
String
authCode
=
"307848661387"
;
//GPS "23.119733,113.351153";
public
static
final
String
gps
=
"37.470666,118.602392"
;
//地址
public
static
final
String
address
=
"山东省东营市东营区北二路37号"
;
//金额
public
static
final
String
amt
=
"0.01"
;
//订单号
public
static
final
String
orderNo
=
"tmgtest202302240018"
;
public
static
final
String
qrCode
=
"130194194612618039"
;
public
static
final
String
numberId
=
"123456"
;
public
static
final
String
orderDate
=
"20210420"
;
public
static
final
String
termSN
=
""
;
public
static
final
String
apiVer
=
null
;
}
qianhe-admin/src/main/java/com/qianhe/system/controller/CCBRefundController.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
controller
;
import
com.ccb.CCBMisSdk
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.qianhe.common.core.domain.AjaxResult
;
import
com.qianhe.common.utils.DateUtils
;
import
com.qianhe.common.utils.StringUtils
;
import
com.qianhe.system.config.Config
;
import
com.qianhe.system.domain.CcbKey
;
import
com.qianhe.system.domain.WaterOrder
;
import
com.qianhe.system.enums.TransRequestEnum
;
import
com.qianhe.system.mapper.CcbKeyMapper
;
import
com.qianhe.system.utils.JsonUtil
;
import
com.qianhe.system.utils.MisApiUtil
;
import
com.qianhe.system.utils.RequestService
;
import
com.qianhe.system.vo.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 建行退款
*/
@RestController
@Slf4j
@RequestMapping
(
"/ccbRefund"
)
public
class
CCBRefundController
{
@Value
(
"${wx.shbh}"
)
private
String
shbh
;
@Value
(
"${wx.zdbh}"
)
private
String
zdbh
;
@Autowired
private
CcbKeyMapper
ccbKeyMapper
;
@PostMapping
(
"/refund"
)
public
AjaxResult
ccbRefund
(
WaterOrder
waterOrder
){
CcbKey
ccbKey
=
new
CcbKey
();
ccbKey
.
setSfgq
(
"1"
);
//第一次根据授权码下载密钥
CcbKey
ccbKey1
=
ccbKeyMapper
.
selectCcbKeyList
(
ccbKey
).
stream
().
findFirst
().
orElse
(
null
);
String
key
=
""
;
if
(
ccbKey1
!=
null
){
key
=
ccbKey1
.
getCcbkey
();
}
//第一次根据授权码下载密钥
// String key = Config.key;//密钥更新
// String key = MisApiUtil.getAu012Key();//密钥更新
// MisApiUtil.confirmKey(key);;//密钥确认
// System.out.println("key:"+key);
// String key="3e9c5f4bc0722270c2caf799ec5c592e";
if
(
StringUtils
.
isEmpty
(
key
)){
return
AjaxResult
.
error
(
"key获取失败"
);
}
String
mchtNo
=
shbh
;
//建行15位商户编号(固定)
String
termNo
=
zdbh
;
//建行8位终端编号(固定)
//参数
String
address
=
"山东省东营市东营区北二路37号"
;
//地址
String
gps
=
"37.470666,118.602392"
;
//GPS地理位置信息
String
amt
=
"0.01"
;
//退款金额
String
orderNo
=
waterOrder
.
getOrderNum
();
//订单号
String
numberId
=
waterOrder
.
getTkbh
();
//退款订单号
//参数加密
MisApiHttpVo
misApiHttpVo
=
new
MisApiHttpVo
(
TransRequestEnum
.
RF001
,
mchtNo
,
termNo
,
"1.2.0"
);
TransRequest
transResult
=
new
TransRequest
(
address
,
gps
);
TransData
transData
=
new
TransData
();
transData
.
setAmt
(
amt
);
transData
.
setOrderNo
(
orderNo
);
transData
.
setNumberId
(
numberId
);
transResult
.
setTransData
(
transData
);
System
.
out
.
println
(
"transResult:"
+
JsonUtil
.
toJsonString
(
transResult
));
//加密参数
misApiHttpVo
.
encodeData
(
JsonUtil
.
toJsonString
(
transResult
),
key
);
System
.
out
.
println
(
"misApiHttpVo:"
+
JsonUtil
.
toJsonString
(
misApiHttpVo
));
//发送请求
String
result
=
new
RequestService
().
sendJsonPost
(
Config
.
url
,
null
,
JsonUtil
.
toJsonString
(
misApiHttpVo
));
System
.
out
.
println
(
"result:"
+
result
);
//json转对象
MisApiResponseVo
misApiResponse
=
JsonUtil
.
jsonStringToObject
(
result
,
new
TypeReference
<
MisApiResponseVo
>()
{
});
if
(
"00"
.
equals
(
misApiResponse
.
getRetCode
())){
//解密数据
String
transResultStr
=
CCBMisSdk
.
CCBMisSdk_DataDecrypt
(
misApiResponse
.
getData
(),
key
);
System
.
out
.
println
(
transResultStr
);
return
AjaxResult
.
success
();
}
else
{
//请求失败
System
.
out
.
println
(
misApiResponse
.
getRetErrMsg
());
return
AjaxResult
.
error
(
misApiResponse
.
getRetErrMsg
());
}
}
}
qianhe-admin/src/main/java/com/qianhe/system/controller/CCBTask.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
controller
;
import
com.qianhe.system.config.Config
;
import
com.qianhe.system.domain.CcbKey
;
import
com.qianhe.system.mapper.CcbKeyMapper
;
import
com.qianhe.system.utils.MisApiUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
@Component
(
"CCBTask"
)
public
class
CCBTask
{
@Autowired
private
CcbKeyMapper
ccbKeyMapper
;
public
void
ccbKeyTask
()
{
CcbKey
ccbKey
=
new
CcbKey
();
ccbKey
.
setSfgq
(
"1"
);
CcbKey
ccbKey1
=
ccbKeyMapper
.
selectCcbKeyList
(
ccbKey
).
stream
().
findFirst
().
orElse
(
null
);
String
key
=
""
;
if
(
ccbKey1
!=
null
){
key
=
ccbKey1
.
getCcbkey
();
System
.
out
.
println
(
"old:"
+
key
);
key
=
MisApiUtil
.
getAu012Key
(
key
);
//密钥更新
MisApiUtil
.
confirmKey
(
key
);;
//密钥确认
System
.
out
.
println
(
"new:"
+
key
);
}
else
{
//第一次根据授权码下载密钥
key
=
MisApiUtil
.
getAu011
(
Config
.
authCode
);
System
.
out
.
println
(
"First:"
+
key
);
}
//先把已有的key改为过期状态
ccbKeyMapper
.
updateCcbKeySfgq
();
//把最新的保存
ccbKey
.
setCcbkey
(
key
);
System
.
out
.
println
(
ccbKey
);
ccbKeyMapper
.
insertCcbKey
(
ccbKey
);
}
}
qianhe-admin/src/main/java/com/qianhe/system/controller/WaterGoodsController.java
View file @
34ac4fea
package
com
.
qianhe
.
system
.
controller
;
package
com
.
qianhe
.
system
.
controller
;
import
com.github.pagehelper.PageInfo
;
import
com.github.pagehelper.PageInfo
;
import
com.qianhe.common.annotation.Anonymous
;
import
com.qianhe.common.annotation.Log
;
import
com.qianhe.common.annotation.Log
;
import
com.qianhe.common.core.controller.BaseController
;
import
com.qianhe.common.core.controller.BaseController
;
import
com.qianhe.common.core.domain.AjaxResult
;
import
com.qianhe.common.core.domain.AjaxResult
;
...
@@ -241,6 +242,7 @@ public class WaterGoodsController extends BaseController
...
@@ -241,6 +242,7 @@ public class WaterGoodsController extends BaseController
/**
/**
* 获取商品详细信息
* 获取商品详细信息
*/
*/
@Anonymous
@GetMapping
(
value
=
"/{id}"
)
@GetMapping
(
value
=
"/{id}"
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
{
{
...
...
qianhe-admin/src/main/java/com/qianhe/system/controller/WaterOrderController.java
View file @
34ac4fea
...
@@ -250,7 +250,11 @@ public class WaterOrderController extends BaseController
...
@@ -250,7 +250,11 @@ public class WaterOrderController extends BaseController
int
i
=
waterOrderService
.
updateOrderState
(
waterOrderVo
);
int
i
=
waterOrderService
.
updateOrderState
(
waterOrderVo
);
if
(
i
==
3
){
if
(
i
==
3
){
return
AjaxResult
.
success
(
"该订单已超过下单时间的晚上0点,请联系商家退款"
);
return
AjaxResult
.
success
(
"该订单已超过下单时间的晚上0点,请联系商家退款"
);
}
else
{
}
else
if
(
i
==
4
){
return
AjaxResult
.
success
(
"退款失败"
);
}
else
if
(
i
==
5
){
return
AjaxResult
.
success
(
"退款成功,请注意查收"
);
}
else
{
return
toAjax
(
i
);
return
toAjax
(
i
);
}
}
...
...
qianhe-admin/src/main/java/com/qianhe/system/domain/CcbKey.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
domain
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
com.qianhe.common.annotation.Excel
;
import
com.qianhe.common.core.domain.BaseEntity
;
/**
* 建行工作密钥对象 ccb_key
*
* @author qianhe
* @date 2024-04-26
*/
@Data
public
class
CcbKey
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/** 工作密钥 */
private
String
ccbkey
;
/** 录入时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"录入时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
lrsj
;
/** 是否过期(0/过期 1/使用) */
@Excel
(
name
=
"是否过期(0/过期 1/使用)"
)
private
String
sfgq
;
}
qianhe-admin/src/main/java/com/qianhe/system/domain/WaterOrder.java
View file @
34ac4fea
...
@@ -197,4 +197,11 @@ public class WaterOrder extends BaseEntity
...
@@ -197,4 +197,11 @@ public class WaterOrder extends BaseEntity
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@Excel
(
name
=
"下单时间"
,
dateFormat
=
"yyyy-MM-dd HH:mm:ss"
)
@Excel
(
name
=
"下单时间"
,
dateFormat
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
xdsj
;
private
Date
xdsj
;
//退款编号
private
String
tkbh
;
private
String
authCode
;
}
}
qianhe-admin/src/main/java/com/qianhe/system/enums/TransRequestEnum.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
enums
;
/**
* @author: Tan Manguang
* @date: 2022/3/24
*/
public
enum
TransRequestEnum
{
PY002
,
QR002
,
PY001
,
QR001
,
QR003
,
RF001
,
QR004
,
DF001
,
RNA01
,
AU011
,
AU012
,
AU013
,
RD001
,
RD002
,
RF003
,
EQ001
,
EQ002
,
EQ003
,
}
qianhe-admin/src/main/java/com/qianhe/system/mapper/CcbKeyMapper.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
mapper
;
import
java.util.List
;
import
com.qianhe.system.domain.CcbKey
;
/**
* 建行工作密钥Mapper接口
*
* @author qianhe
* @date 2024-04-26
*/
public
interface
CcbKeyMapper
{
/**
* 查询建行工作密钥
*
* @param key 建行工作密钥主键
* @return 建行工作密钥
*/
public
CcbKey
selectCcbKeyByKey
(
String
key
);
/**
* 查询建行工作密钥列表
*
* @param ccbKey 建行工作密钥
* @return 建行工作密钥集合
*/
public
List
<
CcbKey
>
selectCcbKeyList
(
CcbKey
ccbKey
);
/**
* 新增建行工作密钥
*
* @param ccbKey 建行工作密钥
* @return 结果
*/
public
int
insertCcbKey
(
CcbKey
ccbKey
);
/**
* 修改建行工作密钥
*
* @param ccbKey 建行工作密钥
* @return 结果
*/
public
int
updateCcbKey
(
CcbKey
ccbKey
);
/**
* 删除建行工作密钥
*
* @param key 建行工作密钥主键
* @return 结果
*/
public
int
deleteCcbKeyByKey
(
String
key
);
/**
* 批量删除建行工作密钥
*
* @param keys 需要删除的数据主键集合
* @return 结果
*/
public
int
deleteCcbKeyByKeys
(
String
[]
keys
);
int
updateCcbKeySfgq
();
}
qianhe-admin/src/main/java/com/qianhe/system/service/impl/WaterGoodsServiceImpl.java
View file @
34ac4fea
...
@@ -7,7 +7,7 @@ import com.qianhe.system.domain.*;
...
@@ -7,7 +7,7 @@ import com.qianhe.system.domain.*;
import
com.qianhe.system.mapper.*
;
import
com.qianhe.system.mapper.*
;
import
com.qianhe.system.service.IWaterGoodsService
;
import
com.qianhe.system.service.IWaterGoodsService
;
import
com.qianhe.system.utils.GraphUtils
;
import
com.qianhe.system.utils.GraphUtils
;
import
com.qianhe.system.utils.ImageThumbnailsUtil
;
//
import com.qianhe.system.utils.ImageThumbnailsUtil;
import
com.qianhe.system.vo.WaterGoodsSpeVo
;
import
com.qianhe.system.vo.WaterGoodsSpeVo
;
import
com.qianhe.system.vo.WaterGoodsVo
;
import
com.qianhe.system.vo.WaterGoodsVo
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
...
@@ -44,8 +44,8 @@ public class WaterGoodsServiceImpl implements IWaterGoodsService
...
@@ -44,8 +44,8 @@ public class WaterGoodsServiceImpl implements IWaterGoodsService
private
WaterGoodsTypeMapper
waterGoodsTypeMapper
;
private
WaterGoodsTypeMapper
waterGoodsTypeMapper
;
@Autowired
@Autowired
private
WaterGoodsCartMapper
waterGoodsCartMapper
;
private
WaterGoodsCartMapper
waterGoodsCartMapper
;
@Autowired
//
@Autowired
private
ImageThumbnailsUtil
imageThumbnailsUtil
;
//
private ImageThumbnailsUtil imageThumbnailsUtil;
/**
/**
* 查询商品
* 查询商品
...
...
qianhe-admin/src/main/java/com/qianhe/system/service/impl/WaterOrderServiceImpl.java
View file @
34ac4fea
...
@@ -4,17 +4,21 @@ import cn.hutool.http.HttpUtil;
...
@@ -4,17 +4,21 @@ import cn.hutool.http.HttpUtil;
import
cn.hutool.json.JSONObject
;
import
cn.hutool.json.JSONObject
;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.ccb.CCBMisSdk
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.qianhe.common.core.domain.AjaxResult
;
import
com.qianhe.common.core.domain.AjaxResult
;
import
com.qianhe.common.exception.ServiceException
;
import
com.qianhe.common.exception.ServiceException
;
import
com.qianhe.common.utils.DateUtils
;
import
com.qianhe.common.utils.DateUtils
;
import
com.qianhe.common.utils.StringUtils
;
import
com.qianhe.common.utils.StringUtils
;
import
com.qianhe.system.config.Config
;
import
com.qianhe.system.domain.*
;
import
com.qianhe.system.domain.*
;
import
com.qianhe.system.enums.TransRequestEnum
;
import
com.qianhe.system.mapper.*
;
import
com.qianhe.system.mapper.*
;
import
com.qianhe.system.service.IWaterOrderService
;
import
com.qianhe.system.service.IWaterOrderService
;
import
com.qianhe.system.utils.JsonUtil
;
import
com.qianhe.system.utils.PositionUtil
;
import
com.qianhe.system.utils.PositionUtil
;
import
com.qianhe.system.vo.WaterOrderVo
;
import
com.qianhe.system.utils.RequestService
;
import
com.qianhe.system.vo.WaterStationUserVo
;
import
com.qianhe.system.vo.*
;
import
com.qianhe.system.vo.WaterStationVo
;
import
io.swagger.models.auth.In
;
import
io.swagger.models.auth.In
;
import
org.gavaghan.geodesy.Ellipsoid
;
import
org.gavaghan.geodesy.Ellipsoid
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
...
@@ -24,6 +28,7 @@ import org.springframework.stereotype.Service;
...
@@ -24,6 +28,7 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.text.DecimalFormat
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -338,6 +343,7 @@ public class WaterOrderServiceImpl implements IWaterOrderService
...
@@ -338,6 +343,7 @@ public class WaterOrderServiceImpl implements IWaterOrderService
throw
new
ServiceException
(
"该订单已被用户取消!"
);
throw
new
ServiceException
(
"该订单已被用户取消!"
);
}
}
}
}
int
i
=
0
;
//判断是否需要退款
//判断是否需要退款
//传过来订单状态为取消
//传过来订单状态为取消
if
(
waterOrderVo
.
getOrderState
()
==
5
){
if
(
waterOrderVo
.
getOrderState
()
==
5
){
...
@@ -366,7 +372,13 @@ public class WaterOrderServiceImpl implements IWaterOrderService
...
@@ -366,7 +372,13 @@ public class WaterOrderServiceImpl implements IWaterOrderService
time2
.
set
(
Calendar
.
MILLISECOND
,
0
);
time2
.
set
(
Calendar
.
MILLISECOND
,
0
);
if
(
time1
.
equals
(
time2
)){
if
(
time1
.
equals
(
time2
)){
//相等说明下单时间的晚上0点
//相等说明下单时间的晚上0点
//TODO 执行退款操作
//TODO 执行退款操作\
//先生成成退款单号
String
tkbh
=
getTkNum
();
waterOrderVo
.
setTkbh
(
tkbh
);
waterOrder
.
setTkbh
(
tkbh
);
//执行退款操作
i
=
ccbRefund
(
waterOrder
);
//不相等说明下单时间的晚上0点
//不相等说明下单时间的晚上0点
waterOrderVo
.
setOrderState
(
6
);
//已退款
waterOrderVo
.
setOrderState
(
6
);
//已退款
}
else
{
}
else
{
...
@@ -383,7 +395,7 @@ public class WaterOrderServiceImpl implements IWaterOrderService
...
@@ -383,7 +395,7 @@ public class WaterOrderServiceImpl implements IWaterOrderService
}
}
}
}
i
nt
i
=
waterOrderMapper
.
updateWaterOrder
(
waterOrderVo
);
i
=
waterOrderMapper
.
updateWaterOrder
(
waterOrderVo
);
if
(
flag
){
if
(
flag
){
i
=
3
;
i
=
3
;
}
}
...
@@ -391,6 +403,99 @@ public class WaterOrderServiceImpl implements IWaterOrderService
...
@@ -391,6 +403,99 @@ public class WaterOrderServiceImpl implements IWaterOrderService
}
}
/**
/**
* 生成退款编号
* @return
*/
public
String
getTkNum
(){
String
orderNum
=
""
;
//获取当前年月日
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyyMMdd"
);
String
today
=
format
.
format
(
DateUtils
.
getNowDate
());
Long
rqbh
=
Long
.
parseLong
(
today
+
"0001"
);
while
(
true
){
WaterOrder
waterOrder
=
new
WaterOrder
();
waterOrder
.
setOrderNum
(
rqbh
.
toString
());
WaterOrder
waterOrder1
=
waterOrderMapper
.
selectWaterOrderNumByOrderNum
(
rqbh
.
toString
());
if
(
StringUtils
.
isNotNull
(
waterOrder1
)){
rqbh
++;
}
else
{
break
;
}
}
//生成随机四位英文字母
Random
random
=
new
Random
();
String
randomletters
=
""
;
for
(
int
i
=
0
;
i
<
4
;
i
++)
{
int
index
=
random
.
nextInt
(
26
);
char
letter
=
(
char
)
(
'A'
+
index
);
randomletters
+=
letter
;
}
orderNum
=
"TK-"
+
rqbh
+
randomletters
;
return
orderNum
;
}
@Autowired
private
CcbKeyMapper
ccbKeyMapper
;
public
int
ccbRefund
(
WaterOrder
waterOrder
){
CcbKey
ccbKey
=
new
CcbKey
();
ccbKey
.
setSfgq
(
"1"
);
//第一次根据授权码下载密钥
CcbKey
ccbKey1
=
ccbKeyMapper
.
selectCcbKeyList
(
ccbKey
).
stream
().
findFirst
().
orElse
(
null
);
String
key
=
""
;
if
(
ccbKey1
!=
null
){
key
=
ccbKey1
.
getCcbkey
();
}
//密钥更新
// String key = MisApiUtil.getAu012Key();//密钥更新
// MisApiUtil.confirmKey(key);;//密钥确认 确认后才能使用
// System.out.println("key:"+key);
if
(
StringUtils
.
isEmpty
(
key
)){
return
4
;
}
String
mchtNo
=
Config
.
merchantCode
;
//建行15位商户编号(固定)
String
termNo
=
Config
.
terminalId
;
//建行8位终端编号(固定)
//参数
String
address
=
Config
.
address
;
//地址
String
gps
=
Config
.
gps
;
//GPS地理位置信息
String
amt
=
String
.
format
(
"%.2f"
,
waterOrder
.
getGoodsVal
().
setScale
(
2
,
BigDecimal
.
ROUND_DOWN
).
doubleValue
());
//退款金额
String
orderNo
=
waterOrder
.
getOrderNum
();
//订单号
String
numberId
=
waterOrder
.
getTkbh
();
//退款订单号
//参数加密
MisApiHttpVo
misApiHttpVo
=
new
MisApiHttpVo
(
TransRequestEnum
.
RF001
,
mchtNo
,
termNo
,
"1.2.0"
);
TransRequest
transResult
=
new
TransRequest
(
address
,
gps
);
TransData
transData
=
new
TransData
();
transData
.
setAmt
(
amt
);
transData
.
setOrderNo
(
orderNo
);
transData
.
setNumberId
(
numberId
);
transResult
.
setTransData
(
transData
);
System
.
out
.
println
(
"transResult:"
+
JsonUtil
.
toJsonString
(
transResult
));
//加密参数
misApiHttpVo
.
encodeData
(
JsonUtil
.
toJsonString
(
transResult
),
key
);
System
.
out
.
println
(
"misApiHttpVo:"
+
JsonUtil
.
toJsonString
(
misApiHttpVo
));
//发送请求
String
result
=
new
RequestService
().
sendJsonPost
(
Config
.
url
,
null
,
JsonUtil
.
toJsonString
(
misApiHttpVo
));
System
.
out
.
println
(
"result:"
+
result
);
//json转对象
MisApiResponseVo
misApiResponse
=
JsonUtil
.
jsonStringToObject
(
result
,
new
TypeReference
<
MisApiResponseVo
>()
{
});
if
(
"00"
.
equals
(
misApiResponse
.
getRetCode
())){
//解密数据
String
transResultStr
=
CCBMisSdk
.
CCBMisSdk_DataDecrypt
(
misApiResponse
.
getData
(),
key
);
System
.
out
.
println
(
transResultStr
);
return
5
;
}
else
{
//请求失败
System
.
out
.
println
(
misApiResponse
.
getRetErrMsg
());
return
4
;
}
}
/**
* 统计站点订单数量
* 统计站点订单数量
* @param stationId
* @param stationId
* @return
* @return
...
@@ -592,6 +697,7 @@ public class WaterOrderServiceImpl implements IWaterOrderService
...
@@ -592,6 +697,7 @@ public class WaterOrderServiceImpl implements IWaterOrderService
user
.
setStationId
(
waterOrder
.
getStationId
());
user
.
setStationId
(
waterOrder
.
getStationId
());
List
<
WaterStationUserVo
>
waterStationUsers
=
waterStationUserMapper
.
selectWaterStationUserList
(
user
);
List
<
WaterStationUserVo
>
waterStationUsers
=
waterStationUserMapper
.
selectWaterStationUserList
(
user
);
if
(
waterStationUsers
.
size
()>
0
){
if
(
waterStationUsers
.
size
()>
0
){
DecimalFormat
df1
=
new
DecimalFormat
(
"#.00"
);
for
(
WaterStationUserVo
item:
waterStationUsers
){
for
(
WaterStationUserVo
item:
waterStationUsers
){
//获取标签标签tagid
//获取标签标签tagid
String
accessToken
=
getAccessToken
();
String
accessToken
=
getAccessToken
();
...
@@ -602,7 +708,8 @@ public class WaterOrderServiceImpl implements IWaterOrderService
...
@@ -602,7 +708,8 @@ public class WaterOrderServiceImpl implements IWaterOrderService
body
.
set
(
"template_id"
,
templateId
);
body
.
set
(
"template_id"
,
templateId
);
JSONObject
json
=
new
JSONObject
();
JSONObject
json
=
new
JSONObject
();
json
.
set
(
"thing27"
,
new
JSONObject
().
set
(
"value"
,
spmc
));
//商品名称
json
.
set
(
"thing27"
,
new
JSONObject
().
set
(
"value"
,
spmc
));
//商品名称
json
.
set
(
"amount24"
,
new
JSONObject
().
set
(
"value"
,
payType
==
1
?
waterOrder
.
getGoodsVal
():
"水票"
));
//金额
System
.
out
.
println
(
waterOrder
.
getGoodsVal
());
json
.
set
(
"amount24"
,
new
JSONObject
().
set
(
"value"
,
payType
==
1
?
String
.
format
(
"%.2f"
,
waterOrder
.
getGoodsVal
().
setScale
(
2
,
BigDecimal
.
ROUND_DOWN
).
doubleValue
()):
"水票"
));
//金额
json
.
set
(
"time4"
,
new
JSONObject
().
set
(
"value"
,
DateUtils
.
parseDateToStr
(
"yyyy-MM-dd hh:mm:ss"
,
waterOrder
.
getCreateTime
())));
//下单时间
json
.
set
(
"time4"
,
new
JSONObject
().
set
(
"value"
,
DateUtils
.
parseDateToStr
(
"yyyy-MM-dd hh:mm:ss"
,
waterOrder
.
getCreateTime
())));
//下单时间
json
.
set
(
"phone_number8"
,
new
JSONObject
().
set
(
"value"
,
waterOrder
.
getUserPhone
()));
//用户手机号
json
.
set
(
"phone_number8"
,
new
JSONObject
().
set
(
"value"
,
waterOrder
.
getUserPhone
()));
//用户手机号
body
.
set
(
"data"
,
json
);
body
.
set
(
"data"
,
json
);
...
...
qianhe-admin/src/main/java/com/qianhe/system/utils/CCBMisSdkUtils.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
utils
;
import
com.ccb.CCBMisSdk
;
import
com.fasterxml.jackson.core.type.TypeReference
;
public
class
CCBMisSdkUtils
{
public
static
KeyUtilsBean
getKeyUtilsBean
(){
String
json
=
CCBMisSdk
.
CCBMisSdk_PPKeyGen
();
return
JsonUtil
.
jsonStringToObject
(
json
,
new
TypeReference
<
KeyUtilsBean
>()
{
});
}
}
qianhe-admin/src/main/java/com/qianhe/system/utils/ImageThumbnailsUtil.java
deleted
100644 → 0
View file @
93c702d5
package
com
.
qianhe
.
system
.
utils
;
import
com.idrsolutions.image.png.PngCompressor
;
import
net.coobird.thumbnailator.Thumbnails
;
import
net.coobird.thumbnailator.name.Rename
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.io.*
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 图片压缩工具
*/
@Component
public
class
ImageThumbnailsUtil
{
@Value
(
"${ruoyi.profile}"
)
private
String
profile
;
/***
* 压缩jpg、jpeg格式图片
* @param inputImagePath
* @param outputImagePath
* @throws IOException
*/
public
void
compressImage
(
String
inputImagePath
,
String
outputImagePath
)
throws
IOException
{
// 指定原始图片路径
inputImagePath
=
profile
+
inputImagePath
.
replace
(
"/profile"
,
""
);
// 设置目标图片保存路径及名称
outputImagePath
=
profile
+
outputImagePath
.
replace
(
"/profile"
,
""
);
File
file
=
new
File
(
inputImagePath
);
// 源文件
File
outfile
=
new
File
(
outputImagePath
);
// 目标输出文件,可与源文件一致,一致会覆盖
PngCompressor
.
compress
(
file
,
outfile
);
// // 创建输入流对象
// FileInputStream fis = new FileInputStream(new File(inputImagePath));
//
// // 获取图片信息
// BufferedImage image = ImageIO.read(fis);
//
// // 创建输出流对象
// FileOutputStream fos = new FileOutputStream(new File(outputImagePath));
//
// // 将图片写入到输出流中并进行压缩处理
// JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
// encoder.encode(image);
//
// // 关闭输入、输出流
// fis.close();
// fos.close();
}
/***
* 压缩PNG格式图片
* @param inputImagePath
* @param outputImagePath
* @throws IOException
*/
public
void
compressImagePNG
(
String
inputImagePath
,
String
outputImagePath
)
throws
IOException
{
// 指定原始图片路径
inputImagePath
=
profile
+
inputImagePath
.
replace
(
"/profile"
,
""
);
outputImagePath
=
profile
+
outputImagePath
.
replace
(
"/profile"
,
""
);
File
file
=
new
File
(
inputImagePath
);
// 源文件
File
outfile
=
new
File
(
outputImagePath
);
// 目标输出文件,可与源文件一致,一致会覆盖
PngCompressor
.
compress
(
file
,
outfile
);
}
// 图片默认缩放比率
private
static
final
double
DEFAULT_SCALE
=
0.8d
;
// 缩略图后缀
private
static
final
String
SUFFIX
=
"-thumbnail"
;
/**
* 生成缩略图到指定的目录
*
* @param path 目录
* @param files 要生成缩略图的文件列表
* @throws IOException
*/
public
static
List
<
String
>
generateThumbnail2Directory
(
String
path
,
String
...
files
)
throws
IOException
{
return
generateThumbnail2Directory
(
DEFAULT_SCALE
,
path
,
files
);
}
/**
* 生成缩略图到指定的目录
*
* @param scale 图片缩放率
* @param pathname 缩略图保存目录
* @param files 要生成缩略图的文件列表
* @throws IOException
*/
public
static
List
<
String
>
generateThumbnail2Directory
(
double
scale
,
String
pathname
,
String
...
files
)
throws
IOException
{
Thumbnails
.
of
(
files
)
// 图片缩放率,不能和size()一起使用
.
scale
(
scale
)
// 缩略图保存目录,该目录需存在,否则报错
.
toFiles
(
new
File
(
pathname
),
Rename
.
NO_CHANGE
);
List
<
String
>
list
=
new
ArrayList
<>(
files
.
length
);
for
(
String
file
:
files
)
{
list
.
add
(
appendSuffix
(
file
,
SUFFIX
));
}
return
list
;
}
public
static
void
main
(
String
[]
args
)
throws
IOException
{
generateDirectoryThumbnail
(
"D:/qianhe/file/送水/水韵照片/2"
);
}
/**
* 将指定目录下所有图片生成缩略图
*
* @param pathname 文件目录
*/
public
static
void
generateDirectoryThumbnail
(
String
pathname
)
throws
IOException
{
generateDirectoryThumbnail
(
pathname
,
DEFAULT_SCALE
);
}
/**
* 将指定目录下所有图片生成缩略图
*
* @param pathname 文件目录
*/
public
static
void
generateDirectoryThumbnail
(
String
pathname
,
double
scale
)
throws
IOException
{
File
[]
files
=
new
File
(
pathname
).
listFiles
();
compressRecurse
(
files
,
pathname
);
}
/**
* 文件追加后缀
*
* @param fileName 原文件名
* @param suffix 文件后缀
* @return
*/
public
static
String
appendSuffix
(
String
fileName
,
String
suffix
)
{
String
newFileName
=
""
;
int
indexOfDot
=
fileName
.
lastIndexOf
(
'.'
);
if
(
indexOfDot
!=
-
1
)
{
newFileName
=
fileName
.
substring
(
0
,
indexOfDot
);
newFileName
+=
suffix
;
newFileName
+=
fileName
.
substring
(
indexOfDot
);
}
else
{
newFileName
=
fileName
+
suffix
;
}
return
newFileName
;
}
private
static
void
compressRecurse
(
File
[]
files
,
String
pathname
)
throws
IOException
{
for
(
File
file
:
files
)
{
// 目录
if
(
file
.
isDirectory
())
{
File
[]
subFiles
=
file
.
listFiles
();
compressRecurse
(
subFiles
,
pathname
+
File
.
separator
+
file
.
getName
());
}
else
{
// 文件包含压缩文件后缀或非图片格式,则不再压缩
String
extension
=
getFileExtention
(
file
.
getName
());
if
(!
file
.
getName
().
contains
(
SUFFIX
)
&&
isImage
(
extension
))
{
generateThumbnail2Directory
(
pathname
,
file
.
getAbsolutePath
());
}
}
}
}
/**
* 根据文件扩展名判断文件是否图片格式
*
* @param extension 文件扩展名
* @return
*/
public
static
boolean
isImage
(
String
extension
)
{
String
[]
imageExtension
=
new
String
[]{
"jpeg"
,
"jpg"
,
"gif"
,
"bmp"
,
"png"
};
for
(
String
e
:
imageExtension
)
if
(
extension
.
toLowerCase
().
equals
(
e
))
return
true
;
return
false
;
}
public
static
String
getFileExtention
(
String
fileName
)
{
String
extension
=
fileName
.
substring
(
fileName
.
lastIndexOf
(
"."
)
+
1
);
return
extension
;
}
}
qianhe-admin/src/main/java/com/qianhe/system/utils/JsonUtil.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
utils
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.databind.DeserializationFeature
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
org.apache.commons.lang3.StringUtils
;
/**
* @author Tan Manguang
*/
public
class
JsonUtil
{
public
static
final
String
NULL
=
"null"
;
private
static
ObjectMapper
getMapper
(
boolean
ignoreUnknown
)
{
ObjectMapper
mapper
=
new
ObjectMapper
();
mapper
.
configure
(
DeserializationFeature
.
FAIL_ON_UNKNOWN_PROPERTIES
,
!
ignoreUnknown
);
return
mapper
;
}
/**
* 将结果转成Json串输出
*
* @param value 转换对象
* @return json字符串
*/
public
static
String
toJsonString
(
Object
value
)
{
if
(
value
==
null
)
{
return
NULL
;
}
try
{
return
getMapper
(
false
).
writeValueAsString
(
value
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
""
;
}
/**
* 将字符串转换成泛型对象,比如List对象(可以用接口类型,对于List会使用ArrayList实例化,对于Map会使用LinkedHashMap实例化),
* json串需要标准格式(即属性名及字符串值要以双引号包含)
* 如::
* jsonStringToObject("[{\"age\":1,\"erpName\":\"aa\"},{\"age\":2,\"erpName\":\"12\"}]",
* new TypeReference<List<Person>>(){});
* 或
* jsonStringToObject("[{\"age\":1,\"erpName\":\"aa\"},{\"age\":2,\"erpName\":\"12\"}]",
* new TypeReference<List<Map<?,?>>>(){});
*
* @param json
* @param type
* @return T
*/
public
static
<
T
>
T
jsonStringToObject
(
String
json
,
TypeReference
<
T
>
type
)
{
if
(
StringUtils
.
isEmpty
(
json
))
{
return
null
;
}
try
{
return
getMapper
(
false
).
readValue
(
json
,
type
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
}
qianhe-admin/src/main/java/com/qianhe/system/utils/KeyUtilsBean.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
utils
;
public
class
KeyUtilsBean
{
KeyUtilsBean
()
{
}
private
String
privateKey
;
private
String
publicKey
;
public
String
getPrivateKey
()
{
return
privateKey
;
}
public
void
setPrivateKey
(
String
privateKey
)
{
this
.
privateKey
=
privateKey
;
}
public
String
getPublicKey
()
{
return
publicKey
;
}
public
void
setPublicKey
(
String
publicKey
)
{
this
.
publicKey
=
publicKey
;
}
}
\ No newline at end of file
qianhe-admin/src/main/java/com/qianhe/system/utils/MisApiUtil.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
utils
;
import
com.ccb.CCBMisSdk
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.qianhe.system.config.Config
;
import
com.qianhe.system.enums.TransRequestEnum
;
import
com.qianhe.system.vo.MisApiHttpVo
;
import
com.qianhe.system.vo.MisApiResponseVo
;
import
org.springframework.beans.factory.annotation.Value
;
public
class
MisApiUtil
{
public
static
void
main
(
String
[]
args
)
{
// String au011 = getAu011();
// System.out.println(au011);
String
key
=
"046031EFAEAAE920DD5781D054F2B7DB2073F6692013CEF131279C9304D20A854F0D2340C9D5DC5046A74C9554966B69B04CDE4D35A7473D6655C3FD8E60EF0F2754F6E9A598F398E92337B0EE85BC0314969C9F2261CF1A5531927555DE2AC0379C1D4C1ED33CD1A3928ECFD1890F6C94A7E86229C9ED0FD5E2201348C1272896"
;
String
privateKey
=
"308193020100301306072a8648ce3d020106082a811ccf5501822d047930770201010420428e28dc5245f561f8139e4636efe5c9b24a919030c373fa8a436442e331d446a00a06082a811ccf5501822da144034200042093fae35d37b2624dcbd2d00883f81254e9ded5097351ce4736a1028ff8e84535678132ebae70d521a458675125c2bb5c261c676f126fc03dfafaab9e449d7f"
;
String
publicKey
=
"3059301306072a8648ce3d020106082a811ccf5501822d034200042093fae35d37b2624dcbd2d00883f81254e9ded5097351ce4736a1028ff8e84535678132ebae70d521a458675125c2bb5c261c676f126fc03dfafaab9e449d7f"
;
//
CCBMisSdk
.
CCBMisSdk_KeyDecrypt
(
key
,
privateKey
);
System
.
out
.
println
(
CCBMisSdk
.
CCBMisSdk_KeyDecrypt
(
key
,
privateKey
));
// KeyUtilsBean misBankKey = CCBMisSdkUtils.getKeyUtilsBean();
}
/**
* 根据授权码获取密钥
* @return
*/
public
static
String
getAu011
(
String
authCode
)
{
System
.
out
.
println
(
"交易码:"
+
TransRequestEnum
.
AU011
);
//构建请求参数
MisApiHttpVo
misApiHttpVo
=
new
MisApiHttpVo
(
TransRequestEnum
.
AU011
,
Config
.
merchantCode
,
Config
.
terminalId
,
Config
.
termSN
);
KeyUtilsBean
misBankKey
=
CCBMisSdkUtils
.
getKeyUtilsBean
();
System
.
out
.
println
(
"privateKey"
+
misBankKey
.
getPrivateKey
());
misApiHttpVo
.
setPublicKey
(
misBankKey
.
getPublicKey
());
misApiHttpVo
.
setAuthCode
(
authCode
);
//加密参数
System
.
out
.
println
(
"misApiHttpVo:"
+
JsonUtil
.
toJsonString
(
misApiHttpVo
));
//发送请求
String
result
=
new
RequestService
().
sendJsonPost
(
Config
.
url
,
null
,
JsonUtil
.
toJsonString
(
misApiHttpVo
));
System
.
out
.
println
(
"result:"
+
result
);
//json转对象
MisApiResponseVo
misApiResponse
=
JsonUtil
.
jsonStringToObject
(
result
,
new
TypeReference
<
MisApiResponseVo
>()
{
});
System
.
out
.
println
(
"misApiResponse"
+
misApiResponse
);
if
(
"00"
.
equals
(
misApiResponse
.
getRetCode
())){
//解密数据
System
.
out
.
println
(
CCBMisSdk
.
CCBMisSdk_KeyDecrypt
(
misApiResponse
.
getKey
(),
misBankKey
.
getPrivateKey
()));
String
key
=
CCBMisSdk
.
CCBMisSdk_KeyDecrypt
(
misApiResponse
.
getKey
(),
misBankKey
.
getPrivateKey
());
return
key
;
}
else
{
//请求失败
System
.
out
.
println
(
misApiResponse
.
getRetErrMsg
());
return
null
;
}
}
/**
* 密钥更新
* @return
*/
public
static
String
getAu012Key
(
String
key
)
{
System
.
out
.
println
(
"交易码:"
+
TransRequestEnum
.
AU012
);
//构建请求参数
MisApiHttpVo
misApiHttpVo
=
new
MisApiHttpVo
(
TransRequestEnum
.
AU012
,
Config
.
merchantCode
,
Config
.
terminalId
,
Config
.
termSN
);
KeyUtilsBean
misBankKey
=
CCBMisSdkUtils
.
getKeyUtilsBean
();
misApiHttpVo
.
setPublicKey
(
misBankKey
.
getPublicKey
());
misApiHttpVo
.
sign
(
misBankKey
.
getPrivateKey
(),
key
);
//加密参数
System
.
out
.
println
(
"misApiHttpVo:"
+
JsonUtil
.
toJsonString
(
misApiHttpVo
));
//发送请求
String
result
=
new
RequestService
().
sendJsonPost
(
Config
.
url
,
null
,
JsonUtil
.
toJsonString
(
misApiHttpVo
));
System
.
out
.
println
(
"result:"
+
result
);
//json转对象
MisApiResponseVo
misApiResponse
=
JsonUtil
.
jsonStringToObject
(
result
,
new
TypeReference
<
MisApiResponseVo
>()
{
});
if
(
"00"
.
equals
(
misApiResponse
.
getRetCode
())){
//解密数据
System
.
out
.
println
(
CCBMisSdk
.
CCBMisSdk_KeyDecrypt
(
misApiResponse
.
getKey
(),
misBankKey
.
getPrivateKey
()));
return
CCBMisSdk
.
CCBMisSdk_KeyDecrypt
(
misApiResponse
.
getKey
(),
misBankKey
.
getPrivateKey
());
}
else
{
//请求失败
System
.
out
.
println
(
misApiResponse
.
getRetErrMsg
());
}
return
null
;
}
/**
* 密钥确认
* @param key
* @return
*/
public
static
boolean
confirmKey
(
String
key
)
{
System
.
out
.
println
(
"交易码:"
+
TransRequestEnum
.
AU013
);
//构建请求参数
MisApiHttpVo
misApiHttpVo
=
new
MisApiHttpVo
(
TransRequestEnum
.
AU013
,
Config
.
merchantCode
,
Config
.
terminalId
,
Config
.
termSN
);
KeyUtilsBean
misBankKey
=
CCBMisSdkUtils
.
getKeyUtilsBean
();
misApiHttpVo
.
setPublicKey
(
misBankKey
.
getPublicKey
());
misApiHttpVo
.
sign
(
misBankKey
.
getPrivateKey
(),
key
);
//加密参数
System
.
out
.
println
(
"misApiHttpVo:"
+
JsonUtil
.
toJsonString
(
misApiHttpVo
));
//发送请求
String
result
=
new
RequestService
().
sendJsonPost
(
Config
.
url
,
null
,
JsonUtil
.
toJsonString
(
misApiHttpVo
));
System
.
out
.
println
(
"result:"
+
result
);
//json转对象
MisApiResponseVo
misApiResponse
=
JsonUtil
.
jsonStringToObject
(
result
,
new
TypeReference
<
MisApiResponseVo
>()
{
});
if
(
"00"
.
equals
(
misApiResponse
.
getRetCode
())){
//解密数据
System
.
out
.
println
(
misApiResponse
.
getRetErrMsg
());
return
true
;
}
else
{
//请求失败
System
.
out
.
println
(
misApiResponse
.
getRetErrMsg
());
return
false
;
}
}
}
qianhe-admin/src/main/java/com/qianhe/system/utils/ProxyConfig.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
utils
;
/**
* @author: Tan Manguang
* @date: 2021/9/27
*/
public
class
ProxyConfig
{
private
String
address
;
private
int
port
;
public
ProxyConfig
()
{
}
public
ProxyConfig
(
String
address
,
int
port
)
{
this
.
address
=
address
;
this
.
port
=
port
;
}
public
String
getAddress
()
{
return
address
;
}
public
void
setAddress
(
String
address
)
{
this
.
address
=
address
;
}
public
int
getPort
()
{
return
port
;
}
public
void
setPort
(
int
port
)
{
this
.
port
=
port
;
}
}
qianhe-admin/src/main/java/com/qianhe/system/utils/RequestService.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
utils
;
import
org.apache.commons.lang3.StringUtils
;
import
java.io.BufferedReader
;
import
java.io.InputStreamReader
;
import
java.net.HttpURLConnection
;
import
java.net.InetSocketAddress
;
import
java.net.Proxy
;
import
java.net.URL
;
import
java.util.Map
;
public
class
RequestService
{
private
static
final
String
TRUE
=
"true"
;
private
static
final
String
FALSE
=
"false"
;
private
ProxyConfig
proxyConfig
;
public
ProxyConfig
getProxyConfig
()
{
return
proxyConfig
;
}
public
void
setProxyConfig
(
ProxyConfig
proxyConfig
)
{
this
.
proxyConfig
=
proxyConfig
;
}
public
RequestService
(
ProxyConfig
proxyConfig
)
{
this
.
proxyConfig
=
proxyConfig
;
}
public
RequestService
()
{
}
/**
* http请求连接超时(毫秒)
*/
private
static
final
int
HTTP_CONNTION_TIMEOUT
=
15000
;
/**
* http读数据超时(毫秒)
*/
private
static
final
int
HTTP_READ_TIMEOUT
=
180000
;
/**
* 向指定 URL 发送Json串的POST方法请求;
* 如果返回4xx~5xx,抛出HttpStatusCodeException(其中statusCode为具体的http status
*
* @param url 发送请求的 URL
* @param ContentType 内容格式,如果为空,默认为“application/json; charset=UTF-8”
* @param param 请求内容,json串。
* @return 所代表远程资源的响应结果
* @throws Exception
*/
public
String
sendJsonPost
(
String
url
,
String
ContentType
,
String
param
)
{
System
.
out
.
println
(
url
);
if
(
StringUtils
.
isEmpty
(
ContentType
))
{
ContentType
=
"application/json; charset=UTF-8"
;
}
return
sendPost
(
url
,
ContentType
,
null
,
param
);
}
/**
* 向指定 URL 发送POST方法的请求(以x-www-form-urlencoded格式发送,内容为utf-8编码);
* 如果返回4xx~5xx,抛出HttpStatusCodeException(其中statusCode为具体的http status
*
* @param url 发送请求的 URL
* @param ContentType 内容格式,需要与param值的格式匹配。如果为空,默认为“text/plain; charset=UTF-8”
* @param header 请求头部信息(Key为请求头名,Value为值)
* @param param 请求参数,可以是json串,或以&分隔的名值对,需要与ContentType格式匹配。
* @return 所代表远程资源的响应结果
* @throws Exception
*/
public
String
sendPost
(
String
url
,
String
ContentType
,
Map
<
String
,
String
>
header
,
String
param
)
{
String
result
=
""
;
try
{
if
(
StringUtils
.
isEmpty
(
ContentType
))
{
ContentType
=
"text/plain; charset=UTF-8"
;
}
HttpURLConnection
conn
=
getHttpURLConnection
(
url
,
ContentType
,
header
);
if
(
param
!=
null
)
{
byte
[]
byData
=
param
.
getBytes
(
"UTF-8"
);
conn
.
getOutputStream
().
write
(
byData
);
}
conn
.
connect
();
result
=
readResponsContent
(
conn
);
}
catch
(
Exception
ex
)
{
throw
new
RuntimeException
(
ex
);
}
return
result
;
}
private
HttpURLConnection
getHttpURLConnection
(
String
url
,
String
ContentType
,
Map
<
String
,
String
>
header
)
throws
Exception
{
URL
realUrl
=
new
URL
(
url
);
// 打开和URL之间的连接
HttpURLConnection
conn
;
if
(
this
.
proxyConfig
!=
null
)
{
Proxy
proxy
=
new
Proxy
(
Proxy
.
Type
.
DIRECT
.
HTTP
,
new
InetSocketAddress
(
this
.
proxyConfig
.
getAddress
(),
this
.
proxyConfig
.
getPort
()));
conn
=
(
HttpURLConnection
)
realUrl
.
openConnection
(
proxy
);
}
else
{
conn
=
(
HttpURLConnection
)
realUrl
.
openConnection
();
}
// 设置通用的请求属性
conn
.
setRequestProperty
(
"accept"
,
"*/*"
);
conn
.
setRequestProperty
(
"connection"
,
"Keep-Alive"
);
conn
.
setRequestProperty
(
"user-agent"
,
"Mozilla/5.0 (Windows NT 6.1; WOW64) Chrome/75.0"
);
conn
.
setRequestProperty
(
"Accept-Charset"
,
"utf-8"
);
conn
.
setRequestProperty
(
"Content-Type"
,
ContentType
);
if
(
header
!=
null
)
{
for
(
Map
.
Entry
<
String
,
String
>
entry
:
header
.
entrySet
())
{
conn
.
setRequestProperty
(
entry
.
getKey
(),
entry
.
getValue
());
}
}
// setCookie(conn);
conn
.
setReadTimeout
(
HTTP_READ_TIMEOUT
);
conn
.
setConnectTimeout
(
HTTP_CONNTION_TIMEOUT
);
// 发送POST请求必须设置如下两行
conn
.
setDoOutput
(
true
);
conn
.
setRequestMethod
(
"POST"
);
return
conn
;
}
/**
* 获取返回内容的编码方式(默认为utf-8)
*
* @param conn
* @return
*/
private
static
String
getResponseContentType
(
HttpURLConnection
conn
)
{
String
charset
=
"UTF-8"
;
//类似 text/html; charset=utf-8
String
sTemp
=
conn
.
getContentType
()==
null
?
""
:
conn
.
getContentType
().
toLowerCase
();
if
(
sTemp
.
indexOf
(
"=gbk"
)
>
0
||
sTemp
.
indexOf
(
"=gb2312"
)
>
0
)
{
charset
=
"GBK"
;
}
return
charset
;
}
private
static
String
readResponsContent
(
HttpURLConnection
conn
)
throws
Exception
{
String
result
=
""
;
String
charset
=
getResponseContentType
(
conn
);
int
statusCode
=
conn
.
getResponseCode
();
// 定义BufferedReader输入流来读取URL的响应
StringBuilder
sb
=
new
StringBuilder
();
BufferedReader
in
=
new
BufferedReader
(
new
InputStreamReader
(
conn
.
getInputStream
(),
charset
));
char
[]
cBuf
=
new
char
[
1024
];
int
iLen
;
while
((
iLen
=
in
.
read
(
cBuf
))
>=
0
)
{
sb
.
append
(
cBuf
,
0
,
iLen
);
}
in
.
close
();
result
=
sb
.
toString
();
if
(
statusCode
>=
300
)
{
throw
new
Exception
(
result
);
}
return
result
;
}
}
qianhe-admin/src/main/java/com/qianhe/system/vo/MisApiFather.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
vo
;
import
com.ccb.CCBMisSdk
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
java.io.Serializable
;
/**
* @author: Tan Manguang
* @date: 2022/3/24
*/
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
MisApiFather
implements
Serializable
{
private
Long
timeStamp
;
private
String
data
;
private
String
sign
;
private
String
sysEvtTraceId
;
public
void
encodeData
(
String
data
,
String
key
){
this
.
timeStamp
=
System
.
currentTimeMillis
();
this
.
data
=
CCBMisSdk
.
CCBMisSdk_DataEncrypt
(
data
,
key
);
this
.
sign
=
CCBMisSdk
.
CCBMisSdk_DataSign
(
""
+
this
.
timeStamp
+
""
+
this
.
data
,
key
);
}
public
Long
getTimeStamp
()
{
return
timeStamp
;
}
public
void
setTimeStamp
(
Long
timeStamp
)
{
this
.
timeStamp
=
timeStamp
;
}
public
String
getData
()
{
return
data
;
}
public
void
setData
(
String
data
)
{
this
.
data
=
data
;
}
public
String
getSign
()
{
return
sign
;
}
public
void
setSign
(
String
sign
)
{
this
.
sign
=
sign
;
}
public
String
getSysEvtTraceId
()
{
return
sysEvtTraceId
;
}
public
void
setSysEvtTraceId
(
String
sysEvtTraceId
)
{
this
.
sysEvtTraceId
=
sysEvtTraceId
;
}
}
qianhe-admin/src/main/java/com/qianhe/system/vo/MisApiHttpVo.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
vo
;
import
com.ccb.CCBMisSdk
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
com.qianhe.system.config.Config
;
import
com.qianhe.system.enums.TransRequestEnum
;
/**
* @author: Tan Manguang
* @date: 2022/3/24
*/
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
MisApiHttpVo
extends
MisApiFather
{
private
TransRequestEnum
txnCode
;
private
String
mchtNo
;
private
String
termNo
;
private
String
authCode
;
private
String
publicKey
;
private
String
key
;
private
String
termSN
;
private
String
apiVer
;
public
String
getApiVer
()
{
return
apiVer
;
}
public
void
setApiVer
(
String
apiVer
)
{
this
.
apiVer
=
apiVer
;
}
public
String
getTermSN
()
{
return
termSN
;
}
public
void
setTermSN
(
String
termSN
)
{
this
.
termSN
=
termSN
;
}
public
String
getKey
()
{
return
key
;
}
public
void
setKey
(
String
key
)
{
this
.
key
=
key
;
}
public
String
getAuthCode
()
{
return
authCode
;
}
public
void
setAuthCode
(
String
authCode
)
{
this
.
authCode
=
authCode
;
}
public
String
getPublicKey
()
{
return
publicKey
;
}
public
void
setPublicKey
(
String
publicKey
)
{
this
.
publicKey
=
publicKey
;
}
public
MisApiHttpVo
()
{
}
public
MisApiHttpVo
(
TransRequestEnum
txnCode
,
String
mchtNo
,
String
termNo
,
String
termSN
)
{
this
.
txnCode
=
txnCode
;
this
.
mchtNo
=
mchtNo
;
this
.
termNo
=
termNo
;
this
.
termSN
=
termSN
;
this
.
apiVer
=
Config
.
apiVer
;
}
public
String
getMchtNo
()
{
return
mchtNo
;
}
public
void
setMchtNo
(
String
mchtNo
)
{
this
.
mchtNo
=
mchtNo
;
}
public
String
getTermNo
()
{
return
termNo
;
}
public
void
setTermNo
(
String
termNo
)
{
this
.
termNo
=
termNo
;
}
public
void
sign
(
String
privateKey
,
String
key
)
{
this
.
setTimeStamp
(
System
.
currentTimeMillis
());
this
.
setAuthCode
(
CCBMisSdk
.
CCBMisSdk_KeySign
(
key
+
""
+
this
.
getTimeStamp
(),
privateKey
));
;
}
public
TransRequestEnum
getTxnCode
()
{
return
txnCode
;
}
public
void
setTxnCode
(
TransRequestEnum
txnCode
)
{
this
.
txnCode
=
txnCode
;
}
}
qianhe-admin/src/main/java/com/qianhe/system/vo/MisApiResponseVo.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
vo
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
/**
* @author: Tan Manguang
* @date: 2022/3/25
*/
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
MisApiResponseVo
extends
MisApiHttpVo
{
private
String
retCode
;
private
String
retErrMsg
;
private
String
traceNo
;
private
String
retErrCode
;
private
String
txnTraceNo
;
public
MisApiResponseVo
(){
}
public
String
getRetCode
()
{
return
retCode
;
}
public
void
setRetCode
(
String
retCode
)
{
this
.
retCode
=
retCode
;
}
public
String
getRetErrMsg
()
{
return
retErrMsg
;
}
public
void
setRetErrMsg
(
String
retErrMsg
)
{
this
.
retErrMsg
=
retErrMsg
;
}
public
String
getTraceNo
()
{
return
traceNo
;
}
public
void
setTraceNo
(
String
traceNo
)
{
this
.
traceNo
=
traceNo
;
}
public
String
getRetErrCode
()
{
return
retErrCode
;
}
public
void
setRetErrCode
(
String
retErrCode
)
{
this
.
retErrCode
=
retErrCode
;
}
public
String
getTxnTraceNo
()
{
return
txnTraceNo
;
}
public
void
setTxnTraceNo
(
String
txnTraceNo
)
{
this
.
txnTraceNo
=
txnTraceNo
;
}
}
qianhe-admin/src/main/java/com/qianhe/system/vo/TransData.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
vo
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
lombok.Data
;
/**
* @author: Tan Manguang
* @date: 2022/3/24
*/
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
@Data
public
class
TransData
{
private
String
orderNo
;
private
String
qrCode
;
private
String
amt
;
private
String
numberId
;
public
String
getOrderNo
()
{
return
orderNo
;
}
public
void
setOrderNo
(
String
orderNo
)
{
this
.
orderNo
=
orderNo
;
}
public
String
getQrCode
()
{
return
qrCode
;
}
public
void
setQrCode
(
String
qrCode
)
{
this
.
qrCode
=
qrCode
;
}
public
String
getAmt
()
{
return
amt
;
}
public
void
setAmt
(
String
amt
)
{
this
.
amt
=
amt
;
}
}
qianhe-admin/src/main/java/com/qianhe/system/vo/TransRequest.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
vo
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
/**
* @author: Tan Manguang
* @date: 2022/3/24
*/
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
TransRequest
{
private
String
address
;
private
String
gps
;
private
TransData
transData
;
public
TransRequest
()
{
}
public
TransRequest
(
String
address
,
String
gps
)
{
this
.
address
=
address
;
this
.
gps
=
gps
;
}
public
String
getAddress
()
{
return
address
;
}
public
void
setAddress
(
String
address
)
{
this
.
address
=
address
;
}
public
String
getGps
()
{
return
gps
;
}
public
void
setGps
(
String
gps
)
{
this
.
gps
=
gps
;
}
public
TransData
getTransData
()
{
return
transData
;
}
public
void
setTransData
(
TransData
transData
)
{
this
.
transData
=
transData
;
}
}
qianhe-admin/src/main/java/com/qianhe/system/vo/TransResult.java
0 → 100644
View file @
34ac4fea
package
com
.
qianhe
.
system
.
vo
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
/**
* @author: Tan Manguang
* @date: 2022/3/24
*/
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
TransResult
{
private
String
retCode
;
private
String
retMsg
;
private
String
validDate
;
private
String
traceNo
;
private
String
errCode
;
private
TransData
transData
;
public
String
getRetCode
()
{
return
retCode
;
}
public
void
setRetCode
(
String
retCode
)
{
this
.
retCode
=
retCode
;
}
public
String
getRetMsg
()
{
return
retMsg
;
}
public
void
setRetMsg
(
String
retMsg
)
{
this
.
retMsg
=
retMsg
;
}
public
String
getValidDate
()
{
return
validDate
;
}
public
void
setValidDate
(
String
validDate
)
{
this
.
validDate
=
validDate
;
}
public
String
getTraceNo
()
{
return
traceNo
;
}
public
void
setTraceNo
(
String
traceNo
)
{
this
.
traceNo
=
traceNo
;
}
public
String
getErrCode
()
{
return
errCode
;
}
public
void
setErrCode
(
String
errCode
)
{
this
.
errCode
=
errCode
;
}
public
TransData
getTransData
()
{
return
transData
;
}
public
void
setTransData
(
TransData
transData
)
{
this
.
transData
=
transData
;
}
}
qianhe-admin/src/main/java/com/qianhe/system/vo/WaterOrderVo.java
View file @
34ac4fea
...
@@ -179,4 +179,6 @@ public class WaterOrderVo {
...
@@ -179,4 +179,6 @@ public class WaterOrderVo {
private
String
zfsj
;
private
String
zfsj
;
private
String
tkbh
;
}
}
qianhe-admin/src/main/resources/application.yml
View file @
34ac4fea
...
@@ -163,6 +163,10 @@ wx:
...
@@ -163,6 +163,10 @@ wx:
refundNotifyUrl
:
https://www.dyzmxx.com/ss/callback/refundNotify/
refundNotifyUrl
:
https://www.dyzmxx.com/ss/callback/refundNotify/
#证书地址
#证书地址
keyPemPath
:
apiclient_key.pem
keyPemPath
:
apiclient_key.pem
# 商户编号
shbh
:
105000149005386
# 终端编号
zdbh
:
10846608
# 送水端小程序
# 送水端小程序
...
...
qianhe-admin/src/main/resources/lib/CCBMisSdk.jar
0 → 100644
View file @
34ac4fea
File added
qianhe-admin/src/main/resources/mapper/CcbKeyMapper.xml
0 → 100644
View file @
34ac4fea
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.qianhe.system.mapper.CcbKeyMapper"
>
<resultMap
type=
"CcbKey"
id=
"CcbKeyResult"
>
<result
property=
"ccbkey"
column=
"ccbkey"
/>
<result
property=
"lrsj"
column=
"lrsj"
/>
<result
property=
"sfgq"
column=
"sfgq"
/>
</resultMap>
<sql
id=
"selectCcbKeyVo"
>
select ccbkey, lrsj, sfgq from ccb_key
</sql>
<select
id=
"selectCcbKeyList"
parameterType=
"CcbKey"
resultMap=
"CcbKeyResult"
>
<include
refid=
"selectCcbKeyVo"
/>
<where>
<if
test=
"lrsj != null "
>
and lrsj = #{lrsj}
</if>
<if
test=
"sfgq != null and sfgq != ''"
>
and sfgq = #{sfgq}
</if>
</where>
</select>
<select
id=
"selectCcbKeyByKey"
parameterType=
"String"
resultMap=
"CcbKeyResult"
>
<include
refid=
"selectCcbKeyVo"
/>
where ccbkey = #{ccbkey}
</select>
<insert
id=
"insertCcbKey"
parameterType=
"CcbKey"
>
insert into ccb_key
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"ccbkey != null"
>
ccbkey,
</if>
<if
test=
"lrsj != null"
>
lrsj,
</if>
<if
test=
"sfgq != null"
>
sfgq,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"ccbkey != null"
>
#{ccbkey},
</if>
<if
test=
"lrsj != null"
>
#{lrsj},
</if>
<if
test=
"sfgq != null"
>
#{sfgq},
</if>
</trim>
</insert>
<update
id=
"updateCcbKey"
parameterType=
"CcbKey"
>
update ccb_key
<trim
prefix=
"SET"
suffixOverrides=
","
>
<if
test=
"lrsj != null"
>
lrsj = #{lrsj},
</if>
<if
test=
"sfgq != null"
>
sfgq = #{sfgq},
</if>
</trim>
where ccbkey = #{ccbkey}
</update>
<update
id=
"updateCcbKeySfgq"
>
update ccb_key
set sfgq='0'
where 1=1
</update>
<delete
id=
"deleteCcbKeyByKey"
parameterType=
"String"
>
delete from ccb_key where ccbkey = #{ccbkey}
</delete>
<delete
id=
"deleteCcbKeyByKeys"
parameterType=
"String"
>
delete from ccb_key where ccbkey in
<foreach
item=
"key"
collection=
"array"
open=
"("
separator=
","
close=
")"
>
#{ccbkey}
</foreach>
</delete>
</mapper>
\ No newline at end of file
qianhe-admin/src/main/resources/mapper/WaterOrderMapper.xml
View file @
34ac4fea
...
@@ -268,6 +268,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -268,6 +268,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if
test=
"goodsVal != null"
>
goods_val = #{goodsVal},
</if>
<if
test=
"goodsVal != null"
>
goods_val = #{goodsVal},
</if>
<if
test=
"orderType != null"
>
order_type = #{orderType},
</if>
<if
test=
"orderType != null"
>
order_type = #{orderType},
</if>
<if
test=
"returnOrderResult != null"
>
return_order_result = #{returnOrderResult},
</if>
<if
test=
"returnOrderResult != null"
>
return_order_result = #{returnOrderResult},
</if>
<if
test=
"tkbh != null"
>
tkbh = #{tkbh},
</if>
</trim>
</trim>
where id = #{id}
where id = #{id}
</update>
</update>
...
...
qianhe-framework/src/main/java/com/qianhe/framework/config/SecurityConfig.java
View file @
34ac4fea
...
@@ -123,10 +123,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
...
@@ -123,10 +123,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
.
antMatchers
(
"/ccbback/payNotify/"
).
permitAll
()
.
antMatchers
(
"/ccbback/payNotify/"
).
permitAll
()
.
antMatchers
(
"/msg/**"
).
permitAll
()
.
antMatchers
(
"/msg/**"
).
permitAll
()
.
antMatchers
(
"/system/order/gzhSend"
).
permitAll
()
.
antMatchers
(
"/system/order/gzhSend"
).
permitAll
()
.
antMatchers
(
"/ccbRefund/refund"
).
permitAll
()
//通用接口放行
//通用接口放行
.
antMatchers
(
"/common/**"
).
permitAll
()
.
antMatchers
(
"/common/**"
).
permitAll
()
//
测试放行所有接口
//
小程序放行
// .antMatchers("/system/**
").permitAll()
.
antMatchers
(
"/system/goods/list"
,
"/system/type/getGoodsTypeList"
,
"/system/goods/zyImgList"
,
"/system/goods/syList
"
).
permitAll
()
// 静态资源,可匿名访问
// 静态资源,可匿名访问
.
antMatchers
(
HttpMethod
.
GET
,
"/"
,
"/*.html"
,
"/**/*.html"
,
"/**/*.css"
,
"/**/*.js"
,
"/profile/**"
).
permitAll
()
.
antMatchers
(
HttpMethod
.
GET
,
"/"
,
"/*.html"
,
"/**/*.html"
,
"/**/*.css"
,
"/**/*.js"
,
"/profile/**"
).
permitAll
()
.
antMatchers
(
"/swagger-ui.html"
,
"/swagger-resources/**"
,
"/webjars/**"
,
"/*/api-docs"
,
"/druid/**"
).
permitAll
()
.
antMatchers
(
"/swagger-ui.html"
,
"/swagger-resources/**"
,
"/webjars/**"
,
"/*/api-docs"
,
"/druid/**"
).
permitAll
()
...
...
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