记得上下班打卡 | git大法好,push需谨慎

Commit da662cdb authored by 胡佳晨's avatar 胡佳晨

Merge remote-tracking branch 'origin/dev' into dev

parents c67dc94f e7666c03
package com.liquidnet.client.admin.common.utils;
import java.util.Collection;
import java.util.Map;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.*;
import com.liquidnet.client.admin.common.core.text.StrFormatter;
import org.springframework.util.MultiValueMap;
/**
* 字符串工具类
......@@ -405,4 +408,52 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
{
return (T) obj;
}
public static String httpBuildQuery(MultiValueMap<String, String> array) {
String reString = null;
//遍历数组形成akey=avalue&bkey=bvalue&ckey=cvalue形式的的字符串
Iterator it = array.entrySet().iterator();
while (it.hasNext()){
Map.Entry<String,Object> entry =(Map.Entry) it.next();
String key = entry.getKey();
Object value = entry.getValue();
reString += key+"="+value+"&";
}
reString = reString.substring(0, reString.length()-1);
//将得到的字符串进行处理得到目标格式的字符串
reString = URLDecoder.decode(reString);
try {
reString = URLDecoder.decode(reString, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
reString = reString.replace("%3D", "=").replace("%26", "&");
return reString;
}
public static String Ksort(MultiValueMap<String, String> map) {
String sb = "";
String[] key = new String[map.size()];
int index = 0;
for (String k : map.keySet()) {
key[index] = k;
index++;
}
// Arrays.sort(key);
for (String s : key) {
sb += s + "=" + map.get(s).get(0) + "&";
}
sb = sb.substring(0, sb.length() - 1);
// 将得到的字符串进行处理得到目标格式的字符串
try {
sb = URLDecoder.decode(sb, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// 使用常见的UTF-8编码
sb = sb.replace("%3D", "=").replace("%26", "&");
return sb;
}
}
......@@ -157,6 +157,7 @@ public class KylinOrderRefundAdminController extends BaseController {
return error("审核退款失败");
}
} catch (Exception e) {
e.printStackTrace();
return error(e.getMessage());
}
}
......
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('退款列表')" />
<th:block th:include="include :: header('退款列表')"/>
</head>
<body class="gray-bg">
<div class="container-div">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="formId">
......@@ -26,15 +26,18 @@
<option value="2">取消退款</option>
<option value="1">一审审核通过</option>
<option value="5">一审驳回退款</option>
<option value="7">等待退款</option>
<option value="7">二审通过等待退款</option>
<option value="8">二审驳回退款</option>
<option value="3">正在退款</option>
<option value="4">完成退款</option>
<option value="6">退款失败</option>
</select>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i
class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
......@@ -48,10 +51,13 @@
<a class="btn btn-primary multiple disabled" onclick="execute()" shiro:hasPermission="kylin:refund:execute">
批量二审
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll('确定取消选中的退款申请吗?', '/cancel')" shiro:hasPermission="kylin:refund:cancel">
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll('确定取消选中的退款申请吗?', 'refund/cancel')"
shiro:hasPermission="kylin:refund:cancel">
批量取消
</a>
<a class="btn btn-warning multiple disabled" onclick="$.operate.removeAll('确定重新提交选中的退款审核吗?', '/reapply')" shiro:hasPermission="kylin:refund:reapply">
<a class="btn btn-warning multiple disabled"
onclick="$.operate.removeAll('确定重新提交选中的退款审核吗?', 'refund/reapply')"
shiro:hasPermission="kylin:refund:reapply">
批量重新提交
</a>
</div>
......@@ -84,10 +90,27 @@
</div>
</form>
<div class="wrapper wrapper-content animated fadeInRight ibox-content hidden" id="form-refund-review">
<form class="form-horizontal m">
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="col-xs-2 control-label layui-required">备注:</label>
<div class="col-xs-10">
<textarea name="remark" maxlength="500" class="form-control layui-required"
rows="3"></textarea>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<th:block th:include="include :: footer" />
<script th:inline="javascript">
</div>
<th:block th:include="include :: footer"/>
{include file="zhengzai/kylin/refund/reviewView.html" /}
<script th:inline="javascript">
var detailFlag = [[${@permission.hasPermi('kylin:refund:detail')}]];
var reviewFlag = [[${@permission.hasPermi('kylin:refund:review')}]];
var executeFlag = [[${@permission.hasPermi('kylin:refund:execute')}]];
......@@ -101,14 +124,93 @@
$.operate.save(prefix + "/apply", data);
}
function review() {
alert(1)
function review(id) {
var data = '';
if (id) {
var ids = [id];
data = {"ids": ids.join()};
} else {
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
data = {"ids": rows.join()};
}
layer.open({
type: 1,
fixed: false,
maxmin: true,
title: '一审',
area: ['500px', '220px'],
content: $("#form-refund-review").html(),
btn: ["通过", '拒绝'],
yes: function (index, layero) {
var remark = $(layero).find("[name='remark']").val();
if (!remark) {
layer.msg("请填写备注");
return false;
}
data['reject'] = remark;
data['status'] = 1;
$.operate.save(prefix + "/review", data);
layer.close(index)
},
btn2: function (index, layero) {
var remark = $(layero).find("[name='remark']").val();
if (!remark) {
layer.msg("请填写备注");
return false;
}
data['reject'] = remark;
data['status'] = 5;
$.operate.save(prefix + "/review", data);
// return false;
}
});
}
function execute(id) {
// $.modal.open("二审", prefix + '/reviewExecute', '800', '300', 2222);
var data = '';
if (id) {
var ids = [id];
data = {"ids": ids.join()};
} else {
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
data = {"ids": rows.join()};
}
layer.open({
type: 1,
fixed: false,
maxmin: true,
title: '二审',
area: ['500px', '220px'],
content: $("#form-refund-review").html(),
btn: ["通过", '拒绝'],
yes: function (index, layero) {
var remark = $(layero).find("[name='remark']").val();
if (!remark) {
layer.msg("请填写备注");
return false;
}
function execute() {
alert(2)
data['refuse'] = remark;
data['status'] = 7;
$.operate.save(prefix + "/execute", data);
layer.close(index)
},
btn2: function (index, layero) {
var remark = $(layero).find("[name='remark']").val();
if (!remark) {
layer.msg("请填写备注");
return false;
}
data['refuse'] = remark;
data['status'] = 8;
$.operate.save(prefix + "/execute", data);
// return false;
}
});
}
$(function() {
$(function () {
var options = {
url: prefix + "/list",
detailUrl: prefix + "/details/{id}",
......@@ -116,6 +218,10 @@
reapplyUrl: prefix + "/reapply",
columns: [{
checkbox: true
},
{
field: 'orderRefundsId',
title: '退款id'
},
{
field: 'orderTicketsId',
......@@ -140,7 +246,7 @@
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
formatter: function (value, row, index) {
var actions = [];
actions.push('<a class="btn btn-info btn-xs' + detailFlag + '" href="javascript:void(0)" onclick="$.operate.detailTab(\'' + row.orderRefundsId + '\')"></i>查看</a> ');
......@@ -159,6 +265,6 @@
$.table.init(options);
});
</script>
</script>
</body>
</html>
\ No newline at end of file
......@@ -38,7 +38,6 @@ import org.springframework.util.MultiValueMap;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
......@@ -316,41 +315,33 @@ public class KylinRefundsStatusServiceImpl {
kylinOrderRefunds.setExecutorName(authName);
kylinOrderRefunds.setExecutorAt(LocalDateTime.now());
kylinOrderRefunds.setRefuse(refuse);
List<String> refundIds = refundList.stream().map(KylinOrderRefunds -> KylinOrderRefunds.getOrderRefundsId()).collect(Collectors.toList());
kylinOrderRefundsMapper.update(
kylinOrderRefunds,
new UpdateWrapper<KylinOrderRefunds>().in("order_refunds_id", refundIds)
);
// List<String> refundIds = refundList.stream().map(KylinOrderRefunds -> KylinOrderRefunds.getOrderRefundsId()).collect(Collectors.toList());
// 开始执行退款
String postUrl = "sss";
String token = "sss";
MultiValueMap<String, String> headers = new LinkedMultiValueMap();
headers.add("token", token);
String postUrl = "http://testpay.zhengzai.tv/refund/single";
for (KylinOrderRefunds refund : refundList) {
KylinOrderTickets oderInfo = kylinOrderTicketsMapper.selectOne(
new QueryWrapper<KylinOrderTickets>()
.eq("order_tickets_id", refund.getOrderTicketsId())
);
HashMap<String, Object> params = new HashMap();
params.put("code", oderInfo.getPayCode());
params.put("order_refund_code", refund.getOrderRefundCode());
params.put("price", refund.getPrice());
params.put("reason", refund.getReason());
params.put("notify_url", "sdadurl");
params.put("sign", "qwrertasf");
MultiValueMap<String, String> allParams = new LinkedMultiValueMap();
allParams.put("headers", (List<String>) headers);
allParams.put("form_params", (List<String>) params);
MultiValueMap<String, String> params = new LinkedMultiValueMap();
params.add("code", oderInfo.getPayCode());
params.add("order_refund_code", refund.getOrderRefundCode());
params.add("price", refund.getPrice().toString());
params.add("reason", refund.getReason());
params.add("notify_url", "http://zuul.zhengzai.tv/kylin/refund/callback");
String sign = StringUtils.Ksort(params);
sign = sign.concat("&key=").concat("R7tXY9smPQPG9Ku5yI0u6sfnlckmk04V");
// sign = MD5.getStrMD5(sign);
sign = sign.toUpperCase();
params.add("sign", sign);
// start
// TODO: 2021/5/31 待整理
params.put("form_params", "qwrertasf");
String postResult = HttpUtil.post(postUrl, allParams, headers);
String postResult = HttpUtil.post(postUrl, params);
JsonNode postResultNew = JsonUtils.fromJson(postResult, JsonNode.class);
// 请求提审接口结果
if (postResultNew.get("message").toString() != "OK") {
......@@ -360,7 +351,12 @@ public class KylinRefundsStatusServiceImpl {
kylinOrderRefundsErr.setRefundAt(LocalDateTime.now());
kylinOrderRefundsMapper.update(
kylinOrderRefundsErr,
new UpdateWrapper<KylinOrderRefunds>().eq("order_refunds_id", refund.getOrderTicketsId())
new UpdateWrapper<KylinOrderRefunds>().eq("order_refunds_id", refund.getOrderRefundsId())
);
} else {
kylinOrderRefundsMapper.update(
kylinOrderRefunds,
new UpdateWrapper<KylinOrderRefunds>().in("order_refunds_id", refund.getOrderRefundsId())
);
}
}
......@@ -387,16 +383,10 @@ public class KylinRefundsStatusServiceImpl {
newStatus = KylinTableStatusConst.ORDER_STATUS6;
}
orderStatusTable.setStatus(newStatus);
KylinOrderTicketVo kylinOrderTicketVo = new KylinOrderTicketVo();
kylinOrderTicketVo.setStatus(newStatus);
BasicDBObject orderObject = new BasicDBObject("$set", JSON.parse(JsonUtils.toJson(kylinOrderTicketVo)));
Document orderDoc = mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("orderTicketsId").is(orderTicketsId)).getQueryObject(),
orderObject,
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
kylinOrderTicketStatusMapper.update(
orderStatusTable, new UpdateWrapper<KylinOrderTicketStatus>()
.eq("order_id", orderTicketsId)
);
dataUtils.delOrderTicketRedis(orderTicketsId);
// 订单表
double price = orderInfo.getPriceRefund().doubleValue() + refundInfo.getPrice().doubleValue();
......@@ -409,14 +399,16 @@ public class KylinRefundsStatusServiceImpl {
.eq("order_tickets_id", orderTicketsId)
);
KylinOrderTicketVo kylinOrderTicketVoOrder = new KylinOrderTicketVo();
kylinOrderTicketVoOrder.setStatus(newStatus);
kylinOrderTicketVoOrder.setRefundNumber(num);
kylinOrderTicketVoOrder.setPriceRefund(BigDecimal.valueOf(price));
BasicDBObject orderEntitiesObject = new BasicDBObject("$set", JSON.parse(JsonUtils.toJson(kylinOrderTicketVoOrder)));
Document entitiesDocOrder = mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).findOneAndUpdate(
Document docOrder = mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("orderTicketsId").is(orderTicketsId)).getQueryObject(),
orderEntitiesObject,
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
);
dataUtils.delOrderTicketRedis(orderTicketsId);
// 入场人
for (String entitiesId : orderTicketEntitiesIdsArr) {
......
......@@ -71,7 +71,7 @@ public class OrderRefundDao implements Serializable {
this.statusName="请求退款";
break;
case 1:
this.statusName="审核通过";
this.statusName="一审通过";
break;
case 2:
this.statusName="取消退款";
......@@ -83,13 +83,16 @@ public class OrderRefundDao implements Serializable {
this.statusName="完成退款";
break;
case 5:
this.statusName="驳回退款";
this.statusName="一审驳回退款";
break;
case 6:
this.statusName="退款失败";
break;
case 7:
this.statusName="等待退款";
this.statusName="二审通过等待退款";
break;
case 8:
this.statusName="二审驳回退款";
break;
default:
this.statusName="其他";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment