支付能力配置临时提交
diff --git a/src/main/java/com/supwisdom/dlpay/api/dao/PaytypeDao.java b/src/main/java/com/supwisdom/dlpay/api/dao/PaytypeDao.java
index f782db4..0b0b998 100644
--- a/src/main/java/com/supwisdom/dlpay/api/dao/PaytypeDao.java
+++ b/src/main/java/com/supwisdom/dlpay/api/dao/PaytypeDao.java
@@ -1,6 +1,8 @@
package com.supwisdom.dlpay.api.dao;
import com.supwisdom.dlpay.api.domain.TPaytype;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@@ -10,4 +12,6 @@
@Repository
public interface PaytypeDao extends JpaRepository<TPaytype, String> {
TPaytype getByPaytype(String paytype);
+
+ Page<TPaytype> findByPaytypeContaining(String paytype, Pageable pageable);
}
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TUserdtl.java b/src/main/java/com/supwisdom/dlpay/api/domain/TUserdtl.java
index aa195a7..694e7a9 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TUserdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TUserdtl.java
@@ -33,7 +33,10 @@
private Double befbal;
@Column(name = "AMOUNT", precision = 9, scale = 2)
- private Double amount;
+ private Double amount; //实际付款金额
+
+ @Column(name = "TOTAL_AMOUNT", precision = 9, scale = 2)
+ private Double totalAmount; //订单总金额
@Column(name = "AFTBAL", precision = 9, scale = 2)
private Double aftbal;
diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java b/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java
index 50ab6a2..0313df1 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java
@@ -1,6 +1,7 @@
package com.supwisdom.dlpay.system.controller;
import com.supwisdom.dlpay.api.bean.JsonResult;
+import com.supwisdom.dlpay.api.domain.TPaytype;
import com.supwisdom.dlpay.framework.domain.TApiClient;
import com.supwisdom.dlpay.framework.domain.TBusinesspara;
import com.supwisdom.dlpay.framework.domain.TSyspara;
@@ -346,5 +347,30 @@
}
}
+ /**
+ * ====================================================
+ * 支付能力配置
+ * ====================================================
+ */
+ @GetMapping("/param/paytype")
+ public String paytypeView() {
+ return "system/param/paytype";
+ }
+
+ @GetMapping("/param/paytypelist")
+ @PreAuthorize("hasPermission('/param/paytype','')")
+ @ResponseBody
+ public PageResult<TPaytype> getPaytypeDataList(@RequestParam("page") Integer pageNo,
+ @RequestParam("limit") Integer pageSize,
+ @RequestParam(value = "paytype", required = false) String paytype) {
+ try {
+ if (null == pageNo || pageNo < 1) pageNo = WebConstant.PAGENO_DEFAULT;
+ if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT;
+ return paramService.getPaytypePage(paytype, pageNo, pageSize);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new PageResult<>(99, "系统查询错误");
+ }
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/ParamService.java b/src/main/java/com/supwisdom/dlpay/system/service/ParamService.java
index 3097754..aa5f7ea 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/ParamService.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/ParamService.java
@@ -1,5 +1,6 @@
package com.supwisdom.dlpay.system.service;
+import com.supwisdom.dlpay.api.domain.TPaytype;
import com.supwisdom.dlpay.framework.domain.TApiClient;
import com.supwisdom.dlpay.framework.domain.TBusinesspara;
import com.supwisdom.dlpay.framework.domain.TSyspara;
@@ -42,4 +43,7 @@
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
boolean deleteApiClient(TApiClient apiClient);
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true)
+ PageResult<TPaytype> getPaytypePage(String paytype, int pageNo, int pageSize);
+
}
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java
index 8d63932..5ed8ca9 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java
@@ -1,5 +1,7 @@
package com.supwisdom.dlpay.system.service.impl;
+import com.supwisdom.dlpay.api.dao.PaytypeDao;
+import com.supwisdom.dlpay.api.domain.TPaytype;
import com.supwisdom.dlpay.framework.dao.ApiClientDao;
import com.supwisdom.dlpay.framework.dao.BusinessparaDao;
import com.supwisdom.dlpay.framework.dao.SysparaDao;
@@ -34,6 +36,8 @@
private BusinessparaDao businessparaDao;
@Autowired
private ApiClientDao apiClientDao;
+ @Autowired
+ private PaytypeDao paytypeDao;
@Override
public PageResult<TSyspara> getSysparaPage(Integer paraid, String paraname, int pageNo, int pageSize) {
@@ -139,4 +143,13 @@
return false;
}
+ @Override
+ public PageResult<TPaytype> getPaytypePage(String paytype, int pageNo, int pageSize) {
+ Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by("paytype"));
+ if (!StringUtil.isEmpty(paytype)) {
+ return new PageResult<>(paytypeDao.findByPaytypeContaining(paytype.trim(), pageable));
+ }
+ return new PageResult<>(paytypeDao.findAll(pageable));
+ }
+
}
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt b/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt
index 2cb6caa..32ced96 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt
@@ -6,7 +6,6 @@
class PersonTranactionBuilder(val parent: TransactionBuilder) {
var userid: String = ""
var userName: String = ""
- var payCode: String = ""
var amount: Double = 0.0
var summary: String = ""
var oppositeAccno: String = ""
@@ -27,8 +26,6 @@
var oppositeName: String = ""
var oppositeType: String = ""
-
- var payCode: String = ""
fun and(): TransactionBuilder {
return parent
}
@@ -53,8 +50,11 @@
var transDate: String = ""
var transTime: String = ""
- var payCode: String = ""
+ var transCode: Int = 0 //交易码,各明细流水统一
var refno: String = ""
+ var outtradeno:String="" //第三方流水号
+ val extendMap = mutableMapOf<String, String>() //存调第三方需要的参数信息,存数据库 TB_USERDTL_BUSINESS
+ val resultMap = mutableMapOf<String, String>() //存调第三方结果数据
fun person(): PersonTranactionBuilder {
return PersonTranactionBuilder(this).also {
@@ -92,7 +92,7 @@
val builder = TransactionBuilder().apply {
this.transDate = transDate
this.transTime = transTime
- this.payCode = "3001"
+ this.transCode = 3001
}.person().apply {
this.userid = userid // 可以再优化,直接用 person 对象
this.userName = person.accname
@@ -104,7 +104,6 @@
this.amount = amount / 100.0 // 金额考虑减和加
this.summary = "POS消费"
}.and()
-
if (manageFee > 0) {
builder.subject().apply {
val subject = accountUtilServcie.readSubject("2001")
diff --git a/src/main/resources/templates/system/param/paytype.html b/src/main/resources/templates/system/param/paytype.html
new file mode 100644
index 0000000..8f9883a
--- /dev/null
+++ b/src/main/resources/templates/system/param/paytype.html
@@ -0,0 +1,191 @@
+<div class="layui-card">
+ <div class="layui-card-header">
+ <h2 class="header-title">支付能力配置</h2>
+ <span class="layui-breadcrumb pull-right">
+ <a href="#">参数管理</a>
+ <a><cite>支付能力配置</cite></a>
+ </span>
+ </div>
+ <div class="layui-card-body">
+ <div class="layui-form toolbar">
+ 搜索:
+ <input id="search-paytype" class="layui-input search-input" type="text" maxlength="40" style="width: 300px;"
+ placeholder="输入支付方式查询"/>
+ <button id="btn-search" class="layui-btn icon-btn" data-type="search"><i class="layui-icon"></i>搜索
+ </button>
+ <button id="btn-add" class="layui-btn icon-btn" data-type="add"><i class="layui-icon"></i>新 增</button>
+ <button id="btn-reset" class="layui-btn layui-btn-primary" data-type="reset"><i class="layui-icon"></i>清 空</button>
+ </div>
+ <table class="layui-table" id="paytypeTable" lay-filter="paytypeTable-filter"></table>
+ </div>
+</div>
+
+<!-- 表格操作列 -->
+<script type="text/html" id="paytype-table-bar">
+ {{# if(d.paytype == 'balance') { }}
+ <span></span>
+ {{# }else{ }}
+ <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
+ {{# } }}
+</script>
+
+<!-- 表格状态列 -->
+<script type="text/html" id="enable-tpl-state">
+ <input type="checkbox" lay-filter="enable-tpl-state" value="{{d.paytype}}" lay-skin="switch" lay-text="启用|关闭"
+ {{d.enable=='yes'?'checked':''}} />
+</script>
+<script type="text/html" id="chargeenable-tpl-state">
+ <input type="checkbox" lay-filter="chargeenable-tpl-state" value="{{d.paytype}}" lay-skin="switch" lay-text="启用|关闭"
+ {{(d.enable=='yes' && d.chargeEnable=='yes')?'checked':''}} />
+</script>
+<script type="text/html" id="consumeenable-tpl-state">
+ <input type="checkbox" lay-filter="consumeenable-tpl-state" value="{{d.paytype}}" lay-skin="switch" lay-text="启用|关闭"
+ {{(d.enable=='yes' && d.consumeEnable=='yes')?'checked':''}} />
+</script>
+<script type="text/html" id="anonymousenable-tpl-state">
+ <input type="checkbox" lay-filter="anonymousenable-tpl-state" value="{{d.paytype}}" lay-skin="switch" lay-text="启用|关闭"
+ {{(d.enable=='yes' && d.anonymousEnable=='yes')?'checked':''}} />
+</script>
+
+<script>
+ layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
+ var form = layui.form;
+ var table = layui.table;
+ var admin = layui.admin;
+ // 渲染表格
+ table.render({
+ elem: '#paytypeTable',
+ url: '/param/paytypelist',
+ page: true,
+ cols: [
+ [
+ {field: 'paytype', title: '支付方式', width: 200, align: 'center', fixed: 'left', sort: true},
+ {field: 'paydesc', title: '名称', align: 'center', sort: true},
+ {field: 'enable', title: '状态', align: 'center', templet: '#enable-tpl-state',sort: true},
+ {field: 'chargeEnable', title: '能否充值', align: 'center', templet: '#chargeenable-tpl-state',sort: true},
+ {field: 'consumeEnable', title: '能否消费', align: 'center', templet: '#consumeenable-tpl-state',sort: true},
+ {field: 'anonymousEnable', title: '匿名消费', align: 'center', templet: '#anonymousenable-tpl-state',sort: true},
+ {align: 'center', title: '操作', width: 100, fixed: 'right', templet: function(item){
+ if(item.paytype!='balance') {
+ return '<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>';
+ }else{
+ return '';
+ }
+ }}
+ ]
+ ]
+ });
+ // 搜索按钮点击事件
+ $('#btn-search').click(function () {
+ var paytype = $("#search-paytype").val();
+ table.reload('paytypeTable', {where: {paytype: paytype}, page: {curr: 1}});
+ });
+
+ $('#btn-add').click(function () {
+ showEditModel();
+ });
+
+ $('#btn-reset').click(function () {
+ $("#search-paytypeTable").val("");
+ });
+
+ // function showEditModel(data) {
+ // var title = data ? '修改角色' : '新增应用';
+ // admin.putTempData('t_appclient', data);
+ // admin.popupCenter({
+ // title: title,
+ // path: '/param/load4addapiclient',
+ // finish: function () {
+ // table.reload('apiClientTable');
+ // }
+ // });
+ // }
+ //
+ // // 修改user状态
+ // form.on('switch(api-tpl-state)', function (obj) {
+ // var token = $("meta[name='_csrf_token']").attr("value");
+ // admin.go('/param/updateapiclientstate', {
+ // appid: obj.elem.value,
+ // state: obj.elem.checked ? 'normal' : 'closed',
+ // _csrf: token
+ // }, function (data) {
+ // if (data.code == 200) {
+ // layer.msg(data.msg, {icon: 1});
+ // } else if (data.code == 401) {
+ // layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+ // location.replace('/login');
+ // }, 1000);
+ // return;
+ // } else {
+ // layer.msg(data.msg, {icon: 2});
+ // $(obj.elem).prop('checked', !obj.elem.checked);
+ // form.render('checkbox');
+ // }
+ // },function () {
+ // layer.msg('请求失败了,请稍后再试', {icon: 2});
+ // $(obj.elem).prop('checked', !obj.elem.checked);
+ // form.render('checkbox');
+ // });
+ // });
+ //
+ // //监听单元格
+ // table.on('tool(apiClientTable-filter)', function (obj) {
+ // var data = obj.data;
+ // if('del' == obj.event){
+ // if(confirm("确定要删除应用参数["+data.appid+"]吗?")){
+ // layer.load(2);
+ // admin.go('/param/deleteapiclient', {
+ // appid: data.appid,
+ // _csrf: $("meta[name='_csrf_token']").attr("value")
+ // }, function (data) {
+ // console.log(data.code);
+ // layer.closeAll('loading');
+ // if (data.code == 200) {
+ // layer.msg(data.msg, {icon: 1});
+ // } else if (data.code == 401) {
+ // layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+ // location.replace('/login');
+ // }, 1000);
+ // return;
+ // } else {
+ // layer.msg(data.msg, {icon: 2});
+ // }
+ // table.reload('apiClientTable');
+ // }, function (ret) {
+ // console.log(ret);
+ // layer.closeAll('loading');
+ // layer.msg('请求失败了,请稍后再试', {icon: 2});
+ // });
+ // }
+ // }else if('editRole' ==obj.event){
+ // showEditModel(data);
+ // }
+ // });
+ //
+ // table.on('edit(apiClientTable-filter)', function (obj) {
+ // var row = obj.data; //得到所在行所有键值
+ // var newval = obj.value; //得到修改后的值
+ // admin.go('/param/updateapiclientpara', {
+ // appid: row.appid,
+ // secret: newval,
+ // _csrf: $("meta[name='_csrf_token']").attr("value"),
+ // }, function (data) {
+ // if (data.code == 200) {
+ // layer.msg("修改成功", {icon: 1});
+ // } else if (data.code == 401) {
+ // layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+ // location.replace('/login');
+ // }, 1000);
+ // return;
+ // } else {
+ // layer.msg(data.msg, {icon: 2});
+ // table.reload('apiClientTable');
+ // }
+ // },function () {
+ // layer.msg('修改失败了,请稍后再试', {icon: 2});
+ // table.reload('apiClientTable');
+ // });
+ // })
+
+ });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/system/role/func.html b/src/main/resources/templates/system/role/func.html
index d838bb5..61cc1b1 100755
--- a/src/main/resources/templates/system/role/func.html
+++ b/src/main/resources/templates/system/role/func.html
@@ -1,5 +1,5 @@
<div style="padding: 0 20px">
- <div class="layui-form-item">
+ <div class="layui-form-item" style="max-height: 490px;overflow: auto;">
<ul id="funclist" class="ztree"></ul>
</div>
<div class="layui-form-item model-form-footer">
diff --git a/src/main/resources/templates/system/role/index.html b/src/main/resources/templates/system/role/index.html
index 93c755d..5dcd1f7 100644
--- a/src/main/resources/templates/system/role/index.html
+++ b/src/main/resources/templates/system/role/index.html
@@ -72,6 +72,7 @@
admin.putTempData('roleId', data.roleId);
admin.popupCenter({
title: title,
+ area:['400px','600px'],
path: '/role/loadfunc'
});
};