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 4709fda..f774582 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
@@ -151,7 +151,7 @@
 
   @Override
   public PageResult<TSourceType> getPaytypePage(String paytype, int pageNo, int pageSize) {
-    Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by("paytype"));
+    Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by("sourceType"));
     if (!StringUtil.isEmpty(paytype)) {
       return new PageResult<>(paytypeDao.findBySourceTypeContaining(paytype.trim(), pageable));
     }
diff --git a/src/main/resources/templates/system/param/paytype.html b/src/main/resources/templates/system/param/paytype.html
index fd065d6..06fc5f2 100644
--- a/src/main/resources/templates/system/param/paytype.html
+++ b/src/main/resources/templates/system/param/paytype.html
@@ -25,35 +25,35 @@
 <!-- 表格状态列 -->
 <script type="text/html" id="enable-tpl-state">
     <input type="checkbox" lay-filter="enable-tpl-state" value="{{d.sourceType}}" lay-skin="switch" lay-text="启用|关闭"
-           {{d.enable=='yes'?'checked':''}}/>
+           {{d.enable== true?'checked':''}}/>
 </script>
 <script type="text/html" id="chargeenable-tpl-state">
-    {{# if(d.enable =='yes'){ }}
+    {{# if(d.enable == true){ }}
     <input type="checkbox" lay-filter="chargeenable-tpl-state" value="{{d.sourceType}}" lay-skin="switch" lay-text="启用|关闭"
-           {{(d.enable=='yes' && d.chargeEnable=='yes')?'checked':''}}/>
+           {{(d.enable== true && d.chargeEnable== true)?'checked':''}}/>
     {{# }else{ }}
     <input type="checkbox" lay-filter="chargeenable-tpl-state" value="{{d.sourceType}}" lay-skin="switch" lay-text="启用|关闭"
-           {{(d.enable=='yes' && d.chargeEnable=='yes')?'checked':''}} disabled/>
+           {{(d.enable== true && d.chargeEnable== true)?'checked':''}} disabled/>
     {{# } }}
 </script>
 <script type="text/html" id="consumeenable-tpl-state">
-    {{# if(d.enable =='yes'){ }}
+    {{# if(d.enable == true){ }}
     <input type="checkbox" lay-filter="consumeenable-tpl-state" value="{{d.sourceType}}" lay-skin="switch" lay-text="启用|关闭"
-           {{(d.enable=='yes' && d.consumeEnable=='yes')?'checked':''}}/>
+           {{(d.enable== true && d.consumeEnable== true)?'checked':''}}/>
     {{# }else{ }}
     <input type="checkbox" lay-filter="consumeenable-tpl-state" value="{{d.sourceType}}" lay-skin="switch" lay-text="启用|关闭"
-           {{(d.enable=='yes' && d.consumeEnable=='yes')?'checked':''}} disabled/>
+           {{(d.enable== true && d.consumeEnable== true)?'checked':''}} disabled/>
     {{# } }}
 </script>
 <script type="text/html" id="anonymousenable-tpl-state">
-    {{# if(d.enable =='yes' ){ }}
+    {{# if(d.enable == true ){ }}
     <input type="checkbox" lay-filter="anonymousenable-tpl-state" value="{{d.sourceType}}" lay-skin="switch"
            lay-text="启用|关闭"
-           {{(d.enable=='yes' && d.anonymousEnable=='yes')?'checked':''}}/>
+           {{(d.enable==true && d.anonymousEnable==true)?'checked':''}}/>
     {{# }else{ }}
     <input type="checkbox" lay-filter="anonymousenable-tpl-state" value="{{d.sourceType}}" lay-skin="switch"
            lay-text="启用|关闭"
-           {{(d.enable=='yes' && d.anonymousEnable=='yes')?'checked':''}} disabled/>
+           {{(d.enable==true && d.anonymousEnable==true)?'checked':''}} disabled/>
     {{# } }}
 </script>
 
@@ -107,7 +107,7 @@
         // 搜索按钮点击事件
         $('#btn-search-param').click(function () {
             var sourceType = $("#search-global-sourceType").val();
-            table.reload('paytypeTable', {where: {sourceType: sourceType}, page: {curr: 1}});
+            table.reload('paytypeTable', {where: {paytype: sourceType}, page: {curr: 1}});
         });
 
         $('#btn-add-param').click(function () {
@@ -128,8 +128,8 @@
         form.on('switch(enable-tpl-state)', function (obj) {
             var token = $("meta[name='_csrf_token']").attr("value");
             admin.go('/param/updatepaytypestate', {
-                sourceType: obj.elem.value,
-                state: obj.elem.checked ? 'yes' : 'no',
+                paytype: obj.elem.value,
+                state: obj.elem.checked,
                 _csrf: token
             }, function (data) {
                 if (data.code == 200) {
@@ -170,8 +170,8 @@
 
         function updatePaytypeState(obj, optype, token) {
             admin.go('/param/updatepaytypestate', {
-                sourceType: obj.elem.value,
-                state: obj.elem.checked ? 'yes' : 'no',
+                paytype: obj.elem.value,
+                state: obj.elem.checked,
                 optype: optype,
                 _csrf: token
             }, function (data) {
@@ -198,7 +198,7 @@
             var row = obj.data; //得到所在行所有键值
             var newval = obj.value; //得到修改后的值
             admin.go('/param/updatepaytypename', {
-                sourceType: row.sourceType,
+                paytype: row.sourceType,
                 paydesc: newval,
                 _csrf: $("meta[name='_csrf_token']").attr("value"),
             }, function (data) {
@@ -226,7 +226,7 @@
                 if (confirm("确定要删除支付方式[" + data.sourceType + "_" + data.paydesc + "]吗？")) {
                     layer.load(2);
                     admin.go('/param/deletepaytype', {
-                        sourceType: data.sourceType,
+                        paytype: data.sourceType,
                         _csrf: $("meta[name='_csrf_token']").attr("value")
                     }, function (data) {
                         console.log(data.code);
@@ -251,7 +251,7 @@
             }else if('config' ==obj.event){
                 admin.popupCenter({
                     title: "配置参数【" + data.sourceType + "_" + data.paydesc + "】",
-                    path: '/param/load4paytypeconfig?sourceType='+data.sourceType,
+                    path: '/param/load4paytypeconfig?paytype='+data.sourceType,
                     area: '800px',
                     finish: function () {
                         table.reload('paytypeTable');
diff --git a/src/main/resources/templates/system/param/paytypeconfig.html b/src/main/resources/templates/system/param/paytypeconfig.html
index f964907..cc7b38e 100644
--- a/src/main/resources/templates/system/param/paytypeconfig.html
+++ b/src/main/resources/templates/system/param/paytypeconfig.html
@@ -1,6 +1,6 @@
 <form id="sourceType-config-form" lay-filter="sourceType-config-form" class="layui-form model-form">
     <div class="layui-form-item" style="display: none;">
-        <input type="hidden" class="layui-input" id="hid_paytype" th:value="${sourceType}"/>
+        <input type="hidden" class="layui-input" id="hid_paytype" th:value="${paytype}"/>
     </div>
 
     <div class="layui-form-item" style="text-align: center;" th:if="${configlist.size()} le 0">
diff --git a/src/main/resources/templates/system/param/paytypeform.html b/src/main/resources/templates/system/param/paytypeform.html
index 5bd04c5..e47d48d 100644
--- a/src/main/resources/templates/system/param/paytypeform.html
+++ b/src/main/resources/templates/system/param/paytypeform.html
@@ -2,7 +2,7 @@
     <div class="layui-form-item">
         <label class="layui-form-label">支付方式</label>
         <div class="layui-input-block">
-            <input name="sourceType" placeholder="请输入支付方式代码" type="text" class="layui-input" maxlength="20"
+            <input name="paytype" placeholder="请输入支付方式代码" type="text" class="layui-input" maxlength="20"
                    lay-verify="required|sourceType" required/>
         </div>
     </div>
@@ -62,7 +62,7 @@
                     url: '/param/checkpaytype',
                     async: false,
                     data: {
-                        sourceType: e
+                        paytype: e
                     },
                     success: function (result) {
                         if (result.code != 200) {
diff --git a/src/main/resources/templates/system/shop/config.html b/src/main/resources/templates/system/shop/config.html
index 9afd11f..9bc1ccc 100644
--- a/src/main/resources/templates/system/shop/config.html
+++ b/src/main/resources/templates/system/shop/config.html
@@ -48,23 +48,23 @@
 
 <!-- 表格状态列 -->
 <script type="text/html" id="shop-consumeenable-tpl-state">
-    <input type="checkbox" lay-filter="shop-consumeenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.sourceType}}" lay-skin="switch" lay-text="启用|关闭"
-           {{d.consumeEnable=='yes'?'checked':''}}/>
+    <input type="checkbox" lay-filter="shop-consumeenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.paytype}}" lay-skin="switch" lay-text="启用|关闭"
+           {{d.consumeEnable==true?'checked':''}}/>
 </script>
 <script type="text/html" id="shop-anonymousenable-tpl-state">
-    {{# if(d.consumeEnable =='yes' ){ }}
-    <input type="checkbox" lay-filter="shop-anonymousenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.sourceType}}" lay-skin="switch"
+    {{# if(d.consumeEnable == true ){ }}
+    <input type="checkbox" lay-filter="shop-anonymousenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.paytype}}" lay-skin="switch"
            lay-text="启用|关闭"
-           {{(d.consumeEnable=='yes' && d.anonymousEnable=='yes')?'checked':''}}/>
+           {{(d.consumeEnable==true && d.anonymousEnable==true)?'checked':''}}/>
     {{# }else{ }}
-    <input type="checkbox" lay-filter="shop-anonymousenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.sourceType}}" lay-skin="switch"
+    <input type="checkbox" lay-filter="shop-anonymousenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.paytype}}" lay-skin="switch"
            lay-text="启用|关闭"
-           {{(d.consumeEnable=='yes' && d.anonymousEnable=='yes')?'checked':''}} disabled/>
+           {{(d.consumeEnable==true && d.anonymousEnable==true)?'checked':''}} disabled/>
     {{# } }}
 </script>
 <script type="text/html" id="shop-reverseenable-tpl-state">
-    <input type="checkbox" lay-filter="shop-reverseenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.sourceType}}" lay-skin="switch" lay-text="启用|关闭"
-           {{d.reverseEnable=='yes'?'checked':''}}/>
+    <input type="checkbox" lay-filter="shop-reverseenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.paytype}}" lay-skin="switch" lay-text="启用|关闭"
+           {{d.reverseEnable==true?'checked':''}}/>
 </script>
 
 <script>
@@ -114,7 +114,7 @@
         });
         $('#btn-search-shoppaytype').click(function(){
             var ptype = $("#search-sourceType").val();
-            table.reload('shopPaytypeTable', {where: {sourceType: ptype, shopaccno:""}, page: {curr: 1}});
+            table.reload('shopPaytypeTable', {where: {paytype: ptype, shopaccno:""}, page: {curr: 1}});
         });
 
         function ondblclick(event, treeId, treeNode) {
@@ -123,7 +123,7 @@
                 return;
             }
             var ptype = $("#search-sourceType").val();
-            table.reload('shopPaytypeTable', {where: {sourceType: ptype, shopaccno: treeNode.shopaccno}, page: {curr: 1}});
+            table.reload('shopPaytypeTable', {where: {paytype: ptype, shopaccno: treeNode.shopaccno}, page: {curr: 1}});
         }
 
         // 渲染表格
@@ -162,7 +162,7 @@
                         sort: true
                     },
                     {align: 'center', title: '操作', width: 90, fixed: 'right', templet: function (item) {
-                            if (item.sourceType != 'balance') {
+                            if (item.paytype != 'balance') {
                                 return '<a class="layui-btn layui-btn-xs" lay-event="config">配置</a>';
                             }
                             return '<span style="font-size: 12px;color: #D3D4D3;">无配置</span>';
@@ -177,7 +177,7 @@
             var token = $("meta[name='_csrf_token']").attr("value");
             admin.go('/shop/updatepaytypestat', {
                 shopaccno: obj.elem.value,
-                sourceType: $(obj.elem).attr("def-sourceType"),
+                paytype: $(obj.elem).attr("def-sourceType"),
                 optype: "consume",
                 state: obj.elem.checked ? 'yes' : 'no',
                 _csrf: token
@@ -215,7 +215,7 @@
         function updateShopPaytypeState(obj, optype, token) {
             admin.go('/shop/updatepaytypestat', {
                 shopaccno: obj.elem.value,
-                sourceType: $(obj.elem).attr("def-sourceType"),
+                paytype: $(obj.elem).attr("def-sourceType"),
                 state: obj.elem.checked ? 'yes' : 'no',
                 optype: optype,
                 _csrf: token
@@ -260,7 +260,7 @@
                 path: '/shop/load4addpaytype',
                 finish: function () {
                     table.reload('shopPaytypeTable', {
-                        where: {sourceType: "", shopaccno: shopNode.shopaccno},
+                        where: {paytype: "", shopaccno: shopNode.shopaccno},
                         page: {curr: 1}
                     });
                 }
@@ -273,7 +273,7 @@
             if ('config' == obj.event) {
                 admin.popupCenter({
                     title: "配置参数【" + data.shopname + "_" + data.paydesc + "】",
-                    path: '/shop/load4paytypepara?shopaccno=' + data.shopaccno + '&sourceType=' + data.sourceType,
+                    path: '/shop/load4paytypepara?shopaccno=' + data.shopaccno + '&paytype=' + data.paytype,
                     area: '800px',
                     finish: function () {
                         table.reload('shopPaytypeTable');
diff --git a/src/main/resources/templates/system/shop/configform.html b/src/main/resources/templates/system/shop/configform.html
index b88732e..9d0bb94 100644
--- a/src/main/resources/templates/system/shop/configform.html
+++ b/src/main/resources/templates/system/shop/configform.html
@@ -14,7 +14,7 @@
     <div class="layui-form-item">
         <label class="layui-form-label">支付方式</label>
         <div class="layui-input-block">
-            <select name="sourceType" lay-verify="required">
+            <select name="paytype" lay-verify="required">
                 <option th:each="pt:${paytypelist}" th:value="${pt.sourceType}"
                         th:text="${pt.paydesc}"></option>
             </select>&emsp;
diff --git a/src/main/resources/templates/system/shop/configpara.html b/src/main/resources/templates/system/shop/configpara.html
index 47acb3a..a4ff319 100644
--- a/src/main/resources/templates/system/shop/configpara.html
+++ b/src/main/resources/templates/system/shop/configpara.html
@@ -1,7 +1,7 @@
 <form id="shop-sourceType-config-form" lay-filter="shop-sourceType-config-form" class="layui-form model-form">
     <div class="layui-form-item" style="display: none;">
         <input type="hidden" class="layui-input" id="hid_shopaccno" th:value="${shopaccno}"/>
-        <input type="hidden" class="layui-input" id="hid_paytype" th:value="${sourceType}"/>
+        <input type="hidden" class="layui-input" id="hid_paytype" th:value="${paytype}"/>
     </div>
 
     <div class="layui-form-item" style="text-align: center;" th:if="${configlist.size()} le 0">
diff --git a/src/main/resources/templates/system/shop/index.html b/src/main/resources/templates/system/shop/index.html
index e93f098..8407b4c 100644
--- a/src/main/resources/templates/system/shop/index.html
+++ b/src/main/resources/templates/system/shop/index.html
@@ -318,6 +318,7 @@
                     form.val("shop-info-form",{
                         "shopid":"0",
                         "shopname": "",
+                        "shopaccno":"",
                         "fshopid":treeNode.id,
                         "shoptype":"1",
                         "zipcode":"",
